]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1010] Regen flex and bison with last tools
authorFrancis Dupont <fdupont@isc.org>
Thu, 2 Apr 2020 19:12:26 +0000 (19:12 +0000)
committerFrancis Dupont <fdupont@isc.org>
Thu, 2 Apr 2020 19:12:26 +0000 (19:12 +0000)
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

index 9b604cb15d9f39f63dd4e8ffb0a3db018e2242a2..7995e4d7b7ab8de2d369a2c864b2e343a7d4d083 100644 (file)
@@ -249,30 +249,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -291,30 +291,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -333,30 +333,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -374,30 +374,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -440,74 +440,74 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 184: // "constant string"
-#line 266 "dhcp4_parser.yy"
+      case 185: // "constant string"
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 447 "dhcp4_parser.cc"
         break;
 
-      case 185: // "integer"
-#line 266 "dhcp4_parser.yy"
+      case 186: // "integer"
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 453 "dhcp4_parser.cc"
         break;
 
-      case 186: // "floating point"
-#line 266 "dhcp4_parser.yy"
+      case 187: // "floating point"
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 459 "dhcp4_parser.cc"
         break;
 
-      case 187: // "boolean"
-#line 266 "dhcp4_parser.yy"
+      case 188: // "boolean"
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 465 "dhcp4_parser.cc"
         break;
 
-      case 204: // value
-#line 266 "dhcp4_parser.yy"
+      case 205: // value
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 471 "dhcp4_parser.cc"
         break;
 
-      case 208: // map_value
-#line 266 "dhcp4_parser.yy"
+      case 209: // map_value
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 477 "dhcp4_parser.cc"
         break;
 
-      case 249: // ddns_replace_client_name_value
-#line 266 "dhcp4_parser.yy"
+      case 250: // ddns_replace_client_name_value
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 483 "dhcp4_parser.cc"
         break;
 
-      case 268: // socket_type
-#line 266 "dhcp4_parser.yy"
+      case 270: // socket_type
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 489 "dhcp4_parser.cc"
         break;
 
-      case 271: // outbound_interface_value
-#line 266 "dhcp4_parser.yy"
+      case 273: // outbound_interface_value
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 495 "dhcp4_parser.cc"
         break;
 
-      case 293: // db_type
-#line 266 "dhcp4_parser.yy"
+      case 295: // db_type
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 501 "dhcp4_parser.cc"
         break;
 
-      case 380: // hr_mode
-#line 266 "dhcp4_parser.yy"
+      case 382: // hr_mode
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 507 "dhcp4_parser.cc"
         break;
 
-      case 535: // ncr_protocol_value
-#line 266 "dhcp4_parser.yy"
+      case 537: // ncr_protocol_value
+#line 267 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 513 "dhcp4_parser.cc"
         break;
@@ -727,30 +727,30 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -775,133 +775,133 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 275 "dhcp4_parser.yy"
+#line 276 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 781 "dhcp4_parser.cc"
     break;
 
   case 4:
-#line 276 "dhcp4_parser.yy"
+#line 277 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 787 "dhcp4_parser.cc"
     break;
 
   case 6:
-#line 277 "dhcp4_parser.yy"
+#line 278 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.DHCP4; }
 #line 793 "dhcp4_parser.cc"
     break;
 
   case 8:
-#line 278 "dhcp4_parser.yy"
+#line 279 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 799 "dhcp4_parser.cc"
     break;
 
   case 10:
-#line 279 "dhcp4_parser.yy"
+#line 280 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET4; }
 #line 805 "dhcp4_parser.cc"
     break;
 
   case 12:
-#line 280 "dhcp4_parser.yy"
+#line 281 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 811 "dhcp4_parser.cc"
     break;
 
   case 14:
-#line 281 "dhcp4_parser.yy"
+#line 282 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 817 "dhcp4_parser.cc"
     break;
 
   case 16:
-#line 282 "dhcp4_parser.yy"
+#line 283 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.DHCP4; }
 #line 823 "dhcp4_parser.cc"
     break;
 
   case 18:
-#line 283 "dhcp4_parser.yy"
+#line 284 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 829 "dhcp4_parser.cc"
     break;
 
   case 20:
-#line 284 "dhcp4_parser.yy"
+#line 285 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 835 "dhcp4_parser.cc"
     break;
 
   case 22:
-#line 285 "dhcp4_parser.yy"
+#line 286 "dhcp4_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 841 "dhcp4_parser.cc"
     break;
 
   case 24:
-#line 286 "dhcp4_parser.yy"
+#line 287 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 847 "dhcp4_parser.cc"
     break;
 
   case 26:
-#line 287 "dhcp4_parser.yy"
+#line 288 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.LOGGING; }
 #line 853 "dhcp4_parser.cc"
     break;
 
   case 28:
-#line 288 "dhcp4_parser.yy"
+#line 289 "dhcp4_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 859 "dhcp4_parser.cc"
     break;
 
   case 30:
-#line 296 "dhcp4_parser.yy"
+#line 297 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 865 "dhcp4_parser.cc"
     break;
 
   case 31:
-#line 297 "dhcp4_parser.yy"
+#line 298 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 871 "dhcp4_parser.cc"
     break;
 
   case 32:
-#line 298 "dhcp4_parser.yy"
+#line 299 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 877 "dhcp4_parser.cc"
     break;
 
   case 33:
-#line 299 "dhcp4_parser.yy"
+#line 300 "dhcp4_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 883 "dhcp4_parser.cc"
     break;
 
   case 34:
-#line 300 "dhcp4_parser.yy"
+#line 301 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 889 "dhcp4_parser.cc"
     break;
 
   case 35:
-#line 301 "dhcp4_parser.yy"
+#line 302 "dhcp4_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 895 "dhcp4_parser.cc"
     break;
 
   case 36:
-#line 302 "dhcp4_parser.yy"
+#line 303 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 901 "dhcp4_parser.cc"
     break;
 
   case 37:
-#line 305 "dhcp4_parser.yy"
+#line 306 "dhcp4_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -910,7 +910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 310 "dhcp4_parser.yy"
+#line 311 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -921,7 +921,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 315 "dhcp4_parser.yy"
+#line 316 "dhcp4_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -931,13 +931,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 321 "dhcp4_parser.yy"
+#line 322 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 937 "dhcp4_parser.cc"
     break;
 
   case 43:
-#line 328 "dhcp4_parser.yy"
+#line 329 "dhcp4_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -946,7 +946,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 332 "dhcp4_parser.yy"
+#line 333 "dhcp4_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -956,7 +956,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 339 "dhcp4_parser.yy"
+#line 340 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -965,7 +965,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 342 "dhcp4_parser.yy"
+#line 343 "dhcp4_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -973,7 +973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 350 "dhcp4_parser.yy"
+#line 351 "dhcp4_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -982,7 +982,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 354 "dhcp4_parser.yy"
+#line 355 "dhcp4_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -991,7 +991,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 361 "dhcp4_parser.yy"
+#line 362 "dhcp4_parser.yy"
                               {
     // List parsing about to start
 }
@@ -999,7 +999,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 363 "dhcp4_parser.yy"
+#line 364 "dhcp4_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -1008,7 +1008,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 372 "dhcp4_parser.yy"
+#line 373 "dhcp4_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1017,7 +1017,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 376 "dhcp4_parser.yy"
+#line 377 "dhcp4_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 387 "dhcp4_parser.yy"
+#line 388 "dhcp4_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -1037,7 +1037,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 397 "dhcp4_parser.yy"
+#line 398 "dhcp4_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1048,7 +1048,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 402 "dhcp4_parser.yy"
+#line 403 "dhcp4_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 68:
-#line 426 "dhcp4_parser.yy"
+#line 427 "dhcp4_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1074,7 +1074,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 69:
-#line 433 "dhcp4_parser.yy"
+#line 434 "dhcp4_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1084,7 +1084,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 70:
-#line 441 "dhcp4_parser.yy"
+#line 442 "dhcp4_parser.yy"
                           {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1094,7 +1094,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71:
-#line 445 "dhcp4_parser.yy"
+#line 446 "dhcp4_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1102,8 +1102,8 @@ namespace isc { namespace dhcp {
 #line 1103 "dhcp4_parser.cc"
     break;
 
-  case 122:
-#line 506 "dhcp4_parser.yy"
+  case 123:
+#line 508 "dhcp4_parser.yy"
                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1111,8 +1111,8 @@ namespace isc { namespace dhcp {
 #line 1112 "dhcp4_parser.cc"
     break;
 
-  case 123:
-#line 511 "dhcp4_parser.yy"
+  case 124:
+#line 513 "dhcp4_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("min-valid-lifetime", prf);
@@ -1120,8 +1120,8 @@ namespace isc { namespace dhcp {
 #line 1121 "dhcp4_parser.cc"
     break;
 
-  case 124:
-#line 516 "dhcp4_parser.yy"
+  case 125:
+#line 518 "dhcp4_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-valid-lifetime", prf);
@@ -1129,8 +1129,8 @@ namespace isc { namespace dhcp {
 #line 1130 "dhcp4_parser.cc"
     break;
 
-  case 125:
-#line 521 "dhcp4_parser.yy"
+  case 126:
+#line 523 "dhcp4_parser.yy"
                                        {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -1138,8 +1138,8 @@ namespace isc { namespace dhcp {
 #line 1139 "dhcp4_parser.cc"
     break;
 
-  case 126:
-#line 526 "dhcp4_parser.yy"
+  case 127:
+#line 528 "dhcp4_parser.yy"
                                          {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -1147,8 +1147,8 @@ namespace isc { namespace dhcp {
 #line 1148 "dhcp4_parser.cc"
     break;
 
-  case 127:
-#line 531 "dhcp4_parser.yy"
+  case 128:
+#line 533 "dhcp4_parser.yy"
                                                        {
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("calculate-tee-times", ctt);
@@ -1156,8 +1156,8 @@ namespace isc { namespace dhcp {
 #line 1157 "dhcp4_parser.cc"
     break;
 
-  case 128:
-#line 536 "dhcp4_parser.yy"
+  case 129:
+#line 538 "dhcp4_parser.yy"
                                    {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
@@ -1165,8 +1165,8 @@ namespace isc { namespace dhcp {
 #line 1166 "dhcp4_parser.cc"
     break;
 
-  case 129:
-#line 541 "dhcp4_parser.yy"
+  case 130:
+#line 543 "dhcp4_parser.yy"
                                    {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
@@ -1174,8 +1174,8 @@ namespace isc { namespace dhcp {
 #line 1175 "dhcp4_parser.cc"
     break;
 
-  case 130:
-#line 546 "dhcp4_parser.yy"
+  case 131:
+#line 548 "dhcp4_parser.yy"
                                                                  {
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1183,16 +1183,16 @@ namespace isc { namespace dhcp {
 #line 1184 "dhcp4_parser.cc"
     break;
 
-  case 131:
-#line 551 "dhcp4_parser.yy"
+  case 132:
+#line 553 "dhcp4_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1192 "dhcp4_parser.cc"
     break;
 
-  case 132:
-#line 553 "dhcp4_parser.yy"
+  case 133:
+#line 555 "dhcp4_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
@@ -1201,8 +1201,8 @@ namespace isc { namespace dhcp {
 #line 1202 "dhcp4_parser.cc"
     break;
 
-  case 133:
-#line 559 "dhcp4_parser.yy"
+  case 134:
+#line 561 "dhcp4_parser.yy"
                                              {
     ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
@@ -1210,8 +1210,8 @@ namespace isc { namespace dhcp {
 #line 1211 "dhcp4_parser.cc"
     break;
 
-  case 134:
-#line 564 "dhcp4_parser.yy"
+  case 135:
+#line 566 "dhcp4_parser.yy"
                                                {
     ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
@@ -1219,8 +1219,8 @@ namespace isc { namespace dhcp {
 #line 1220 "dhcp4_parser.cc"
     break;
 
-  case 135:
-#line 569 "dhcp4_parser.yy"
+  case 136:
+#line 571 "dhcp4_parser.yy"
                                            {
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("authoritative", prf);
@@ -1228,8 +1228,8 @@ namespace isc { namespace dhcp {
 #line 1229 "dhcp4_parser.cc"
     break;
 
-  case 136:
-#line 574 "dhcp4_parser.yy"
+  case 137:
+#line 576 "dhcp4_parser.yy"
                                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
@@ -1237,8 +1237,8 @@ namespace isc { namespace dhcp {
 #line 1238 "dhcp4_parser.cc"
     break;
 
-  case 137:
-#line 579 "dhcp4_parser.yy"
+  case 138:
+#line 581 "dhcp4_parser.yy"
                                                                {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
@@ -1246,8 +1246,8 @@ namespace isc { namespace dhcp {
 #line 1247 "dhcp4_parser.cc"
     break;
 
-  case 138:
-#line 584 "dhcp4_parser.yy"
+  case 139:
+#line 586 "dhcp4_parser.yy"
                                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
@@ -1255,16 +1255,16 @@ namespace isc { namespace dhcp {
 #line 1256 "dhcp4_parser.cc"
     break;
 
-  case 139:
-#line 589 "dhcp4_parser.yy"
+  case 140:
+#line 591 "dhcp4_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 1264 "dhcp4_parser.cc"
     break;
 
-  case 140:
-#line 591 "dhcp4_parser.yy"
+  case 141:
+#line 593 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1272,40 +1272,40 @@ namespace isc { namespace dhcp {
 #line 1273 "dhcp4_parser.cc"
     break;
 
-  case 141:
-#line 597 "dhcp4_parser.yy"
+  case 142:
+#line 599 "dhcp4_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1281 "dhcp4_parser.cc"
     break;
 
-  case 142:
-#line 600 "dhcp4_parser.yy"
+  case 143:
+#line 602 "dhcp4_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1289 "dhcp4_parser.cc"
     break;
 
-  case 143:
-#line 603 "dhcp4_parser.yy"
+  case 144:
+#line 605 "dhcp4_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1297 "dhcp4_parser.cc"
     break;
 
-  case 144:
-#line 606 "dhcp4_parser.yy"
+  case 145:
+#line 608 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1305 "dhcp4_parser.cc"
     break;
 
-  case 145:
-#line 609 "dhcp4_parser.yy"
+  case 146:
+#line 611 "dhcp4_parser.yy"
              {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -1313,16 +1313,16 @@ namespace isc { namespace dhcp {
 #line 1314 "dhcp4_parser.cc"
     break;
 
-  case 146:
-#line 615 "dhcp4_parser.yy"
+  case 147:
+#line 617 "dhcp4_parser.yy"
                                              {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1322 "dhcp4_parser.cc"
     break;
 
-  case 147:
-#line 617 "dhcp4_parser.yy"
+  case 148:
+#line 619 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1331,16 +1331,16 @@ namespace isc { namespace dhcp {
 #line 1332 "dhcp4_parser.cc"
     break;
 
-  case 148:
-#line 623 "dhcp4_parser.yy"
+  case 149:
+#line 625 "dhcp4_parser.yy"
                                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1340 "dhcp4_parser.cc"
     break;
 
-  case 149:
-#line 625 "dhcp4_parser.yy"
+  case 150:
+#line 627 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1349,16 +1349,16 @@ namespace isc { namespace dhcp {
 #line 1350 "dhcp4_parser.cc"
     break;
 
-  case 150:
-#line 631 "dhcp4_parser.yy"
+  case 151:
+#line 633 "dhcp4_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1358 "dhcp4_parser.cc"
     break;
 
-  case 151:
-#line 633 "dhcp4_parser.yy"
+  case 152:
+#line 635 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -1367,16 +1367,16 @@ namespace isc { namespace dhcp {
 #line 1368 "dhcp4_parser.cc"
     break;
 
-  case 152:
-#line 639 "dhcp4_parser.yy"
+  case 153:
+#line 641 "dhcp4_parser.yy"
                                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1376 "dhcp4_parser.cc"
     break;
 
-  case 153:
-#line 641 "dhcp4_parser.yy"
+  case 154:
+#line 643 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -1385,189 +1385,198 @@ namespace isc { namespace dhcp {
 #line 1386 "dhcp4_parser.cc"
     break;
 
-  case 154:
-#line 647 "dhcp4_parser.yy"
+  case 155:
+#line 649 "dhcp4_parser.yy"
+                                                       {
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("store-extended-info", b);
+}
+#line 1395 "dhcp4_parser.cc"
+    break;
+
+  case 156:
+#line 654 "dhcp4_parser.yy"
                                      {
     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 1397 "dhcp4_parser.cc"
+#line 1406 "dhcp4_parser.cc"
     break;
 
-  case 155:
-#line 652 "dhcp4_parser.yy"
+  case 157:
+#line 659 "dhcp4_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1407 "dhcp4_parser.cc"
+#line 1416 "dhcp4_parser.cc"
     break;
 
-  case 165:
-#line 671 "dhcp4_parser.yy"
+  case 167:
+#line 678 "dhcp4_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1417 "dhcp4_parser.cc"
+#line 1426 "dhcp4_parser.cc"
     break;
 
-  case 166:
-#line 675 "dhcp4_parser.yy"
+  case 168:
+#line 682 "dhcp4_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1426 "dhcp4_parser.cc"
+#line 1435 "dhcp4_parser.cc"
     break;
 
-  case 167:
-#line 680 "dhcp4_parser.yy"
+  case 169:
+#line 687 "dhcp4_parser.yy"
                             {
     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 1437 "dhcp4_parser.cc"
+#line 1446 "dhcp4_parser.cc"
     break;
 
-  case 168:
-#line 685 "dhcp4_parser.yy"
+  case 170:
+#line 692 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1446 "dhcp4_parser.cc"
+#line 1455 "dhcp4_parser.cc"
     break;
 
-  case 169:
-#line 690 "dhcp4_parser.yy"
+  case 171:
+#line 697 "dhcp4_parser.yy"
                                    {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1454 "dhcp4_parser.cc"
+#line 1463 "dhcp4_parser.cc"
     break;
 
-  case 170:
-#line 692 "dhcp4_parser.yy"
+  case 172:
+#line 699 "dhcp4_parser.yy"
                     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1463 "dhcp4_parser.cc"
+#line 1472 "dhcp4_parser.cc"
     break;
 
-  case 171:
-#line 697 "dhcp4_parser.yy"
+  case 173:
+#line 704 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1469 "dhcp4_parser.cc"
+#line 1478 "dhcp4_parser.cc"
     break;
 
-  case 172:
-#line 698 "dhcp4_parser.yy"
+  case 174:
+#line 705 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1475 "dhcp4_parser.cc"
+#line 1484 "dhcp4_parser.cc"
     break;
 
-  case 173:
-#line 701 "dhcp4_parser.yy"
+  case 175:
+#line 708 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
-#line 1483 "dhcp4_parser.cc"
+#line 1492 "dhcp4_parser.cc"
     break;
 
-  case 174:
-#line 703 "dhcp4_parser.yy"
+  case 176:
+#line 710 "dhcp4_parser.yy"
                                  {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1492 "dhcp4_parser.cc"
+#line 1501 "dhcp4_parser.cc"
     break;
 
-  case 175:
-#line 708 "dhcp4_parser.yy"
+  case 177:
+#line 715 "dhcp4_parser.yy"
                                           {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
-#line 1500 "dhcp4_parser.cc"
+#line 1509 "dhcp4_parser.cc"
     break;
 
-  case 176:
-#line 710 "dhcp4_parser.yy"
+  case 178:
+#line 717 "dhcp4_parser.yy"
                 {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
-#line 1508 "dhcp4_parser.cc"
+#line 1517 "dhcp4_parser.cc"
     break;
 
-  case 177:
-#line 714 "dhcp4_parser.yy"
+  case 179:
+#line 721 "dhcp4_parser.yy"
                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1517 "dhcp4_parser.cc"
+#line 1526 "dhcp4_parser.cc"
     break;
 
-  case 178:
-#line 720 "dhcp4_parser.yy"
+  case 180:
+#line 727 "dhcp4_parser.yy"
                                {
     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 1528 "dhcp4_parser.cc"
+#line 1537 "dhcp4_parser.cc"
     break;
 
-  case 179:
-#line 725 "dhcp4_parser.yy"
+  case 181:
+#line 732 "dhcp4_parser.yy"
                                                           {
     // 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 1539 "dhcp4_parser.cc"
+#line 1548 "dhcp4_parser.cc"
     break;
 
-  case 180:
-#line 732 "dhcp4_parser.yy"
+  case 182:
+#line 739 "dhcp4_parser.yy"
                              {
     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 1550 "dhcp4_parser.cc"
+#line 1559 "dhcp4_parser.cc"
     break;
 
-  case 181:
-#line 737 "dhcp4_parser.yy"
+  case 183:
+#line 744 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1559 "dhcp4_parser.cc"
+#line 1568 "dhcp4_parser.cc"
     break;
 
-  case 185:
-#line 747 "dhcp4_parser.yy"
+  case 187:
+#line 754 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1567 "dhcp4_parser.cc"
+#line 1576 "dhcp4_parser.cc"
     break;
 
-  case 186:
-#line 749 "dhcp4_parser.yy"
+  case 188:
+#line 756 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1583,622 +1592,622 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1587 "dhcp4_parser.cc"
+#line 1596 "dhcp4_parser.cc"
     break;
 
-  case 187:
-#line 765 "dhcp4_parser.yy"
+  case 189:
+#line 772 "dhcp4_parser.yy"
                                {
     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 1598 "dhcp4_parser.cc"
+#line 1607 "dhcp4_parser.cc"
     break;
 
-  case 188:
-#line 770 "dhcp4_parser.yy"
+  case 190:
+#line 777 "dhcp4_parser.yy"
                                                           {
     // 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 1609 "dhcp4_parser.cc"
+#line 1618 "dhcp4_parser.cc"
     break;
 
-  case 189:
-#line 777 "dhcp4_parser.yy"
+  case 191:
+#line 784 "dhcp4_parser.yy"
                                  {
     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 1620 "dhcp4_parser.cc"
+#line 1629 "dhcp4_parser.cc"
     break;
 
-  case 190:
-#line 782 "dhcp4_parser.yy"
+  case 192:
+#line 789 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1629 "dhcp4_parser.cc"
+#line 1638 "dhcp4_parser.cc"
     break;
 
-  case 195:
-#line 795 "dhcp4_parser.yy"
+  case 197:
+#line 802 "dhcp4_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1639 "dhcp4_parser.cc"
+#line 1648 "dhcp4_parser.cc"
     break;
 
-  case 196:
-#line 799 "dhcp4_parser.yy"
+  case 198:
+#line 806 "dhcp4_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1649 "dhcp4_parser.cc"
+#line 1658 "dhcp4_parser.cc"
     break;
 
-  case 220:
-#line 832 "dhcp4_parser.yy"
+  case 222:
+#line 839 "dhcp4_parser.yy"
                     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1657 "dhcp4_parser.cc"
+#line 1666 "dhcp4_parser.cc"
     break;
 
-  case 221:
-#line 834 "dhcp4_parser.yy"
+  case 223:
+#line 841 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1666 "dhcp4_parser.cc"
+#line 1675 "dhcp4_parser.cc"
     break;
 
-  case 222:
-#line 839 "dhcp4_parser.yy"
+  case 224:
+#line 846 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1672 "dhcp4_parser.cc"
+#line 1681 "dhcp4_parser.cc"
     break;
 
-  case 223:
-#line 840 "dhcp4_parser.yy"
+  case 225:
+#line 847 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1678 "dhcp4_parser.cc"
+#line 1687 "dhcp4_parser.cc"
     break;
 
-  case 224:
-#line 841 "dhcp4_parser.yy"
+  case 226:
+#line 848 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1684 "dhcp4_parser.cc"
+#line 1693 "dhcp4_parser.cc"
     break;
 
-  case 225:
-#line 842 "dhcp4_parser.yy"
+  case 227:
+#line 849 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1690 "dhcp4_parser.cc"
+#line 1699 "dhcp4_parser.cc"
     break;
 
-  case 226:
-#line 845 "dhcp4_parser.yy"
+  case 228:
+#line 852 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1698 "dhcp4_parser.cc"
+#line 1707 "dhcp4_parser.cc"
     break;
 
-  case 227:
-#line 847 "dhcp4_parser.yy"
+  case 229:
+#line 854 "dhcp4_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1708 "dhcp4_parser.cc"
+#line 1717 "dhcp4_parser.cc"
     break;
 
-  case 228:
-#line 853 "dhcp4_parser.yy"
+  case 230:
+#line 860 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1716 "dhcp4_parser.cc"
+#line 1725 "dhcp4_parser.cc"
     break;
 
-  case 229:
-#line 855 "dhcp4_parser.yy"
+  case 231:
+#line 862 "dhcp4_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1726 "dhcp4_parser.cc"
+#line 1735 "dhcp4_parser.cc"
     break;
 
-  case 230:
-#line 861 "dhcp4_parser.yy"
+  case 232:
+#line 868 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1734 "dhcp4_parser.cc"
+#line 1743 "dhcp4_parser.cc"
     break;
 
-  case 231:
-#line 863 "dhcp4_parser.yy"
+  case 233:
+#line 870 "dhcp4_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1744 "dhcp4_parser.cc"
+#line 1753 "dhcp4_parser.cc"
     break;
 
-  case 232:
-#line 869 "dhcp4_parser.yy"
+  case 234:
+#line 876 "dhcp4_parser.yy"
                          {
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1753 "dhcp4_parser.cc"
+#line 1762 "dhcp4_parser.cc"
     break;
 
-  case 233:
-#line 874 "dhcp4_parser.yy"
+  case 235:
+#line 881 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1761 "dhcp4_parser.cc"
+#line 1770 "dhcp4_parser.cc"
     break;
 
-  case 234:
-#line 876 "dhcp4_parser.yy"
+  case 236:
+#line 883 "dhcp4_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1771 "dhcp4_parser.cc"
+#line 1780 "dhcp4_parser.cc"
     break;
 
-  case 235:
-#line 882 "dhcp4_parser.yy"
+  case 237:
+#line 889 "dhcp4_parser.yy"
                                {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1780 "dhcp4_parser.cc"
+#line 1789 "dhcp4_parser.cc"
     break;
 
-  case 236:
-#line 887 "dhcp4_parser.yy"
+  case 238:
+#line 894 "dhcp4_parser.yy"
                                          {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1789 "dhcp4_parser.cc"
+#line 1798 "dhcp4_parser.cc"
     break;
 
-  case 237:
-#line 892 "dhcp4_parser.yy"
+  case 239:
+#line 899 "dhcp4_parser.yy"
                                  {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1798 "dhcp4_parser.cc"
+#line 1807 "dhcp4_parser.cc"
     break;
 
-  case 238:
-#line 897 "dhcp4_parser.yy"
+  case 240:
+#line 904 "dhcp4_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1807 "dhcp4_parser.cc"
+#line 1816 "dhcp4_parser.cc"
     break;
 
-  case 239:
-#line 902 "dhcp4_parser.yy"
+  case 241:
+#line 909 "dhcp4_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1816 "dhcp4_parser.cc"
+#line 1825 "dhcp4_parser.cc"
     break;
 
-  case 240:
-#line 907 "dhcp4_parser.yy"
+  case 242:
+#line 914 "dhcp4_parser.yy"
                                            {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1825 "dhcp4_parser.cc"
+#line 1834 "dhcp4_parser.cc"
     break;
 
-  case 241:
-#line 912 "dhcp4_parser.yy"
+  case 243:
+#line 919 "dhcp4_parser.yy"
                                        {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1834 "dhcp4_parser.cc"
+#line 1843 "dhcp4_parser.cc"
     break;
 
-  case 242:
-#line 917 "dhcp4_parser.yy"
+  case 244:
+#line 924 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1842 "dhcp4_parser.cc"
+#line 1851 "dhcp4_parser.cc"
     break;
 
-  case 243:
-#line 919 "dhcp4_parser.yy"
+  case 245:
+#line 926 "dhcp4_parser.yy"
                {
     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 1852 "dhcp4_parser.cc"
+#line 1861 "dhcp4_parser.cc"
     break;
 
-  case 244:
-#line 925 "dhcp4_parser.yy"
+  case 246:
+#line 932 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1860 "dhcp4_parser.cc"
+#line 1869 "dhcp4_parser.cc"
     break;
 
-  case 245:
-#line 927 "dhcp4_parser.yy"
+  case 247:
+#line 934 "dhcp4_parser.yy"
                {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1870 "dhcp4_parser.cc"
+#line 1879 "dhcp4_parser.cc"
     break;
 
-  case 246:
-#line 933 "dhcp4_parser.yy"
+  case 248:
+#line 940 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1878 "dhcp4_parser.cc"
+#line 1887 "dhcp4_parser.cc"
     break;
 
-  case 247:
-#line 935 "dhcp4_parser.yy"
+  case 249:
+#line 942 "dhcp4_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1888 "dhcp4_parser.cc"
+#line 1897 "dhcp4_parser.cc"
     break;
 
-  case 248:
-#line 941 "dhcp4_parser.yy"
+  case 250:
+#line 948 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1896 "dhcp4_parser.cc"
+#line 1905 "dhcp4_parser.cc"
     break;
 
-  case 249:
-#line 943 "dhcp4_parser.yy"
+  case 251:
+#line 950 "dhcp4_parser.yy"
                {
     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 1906 "dhcp4_parser.cc"
+#line 1915 "dhcp4_parser.cc"
     break;
 
-  case 250:
-#line 949 "dhcp4_parser.yy"
+  case 252:
+#line 956 "dhcp4_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1915 "dhcp4_parser.cc"
+#line 1924 "dhcp4_parser.cc"
     break;
 
-  case 251:
-#line 954 "dhcp4_parser.yy"
+  case 253:
+#line 961 "dhcp4_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1924 "dhcp4_parser.cc"
+#line 1933 "dhcp4_parser.cc"
     break;
 
-  case 252:
-#line 959 "dhcp4_parser.yy"
+  case 254:
+#line 966 "dhcp4_parser.yy"
                                              {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-row-errors", n);
 }
-#line 1933 "dhcp4_parser.cc"
+#line 1942 "dhcp4_parser.cc"
     break;
 
-  case 253:
-#line 965 "dhcp4_parser.yy"
+  case 255:
+#line 972 "dhcp4_parser.yy"
                                                            {
     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 1944 "dhcp4_parser.cc"
+#line 1953 "dhcp4_parser.cc"
     break;
 
-  case 254:
-#line 970 "dhcp4_parser.yy"
+  case 256:
+#line 977 "dhcp4_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1953 "dhcp4_parser.cc"
+#line 1962 "dhcp4_parser.cc"
     break;
 
-  case 262:
-#line 986 "dhcp4_parser.yy"
+  case 264:
+#line 993 "dhcp4_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1962 "dhcp4_parser.cc"
+#line 1971 "dhcp4_parser.cc"
     break;
 
-  case 263:
-#line 991 "dhcp4_parser.yy"
+  case 265:
+#line 998 "dhcp4_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1971 "dhcp4_parser.cc"
+#line 1980 "dhcp4_parser.cc"
     break;
 
-  case 264:
-#line 996 "dhcp4_parser.yy"
+  case 266:
+#line 1003 "dhcp4_parser.yy"
                         {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1980 "dhcp4_parser.cc"
+#line 1989 "dhcp4_parser.cc"
     break;
 
-  case 265:
-#line 1001 "dhcp4_parser.yy"
+  case 267:
+#line 1008 "dhcp4_parser.yy"
                       {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1989 "dhcp4_parser.cc"
+#line 1998 "dhcp4_parser.cc"
     break;
 
-  case 266:
-#line 1006 "dhcp4_parser.yy"
+  case 268:
+#line 1013 "dhcp4_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1998 "dhcp4_parser.cc"
+#line 2007 "dhcp4_parser.cc"
     break;
 
-  case 267:
-#line 1011 "dhcp4_parser.yy"
+  case 269:
+#line 1018 "dhcp4_parser.yy"
                                  {
     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 2009 "dhcp4_parser.cc"
+#line 2018 "dhcp4_parser.cc"
     break;
 
-  case 268:
-#line 1016 "dhcp4_parser.yy"
+  case 270:
+#line 1023 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2018 "dhcp4_parser.cc"
+#line 2027 "dhcp4_parser.cc"
     break;
 
-  case 273:
-#line 1029 "dhcp4_parser.yy"
+  case 275:
+#line 1036 "dhcp4_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2028 "dhcp4_parser.cc"
+#line 2037 "dhcp4_parser.cc"
     break;
 
-  case 274:
-#line 1033 "dhcp4_parser.yy"
+  case 276:
+#line 1040 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2038 "dhcp4_parser.cc"
+#line 2047 "dhcp4_parser.cc"
     break;
 
-  case 275:
-#line 1039 "dhcp4_parser.yy"
+  case 277:
+#line 1046 "dhcp4_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2048 "dhcp4_parser.cc"
+#line 2057 "dhcp4_parser.cc"
     break;
 
-  case 276:
-#line 1043 "dhcp4_parser.yy"
+  case 278:
+#line 1050 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2058 "dhcp4_parser.cc"
+#line 2067 "dhcp4_parser.cc"
     break;
 
-  case 282:
-#line 1058 "dhcp4_parser.yy"
+  case 284:
+#line 1065 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2066 "dhcp4_parser.cc"
+#line 2075 "dhcp4_parser.cc"
     break;
 
-  case 283:
-#line 1060 "dhcp4_parser.yy"
+  case 285:
+#line 1067 "dhcp4_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 2076 "dhcp4_parser.cc"
+#line 2085 "dhcp4_parser.cc"
     break;
 
-  case 284:
-#line 1066 "dhcp4_parser.yy"
+  case 286:
+#line 1073 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2084 "dhcp4_parser.cc"
+#line 2093 "dhcp4_parser.cc"
     break;
 
-  case 285:
-#line 1068 "dhcp4_parser.yy"
+  case 287:
+#line 1075 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2093 "dhcp4_parser.cc"
+#line 2102 "dhcp4_parser.cc"
     break;
 
-  case 286:
-#line 1074 "dhcp4_parser.yy"
+  case 288:
+#line 1081 "dhcp4_parser.yy"
                                                      {
     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 2104 "dhcp4_parser.cc"
+#line 2113 "dhcp4_parser.cc"
     break;
 
-  case 287:
-#line 1079 "dhcp4_parser.yy"
+  case 289:
+#line 1086 "dhcp4_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2114 "dhcp4_parser.cc"
+#line 2123 "dhcp4_parser.cc"
     break;
 
-  case 296:
-#line 1097 "dhcp4_parser.yy"
+  case 298:
+#line 1104 "dhcp4_parser.yy"
                                                                {
     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 2123 "dhcp4_parser.cc"
+#line 2132 "dhcp4_parser.cc"
     break;
 
-  case 297:
-#line 1102 "dhcp4_parser.yy"
+  case 299:
+#line 1109 "dhcp4_parser.yy"
                                                                                {
     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 2132 "dhcp4_parser.cc"
+#line 2141 "dhcp4_parser.cc"
     break;
 
-  case 298:
-#line 1107 "dhcp4_parser.yy"
+  case 300:
+#line 1114 "dhcp4_parser.yy"
                                                        {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 2141 "dhcp4_parser.cc"
+#line 2150 "dhcp4_parser.cc"
     break;
 
-  case 299:
-#line 1112 "dhcp4_parser.yy"
+  case 301:
+#line 1119 "dhcp4_parser.yy"
                                                      {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 2150 "dhcp4_parser.cc"
+#line 2159 "dhcp4_parser.cc"
     break;
 
-  case 300:
-#line 1117 "dhcp4_parser.yy"
+  case 302:
+#line 1124 "dhcp4_parser.yy"
                                                  {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 2159 "dhcp4_parser.cc"
+#line 2168 "dhcp4_parser.cc"
     break;
 
-  case 301:
-#line 1122 "dhcp4_parser.yy"
+  case 303:
+#line 1129 "dhcp4_parser.yy"
                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 2168 "dhcp4_parser.cc"
+#line 2177 "dhcp4_parser.cc"
     break;
 
-  case 302:
-#line 1130 "dhcp4_parser.yy"
+  case 304:
+#line 1137 "dhcp4_parser.yy"
                       {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 2179 "dhcp4_parser.cc"
+#line 2188 "dhcp4_parser.cc"
     break;
 
-  case 303:
-#line 1135 "dhcp4_parser.yy"
+  case 305:
+#line 1142 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2188 "dhcp4_parser.cc"
+#line 2197 "dhcp4_parser.cc"
     break;
 
-  case 308:
-#line 1155 "dhcp4_parser.yy"
+  case 310:
+#line 1162 "dhcp4_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2198 "dhcp4_parser.cc"
+#line 2207 "dhcp4_parser.cc"
     break;
 
-  case 309:
-#line 1159 "dhcp4_parser.yy"
+  case 311:
+#line 1166 "dhcp4_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2220,294 +2229,294 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2224 "dhcp4_parser.cc"
+#line 2233 "dhcp4_parser.cc"
     break;
 
-  case 310:
-#line 1181 "dhcp4_parser.yy"
+  case 312:
+#line 1188 "dhcp4_parser.yy"
                             {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2234 "dhcp4_parser.cc"
+#line 2243 "dhcp4_parser.cc"
     break;
 
-  case 311:
-#line 1185 "dhcp4_parser.yy"
+  case 313:
+#line 1192 "dhcp4_parser.yy"
                                 {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2244 "dhcp4_parser.cc"
+#line 2253 "dhcp4_parser.cc"
     break;
 
-  case 351:
-#line 1236 "dhcp4_parser.yy"
+  case 354:
+#line 1244 "dhcp4_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2252 "dhcp4_parser.cc"
+#line 2261 "dhcp4_parser.cc"
     break;
 
-  case 352:
-#line 1238 "dhcp4_parser.yy"
+  case 355:
+#line 1246 "dhcp4_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2262 "dhcp4_parser.cc"
+#line 2271 "dhcp4_parser.cc"
     break;
 
-  case 353:
-#line 1244 "dhcp4_parser.yy"
+  case 356:
+#line 1252 "dhcp4_parser.yy"
                                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2270 "dhcp4_parser.cc"
+#line 2279 "dhcp4_parser.cc"
     break;
 
-  case 354:
-#line 1246 "dhcp4_parser.yy"
+  case 357:
+#line 1254 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 2280 "dhcp4_parser.cc"
+#line 2289 "dhcp4_parser.cc"
     break;
 
-  case 355:
-#line 1252 "dhcp4_parser.yy"
+  case 358:
+#line 1260 "dhcp4_parser.yy"
                                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2288 "dhcp4_parser.cc"
+#line 2297 "dhcp4_parser.cc"
     break;
 
-  case 356:
-#line 1254 "dhcp4_parser.yy"
+  case 359:
+#line 1262 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 2298 "dhcp4_parser.cc"
+#line 2307 "dhcp4_parser.cc"
     break;
 
-  case 357:
-#line 1260 "dhcp4_parser.yy"
+  case 360:
+#line 1268 "dhcp4_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2306 "dhcp4_parser.cc"
+#line 2315 "dhcp4_parser.cc"
     break;
 
-  case 358:
-#line 1262 "dhcp4_parser.yy"
+  case 361:
+#line 1270 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 2316 "dhcp4_parser.cc"
+#line 2325 "dhcp4_parser.cc"
     break;
 
-  case 359:
-#line 1268 "dhcp4_parser.yy"
+  case 362:
+#line 1276 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2324 "dhcp4_parser.cc"
+#line 2333 "dhcp4_parser.cc"
     break;
 
-  case 360:
-#line 1270 "dhcp4_parser.yy"
+  case 363:
+#line 1278 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2334 "dhcp4_parser.cc"
+#line 2343 "dhcp4_parser.cc"
     break;
 
-  case 361:
-#line 1276 "dhcp4_parser.yy"
+  case 364:
+#line 1284 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2342 "dhcp4_parser.cc"
+#line 2351 "dhcp4_parser.cc"
     break;
 
-  case 362:
-#line 1278 "dhcp4_parser.yy"
+  case 365:
+#line 1286 "dhcp4_parser.yy"
                {
     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 2352 "dhcp4_parser.cc"
+#line 2361 "dhcp4_parser.cc"
     break;
 
-  case 363:
-#line 1284 "dhcp4_parser.yy"
+  case 366:
+#line 1292 "dhcp4_parser.yy"
                                                {
     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 2363 "dhcp4_parser.cc"
+#line 2372 "dhcp4_parser.cc"
     break;
 
-  case 364:
-#line 1289 "dhcp4_parser.yy"
+  case 367:
+#line 1297 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2372 "dhcp4_parser.cc"
+#line 2381 "dhcp4_parser.cc"
     break;
 
-  case 365:
-#line 1294 "dhcp4_parser.yy"
+  case 368:
+#line 1302 "dhcp4_parser.yy"
                                    {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2380 "dhcp4_parser.cc"
+#line 2389 "dhcp4_parser.cc"
     break;
 
-  case 366:
-#line 1296 "dhcp4_parser.yy"
+  case 369:
+#line 1304 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2389 "dhcp4_parser.cc"
+#line 2398 "dhcp4_parser.cc"
     break;
 
-  case 367:
-#line 1301 "dhcp4_parser.yy"
+  case 370:
+#line 1309 "dhcp4_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2395 "dhcp4_parser.cc"
+#line 2404 "dhcp4_parser.cc"
     break;
 
-  case 368:
-#line 1302 "dhcp4_parser.yy"
+  case 371:
+#line 1310 "dhcp4_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2401 "dhcp4_parser.cc"
+#line 2410 "dhcp4_parser.cc"
     break;
 
-  case 369:
-#line 1303 "dhcp4_parser.yy"
+  case 372:
+#line 1311 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2407 "dhcp4_parser.cc"
+#line 2416 "dhcp4_parser.cc"
     break;
 
-  case 370:
-#line 1304 "dhcp4_parser.yy"
+  case 373:
+#line 1312 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2413 "dhcp4_parser.cc"
+#line 2422 "dhcp4_parser.cc"
     break;
 
-  case 371:
-#line 1307 "dhcp4_parser.yy"
+  case 374:
+#line 1315 "dhcp4_parser.yy"
                      {
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2422 "dhcp4_parser.cc"
+#line 2431 "dhcp4_parser.cc"
     break;
 
-  case 372:
-#line 1314 "dhcp4_parser.yy"
+  case 375:
+#line 1322 "dhcp4_parser.yy"
                                  {
     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 2433 "dhcp4_parser.cc"
+#line 2442 "dhcp4_parser.cc"
     break;
 
-  case 373:
-#line 1319 "dhcp4_parser.yy"
+  case 376:
+#line 1327 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2442 "dhcp4_parser.cc"
+#line 2451 "dhcp4_parser.cc"
     break;
 
-  case 378:
-#line 1334 "dhcp4_parser.yy"
+  case 381:
+#line 1342 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2452 "dhcp4_parser.cc"
+#line 2461 "dhcp4_parser.cc"
     break;
 
-  case 379:
-#line 1338 "dhcp4_parser.yy"
+  case 382:
+#line 1346 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
-#line 2460 "dhcp4_parser.cc"
+#line 2469 "dhcp4_parser.cc"
     break;
 
-  case 414:
-#line 1384 "dhcp4_parser.yy"
+  case 418:
+#line 1393 "dhcp4_parser.yy"
                             {
     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 2471 "dhcp4_parser.cc"
+#line 2480 "dhcp4_parser.cc"
     break;
 
-  case 415:
-#line 1389 "dhcp4_parser.yy"
+  case 419:
+#line 1398 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2480 "dhcp4_parser.cc"
+#line 2489 "dhcp4_parser.cc"
     break;
 
-  case 416:
-#line 1397 "dhcp4_parser.yy"
+  case 420:
+#line 1406 "dhcp4_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2489 "dhcp4_parser.cc"
+#line 2498 "dhcp4_parser.cc"
     break;
 
-  case 417:
-#line 1400 "dhcp4_parser.yy"
+  case 421:
+#line 1409 "dhcp4_parser.yy"
                                  {
     // parsing completed
 }
-#line 2497 "dhcp4_parser.cc"
+#line 2506 "dhcp4_parser.cc"
     break;
 
-  case 422:
-#line 1416 "dhcp4_parser.yy"
+  case 426:
+#line 1425 "dhcp4_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2507 "dhcp4_parser.cc"
+#line 2516 "dhcp4_parser.cc"
     break;
 
-  case 423:
-#line 1420 "dhcp4_parser.yy"
+  case 427:
+#line 1429 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2515,21 +2524,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2519 "dhcp4_parser.cc"
+#line 2528 "dhcp4_parser.cc"
     break;
 
-  case 424:
-#line 1431 "dhcp4_parser.yy"
+  case 428:
+#line 1440 "dhcp4_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2529 "dhcp4_parser.cc"
+#line 2538 "dhcp4_parser.cc"
     break;
 
-  case 425:
-#line 1435 "dhcp4_parser.yy"
+  case 429:
+#line 1444 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2537,281 +2546,281 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2541 "dhcp4_parser.cc"
+#line 2550 "dhcp4_parser.cc"
     break;
 
-  case 441:
-#line 1467 "dhcp4_parser.yy"
+  case 445:
+#line 1476 "dhcp4_parser.yy"
                          {
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2550 "dhcp4_parser.cc"
+#line 2559 "dhcp4_parser.cc"
     break;
 
-  case 443:
-#line 1474 "dhcp4_parser.yy"
+  case 447:
+#line 1483 "dhcp4_parser.yy"
                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2558 "dhcp4_parser.cc"
+#line 2567 "dhcp4_parser.cc"
     break;
 
-  case 444:
-#line 1476 "dhcp4_parser.yy"
+  case 448:
+#line 1485 "dhcp4_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2568 "dhcp4_parser.cc"
+#line 2577 "dhcp4_parser.cc"
     break;
 
-  case 445:
-#line 1482 "dhcp4_parser.yy"
+  case 449:
+#line 1491 "dhcp4_parser.yy"
                                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2576 "dhcp4_parser.cc"
+#line 2585 "dhcp4_parser.cc"
     break;
 
-  case 446:
-#line 1484 "dhcp4_parser.yy"
+  case 450:
+#line 1493 "dhcp4_parser.yy"
                {
     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 2586 "dhcp4_parser.cc"
+#line 2595 "dhcp4_parser.cc"
     break;
 
-  case 447:
-#line 1490 "dhcp4_parser.yy"
+  case 451:
+#line 1499 "dhcp4_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2594 "dhcp4_parser.cc"
+#line 2603 "dhcp4_parser.cc"
     break;
 
-  case 448:
-#line 1492 "dhcp4_parser.yy"
+  case 452:
+#line 1501 "dhcp4_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2604 "dhcp4_parser.cc"
+#line 2613 "dhcp4_parser.cc"
     break;
 
-  case 450:
-#line 1500 "dhcp4_parser.yy"
+  case 454:
+#line 1509 "dhcp4_parser.yy"
                                     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2612 "dhcp4_parser.cc"
+#line 2621 "dhcp4_parser.cc"
     break;
 
-  case 451:
-#line 1502 "dhcp4_parser.yy"
+  case 455:
+#line 1511 "dhcp4_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2622 "dhcp4_parser.cc"
+#line 2631 "dhcp4_parser.cc"
     break;
 
-  case 452:
-#line 1508 "dhcp4_parser.yy"
+  case 456:
+#line 1517 "dhcp4_parser.yy"
                                       {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2631 "dhcp4_parser.cc"
+#line 2640 "dhcp4_parser.cc"
     break;
 
-  case 453:
-#line 1517 "dhcp4_parser.yy"
+  case 457:
+#line 1526 "dhcp4_parser.yy"
                               {
     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 2642 "dhcp4_parser.cc"
+#line 2651 "dhcp4_parser.cc"
     break;
 
-  case 454:
-#line 1522 "dhcp4_parser.yy"
+  case 458:
+#line 1531 "dhcp4_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2651 "dhcp4_parser.cc"
+#line 2660 "dhcp4_parser.cc"
     break;
 
-  case 459:
-#line 1541 "dhcp4_parser.yy"
+  case 463:
+#line 1550 "dhcp4_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2661 "dhcp4_parser.cc"
+#line 2670 "dhcp4_parser.cc"
     break;
 
-  case 460:
-#line 1545 "dhcp4_parser.yy"
+  case 464:
+#line 1554 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2670 "dhcp4_parser.cc"
+#line 2679 "dhcp4_parser.cc"
     break;
 
-  case 461:
-#line 1553 "dhcp4_parser.yy"
+  case 465:
+#line 1562 "dhcp4_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2680 "dhcp4_parser.cc"
+#line 2689 "dhcp4_parser.cc"
     break;
 
-  case 462:
-#line 1557 "dhcp4_parser.yy"
+  case 466:
+#line 1566 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2689 "dhcp4_parser.cc"
+#line 2698 "dhcp4_parser.cc"
     break;
 
-  case 477:
-#line 1590 "dhcp4_parser.yy"
+  case 481:
+#line 1599 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2697 "dhcp4_parser.cc"
+#line 2706 "dhcp4_parser.cc"
     break;
 
-  case 478:
-#line 1592 "dhcp4_parser.yy"
+  case 482:
+#line 1601 "dhcp4_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2707 "dhcp4_parser.cc"
+#line 2716 "dhcp4_parser.cc"
     break;
 
-  case 481:
-#line 1602 "dhcp4_parser.yy"
+  case 485:
+#line 1611 "dhcp4_parser.yy"
                                                  {
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2716 "dhcp4_parser.cc"
+#line 2725 "dhcp4_parser.cc"
     break;
 
-  case 482:
-#line 1607 "dhcp4_parser.yy"
+  case 486:
+#line 1616 "dhcp4_parser.yy"
                                                    {
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2725 "dhcp4_parser.cc"
+#line 2734 "dhcp4_parser.cc"
     break;
 
-  case 483:
-#line 1615 "dhcp4_parser.yy"
+  case 487:
+#line 1624 "dhcp4_parser.yy"
                   {
     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 2736 "dhcp4_parser.cc"
+#line 2745 "dhcp4_parser.cc"
     break;
 
-  case 484:
-#line 1620 "dhcp4_parser.yy"
+  case 488:
+#line 1629 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2745 "dhcp4_parser.cc"
+#line 2754 "dhcp4_parser.cc"
     break;
 
-  case 489:
-#line 1635 "dhcp4_parser.yy"
+  case 493:
+#line 1644 "dhcp4_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2755 "dhcp4_parser.cc"
+#line 2764 "dhcp4_parser.cc"
     break;
 
-  case 490:
-#line 1639 "dhcp4_parser.yy"
+  case 494:
+#line 1648 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2765 "dhcp4_parser.cc"
+#line 2774 "dhcp4_parser.cc"
     break;
 
-  case 491:
-#line 1645 "dhcp4_parser.yy"
+  case 495:
+#line 1654 "dhcp4_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2775 "dhcp4_parser.cc"
+#line 2784 "dhcp4_parser.cc"
     break;
 
-  case 492:
-#line 1649 "dhcp4_parser.yy"
+  case 496:
+#line 1658 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2785 "dhcp4_parser.cc"
+#line 2794 "dhcp4_parser.cc"
     break;
 
-  case 502:
-#line 1668 "dhcp4_parser.yy"
+  case 506:
+#line 1677 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2793 "dhcp4_parser.cc"
+#line 2802 "dhcp4_parser.cc"
     break;
 
-  case 503:
-#line 1670 "dhcp4_parser.yy"
+  case 507:
+#line 1679 "dhcp4_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2803 "dhcp4_parser.cc"
+#line 2812 "dhcp4_parser.cc"
     break;
 
-  case 504:
-#line 1676 "dhcp4_parser.yy"
+  case 508:
+#line 1685 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2811 "dhcp4_parser.cc"
+#line 2820 "dhcp4_parser.cc"
     break;
 
-  case 505:
-#line 1678 "dhcp4_parser.yy"
+  case 509:
+#line 1687 "dhcp4_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2834,19 +2843,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2838 "dhcp4_parser.cc"
+#line 2847 "dhcp4_parser.cc"
     break;
 
-  case 506:
-#line 1701 "dhcp4_parser.yy"
+  case 510:
+#line 1710 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2846 "dhcp4_parser.cc"
+#line 2855 "dhcp4_parser.cc"
     break;
 
-  case 507:
-#line 1703 "dhcp4_parser.yy"
+  case 511:
+#line 1712 "dhcp4_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2871,1108 +2880,1108 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2875 "dhcp4_parser.cc"
+#line 2884 "dhcp4_parser.cc"
     break;
 
-  case 508:
-#line 1731 "dhcp4_parser.yy"
+  case 512:
+#line 1740 "dhcp4_parser.yy"
                            {
     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 2886 "dhcp4_parser.cc"
+#line 2895 "dhcp4_parser.cc"
     break;
 
-  case 509:
-#line 1736 "dhcp4_parser.yy"
+  case 513:
+#line 1745 "dhcp4_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2895 "dhcp4_parser.cc"
+#line 2904 "dhcp4_parser.cc"
     break;
 
-  case 514:
-#line 1749 "dhcp4_parser.yy"
+  case 518:
+#line 1758 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2905 "dhcp4_parser.cc"
+#line 2914 "dhcp4_parser.cc"
     break;
 
-  case 515:
-#line 1753 "dhcp4_parser.yy"
+  case 519:
+#line 1762 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2914 "dhcp4_parser.cc"
+#line 2923 "dhcp4_parser.cc"
     break;
 
-  case 516:
-#line 1758 "dhcp4_parser.yy"
+  case 520:
+#line 1767 "dhcp4_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2924 "dhcp4_parser.cc"
+#line 2933 "dhcp4_parser.cc"
     break;
 
-  case 517:
-#line 1762 "dhcp4_parser.yy"
+  case 521:
+#line 1771 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2933 "dhcp4_parser.cc"
+#line 2942 "dhcp4_parser.cc"
     break;
 
-  case 537:
-#line 1793 "dhcp4_parser.yy"
+  case 541:
+#line 1802 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2941 "dhcp4_parser.cc"
+#line 2950 "dhcp4_parser.cc"
     break;
 
-  case 538:
-#line 1795 "dhcp4_parser.yy"
+  case 542:
+#line 1804 "dhcp4_parser.yy"
                {
     ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 2951 "dhcp4_parser.cc"
+#line 2960 "dhcp4_parser.cc"
     break;
 
-  case 539:
-#line 1801 "dhcp4_parser.yy"
+  case 543:
+#line 1810 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2959 "dhcp4_parser.cc"
+#line 2968 "dhcp4_parser.cc"
     break;
 
-  case 540:
-#line 1803 "dhcp4_parser.yy"
+  case 544:
+#line 1812 "dhcp4_parser.yy"
                {
     ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 2969 "dhcp4_parser.cc"
+#line 2978 "dhcp4_parser.cc"
     break;
 
-  case 541:
-#line 1809 "dhcp4_parser.yy"
+  case 545:
+#line 1818 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2977 "dhcp4_parser.cc"
+#line 2986 "dhcp4_parser.cc"
     break;
 
-  case 542:
-#line 1811 "dhcp4_parser.yy"
+  case 546:
+#line 1820 "dhcp4_parser.yy"
                {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 2987 "dhcp4_parser.cc"
+#line 2996 "dhcp4_parser.cc"
     break;
 
-  case 543:
-#line 1817 "dhcp4_parser.yy"
+  case 547:
+#line 1826 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2995 "dhcp4_parser.cc"
+#line 3004 "dhcp4_parser.cc"
     break;
 
-  case 544:
-#line 1819 "dhcp4_parser.yy"
+  case 548:
+#line 1828 "dhcp4_parser.yy"
                {
     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 3005 "dhcp4_parser.cc"
+#line 3014 "dhcp4_parser.cc"
     break;
 
-  case 545:
-#line 1825 "dhcp4_parser.yy"
+  case 549:
+#line 1834 "dhcp4_parser.yy"
                            {
     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 3016 "dhcp4_parser.cc"
+#line 3025 "dhcp4_parser.cc"
     break;
 
-  case 546:
-#line 1830 "dhcp4_parser.yy"
+  case 550:
+#line 1839 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3025 "dhcp4_parser.cc"
+#line 3034 "dhcp4_parser.cc"
     break;
 
-  case 547:
-#line 1835 "dhcp4_parser.yy"
+  case 551:
+#line 1844 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3033 "dhcp4_parser.cc"
+#line 3042 "dhcp4_parser.cc"
     break;
 
-  case 548:
-#line 1837 "dhcp4_parser.yy"
+  case 552:
+#line 1846 "dhcp4_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3043 "dhcp4_parser.cc"
+#line 3052 "dhcp4_parser.cc"
     break;
 
-  case 549:
-#line 1843 "dhcp4_parser.yy"
+  case 553:
+#line 1852 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3051 "dhcp4_parser.cc"
+#line 3060 "dhcp4_parser.cc"
     break;
 
-  case 550:
-#line 1845 "dhcp4_parser.yy"
+  case 554:
+#line 1854 "dhcp4_parser.yy"
                {
     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 3061 "dhcp4_parser.cc"
+#line 3070 "dhcp4_parser.cc"
     break;
 
-  case 551:
-#line 1851 "dhcp4_parser.yy"
+  case 555:
+#line 1860 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3069 "dhcp4_parser.cc"
+#line 3078 "dhcp4_parser.cc"
     break;
 
-  case 552:
-#line 1853 "dhcp4_parser.yy"
+  case 556:
+#line 1862 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 3079 "dhcp4_parser.cc"
+#line 3088 "dhcp4_parser.cc"
     break;
 
-  case 553:
-#line 1859 "dhcp4_parser.yy"
+  case 557:
+#line 1868 "dhcp4_parser.yy"
                              {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3087 "dhcp4_parser.cc"
+#line 3096 "dhcp4_parser.cc"
     break;
 
-  case 554:
-#line 1861 "dhcp4_parser.yy"
+  case 558:
+#line 1870 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 3097 "dhcp4_parser.cc"
+#line 3106 "dhcp4_parser.cc"
     break;
 
-  case 555:
-#line 1867 "dhcp4_parser.yy"
+  case 559:
+#line 1876 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3105 "dhcp4_parser.cc"
+#line 3114 "dhcp4_parser.cc"
     break;
 
-  case 556:
-#line 1869 "dhcp4_parser.yy"
+  case 560:
+#line 1878 "dhcp4_parser.yy"
                {
     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 3115 "dhcp4_parser.cc"
+#line 3124 "dhcp4_parser.cc"
     break;
 
-  case 557:
-#line 1875 "dhcp4_parser.yy"
+  case 561:
+#line 1884 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3123 "dhcp4_parser.cc"
+#line 3132 "dhcp4_parser.cc"
     break;
 
-  case 558:
-#line 1877 "dhcp4_parser.yy"
+  case 562:
+#line 1886 "dhcp4_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3133 "dhcp4_parser.cc"
+#line 3142 "dhcp4_parser.cc"
     break;
 
-  case 559:
-#line 1883 "dhcp4_parser.yy"
+  case 563:
+#line 1892 "dhcp4_parser.yy"
                                            {
     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 3144 "dhcp4_parser.cc"
+#line 3153 "dhcp4_parser.cc"
     break;
 
-  case 560:
-#line 1888 "dhcp4_parser.yy"
+  case 564:
+#line 1897 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3153 "dhcp4_parser.cc"
+#line 3162 "dhcp4_parser.cc"
     break;
 
-  case 561:
-#line 1896 "dhcp4_parser.yy"
+  case 565:
+#line 1905 "dhcp4_parser.yy"
              {
     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 3164 "dhcp4_parser.cc"
+#line 3173 "dhcp4_parser.cc"
     break;
 
-  case 562:
-#line 1901 "dhcp4_parser.yy"
+  case 566:
+#line 1910 "dhcp4_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3173 "dhcp4_parser.cc"
+#line 3182 "dhcp4_parser.cc"
     break;
 
-  case 565:
-#line 1913 "dhcp4_parser.yy"
+  case 569:
+#line 1922 "dhcp4_parser.yy"
                                {
     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 3184 "dhcp4_parser.cc"
+#line 3193 "dhcp4_parser.cc"
     break;
 
-  case 566:
-#line 1918 "dhcp4_parser.yy"
+  case 570:
+#line 1927 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3193 "dhcp4_parser.cc"
+#line 3202 "dhcp4_parser.cc"
     break;
 
-  case 569:
-#line 1927 "dhcp4_parser.yy"
+  case 573:
+#line 1936 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3203 "dhcp4_parser.cc"
+#line 3212 "dhcp4_parser.cc"
     break;
 
-  case 570:
-#line 1931 "dhcp4_parser.yy"
+  case 574:
+#line 1940 "dhcp4_parser.yy"
                                      {
     // 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 3213 "dhcp4_parser.cc"
+#line 3222 "dhcp4_parser.cc"
     break;
 
-  case 587:
-#line 1960 "dhcp4_parser.yy"
+  case 591:
+#line 1969 "dhcp4_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3221 "dhcp4_parser.cc"
+#line 3230 "dhcp4_parser.cc"
     break;
 
-  case 588:
-#line 1962 "dhcp4_parser.yy"
+  case 592:
+#line 1971 "dhcp4_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3231 "dhcp4_parser.cc"
+#line 3240 "dhcp4_parser.cc"
     break;
 
-  case 589:
-#line 1968 "dhcp4_parser.yy"
+  case 593:
+#line 1977 "dhcp4_parser.yy"
                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3240 "dhcp4_parser.cc"
+#line 3249 "dhcp4_parser.cc"
     break;
 
-  case 590:
-#line 1977 "dhcp4_parser.yy"
+  case 594:
+#line 1986 "dhcp4_parser.yy"
                                          {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3249 "dhcp4_parser.cc"
+#line 3258 "dhcp4_parser.cc"
     break;
 
-  case 591:
-#line 1984 "dhcp4_parser.yy"
+  case 595:
+#line 1993 "dhcp4_parser.yy"
                                {
     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 3260 "dhcp4_parser.cc"
+#line 3269 "dhcp4_parser.cc"
     break;
 
-  case 592:
-#line 1989 "dhcp4_parser.yy"
+  case 596:
+#line 1998 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3269 "dhcp4_parser.cc"
+#line 3278 "dhcp4_parser.cc"
     break;
 
-  case 600:
-#line 2005 "dhcp4_parser.yy"
+  case 604:
+#line 2014 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3277 "dhcp4_parser.cc"
+#line 3286 "dhcp4_parser.cc"
     break;
 
-  case 601:
-#line 2007 "dhcp4_parser.yy"
+  case 605:
+#line 2016 "dhcp4_parser.yy"
                {
     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 3287 "dhcp4_parser.cc"
+#line 3296 "dhcp4_parser.cc"
     break;
 
-  case 602:
-#line 2013 "dhcp4_parser.yy"
+  case 606:
+#line 2022 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3295 "dhcp4_parser.cc"
+#line 3304 "dhcp4_parser.cc"
     break;
 
-  case 603:
-#line 2015 "dhcp4_parser.yy"
+  case 607:
+#line 2024 "dhcp4_parser.yy"
                {
     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 3305 "dhcp4_parser.cc"
+#line 3314 "dhcp4_parser.cc"
     break;
 
-  case 604:
-#line 2024 "dhcp4_parser.yy"
+  case 608:
+#line 2033 "dhcp4_parser.yy"
                                        {
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3316 "dhcp4_parser.cc"
+#line 3325 "dhcp4_parser.cc"
     break;
 
-  case 605:
-#line 2029 "dhcp4_parser.yy"
+  case 609:
+#line 2038 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3327 "dhcp4_parser.cc"
+#line 3336 "dhcp4_parser.cc"
     break;
 
-  case 614:
-#line 2048 "dhcp4_parser.yy"
+  case 618:
+#line 2057 "dhcp4_parser.yy"
                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-queue", b);
 }
-#line 3336 "dhcp4_parser.cc"
+#line 3345 "dhcp4_parser.cc"
     break;
 
-  case 615:
-#line 2053 "dhcp4_parser.yy"
+  case 619:
+#line 2062 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3344 "dhcp4_parser.cc"
+#line 3353 "dhcp4_parser.cc"
     break;
 
-  case 616:
-#line 2055 "dhcp4_parser.yy"
+  case 620:
+#line 2064 "dhcp4_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3354 "dhcp4_parser.cc"
+#line 3363 "dhcp4_parser.cc"
     break;
 
-  case 617:
-#line 2061 "dhcp4_parser.yy"
+  case 621:
+#line 2070 "dhcp4_parser.yy"
                                  {
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3363 "dhcp4_parser.cc"
+#line 3372 "dhcp4_parser.cc"
     break;
 
-  case 618:
-#line 2066 "dhcp4_parser.yy"
+  case 622:
+#line 2075 "dhcp4_parser.yy"
                             {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3371 "dhcp4_parser.cc"
+#line 3380 "dhcp4_parser.cc"
     break;
 
-  case 619:
-#line 2068 "dhcp4_parser.yy"
+  case 623:
+#line 2077 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3380 "dhcp4_parser.cc"
+#line 3389 "dhcp4_parser.cc"
     break;
 
-  case 620:
-#line 2075 "dhcp4_parser.yy"
+  case 624:
+#line 2084 "dhcp4_parser.yy"
                      {
     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 3391 "dhcp4_parser.cc"
+#line 3400 "dhcp4_parser.cc"
     break;
 
-  case 621:
-#line 2080 "dhcp4_parser.yy"
+  case 625:
+#line 2089 "dhcp4_parser.yy"
                                                        {
     // 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 3402 "dhcp4_parser.cc"
+#line 3411 "dhcp4_parser.cc"
     break;
 
-  case 622:
-#line 2087 "dhcp4_parser.yy"
+  case 626:
+#line 2096 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3412 "dhcp4_parser.cc"
+#line 3421 "dhcp4_parser.cc"
     break;
 
-  case 623:
-#line 2091 "dhcp4_parser.yy"
+  case 627:
+#line 2100 "dhcp4_parser.yy"
                                   {
     // 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 3422 "dhcp4_parser.cc"
+#line 3431 "dhcp4_parser.cc"
     break;
 
-  case 644:
-#line 2121 "dhcp4_parser.yy"
+  case 648:
+#line 2130 "dhcp4_parser.yy"
                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3431 "dhcp4_parser.cc"
+#line 3440 "dhcp4_parser.cc"
     break;
 
-  case 645:
-#line 2126 "dhcp4_parser.yy"
+  case 649:
+#line 2135 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3439 "dhcp4_parser.cc"
+#line 3448 "dhcp4_parser.cc"
     break;
 
-  case 646:
-#line 2128 "dhcp4_parser.yy"
+  case 650:
+#line 2137 "dhcp4_parser.yy"
                {
     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 3449 "dhcp4_parser.cc"
+#line 3458 "dhcp4_parser.cc"
     break;
 
-  case 647:
-#line 2134 "dhcp4_parser.yy"
+  case 651:
+#line 2143 "dhcp4_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3458 "dhcp4_parser.cc"
+#line 3467 "dhcp4_parser.cc"
     break;
 
-  case 648:
-#line 2139 "dhcp4_parser.yy"
+  case 652:
+#line 2148 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3466 "dhcp4_parser.cc"
+#line 3475 "dhcp4_parser.cc"
     break;
 
-  case 649:
-#line 2141 "dhcp4_parser.yy"
+  case 653:
+#line 2150 "dhcp4_parser.yy"
                {
     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 3476 "dhcp4_parser.cc"
+#line 3485 "dhcp4_parser.cc"
     break;
 
-  case 650:
-#line 2147 "dhcp4_parser.yy"
+  case 654:
+#line 2156 "dhcp4_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3485 "dhcp4_parser.cc"
+#line 3494 "dhcp4_parser.cc"
     break;
 
-  case 651:
-#line 2152 "dhcp4_parser.yy"
+  case 655:
+#line 2161 "dhcp4_parser.yy"
                                              {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3494 "dhcp4_parser.cc"
+#line 3503 "dhcp4_parser.cc"
     break;
 
-  case 652:
-#line 2157 "dhcp4_parser.yy"
+  case 656:
+#line 2166 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3502 "dhcp4_parser.cc"
+#line 3511 "dhcp4_parser.cc"
     break;
 
-  case 653:
-#line 2159 "dhcp4_parser.yy"
+  case 657:
+#line 2168 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3511 "dhcp4_parser.cc"
+#line 3520 "dhcp4_parser.cc"
     break;
 
-  case 654:
-#line 2165 "dhcp4_parser.yy"
+  case 658:
+#line 2174 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3517 "dhcp4_parser.cc"
+#line 3526 "dhcp4_parser.cc"
     break;
 
-  case 655:
-#line 2166 "dhcp4_parser.yy"
+  case 659:
+#line 2175 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3523 "dhcp4_parser.cc"
+#line 3532 "dhcp4_parser.cc"
     break;
 
-  case 656:
-#line 2169 "dhcp4_parser.yy"
+  case 660:
+#line 2178 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3531 "dhcp4_parser.cc"
+#line 3540 "dhcp4_parser.cc"
     break;
 
-  case 657:
-#line 2171 "dhcp4_parser.yy"
+  case 661:
+#line 2180 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3541 "dhcp4_parser.cc"
+#line 3550 "dhcp4_parser.cc"
     break;
 
-  case 658:
-#line 2178 "dhcp4_parser.yy"
+  case 662:
+#line 2187 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3549 "dhcp4_parser.cc"
+#line 3558 "dhcp4_parser.cc"
     break;
 
-  case 659:
-#line 2180 "dhcp4_parser.yy"
+  case 663:
+#line 2189 "dhcp4_parser.yy"
                {
     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 3559 "dhcp4_parser.cc"
+#line 3568 "dhcp4_parser.cc"
     break;
 
-  case 660:
-#line 2187 "dhcp4_parser.yy"
+  case 664:
+#line 2196 "dhcp4_parser.yy"
                                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3568 "dhcp4_parser.cc"
+#line 3577 "dhcp4_parser.cc"
     break;
 
-  case 661:
-#line 2193 "dhcp4_parser.yy"
+  case 665:
+#line 2202 "dhcp4_parser.yy"
                                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3577 "dhcp4_parser.cc"
+#line 3586 "dhcp4_parser.cc"
     break;
 
-  case 662:
-#line 2199 "dhcp4_parser.yy"
+  case 666:
+#line 2208 "dhcp4_parser.yy"
                                              {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3585 "dhcp4_parser.cc"
+#line 3594 "dhcp4_parser.cc"
     break;
 
-  case 663:
-#line 2201 "dhcp4_parser.yy"
+  case 667:
+#line 2210 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3594 "dhcp4_parser.cc"
+#line 3603 "dhcp4_parser.cc"
     break;
 
-  case 664:
-#line 2207 "dhcp4_parser.yy"
+  case 668:
+#line 2216 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3602 "dhcp4_parser.cc"
+#line 3611 "dhcp4_parser.cc"
     break;
 
-  case 665:
-#line 2209 "dhcp4_parser.yy"
+  case 669:
+#line 2218 "dhcp4_parser.yy"
                {
     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 3612 "dhcp4_parser.cc"
+#line 3621 "dhcp4_parser.cc"
     break;
 
-  case 666:
-#line 2216 "dhcp4_parser.yy"
+  case 670:
+#line 2225 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3620 "dhcp4_parser.cc"
+#line 3629 "dhcp4_parser.cc"
     break;
 
-  case 667:
-#line 2218 "dhcp4_parser.yy"
+  case 671:
+#line 2227 "dhcp4_parser.yy"
                {
     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 3630 "dhcp4_parser.cc"
+#line 3639 "dhcp4_parser.cc"
     break;
 
-  case 668:
-#line 2225 "dhcp4_parser.yy"
+  case 672:
+#line 2234 "dhcp4_parser.yy"
                                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3638 "dhcp4_parser.cc"
+#line 3647 "dhcp4_parser.cc"
     break;
 
-  case 669:
-#line 2227 "dhcp4_parser.yy"
+  case 673:
+#line 2236 "dhcp4_parser.yy"
                {
     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 3648 "dhcp4_parser.cc"
+#line 3657 "dhcp4_parser.cc"
     break;
 
-  case 670:
-#line 2236 "dhcp4_parser.yy"
+  case 674:
+#line 2245 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3656 "dhcp4_parser.cc"
+#line 3665 "dhcp4_parser.cc"
     break;
 
-  case 671:
-#line 2238 "dhcp4_parser.yy"
+  case 675:
+#line 2247 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3665 "dhcp4_parser.cc"
+#line 3674 "dhcp4_parser.cc"
     break;
 
-  case 672:
-#line 2243 "dhcp4_parser.yy"
+  case 676:
+#line 2252 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3673 "dhcp4_parser.cc"
+#line 3682 "dhcp4_parser.cc"
     break;
 
-  case 673:
-#line 2245 "dhcp4_parser.yy"
+  case 677:
+#line 2254 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3682 "dhcp4_parser.cc"
+#line 3691 "dhcp4_parser.cc"
     break;
 
-  case 674:
-#line 2250 "dhcp4_parser.yy"
+  case 678:
+#line 2259 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3690 "dhcp4_parser.cc"
+#line 3699 "dhcp4_parser.cc"
     break;
 
-  case 675:
-#line 2252 "dhcp4_parser.yy"
+  case 679:
+#line 2261 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3699 "dhcp4_parser.cc"
+#line 3708 "dhcp4_parser.cc"
     break;
 
-  case 676:
-#line 2257 "dhcp4_parser.yy"
+  case 680:
+#line 2266 "dhcp4_parser.yy"
                                {
     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 3710 "dhcp4_parser.cc"
+#line 3719 "dhcp4_parser.cc"
     break;
 
-  case 677:
-#line 2262 "dhcp4_parser.yy"
+  case 681:
+#line 2271 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3720 "dhcp4_parser.cc"
+#line 3729 "dhcp4_parser.cc"
     break;
 
-  case 678:
-#line 2268 "dhcp4_parser.yy"
+  case 682:
+#line 2277 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3730 "dhcp4_parser.cc"
+#line 3739 "dhcp4_parser.cc"
     break;
 
-  case 679:
-#line 2272 "dhcp4_parser.yy"
+  case 683:
+#line 2281 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 3739 "dhcp4_parser.cc"
+#line 3748 "dhcp4_parser.cc"
     break;
 
-  case 684:
-#line 2287 "dhcp4_parser.yy"
+  case 688:
+#line 2296 "dhcp4_parser.yy"
                                    {
     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 3750 "dhcp4_parser.cc"
+#line 3759 "dhcp4_parser.cc"
     break;
 
-  case 685:
-#line 2292 "dhcp4_parser.yy"
+  case 689:
+#line 2301 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3759 "dhcp4_parser.cc"
+#line 3768 "dhcp4_parser.cc"
     break;
 
-  case 686:
-#line 2297 "dhcp4_parser.yy"
+  case 690:
+#line 2306 "dhcp4_parser.yy"
                                                              {
     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 3768 "dhcp4_parser.cc"
+#line 3777 "dhcp4_parser.cc"
     break;
 
-  case 687:
-#line 2307 "dhcp4_parser.yy"
+  case 691:
+#line 2316 "dhcp4_parser.yy"
                         {
     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 3779 "dhcp4_parser.cc"
+#line 3788 "dhcp4_parser.cc"
     break;
 
-  case 688:
-#line 2312 "dhcp4_parser.yy"
+  case 692:
+#line 2321 "dhcp4_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3788 "dhcp4_parser.cc"
+#line 3797 "dhcp4_parser.cc"
     break;
 
-  case 689:
-#line 2317 "dhcp4_parser.yy"
+  case 693:
+#line 2326 "dhcp4_parser.yy"
                             {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3798 "dhcp4_parser.cc"
+#line 3807 "dhcp4_parser.cc"
     break;
 
-  case 690:
-#line 2321 "dhcp4_parser.yy"
+  case 694:
+#line 2330 "dhcp4_parser.yy"
                                 {
     // parsing completed
 }
-#line 3806 "dhcp4_parser.cc"
+#line 3815 "dhcp4_parser.cc"
     break;
 
-  case 694:
-#line 2337 "dhcp4_parser.yy"
+  case 698:
+#line 2346 "dhcp4_parser.yy"
                  {
     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 3817 "dhcp4_parser.cc"
+#line 3826 "dhcp4_parser.cc"
     break;
 
-  case 695:
-#line 2342 "dhcp4_parser.yy"
+  case 699:
+#line 2351 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3826 "dhcp4_parser.cc"
+#line 3835 "dhcp4_parser.cc"
     break;
 
-  case 698:
-#line 2354 "dhcp4_parser.yy"
+  case 702:
+#line 2363 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3836 "dhcp4_parser.cc"
+#line 3845 "dhcp4_parser.cc"
     break;
 
-  case 699:
-#line 2358 "dhcp4_parser.yy"
+  case 703:
+#line 2367 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 3844 "dhcp4_parser.cc"
+#line 3853 "dhcp4_parser.cc"
     break;
 
-  case 709:
-#line 2375 "dhcp4_parser.yy"
+  case 713:
+#line 2384 "dhcp4_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3853 "dhcp4_parser.cc"
+#line 3862 "dhcp4_parser.cc"
     break;
 
-  case 710:
-#line 2380 "dhcp4_parser.yy"
+  case 714:
+#line 2389 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3861 "dhcp4_parser.cc"
+#line 3870 "dhcp4_parser.cc"
     break;
 
-  case 711:
-#line 2382 "dhcp4_parser.yy"
+  case 715:
+#line 2391 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3871 "dhcp4_parser.cc"
+#line 3880 "dhcp4_parser.cc"
     break;
 
-  case 712:
-#line 2388 "dhcp4_parser.yy"
+  case 716:
+#line 2397 "dhcp4_parser.yy"
                                     {
     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 3882 "dhcp4_parser.cc"
+#line 3891 "dhcp4_parser.cc"
     break;
 
-  case 713:
-#line 2393 "dhcp4_parser.yy"
+  case 717:
+#line 2402 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3891 "dhcp4_parser.cc"
+#line 3900 "dhcp4_parser.cc"
     break;
 
-  case 716:
-#line 2402 "dhcp4_parser.yy"
+  case 720:
+#line 2411 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3901 "dhcp4_parser.cc"
+#line 3910 "dhcp4_parser.cc"
     break;
 
-  case 717:
-#line 2406 "dhcp4_parser.yy"
+  case 721:
+#line 2415 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 3909 "dhcp4_parser.cc"
+#line 3918 "dhcp4_parser.cc"
     break;
 
-  case 725:
-#line 2421 "dhcp4_parser.yy"
+  case 729:
+#line 2430 "dhcp4_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3917 "dhcp4_parser.cc"
+#line 3926 "dhcp4_parser.cc"
     break;
 
-  case 726:
-#line 2423 "dhcp4_parser.yy"
+  case 730:
+#line 2432 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3927 "dhcp4_parser.cc"
+#line 3936 "dhcp4_parser.cc"
     break;
 
-  case 727:
-#line 2429 "dhcp4_parser.yy"
+  case 731:
+#line 2438 "dhcp4_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3936 "dhcp4_parser.cc"
+#line 3945 "dhcp4_parser.cc"
     break;
 
-  case 728:
-#line 2434 "dhcp4_parser.yy"
+  case 732:
+#line 2443 "dhcp4_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3945 "dhcp4_parser.cc"
+#line 3954 "dhcp4_parser.cc"
     break;
 
-  case 729:
-#line 2439 "dhcp4_parser.yy"
+  case 733:
+#line 2448 "dhcp4_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3954 "dhcp4_parser.cc"
+#line 3963 "dhcp4_parser.cc"
     break;
 
-  case 730:
-#line 2444 "dhcp4_parser.yy"
+  case 734:
+#line 2453 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3962 "dhcp4_parser.cc"
+#line 3971 "dhcp4_parser.cc"
     break;
 
-  case 731:
-#line 2446 "dhcp4_parser.yy"
+  case 735:
+#line 2455 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 3972 "dhcp4_parser.cc"
+#line 3981 "dhcp4_parser.cc"
     break;
 
 
-#line 3976 "dhcp4_parser.cc"
+#line 3985 "dhcp4_parser.cc"
 
             default:
               break;
@@ -4243,131 +4252,131 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -900;
+  const short Dhcp4Parser::yypact_ninf_ = -905;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     385,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,    56,    28,    27,    29,    62,
-      67,    79,    81,    83,   126,   133,   139,   194,   199,   236,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,    28,  -142,
-      20,   167,    25,   580,    -8,   237,   -27,    66,   198,   -54,
-     217,   -99,   100,  -900,    57,    77,   110,   166,   147,  -900,
-    -900,  -900,  -900,  -900,   245,  -900,    40,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,   256,   266,   269,  -900,
-    -900,  -900,  -900,  -900,  -900,   281,   299,   306,   316,   320,
-     332,   333,   340,   362,  -900,   363,   364,   367,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   374,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,    43,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   375,  -900,    68,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,   376,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,    93,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,   131,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,   254,   290,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,   264,  -900,
-    -900,   379,  -900,  -900,  -900,   380,  -900,  -900,   309,   324,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   381,   382,  -900,  -900,  -900,  -900,   326,
-     386,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   141,  -900,  -900,  -900,   384,  -900,  -900,
-     387,  -900,   388,   389,  -900,  -900,   390,   391,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,   158,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,   159,  -900,  -900,  -900,   392,   172,  -900,  -900,
-    -900,  -900,    28,    28,  -900,   206,   393,   394,   399,   400,
-     401,  -900,    20,  -900,   402,   404,   405,   223,   224,   227,
-     412,   413,   414,   415,   416,   420,   242,   246,   248,   250,
-     253,   252,   244,   257,   255,   438,   259,   260,   263,   440,
-     447,   449,   451,   452,   453,   454,   456,   460,   462,   463,
-     466,   467,   468,   470,   292,   475,   476,   478,   480,   482,
-     484,   167,  -900,   486,   487,   488,   307,    25,  -900,   492,
-     493,   497,   509,   510,   511,   317,   512,   516,   519,   580,
-    -900,   520,    -8,  -900,   521,   523,   524,   525,   526,   527,
-     529,   530,  -900,   237,  -900,   531,   532,   395,   565,   566,
-     567,   396,  -900,    66,   569,   397,   398,  -900,   198,   570,
-     571,   -13,  -900,   403,   574,   575,   406,   577,   407,   408,
-     582,   583,   409,   410,   584,   585,   590,   594,   217,  -900,
-     -99,  -900,   595,   417,   100,  -900,  -900,  -900,   597,   596,
-     598,    28,    28,    28,  -900,   604,   605,   606,  -900,  -900,
-    -900,   430,   431,   433,   612,   613,   599,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,   437,  -900,  -900,  -900,
-     -16,   439,   441,   619,   621,   622,   623,   626,   450,   243,
-     630,   631,   640,   641,   646,  -900,   650,   652,   653,   477,
-     479,   657,  -900,   659,   142,   152,  -900,  -900,   481,   500,
-     501,   665,   504,   505,  -900,   659,   506,   684,  -900,   508,
-    -900,   659,   513,   514,   515,   517,   518,   522,   533,  -900,
-     541,   542,  -900,   543,   544,   547,  -900,  -900,   548,  -900,
-    -900,  -900,   549,    28,  -900,  -900,   550,   553,  -900,   554,
-    -900,  -900,    14,   545,  -900,  -900,   -16,   555,   556,   557,
-    -900,  -900,   688,  -900,  -900,    28,   167,   -99,  -900,  -900,
-    -900,   100,    25,   672,  -900,  -900,  -900,   498,   498,   693,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,   696,
-     697,   698,   700,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,   143,   709,   737,   739,    95,    73,   -14,   217,  -900,
-    -900,   741,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   742,  -900,  -900,  -900,  -900,   107,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,   693,  -900,   183,
-     238,   239,   268,  -900,   280,  -900,  -900,  -900,  -900,  -900,
-    -900,   746,   747,   748,   749,   751,  -900,  -900,  -900,  -900,
-     752,   754,   755,   756,   757,   758,  -900,   283,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,   289,
-    -900,   760,   764,  -900,  -900,   762,   766,  -900,  -900,   765,
-     767,  -900,  -900,   768,   769,  -900,  -900,   770,   772,  -900,
-    -900,  -900,  -900,  -900,  -900,    96,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   121,  -900,  -900,   771,   775,  -900,  -900,
-     773,   777,  -900,   759,   778,   779,   780,   781,   782,   293,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,   296,  -900,  -900,  -900,   783,  -900,   784,  -900,
-    -900,  -900,   297,  -900,  -900,  -900,  -900,  -900,   303,  -900,
-     202,  -900,   589,  -900,   785,   786,  -900,  -900,  -900,  -900,
-     787,   788,  -900,  -900,  -900,  -900,   789,   672,  -900,   792,
-     793,   794,   795,   607,   603,   615,   614,   617,   799,   800,
-     801,   804,   624,   625,   627,   628,   629,   632,   498,  -900,
-    -900,   498,  -900,   693,   580,  -900,   696,    66,  -900,   697,
-     198,  -900,   698,   651,  -900,   700,   143,  -900,    64,   709,
-    -900,   237,  -900,   737,   -54,  -900,   739,   633,   634,   635,
-     636,   637,   638,    95,  -900,   807,   810,    73,  -900,   639,
-     811,   642,   820,   -14,  -900,  -900,   -30,   741,  -900,  -900,
-     819,   825,    -8,  -900,   742,   826,  -900,  -900,   645,  -900,
-     339,   647,   648,   649,  -900,  -900,  -900,  -900,  -900,   654,
-     655,   656,   658,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-     304,  -900,   310,  -900,   828,  -900,   829,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   311,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,   830,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,   833,   840,  -900,  -900,  -900,
-    -900,  -900,   837,  -900,   313,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   662,   664,  -900,  -900,   667,  -900,    28,
-    -900,  -900,   845,  -900,  -900,  -900,  -900,  -900,   323,  -900,
-    -900,  -900,  -900,  -900,  -900,   671,   327,  -900,   659,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,   651,  -900,   855,   675,
-    -900,    64,  -900,  -900,  -900,  -900,  -900,  -900,   864,   687,
-     865,   -30,  -900,  -900,  -900,  -900,  -900,   689,  -900,  -900,
-     776,  -900,   691,  -900,  -900,   875,  -900,  -900,   258,  -900,
-      19,   875,  -900,  -900,   879,   881,   883,  -900,   330,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,   884,   704,   708,   710,
-     894,    19,  -900,   717,  -900,  -900,  -900,   718,  -900,  -900,
-    -900
+     390,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,    46,    27,    28,    71,    79,
+      81,    83,    95,   105,   121,   131,   139,   141,   159,   176,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,    27,  -148,
+      20,   168,    25,   584,    -9,    21,   -36,    67,   198,   -14,
+     403,  -103,   211,  -905,   114,    58,   164,   184,   204,  -905,
+    -905,  -905,  -905,  -905,   212,  -905,    40,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   262,   269,   271,  -905,
+    -905,  -905,  -905,  -905,  -905,   273,   301,   316,   346,   347,
+     348,   370,   371,   372,  -905,   373,   374,   375,  -905,  -905,
+    -905,   376,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   377,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,    66,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,   378,  -905,    68,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,   380,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,   133,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+     137,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,   243,   292,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,   322,  -905,  -905,   382,  -905,  -905,  -905,   383,  -905,
+    -905,   381,   385,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   386,   388,  -905,  -905,
+    -905,  -905,   389,   391,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   155,  -905,  -905,  -905,
+     392,  -905,  -905,   394,  -905,   395,   396,  -905,  -905,   397,
+     398,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   240,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,   242,  -905,  -905,  -905,   401,
+     250,  -905,  -905,  -905,  -905,    27,    27,  -905,   208,   404,
+     405,   406,   408,   409,  -905,    20,  -905,   410,   411,   414,
+     219,   232,   233,   418,   419,   420,   421,   424,   427,   248,
+     249,   251,   253,   257,   254,   261,   263,   258,   442,   272,
+     274,   276,   443,   447,   450,   280,   451,   453,   455,   457,
+     466,   467,   470,   471,   472,   474,   477,   479,   300,   480,
+     484,   486,   488,   490,   494,   168,  -905,   497,   501,   502,
+     331,    25,  -905,   513,   514,   516,   520,   524,   525,   344,
+     528,   529,   530,   584,  -905,   531,    -9,  -905,   532,   533,
+     534,   535,   549,   550,   551,   552,  -905,    21,  -905,   553,
+     554,   393,   571,   572,   574,   402,  -905,    67,   576,   407,
+     413,  -905,   198,   578,   579,    61,  -905,   415,   580,   581,
+     400,   585,   412,   416,   587,   588,   428,   429,   589,   590,
+     592,   593,   403,  -905,  -103,  -905,   595,   422,   211,  -905,
+    -905,  -905,   600,   599,   602,    27,    27,    27,  -905,   608,
+     611,   612,  -905,  -905,  -905,   435,   437,   439,   618,   619,
+     623,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+     444,  -905,  -905,  -905,    32,   445,   446,  -905,   627,   628,
+     633,   634,   642,   465,   247,   635,   653,   657,   659,   658,
+    -905,   660,   661,   662,   481,   485,   670,  -905,   682,   267,
+     288,  -905,  -905,   504,   505,   508,   689,   510,   511,  -905,
+     682,   512,   691,  -905,   515,  -905,   682,   517,   518,   519,
+     521,   522,   523,   526,  -905,   527,   536,  -905,   537,   546,
+     547,  -905,  -905,   548,  -905,  -905,  -905,   557,    27,  -905,
+    -905,   558,   559,  -905,   560,  -905,  -905,    15,   456,  -905,
+    -905,    32,   561,   562,   565,  -905,  -905,   696,  -905,  -905,
+      27,   168,  -103,  -905,  -905,  -905,   211,    25,   681,  -905,
+    -905,  -905,   315,   315,   702,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   703,   727,   730,   731,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,    63,   732,   745,   747,
+     189,   125,    69,   403,  -905,  -905,   748,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   749,  -905,
+    -905,  -905,  -905,   202,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,   702,  -905,   256,   259,   260,   266,  -905,   284,
+    -905,  -905,  -905,  -905,  -905,  -905,   753,   754,   755,   757,
+     758,  -905,  -905,  -905,  -905,   760,   761,   762,   763,   764,
+     766,  -905,   285,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   291,  -905,   767,   769,  -905,  -905,
+     768,   772,  -905,  -905,   770,   774,  -905,  -905,   773,   775,
+    -905,  -905,   776,   777,  -905,  -905,  -905,  -905,  -905,  -905,
+      74,  -905,  -905,  -905,  -905,  -905,  -905,  -905,    93,  -905,
+    -905,   778,   780,  -905,  -905,   779,   783,  -905,   784,   785,
+     786,   787,   788,   789,   295,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,   298,  -905,  -905,
+    -905,   790,  -905,   791,  -905,  -905,  -905,   299,  -905,  -905,
+    -905,  -905,  -905,   314,  -905,   113,  -905,   596,  -905,   781,
+     793,  -905,  -905,  -905,  -905,   792,   795,  -905,  -905,  -905,
+    -905,   794,   681,  -905,   798,   799,   800,   801,   613,   609,
+     620,   621,   622,   803,   806,   807,   810,   629,   630,   631,
+     632,   636,   637,   315,  -905,  -905,   315,  -905,   702,   584,
+    -905,   703,    67,  -905,   727,   198,  -905,   730,   656,  -905,
+     731,    63,  -905,    64,   732,  -905,    21,  -905,   745,   -14,
+    -905,   747,   639,   640,   641,   643,   644,   645,   189,  -905,
+     815,   816,   125,  -905,   646,   817,   647,   818,    69,  -905,
+    -905,    59,   748,  -905,  -905,   822,   829,    -9,  -905,   749,
+     831,  -905,  -905,   651,  -905,   305,   652,   654,   655,  -905,
+    -905,  -905,  -905,  -905,   663,   665,   666,   668,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,   318,  -905,   320,  -905,   830,
+    -905,   834,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   326,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,   839,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,   836,   842,  -905,  -905,  -905,  -905,  -905,   838,  -905,
+     328,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   669,
+     671,  -905,  -905,   675,  -905,    27,  -905,  -905,   843,  -905,
+    -905,  -905,  -905,  -905,   329,  -905,  -905,  -905,  -905,  -905,
+    -905,   679,   330,  -905,   682,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,   656,  -905,   863,   685,  -905,    64,  -905,  -905,
+    -905,  -905,  -905,  -905,   870,   692,   873,    59,  -905,  -905,
+    -905,  -905,  -905,   695,  -905,  -905,   882,  -905,   705,  -905,
+    -905,   881,  -905,  -905,   161,  -905,  -102,   881,  -905,  -905,
+     888,   889,   892,  -905,   336,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,   894,   712,   717,   720,   903,  -102,  -905,   724,
+    -905,  -905,  -905,   726,  -905,  -905,  -905
   };
 
   const short
@@ -4377,166 +4386,166 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
-      35,    36,    58,     5,    70,     7,   165,     9,   310,    11,
-     491,    13,   516,    15,   416,    17,   424,    19,   461,    21,
-     275,    23,   622,    25,   689,    27,   678,    29,    47,    41,
-       0,     0,     0,     0,     0,   518,     0,   426,   463,     0,
+      35,    36,    58,     5,    70,     7,   167,     9,   312,    11,
+     495,    13,   520,    15,   420,    17,   428,    19,   465,    21,
+     277,    23,   626,    25,   693,    27,   682,    29,    47,    41,
+       0,     0,     0,     0,     0,   522,     0,   430,   467,     0,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    68,
-     687,   670,   672,   674,     0,    67,     0,    60,    62,    64,
-      65,    66,    63,   676,   154,   180,     0,     0,     0,   537,
-     539,   541,   178,   187,   189,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   131,     0,     0,     0,   139,   146,
-     148,   302,   414,   453,   372,   504,   506,   365,   253,   565,
-     508,   267,   286,     0,   591,   604,   620,   150,   152,   694,
-     121,     0,    72,    74,    75,    76,    77,    78,   109,   110,
-     111,    79,   107,    96,    97,    98,   115,   116,   117,   118,
-     119,   120,   113,   114,    82,    83,   104,    84,    85,    86,
-      90,    91,    80,   108,    81,    88,    89,   102,   103,   105,
-      99,   100,   101,    87,    92,    93,    94,    95,   106,   112,
-     167,   169,   173,     0,   164,     0,   156,   158,   159,   160,
-     161,   162,   163,   353,   355,   357,   483,   351,   359,     0,
-     363,   361,   561,   350,   314,   315,   316,   317,   318,   339,
-     340,   341,   329,   330,   342,   343,   344,   345,   346,   347,
-     348,   349,     0,   312,   321,   334,   335,   336,   322,   324,
-     325,   327,   323,   319,   320,   337,   338,   326,   331,   332,
-     333,   328,   502,   501,   497,   498,   496,     0,   493,   495,
-     499,   500,   559,   547,   549,   553,   551,   557,   555,   543,
-     536,   530,   534,   535,     0,   519,   520,   531,   532,   533,
-     527,   522,   528,   524,   525,   526,   529,   523,     0,   443,
-     233,     0,   447,   445,   450,     0,   439,   440,     0,   427,
-     428,   430,   442,   431,   432,   433,   449,   434,   435,   436,
-     437,   438,   477,     0,     0,   475,   476,   479,   480,     0,
-     464,   465,   467,   468,   469,   470,   471,   472,   473,   474,
-     282,   284,   279,     0,   277,   280,   281,     0,   658,   645,
-       0,   648,     0,     0,   652,   656,     0,     0,   662,   664,
-     666,   668,   643,   641,   642,     0,   624,   626,   627,   628,
-     629,   630,   631,   632,   633,   638,   634,   635,   636,   637,
-     639,   640,     0,   691,   693,   684,     0,     0,   680,   682,
-     683,    46,     0,     0,    39,     0,     0,     0,     0,     0,
-       0,    57,     0,    59,     0,     0,     0,     0,     0,     0,
+     691,   674,   676,   678,     0,    67,     0,    60,    62,    64,
+      65,    66,    63,   680,   156,   182,     0,     0,     0,   541,
+     543,   545,   180,   189,   191,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   132,     0,     0,     0,   140,   147,
+     149,     0,   304,   418,   457,   375,   508,   510,   368,   255,
+     569,   512,   269,   288,     0,   595,   608,   624,   151,   153,
+     698,   122,     0,    72,    74,    75,    76,    77,    78,   109,
+     110,   111,    79,   107,    96,    97,    98,   115,   116,   117,
+     118,   119,   120,   113,   114,   121,    82,    83,   104,    84,
+      85,    86,    90,    91,    80,   108,    81,    88,    89,   102,
+     103,   105,    99,   100,   101,    87,    92,    93,    94,    95,
+     106,   112,   169,   171,   175,     0,   166,     0,   158,   160,
+     161,   162,   163,   164,   165,   356,   358,   360,   487,   354,
+     362,     0,   366,   364,   565,   353,   316,   317,   318,   319,
+     320,   341,   342,   343,   331,   332,   344,   345,   346,   347,
+     348,   349,   350,   351,   352,     0,   314,   323,   336,   337,
+     338,   324,   326,   327,   329,   325,   321,   322,   339,   340,
+     328,   333,   334,   335,   330,   506,   505,   501,   502,   500,
+       0,   497,   499,   503,   504,   563,   551,   553,   557,   555,
+     561,   559,   547,   540,   534,   538,   539,     0,   523,   524,
+     535,   536,   537,   531,   526,   532,   528,   529,   530,   533,
+     527,     0,   447,   235,     0,   451,   449,   454,     0,   443,
+     444,     0,   431,   432,   434,   446,   435,   436,   437,   453,
+     438,   439,   440,   441,   442,   481,     0,     0,   479,   480,
+     483,   484,     0,   468,   469,   471,   472,   473,   474,   475,
+     476,   477,   478,   284,   286,   281,     0,   279,   282,   283,
+       0,   662,   649,     0,   652,     0,     0,   656,   660,     0,
+       0,   666,   668,   670,   672,   647,   645,   646,     0,   628,
+     630,   631,   632,   633,   634,   635,   636,   637,   642,   638,
+     639,   640,   641,   643,   644,     0,   695,   697,   688,     0,
+       0,   684,   686,   687,    46,     0,     0,    39,     0,     0,
+       0,     0,     0,     0,    57,     0,    59,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    71,     0,     0,     0,     0,     0,   166,     0,
+       0,     0,     0,     0,     0,     0,    71,     0,     0,     0,
+       0,     0,   168,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   313,     0,     0,   496,     0,     0,
+       0,     0,     0,     0,     0,     0,   521,     0,   421,     0,
+       0,     0,     0,     0,     0,     0,   429,     0,     0,     0,
+       0,   466,     0,     0,     0,     0,   278,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     311,     0,     0,   492,     0,     0,     0,     0,     0,     0,
-       0,     0,   517,     0,   417,     0,     0,     0,     0,     0,
-       0,     0,   425,     0,     0,     0,     0,   462,     0,     0,
-       0,     0,   276,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   623,
-       0,   690,     0,     0,     0,   679,    50,    43,     0,     0,
-       0,     0,     0,     0,    61,     0,     0,     0,   133,   134,
-     135,     0,     0,     0,     0,     0,     0,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,     0,   136,   137,   138,
+       0,     0,     0,   627,     0,   694,     0,     0,     0,   683,
+      50,    43,     0,     0,     0,     0,     0,     0,    61,     0,
+       0,     0,   134,   135,   136,     0,     0,     0,     0,     0,
+       0,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+       0,   137,   138,   139,     0,     0,     0,   155,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   590,     0,     0,     0,     0,
-       0,     0,    73,     0,     0,     0,   177,   157,     0,     0,
-       0,     0,     0,     0,   371,     0,     0,     0,   313,     0,
-     494,     0,     0,     0,     0,     0,     0,     0,     0,   521,
-       0,     0,   441,     0,     0,     0,   452,   429,     0,   481,
-     482,   466,     0,     0,   278,   644,     0,     0,   647,     0,
-     650,   651,     0,     0,   660,   661,     0,     0,     0,     0,
-     625,   692,     0,   686,   681,     0,     0,     0,   671,   673,
-     675,     0,     0,     0,   538,   540,   542,     0,     0,   191,
-     132,   141,   142,   143,   144,   145,   140,   147,   149,   304,
-     418,   455,   374,    40,   505,   507,   367,   368,   369,   370,
-     366,     0,     0,   510,   269,     0,     0,     0,     0,   151,
-     153,     0,    51,   168,   171,   172,   170,   175,   176,   174,
-     354,   356,   358,   485,   352,   360,   364,   362,     0,   503,
-     560,   548,   550,   554,   552,   558,   556,   544,   444,   234,
-     448,   446,   451,   478,   283,   285,   659,   646,   649,   654,
-     655,   653,   657,   663,   665,   667,   669,   191,    44,     0,
-       0,     0,     0,   185,     0,   182,   184,   220,   226,   228,
-     230,     0,     0,     0,     0,     0,   242,   244,   246,   248,
-       0,     0,     0,     0,     0,     0,   219,     0,   197,   199,
-     200,   201,   202,   203,   204,   205,   206,   207,   208,   212,
-     213,   214,   209,   215,   216,   217,   210,   211,   218,     0,
-     195,     0,   192,   193,   308,     0,   305,   306,   422,     0,
-     419,   420,   459,     0,   456,   457,   378,     0,   375,   376,
-     262,   263,   264,   265,   266,     0,   255,   257,   258,   259,
-     260,   261,   569,     0,   567,   514,     0,   511,   512,   273,
-       0,   270,   271,     0,     0,     0,     0,     0,     0,     0,
-     288,   290,   291,   292,   293,   294,   295,   600,   602,   599,
-     597,   598,     0,   593,   595,   596,     0,   615,     0,   618,
-     611,   612,     0,   606,   608,   609,   610,   613,     0,   698,
-       0,   696,    53,   489,     0,   486,   487,   545,   563,   564,
-       0,     0,    69,   688,   677,   155,     0,     0,   181,     0,
+     594,     0,     0,     0,     0,     0,     0,    73,     0,     0,
+       0,   179,   159,     0,     0,     0,     0,     0,     0,   374,
+       0,     0,     0,   315,     0,   498,     0,     0,     0,     0,
+       0,     0,     0,     0,   525,     0,     0,   445,     0,     0,
+       0,   456,   433,     0,   485,   486,   470,     0,     0,   280,
+     648,     0,     0,   651,     0,   654,   655,     0,     0,   664,
+     665,     0,     0,     0,     0,   629,   696,     0,   690,   685,
+       0,     0,     0,   675,   677,   679,     0,     0,     0,   542,
+     544,   546,     0,     0,   193,   133,   142,   143,   144,   145,
+     146,   141,   148,   150,   306,   422,   459,   377,    40,   509,
+     511,   370,   371,   372,   373,   369,     0,     0,   514,   271,
+       0,     0,     0,     0,   152,   154,     0,    51,   170,   173,
+     174,   172,   177,   178,   176,   357,   359,   361,   489,   355,
+     363,   367,   365,     0,   507,   564,   552,   554,   558,   556,
+     562,   560,   548,   448,   236,   452,   450,   455,   482,   285,
+     287,   663,   650,   653,   658,   659,   657,   661,   667,   669,
+     671,   673,   193,    44,     0,     0,     0,     0,   187,     0,
+     184,   186,   222,   228,   230,   232,     0,     0,     0,     0,
+       0,   244,   246,   248,   250,     0,     0,     0,     0,     0,
+       0,   221,     0,   199,   201,   202,   203,   204,   205,   206,
+     207,   208,   209,   210,   214,   215,   216,   211,   217,   218,
+     219,   212,   213,   220,     0,   197,     0,   194,   195,   310,
+       0,   307,   308,   426,     0,   423,   424,   463,     0,   460,
+     461,   381,     0,   378,   379,   264,   265,   266,   267,   268,
+       0,   257,   259,   260,   261,   262,   263,   573,     0,   571,
+     518,     0,   515,   516,   275,     0,   272,   273,     0,     0,
+       0,     0,     0,     0,     0,   290,   292,   293,   294,   295,
+     296,   297,   604,   606,   603,   601,   602,     0,   597,   599,
+     600,     0,   619,     0,   622,   615,   616,     0,   610,   612,
+     613,   614,   617,     0,   702,     0,   700,    53,   493,     0,
+     490,   491,   549,   567,   568,     0,     0,    69,   692,   681,
+     157,     0,     0,   183,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
-     188,     0,   190,     0,     0,   303,     0,   426,   415,     0,
-     463,   454,     0,     0,   373,     0,     0,   254,   571,     0,
-     566,   518,   509,     0,     0,   268,     0,     0,     0,     0,
-       0,     0,     0,     0,   287,     0,     0,     0,   592,     0,
-       0,     0,     0,     0,   605,   621,     0,     0,   695,    55,
-       0,    54,     0,   484,     0,     0,   562,   685,     0,   183,
-       0,     0,     0,     0,   232,   235,   236,   237,   238,     0,
-       0,     0,     0,   250,   251,   239,   240,   241,   252,   198,
-       0,   194,     0,   307,     0,   421,     0,   458,   413,   397,
-     398,   399,   385,   386,   402,   403,   404,   388,   389,   405,
-     406,   407,   408,   409,   410,   411,   412,   382,   383,   384,
-     395,   396,   394,     0,   380,   387,   400,   401,   390,   391,
-     392,   393,   377,   256,   587,     0,   585,   586,   578,   579,
-     583,   584,   580,   581,   582,     0,   572,   573,   575,   576,
-     577,   568,     0,   513,     0,   272,   296,   297,   298,   299,
-     300,   301,   289,     0,     0,   594,   614,     0,   617,     0,
-     607,   712,     0,   710,   708,   702,   706,   707,     0,   700,
-     704,   705,   703,   697,    52,     0,     0,   488,     0,   186,
-     222,   223,   224,   225,   221,   227,   229,   231,   243,   245,
-     247,   249,   196,   309,   423,   460,     0,   379,     0,     0,
-     570,     0,   515,   274,   601,   603,   616,   619,     0,     0,
-       0,     0,   699,    56,   490,   546,   381,     0,   589,   574,
-       0,   709,     0,   701,   588,     0,   711,   716,     0,   714,
-       0,     0,   713,   725,     0,     0,     0,   730,     0,   718,
-     720,   721,   722,   723,   724,   715,     0,     0,     0,     0,
-       0,     0,   717,     0,   727,   728,   729,     0,   719,   726,
-     731
+       0,     0,     0,     0,   181,   190,     0,   192,     0,     0,
+     305,     0,   430,   419,     0,   467,   458,     0,     0,   376,
+       0,     0,   256,   575,     0,   570,   522,   513,     0,     0,
+     270,     0,     0,     0,     0,     0,     0,     0,     0,   289,
+       0,     0,     0,   596,     0,     0,     0,     0,     0,   609,
+     625,     0,     0,   699,    55,     0,    54,     0,   488,     0,
+       0,   566,   689,     0,   185,     0,     0,     0,     0,   234,
+     237,   238,   239,   240,     0,     0,     0,     0,   252,   253,
+     241,   242,   243,   254,   200,     0,   196,     0,   309,     0,
+     425,     0,   462,   417,   400,   401,   402,   388,   389,   405,
+     406,   407,   391,   392,   408,   409,   410,   411,   412,   413,
+     414,   415,   416,   385,   386,   387,   398,   399,   397,     0,
+     383,   390,   403,   404,   393,   394,   395,   396,   380,   258,
+     591,     0,   589,   590,   582,   583,   587,   588,   584,   585,
+     586,     0,   576,   577,   579,   580,   581,   572,     0,   517,
+       0,   274,   298,   299,   300,   301,   302,   303,   291,     0,
+       0,   598,   618,     0,   621,     0,   611,   716,     0,   714,
+     712,   706,   710,   711,     0,   704,   708,   709,   707,   701,
+      52,     0,     0,   492,     0,   188,   224,   225,   226,   227,
+     223,   229,   231,   233,   245,   247,   249,   251,   198,   311,
+     427,   464,     0,   382,     0,     0,   574,     0,   519,   276,
+     605,   607,   620,   623,     0,     0,     0,     0,   703,    56,
+     494,   550,   384,     0,   593,   578,     0,   713,     0,   705,
+     592,     0,   715,   720,     0,   718,     0,     0,   717,   729,
+       0,     0,     0,   734,     0,   722,   724,   725,   726,   727,
+     728,   719,     0,     0,     0,     0,     0,     0,   721,     0,
+     731,   732,   733,     0,   723,   730,   735
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,   -23,  -900,   337,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -576,  -900,  -900,
-    -900,   -70,  -900,  -900,  -900,   507,  -900,  -900,  -900,  -900,
-     272,   455,   -47,   -44,    -1,    16,    18,    24,    30,    31,
-    -900,  -900,  -900,  -900,    34,    35,    36,    37,    38,    42,
-    -900,   274,    48,  -900,    49,  -900,    50,  -900,    52,  -900,
-    -900,  -900,   273,   458,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-      59,  -900,  -900,  -900,  -900,  -900,  -900,   175,  -900,    55,
-    -900,  -636,    61,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,   -39,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,    44,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,    45,  -900,  -900,  -900,
-      46,   473,  -900,  -900,  -900,  -900,  -900,  -900,  -900,    39,
-    -900,  -900,  -900,  -900,  -900,  -900,  -899,  -900,  -900,  -900,
-      63,  -900,  -900,  -900,    69,   528,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -896,  -900,   -43,  -900,    54,  -900,
-      53,  -900,  -900,  -900,  -900,  -900,  -900,  -900,    60,  -900,
-    -900,  -128,   -63,  -900,  -900,  -900,  -900,  -900,    65,  -900,
-    -900,  -900,    70,  -900,   495,  -900,   -66,  -900,  -900,  -900,
-    -900,  -900,   -64,  -900,  -900,  -900,  -900,  -900,    -7,  -900,
-    -900,  -900,    71,  -900,  -900,  -900,    72,  -900,   491,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-      22,  -900,  -900,  -900,    32,   534,  -900,  -900,   -57,  -900,
-     -20,  -900,   -62,  -900,  -900,  -900,    58,  -900,  -900,  -900,
-      74,  -900,   535,     0,  -900,     6,  -900,    12,  -900,   282,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -895,  -900,  -900,
-    -900,  -900,  -900,    75,  -900,  -900,  -900,  -116,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,    51,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,    47,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,   308,   483,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,  -900,   348,   485,  -900,  -900,  -900,  -900,  -900,  -900,
-    -900,   355,   490,   -75,  -900,  -900,    76,  -900,  -900,  -118,
-    -900,  -900,  -900,  -900,  -900,  -900,  -134,  -900,  -900,  -153,
-    -900,  -900,  -900,  -900,  -900,  -900,  -900
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   -23,  -905,   342,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -578,  -905,  -905,
+    -905,   -70,  -905,  -905,  -905,   569,  -905,  -905,  -905,  -905,
+     264,   462,   -47,   -44,    -1,    16,    18,    24,    30,    31,
+    -905,  -905,  -905,  -905,    34,    35,    36,    37,    38,    42,
+    -905,   279,    48,  -905,    49,  -905,    50,  -905,    52,  -905,
+      53,  -905,  -905,   294,   469,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,    87,  -905,  -905,  -905,  -905,  -905,  -905,   181,  -905,
+      57,  -905,  -644,    72,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   -39,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,    56,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,    43,  -905,  -905,
+    -905,    47,   483,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+      41,  -905,  -905,  -905,  -905,  -905,  -905,  -904,  -905,  -905,
+    -905,    70,  -905,  -905,  -905,    73,   538,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -903,  -905,   -43,  -905,    55,
+    -905,    54,  -905,  -905,  -905,  -905,  -905,  -905,  -905,    60,
+    -905,  -905,  -119,   -63,  -905,  -905,  -905,  -905,  -905,    75,
+    -905,  -905,  -905,    76,  -905,   498,  -905,   -66,  -905,  -905,
+    -905,  -905,  -905,   -64,  -905,  -905,  -905,  -905,  -905,    -7,
+    -905,  -905,  -905,    77,  -905,  -905,  -905,    78,  -905,   492,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,    33,  -905,  -905,  -905,    29,   539,  -905,  -905,   -57,
+    -905,   -20,  -905,   -62,  -905,  -905,  -905,    62,  -905,  -905,
+    -905,    65,  -905,   540,     0,  -905,     6,  -905,    12,  -905,
+     293,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -901,  -905,
+    -905,  -905,  -905,  -905,    80,  -905,  -905,  -905,  -120,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,    82,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,    51,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   312,   491,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,   351,   482,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,   356,   493,   -75,  -905,  -905,    84,  -905,  -905,
+    -115,  -905,  -905,  -905,  -905,  -905,  -905,  -131,  -905,  -905,
+    -149,  -905,  -905,  -905,  -905,  -905,  -905,  -905
   };
 
   const short
@@ -4544,491 +4553,491 @@ namespace isc { namespace dhcp {
   {
       -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    38,    39,    40,    69,
-     674,    87,    88,    41,    68,    84,    85,   693,   872,   960,
-     961,   766,    43,    70,    96,    97,    98,   396,    45,    71,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,   162,   425,   163,   164,   165,   166,   167,   168,   169,
-     429,   666,   170,   430,   171,   431,   172,   448,   173,   449,
-     174,   405,   205,   206,    47,    72,   207,   453,   208,   454,
-     696,   209,   455,   699,   210,   175,   413,   176,   406,   744,
-     745,   746,   886,   177,   414,   178,   415,   791,   792,   793,
-     911,   767,   768,   769,   889,  1094,   770,   890,   771,   891,
-     772,   892,   773,   774,   486,   775,   776,   777,   778,   779,
-     780,   781,   782,   898,   783,   899,   784,   900,   785,   901,
-     786,   787,   788,   179,   439,   815,   816,   817,   818,   819,
-     820,   821,   180,   442,   830,   831,   832,   934,    61,    79,
-     343,   344,   345,   499,   346,   500,   181,   443,   839,   840,
-     841,   842,   843,   844,   845,   846,   182,   432,   795,   796,
-     797,   914,    49,    73,   242,   243,   244,   463,   245,   459,
-     246,   460,   247,   461,   248,   464,   249,   467,   250,   466,
-     183,   438,   680,   252,   184,   435,   807,   808,   809,   923,
-    1023,  1024,   185,   433,    55,    76,   799,   800,   801,   917,
-      57,    77,   308,   309,   310,   311,   312,   313,   314,   485,
-     315,   489,   316,   488,   317,   318,   490,   319,   186,   434,
-     803,   804,   805,   920,    59,    78,   329,   330,   331,   332,
-     333,   494,   334,   335,   336,   337,   254,   462,   874,   875,
-     876,   962,    51,    74,   267,   268,   269,   471,   187,   436,
-     188,   437,   189,   441,   826,   827,   828,   931,    53,    75,
-     284,   285,   286,   190,   410,   191,   411,   192,   412,   290,
-     481,   879,   965,   291,   475,   292,   476,   293,   478,   294,
-     477,   295,   480,   296,   479,   297,   474,   261,   468,   880,
-     193,   440,   823,   824,   928,  1045,  1046,  1047,  1048,  1049,
-    1108,  1050,   194,   195,   445,   852,   853,   854,   945,   855,
-     946,   196,   446,   862,   863,   864,   865,   950,   866,   867,
-     952,   197,   447,    63,    80,   365,   366,   367,   368,   505,
-     369,   370,   507,   371,   372,   373,   510,   731,   374,   511,
-     375,   504,   376,   377,   378,   514,   379,   515,   380,   516,
-     381,   517,    99,   398,   100,   399,   101,   400,   198,   404,
-      67,    82,   387,   388,   389,   522,   390,   102,   397,    65,
-      81,   382,   383,   199,   450,   870,   871,   956,  1078,  1079,
-    1080,  1081,  1120,  1082,  1118,  1138,  1139,  1140,  1148,  1149,
-    1150,  1156,  1151,  1152,  1153,  1154,  1160
+     679,    87,    88,    41,    68,    84,    85,   698,   877,   965,
+     966,   771,    43,    70,    96,    97,    98,   399,    45,    71,
+     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+     162,   163,   428,   164,   165,   166,   167,   168,   169,   170,
+     432,   671,   171,   433,   172,   434,   173,   452,   174,   453,
+     175,   176,   408,   207,   208,    47,    72,   209,   457,   210,
+     458,   701,   211,   459,   704,   212,   177,   416,   178,   409,
+     749,   750,   751,   891,   179,   417,   180,   418,   796,   797,
+     798,   916,   772,   773,   774,   894,  1100,   775,   895,   776,
+     896,   777,   897,   778,   779,   490,   780,   781,   782,   783,
+     784,   785,   786,   787,   903,   788,   904,   789,   905,   790,
+     906,   791,   792,   793,   181,   443,   820,   821,   822,   823,
+     824,   825,   826,   182,   446,   835,   836,   837,   939,    61,
+      79,   346,   347,   348,   503,   349,   504,   183,   447,   844,
+     845,   846,   847,   848,   849,   850,   851,   184,   436,   800,
+     801,   802,   919,    49,    73,   245,   246,   247,   467,   248,
+     463,   249,   464,   250,   465,   251,   468,   252,   471,   253,
+     470,   185,   442,   685,   255,   186,   439,   812,   813,   814,
+     928,  1029,  1030,   187,   437,    55,    76,   804,   805,   806,
+     922,    57,    77,   311,   312,   313,   314,   315,   316,   317,
+     489,   318,   493,   319,   492,   320,   321,   494,   322,   188,
+     438,   808,   809,   810,   925,    59,    78,   332,   333,   334,
+     335,   336,   498,   337,   338,   339,   340,   257,   466,   879,
+     880,   881,   967,    51,    74,   270,   271,   272,   475,   189,
+     440,   190,   441,   191,   445,   831,   832,   833,   936,    53,
+      75,   287,   288,   289,   192,   413,   193,   414,   194,   415,
+     293,   485,   884,   970,   294,   479,   295,   480,   296,   482,
+     297,   481,   298,   484,   299,   483,   300,   478,   264,   472,
+     885,   195,   444,   828,   829,   933,  1051,  1052,  1053,  1054,
+    1055,  1114,  1056,   196,   197,   449,   857,   858,   859,   950,
+     860,   951,   198,   450,   867,   868,   869,   870,   955,   871,
+     872,   957,   199,   451,    63,    80,   368,   369,   370,   371,
+     509,   372,   373,   511,   374,   375,   376,   514,   736,   377,
+     515,   378,   508,   379,   380,   381,   518,   382,   519,   383,
+     520,   384,   521,    99,   401,   100,   402,   101,   403,   200,
+     407,    67,    82,   390,   391,   392,   526,   393,   102,   400,
+      65,    81,   385,   386,   201,   454,   875,   876,   961,  1084,
+    1085,  1086,  1087,  1126,  1088,  1124,  1144,  1145,  1146,  1154,
+    1155,  1156,  1162,  1157,  1158,  1159,  1160,  1166
   };
 
   const short
   Dhcp4Parser::yytable_[] =
   {
-      95,   150,   204,   223,   263,   280,   384,   306,   325,   342,
-     362,   257,   327,   298,   328,   211,   255,   270,   282,   706,
-     320,   338,   789,   363,  1018,   710,   224,  1019,  1031,   225,
-      89,   264,   729,    31,    42,    32,    44,    33,   307,   326,
-     200,   201,    86,   402,   202,    83,   451,   203,   403,   300,
-     132,   452,   212,   256,   271,   283,    30,   321,   339,   149,
-     364,   135,   136,   391,   340,   341,   253,   266,   281,    46,
-     133,   457,   226,   258,    48,   287,   458,   135,   136,   259,
-     392,   288,   262,   135,   136,   260,    50,   289,    52,   227,
-      54,   228,   109,   110,   111,   220,   469,   229,   221,   926,
-     299,   470,   927,   230,   231,   340,   341,   232,   233,   234,
-     235,   236,   385,   386,   393,   237,   135,   136,   856,   857,
-     858,   238,   239,   240,   929,   241,   251,   930,   265,  1071,
-      94,  1072,  1073,    56,   472,   661,   662,   663,   664,   473,
-      58,   132,   133,   300,   501,   300,    60,   301,   302,   502,
-     395,   303,   304,   305,    94,   135,   136,   135,   136,   694,
-     695,   518,   520,   730,   135,   136,   519,   521,  1034,  1035,
-     859,   665,   697,   698,   394,   524,    94,    90,   103,  1143,
-     525,   104,  1144,  1145,  1146,  1147,   451,    91,    92,    93,
-     105,   882,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,    62,   847,   848,    94,   957,    64,  1018,   958,    94,
-    1019,  1031,    34,    35,    36,    37,   833,   834,   835,   836,
-     837,   838,   279,   877,   115,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
-     131,   520,   524,    66,   132,   133,   883,   884,    94,   401,
-      94,   810,   811,   812,   813,   134,   814,    94,   135,   136,
-     407,  1141,   482,   137,  1142,   109,   110,   111,   138,   139,
-     408,   457,   484,   409,   140,   990,   885,   300,   322,   301,
-     302,   323,   324,   887,   141,   416,   908,   142,   888,   135,
-     136,   909,   908,   483,   143,   144,   943,   910,   145,   947,
-     953,   944,   146,   417,   948,   954,   518,   908,   135,   136,
-     418,   955,  1102,   469,  1106,   133,   501,   492,  1103,  1107,
-     419,  1113,   147,   148,   420,   149,  1121,   493,   135,   136,
-     472,  1122,    95,  1161,   497,  1124,   421,   422,  1162,   272,
-     676,   677,   678,   679,   423,   273,   274,   275,   276,   277,
-     278,    94,   279,   347,   348,   349,   350,   351,   352,   353,
-     354,   355,   356,   357,   358,   359,   424,   426,   427,   526,
-     527,   428,   360,   361,  1090,  1091,  1092,  1093,   444,   456,
-     465,   150,    94,   487,   491,   495,   496,   204,   503,   498,
-     528,   506,   508,   509,   512,   513,   523,   529,   530,   223,
-     211,    94,   263,   531,   532,   533,   535,   257,   536,   537,
-     538,   539,   255,   280,   540,   270,   541,   542,   543,   544,
-     545,    94,   224,   306,   546,   225,   282,   547,   325,   264,
-     553,   548,   327,   549,   328,   550,   320,   212,   551,   552,
-     555,   338,   556,   554,   560,   384,   557,   558,   362,   256,
-     559,   561,   271,   562,   307,   563,   564,   565,   566,   326,
-     567,   363,   253,   283,   568,   266,   569,   570,   226,   258,
-     571,   572,   573,   321,   574,   259,   281,   575,   339,   576,
-     577,   260,   578,   287,   579,   227,   580,   228,   581,   288,
-     583,   584,   585,   229,   586,   289,   588,   589,   364,   230,
-     231,   590,   594,   232,   233,   234,   235,   236,   648,   649,
-     650,   237,  1125,   591,   592,   593,   595,   238,   239,   240,
-     596,   241,   251,   597,   599,   601,   265,   602,   603,   604,
-     605,   606,   747,   607,   608,   610,   611,   748,   749,   750,
-     751,   752,   753,   754,   755,   756,   757,   758,   759,   760,
-     761,   762,   763,   764,   765,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,   613,
-     614,   615,   384,   618,   622,   623,   150,   300,   626,   627,
-     612,   629,   204,   616,   619,   620,   632,   633,   636,   637,
-     625,   628,   630,   631,   638,   211,   634,   635,   639,   642,
-     725,   645,   643,   646,   659,   647,   107,   108,   109,   110,
-     111,   651,   652,   653,   654,   655,   849,   656,   362,   657,
-     658,   660,   738,   667,   669,   668,   670,   671,   672,   850,
-     860,   363,   212,    32,   675,   681,   682,   115,   116,   117,
-     118,   119,   120,   121,   122,   683,   684,   125,   126,   127,
-     128,   129,   130,   685,   213,   214,   215,   686,   133,   687,
-     688,   689,   691,   690,   692,   700,   851,   861,   364,   216,
-     703,   135,   136,   217,   218,   219,   137,   107,   108,   109,
-     110,   111,    94,   220,   701,   702,   221,   140,   704,   705,
-     707,   708,   709,   737,   222,   732,   743,   711,   712,   713,
-     790,   714,   715,   794,   798,   802,   716,   806,   115,   116,
-     117,   118,   119,   120,   121,   122,   822,   717,   125,   126,
-     127,   128,   129,   130,   131,   718,   719,   720,   721,   133,
-     300,   722,   723,   724,   726,   147,   148,   727,   728,   734,
-     735,   736,   135,   136,   825,   218,   829,   137,   869,   873,
-     893,   894,   895,   896,   220,   897,   902,   221,   903,   904,
-     905,   906,   907,   937,    94,   222,   912,   913,   915,   916,
-     919,   918,   922,   959,   921,   925,   924,   932,   933,   935,
-     936,  1135,   938,   939,   940,   941,   942,   949,   951,   964,
-     975,   963,   974,   968,   967,   966,   970,   971,   972,   973,
-     976,   977,   978,   979,   980,   981,   147,   148,   982,   983,
-     984,  1063,   985,   986,  1064,  1067,   987,   988,  1056,  1057,
-    1058,  1059,  1060,  1061,  1069,  1084,  1066,  1068,  1085,  1089,
-    1088,  1095,  1096,  1097,  1109,    94,  1104,  1105,  1098,  1099,
-    1100,  1110,  1101,  1111,   223,  1112,  1114,   306,  1115,  1119,
-     325,  1116,   257,   998,   327,  1123,   328,   255,  1036,  1127,
-     320,   280,  1128,   338,   342,  1038,  1026,   224,  1130,  1132,
-     225,  1040,  1131,  1134,   282,  1136,   999,   849,   307,  1000,
-    1020,   326,  1137,  1157,  1017,  1158,  1074,  1159,  1163,  1037,
-     850,  1164,   263,  1165,   256,  1166,   860,   321,  1167,  1076,
-     339,  1169,  1170,  1027,   673,   270,   582,   253,  1041,   534,
-     733,   283,   881,   226,   258,   587,  1025,  1075,   739,   264,
-     259,  1039,  1001,  1028,   281,   742,   260,   851,  1042,  1029,
-     227,   287,   228,   861,  1043,  1030,  1077,   288,   229,  1002,
-    1044,  1003,   271,   289,   230,   231,   969,  1004,   232,   233,
-     234,   235,   236,  1005,  1006,   266,   237,  1007,  1008,  1009,
-    1010,  1011,   238,   239,   240,  1012,   241,   251,   991,   989,
-    1033,  1013,  1014,  1015,   624,  1016,  1022,  1021,  1126,   993,
-    1054,  1055,  1062,   992,   995,  1032,  1087,   994,   617,   621,
-     878,  1053,   996,   997,  1086,  1129,   868,   598,  1065,   741,
-    1070,   640,   740,  1133,  1051,  1052,   600,  1155,  1168,   644,
-     641,     0,     0,     0,     0,     0,   265,     0,   609,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  1083,     0,     0,   998,     0,     0,     0,
-       0,  1036,     0,     0,     0,     0,  1117,     0,  1038,  1026,
-       0,  1074,     0,     0,  1040,     0,     0,     0,     0,   999,
-       0,     0,  1000,  1020,  1076,     0,     0,  1017,     0,     0,
-       0,     0,  1037,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  1075,     0,     0,     0,  1027,     0,     0,     0,
-       0,  1041,     0,     0,     0,     0,     0,     0,     0,  1025,
-       0,  1077,     0,     0,  1039,  1001,  1028,     0,     0,     0,
-       0,  1042,  1029,     0,     0,     0,     0,  1043,  1030,     0,
-       0,     0,  1002,  1044,  1003,     0,     0,     0,     0,     0,
-    1004,     0,     0,     0,     0,     0,  1005,  1006,     0,     0,
-    1007,  1008,  1009,  1010,  1011,     0,     0,     0,  1012,     0,
-       0,     0,     0,     0,  1013,  1014,  1015,     0,  1016,  1022,
-    1021
+      95,   151,   206,   225,   266,   283,   387,   309,   328,   345,
+     365,   260,   330,   301,   331,   213,   258,   273,   285,   794,
+     323,   341,   711,   366,  1024,  1025,   226,  1037,   715,   227,
+      89,   267,    31,   734,    32,    42,    33,    86,   310,   329,
+     202,   203,   133,   405,   204,    83,    30,   205,   406,   109,
+     110,   111,   214,   259,   274,   286,   150,   324,   342,  1149,
+     367,   395,  1150,  1151,  1152,  1153,   256,   269,   284,   455,
+     134,   461,   228,   261,   456,   290,   462,   931,    44,   262,
+     932,   291,   265,   136,   137,   263,    46,   292,    48,   229,
+      50,   230,   109,   110,   111,   222,   934,   231,   223,   935,
+     134,   302,    52,   232,   233,   343,   344,   234,   235,   236,
+     237,   238,    54,   136,   137,   239,   962,   136,   137,   963,
+     394,   240,   241,   242,   275,   243,   244,   254,    56,   268,
+     276,   277,   278,   279,   280,   281,   473,   282,    58,   303,
+     476,   474,   133,   134,   303,   477,    60,   303,    62,   304,
+     305,   136,   137,   306,   307,   308,   136,   137,   505,   136,
+     137,   136,   137,   506,  1147,   735,    64,  1148,   396,  1040,
+    1041,    94,   815,   816,   817,   818,    94,   819,    90,   103,
+     343,   344,   104,    66,   666,   667,   668,   669,    91,    92,
+      93,   105,   397,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   861,   862,   863,    94,    94,   398,  1024,  1025,
+      94,  1037,    34,    35,    36,    37,   404,   136,   137,  1077,
+     670,  1078,  1079,   388,   389,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   522,    94,   524,   133,   134,   523,    94,
+     525,   486,    94,   528,   864,   852,   853,   135,   529,   455,
+     136,   137,   524,   528,   887,   138,   410,   888,   889,   461,
+     139,   140,   995,   411,   890,   412,   141,   419,   303,   325,
+     304,   305,   326,   327,   699,   700,   142,   892,   913,   143,
+     136,   137,   893,   914,   913,   487,   144,   145,   948,   915,
+     146,   952,   958,   949,   147,   420,   953,   959,   702,   703,
+      94,   838,   839,   840,   841,   842,   843,   522,   282,   882,
+     421,   913,   960,   473,   148,   149,  1108,   150,  1109,  1112,
+     488,   505,  1127,   476,  1113,    95,  1119,  1128,  1130,  1167,
+    1096,  1097,  1098,  1099,  1168,   681,   682,   683,   684,   752,
+     422,   423,   424,    94,   753,   754,   755,   756,   757,   758,
+     759,   760,   761,   762,   763,   764,   765,   766,   767,   768,
+     769,   770,   530,   531,   425,   426,   427,   429,   430,   431,
+     435,   448,   460,    94,   469,   151,   491,   495,   497,   496,
+     499,   206,   500,   532,   502,   303,   507,   501,   510,   512,
+     513,   516,   517,   225,   213,   527,   266,   542,   533,   534,
+     535,   260,   536,   537,   539,   540,   258,   283,   541,   273,
+     543,   544,   545,   546,   547,   548,   226,   309,   549,   227,
+     285,   550,   328,   267,   551,   552,   330,   553,   331,   554,
+     323,   214,   556,   555,   559,   341,   560,   564,   557,   387,
+     558,   565,   365,   259,   566,   568,   274,   569,   310,   570,
+     561,   571,   562,   329,   563,   366,   256,   286,   567,   269,
+     572,   573,   228,   261,   574,   575,   576,   324,   577,   262,
+     284,   578,   342,   579,   581,   263,   580,   290,   582,   229,
+     583,   230,   584,   291,   585,   136,   137,   231,   586,   292,
+      94,   588,   367,   232,   233,   589,   590,   234,   235,   236,
+     237,   238,   653,   654,   655,   239,  1131,   593,   594,   591,
+     595,   240,   241,   242,   596,   243,   244,   254,   597,   598,
+     599,   268,   600,   601,   602,   604,   606,   607,   608,   609,
+     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,   362,   610,   611,   612,   613,   615,   616,   363,
+     364,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,   618,   619,   387,   620,   617,
+     623,   151,   627,   628,   631,   632,   633,   206,    94,   634,
+     621,   637,   638,   641,   642,   624,   643,   644,   635,   647,
+     213,   625,   636,   630,   650,   730,   651,   737,   648,   652,
+     107,   108,   109,   110,   111,   656,   639,   640,   657,   658,
+     659,   854,   660,   365,   661,   662,   663,   743,   664,   665,
+     672,   673,   674,   675,   855,   865,   366,   214,   676,   677,
+     686,   115,   116,   117,   118,   119,   120,   121,   122,    32,
+     680,   125,   126,   127,   128,   129,   130,   131,   687,   215,
+     216,   217,   688,   134,   689,   690,   694,   691,   692,   693,
+     695,   856,   866,   367,   218,   696,   136,   137,   219,   220,
+     221,   138,   107,   108,   109,   110,   111,   697,   222,   705,
+     706,   223,   141,   707,   708,   709,   710,   712,   713,   224,
+     714,   742,   716,   717,   718,   748,   719,   720,   721,   795,
+     799,   722,   723,   115,   116,   117,   118,   119,   120,   121,
+     122,   724,   725,   125,   126,   127,   128,   129,   130,   131,
+     132,   726,   727,   728,   803,   134,   303,   807,   811,   827,
+     148,   149,   729,   731,   732,   733,   739,   740,   136,   137,
+     741,   220,   830,   138,   834,   874,   878,   898,   899,   900,
+     222,   901,   902,   223,   907,   908,   909,   910,   911,    94,
+     912,   224,   918,   917,   920,   921,   923,   924,   927,   926,
+     930,   964,   929,   938,   937,   940,   941,   968,   942,   943,
+     944,   945,   946,   947,   954,   956,   969,   980,   973,   979,
+     971,   972,   975,   976,   977,   978,   981,   984,   983,   982,
+     985,   986,   148,   149,   987,   988,   989,   990,   991,  1069,
+    1070,  1073,  1075,   993,   992,  1062,  1063,  1064,  1090,  1065,
+    1066,  1067,  1091,  1074,  1072,  1094,  1095,  1101,  1110,  1102,
+    1103,    94,  1111,  1115,  1116,  1117,  1118,  1125,  1104,   225,
+    1105,  1106,   309,  1107,  1120,   328,  1121,   260,  1003,   330,
+    1122,   331,   258,  1042,  1129,   323,   283,  1133,   341,   345,
+    1044,  1032,   226,  1134,  1136,   227,  1046,  1138,  1137,   285,
+    1140,  1004,   854,   310,  1005,  1026,   329,  1141,  1143,  1023,
+    1142,  1080,  1163,  1164,  1043,   855,  1165,   266,  1169,   259,
+    1170,   865,   324,  1171,  1082,   342,  1172,  1173,  1033,  1175,
+     273,  1176,   256,  1047,   678,   744,   286,   587,   228,   261,
+     738,  1031,  1081,   886,   267,   262,  1045,  1006,  1034,   284,
+     592,   263,   856,  1048,  1035,   229,   290,   230,   866,  1049,
+    1036,  1083,   291,   231,  1007,  1050,  1008,   274,   292,   232,
+     233,   747,  1009,   234,   235,   236,   237,   238,  1010,  1011,
+     269,   239,  1012,  1013,  1014,  1015,  1016,   240,   241,   242,
+    1017,   243,   244,   254,   538,   996,  1018,  1019,  1020,   974,
+    1021,  1022,  1028,  1027,  1061,   994,  1060,  1039,   629,  1068,
+    1038,   998,   997,  1132,   626,   622,  1092,  1135,   999,  1000,
+    1059,  1058,  1093,  1001,  1002,   873,   883,   746,   745,  1076,
+     649,   603,  1139,   645,  1057,   605,  1161,   646,  1174,     0,
+       0,     0,   268,     0,     0,     0,     0,   614,     0,     0,
+       0,     0,     0,     0,  1071,     0,     0,     0,     0,     0,
+       0,     0,  1003,     0,     0,     0,  1089,  1042,     0,     0,
+       0,     0,  1123,     0,  1044,  1032,     0,  1080,     0,     0,
+    1046,     0,     0,     0,     0,  1004,     0,     0,  1005,  1026,
+    1082,     0,     0,  1023,     0,     0,     0,     0,  1043,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  1081,     0,
+       0,     0,  1033,     0,     0,     0,     0,  1047,     0,     0,
+       0,     0,     0,     0,     0,  1031,     0,  1083,     0,     0,
+    1045,  1006,  1034,     0,     0,     0,     0,  1048,  1035,     0,
+       0,     0,     0,  1049,  1036,     0,     0,     0,  1007,  1050,
+    1008,     0,     0,     0,     0,     0,  1009,     0,     0,     0,
+       0,     0,  1010,  1011,     0,     0,  1012,  1013,  1014,  1015,
+    1016,     0,     0,     0,  1017,     0,     0,     0,     0,     0,
+    1018,  1019,  1020,     0,  1021,  1022,  1028,  1027
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
       70,    71,    72,    73,    74,    75,    81,    77,    78,    79,
-      80,    73,    78,    76,    78,    72,    73,    74,    75,   595,
-      77,    78,   658,    80,   923,   601,    73,   923,   923,    73,
-      10,    74,    18,     5,     7,     7,     7,     9,    77,    78,
-      15,    16,   184,     3,    19,    68,     3,    22,     8,    79,
-      77,     8,    72,    73,    74,    75,     0,    77,    78,   158,
-      80,    91,    92,     6,   118,   119,    73,    74,    75,     7,
-      78,     3,    73,    73,     7,    75,     8,    91,    92,    73,
-       3,    75,    90,    91,    92,    73,     7,    75,     7,    73,
-       7,    73,    28,    29,    30,   103,     3,    73,   106,     3,
-      34,     8,     6,    73,    73,   118,   119,    73,    73,    73,
-      73,    73,    12,    13,     4,    73,    91,    92,   132,   133,
-     134,    73,    73,    73,     3,    73,    73,     6,    74,   159,
-     184,   161,   162,     7,     3,   151,   152,   153,   154,     8,
-       7,    77,    78,    79,     3,    79,     7,    81,    82,     8,
-       3,    85,    86,    87,   184,    91,    92,    91,    92,    17,
-      18,     3,     3,   149,    91,    92,     8,     8,   104,   105,
-     184,   187,    20,    21,     8,     3,   184,   157,    11,   160,
-       8,    14,   163,   164,   165,   166,     3,   167,   168,   169,
-      23,     8,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,     7,   129,   130,   184,     3,     7,  1106,     6,   184,
-    1106,  1106,   184,   185,   186,   187,   121,   122,   123,   124,
-     125,   126,   115,   116,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,     3,     3,     7,    77,    78,     8,     8,   184,     4,
-     184,   108,   109,   110,   111,    88,   113,   184,    91,    92,
-       4,     3,     8,    96,     6,    28,    29,    30,   101,   102,
-       4,     3,     8,     4,   107,   911,     8,    79,    80,    81,
-      82,    83,    84,     3,   117,     4,     3,   120,     8,    91,
-      92,     8,     3,     3,   127,   128,     3,     8,   131,     3,
-       3,     8,   135,     4,     8,     8,     3,     3,    91,    92,
-       4,     8,     8,     3,     3,    78,     3,     8,     8,     8,
-       4,     8,   155,   156,     4,   158,     3,     3,    91,    92,
-       3,     8,   402,     3,     8,     8,     4,     4,     8,   102,
-      97,    98,    99,   100,     4,   108,   109,   110,   111,   112,
-     113,   184,   115,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,     4,     4,     4,   392,
-     393,     4,   155,   156,    35,    36,    37,    38,     4,     4,
-       4,   451,   184,     4,     4,     4,     4,   457,     4,     3,
-     184,     4,     4,     4,     4,     4,     4,     4,     4,   469,
-     457,   184,   472,     4,     4,     4,     4,   469,     4,     4,
-     187,   187,   469,   483,   187,   472,     4,     4,     4,     4,
-       4,   184,   469,   493,     4,   469,   483,   185,   498,   472,
-     186,   185,   498,   185,   498,   185,   493,   457,   185,   187,
-     185,   498,     4,   186,     4,   520,   187,   187,   518,   469,
-     187,     4,   472,     4,   493,     4,     4,     4,     4,   498,
-       4,   518,   469,   483,     4,   472,     4,     4,   469,   469,
-       4,     4,     4,   493,     4,   469,   483,   185,   498,     4,
-       4,   469,     4,   483,     4,   469,     4,   469,     4,   483,
-       4,     4,     4,   469,   187,   483,     4,     4,   518,   469,
-     469,     4,   185,   469,   469,   469,   469,   469,   531,   532,
-     533,   469,  1088,     4,     4,     4,     4,   469,   469,   469,
-       4,   469,   469,     4,     4,     4,   472,     4,     4,     4,
-       4,     4,    34,     4,     4,     4,     4,    39,    40,    41,
-      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,     4,
-       4,     4,   647,     4,     4,     4,   646,    79,     4,     4,
-     185,     4,   652,   187,   187,   187,     4,     4,     4,     4,
-     187,   185,   185,   185,     4,   652,   187,   187,     4,     4,
-     623,     4,   185,     7,     5,     7,    26,    27,    28,    29,
-      30,     7,     7,     7,   184,   184,   686,   184,   688,     7,
-       7,   184,   645,   184,     5,   184,     5,     5,     5,   686,
-     687,   688,   652,     7,   184,     5,     5,    57,    58,    59,
-      60,    61,    62,    63,    64,     5,     5,    67,    68,    69,
-      70,    71,    72,     7,    74,    75,    76,     7,    78,     7,
-       7,   184,     5,   184,     5,   184,   686,   687,   688,    89,
-       5,    91,    92,    93,    94,    95,    96,    26,    27,    28,
-      29,    30,   184,   103,   184,   184,   106,   107,   184,   184,
-     184,     7,   184,     5,   114,   150,    24,   184,   184,   184,
-       7,   184,   184,     7,     7,     7,   184,     7,    57,    58,
-      59,    60,    61,    62,    63,    64,     7,   184,    67,    68,
-      69,    70,    71,    72,    73,   184,   184,   184,   184,    78,
-      79,   184,   184,   184,   184,   155,   156,   184,   184,   184,
-     184,   184,    91,    92,     7,    94,     7,    96,     7,     7,
-       4,     4,     4,     4,   103,     4,     4,   106,     4,     4,
-       4,     4,     4,     4,   184,   114,     6,     3,     6,     3,
-       3,     6,     3,   184,     6,     3,     6,     6,     3,     6,
-       3,     5,     4,     4,     4,     4,     4,     4,     4,     3,
-     187,     6,   185,     4,     6,     8,     4,     4,     4,     4,
-     185,   187,   185,     4,     4,     4,   155,   156,     4,   185,
-     185,     4,   185,   185,     4,     4,   187,   185,   185,   185,
-     185,   185,   185,   185,     4,     6,   187,   185,     3,   184,
-       4,   184,   184,   184,     4,   184,     8,     8,   184,   184,
-     184,     8,   184,     3,   914,     8,   184,   917,   184,     4,
-     920,   184,   914,   923,   920,   184,   920,   914,   928,     4,
-     917,   931,   187,   920,   934,   928,   923,   914,     4,     4,
-     914,   928,   185,   184,   931,   184,   923,   947,   917,   923,
-     923,   920,     7,     4,   923,     4,   956,     4,     4,   928,
-     947,   187,   962,   185,   914,   185,   953,   917,     4,   956,
-     920,   184,   184,   923,   567,   962,   451,   914,   928,   402,
-     636,   931,   737,   914,   914,   457,   923,   956,   646,   962,
-     914,   928,   923,   923,   931,   652,   914,   947,   928,   923,
-     914,   931,   914,   953,   928,   923,   956,   931,   914,   923,
-     928,   923,   962,   931,   914,   914,   887,   923,   914,   914,
-     914,   914,   914,   923,   923,   962,   914,   923,   923,   923,
-     923,   923,   914,   914,   914,   923,   914,   914,   913,   908,
-     926,   923,   923,   923,   501,   923,   923,   923,  1106,   916,
-     934,   936,   943,   914,   919,   925,   964,   917,   493,   498,
-     708,   933,   920,   922,   962,  1111,   688,   469,   947,   651,
-     953,   518,   647,  1121,   929,   931,   472,  1141,  1161,   524,
-     520,    -1,    -1,    -1,    -1,    -1,   962,    -1,   483,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   957,    -1,    -1,  1106,    -1,    -1,    -1,
-      -1,  1111,    -1,    -1,    -1,    -1,  1069,    -1,  1111,  1106,
-      -1,  1121,    -1,    -1,  1111,    -1,    -1,    -1,    -1,  1106,
-      -1,    -1,  1106,  1106,  1121,    -1,    -1,  1106,    -1,    -1,
-      -1,    -1,  1111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1121,    -1,    -1,    -1,  1106,    -1,    -1,    -1,
-      -1,  1111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1106,
-      -1,  1121,    -1,    -1,  1111,  1106,  1106,    -1,    -1,    -1,
-      -1,  1111,  1106,    -1,    -1,    -1,    -1,  1111,  1106,    -1,
-      -1,    -1,  1106,  1111,  1106,    -1,    -1,    -1,    -1,    -1,
-    1106,    -1,    -1,    -1,    -1,    -1,  1106,  1106,    -1,    -1,
-    1106,  1106,  1106,  1106,  1106,    -1,    -1,    -1,  1106,    -1,
-      -1,    -1,    -1,    -1,  1106,  1106,  1106,    -1,  1106,  1106,
-    1106
+      80,    73,    78,    76,    78,    72,    73,    74,    75,   663,
+      77,    78,   600,    80,   928,   928,    73,   928,   606,    73,
+      10,    74,     5,    18,     7,     7,     9,   185,    77,    78,
+      15,    16,    78,     3,    19,    68,     0,    22,     8,    28,
+      29,    30,    72,    73,    74,    75,   159,    77,    78,   161,
+      80,     3,   164,   165,   166,   167,    73,    74,    75,     3,
+      79,     3,    73,    73,     8,    75,     8,     3,     7,    73,
+       6,    75,    91,    92,    93,    73,     7,    75,     7,    73,
+       7,    73,    28,    29,    30,   104,     3,    73,   107,     6,
+      79,    34,     7,    73,    73,   119,   120,    73,    73,    73,
+      73,    73,     7,    92,    93,    73,     3,    92,    93,     6,
+       6,    73,    73,    73,   103,    73,    73,    73,     7,    74,
+     109,   110,   111,   112,   113,   114,     3,   116,     7,    80,
+       3,     8,    78,    79,    80,     8,     7,    80,     7,    82,
+      83,    92,    93,    86,    87,    88,    92,    93,     3,    92,
+      93,    92,    93,     8,     3,   150,     7,     6,     4,   105,
+     106,   185,   109,   110,   111,   112,   185,   114,   158,    11,
+     119,   120,    14,     7,   152,   153,   154,   155,   168,   169,
+     170,    23,     8,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,   133,   134,   135,   185,   185,     3,  1112,  1112,
+     185,  1112,   185,   186,   187,   188,     4,    92,    93,   160,
+     188,   162,   163,    12,    13,    57,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+      72,    73,    74,     3,   185,     3,    78,    79,     8,   185,
+       8,     8,   185,     3,   185,   130,   131,    89,     8,     3,
+      92,    93,     3,     3,     8,    97,     4,     8,     8,     3,
+     102,   103,   916,     4,     8,     4,   108,     4,    80,    81,
+      82,    83,    84,    85,    17,    18,   118,     3,     3,   121,
+      92,    93,     8,     8,     3,     3,   128,   129,     3,     8,
+     132,     3,     3,     8,   136,     4,     8,     8,    20,    21,
+     185,   122,   123,   124,   125,   126,   127,     3,   116,   117,
+       4,     3,     8,     3,   156,   157,     8,   159,     8,     3,
+       8,     3,     3,     3,     8,   405,     8,     8,     8,     3,
+      35,    36,    37,    38,     8,    98,    99,   100,   101,    34,
+       4,     4,     4,   185,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,   395,   396,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,   185,     4,   455,     4,     4,     3,     8,
+       4,   461,     4,   185,     3,    80,     4,     8,     4,     4,
+       4,     4,     4,   473,   461,     4,   476,   188,     4,     4,
+       4,   473,     4,     4,     4,     4,   473,   487,     4,   476,
+     188,   188,     4,     4,     4,     4,   473,   497,     4,   473,
+     487,     4,   502,   476,   186,   186,   502,   186,   502,   186,
+     497,   461,   188,   186,   186,   502,     4,     4,   187,   524,
+     187,     4,   522,   473,     4,     4,   476,     4,   497,     4,
+     188,     4,   188,   502,   188,   522,   473,   487,   188,   476,
+       4,     4,   473,   473,     4,     4,     4,   497,     4,   473,
+     487,     4,   502,     4,     4,   473,   186,   487,     4,   473,
+       4,   473,     4,   487,     4,    92,    93,   473,     4,   487,
+     185,     4,   522,   473,   473,     4,     4,   473,   473,   473,
+     473,   473,   535,   536,   537,   473,  1094,     4,     4,   188,
+       4,   473,   473,   473,     4,   473,   473,   473,     4,     4,
+     186,   476,     4,     4,     4,     4,     4,     4,     4,     4,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,     4,     4,     4,     4,     4,     4,   156,
+     157,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,     4,     4,   652,     4,   186,
+       4,   651,     4,     4,     4,     4,   186,   657,   185,     4,
+     188,     4,     4,     4,     4,   188,     4,     4,   186,     4,
+     657,   188,   186,   188,     4,   628,     7,   151,   186,     7,
+      26,    27,    28,    29,    30,     7,   188,   188,     7,     7,
+     185,   691,   185,   693,   185,     7,     7,   650,     5,   185,
+     185,   185,     5,     5,   691,   692,   693,   657,     5,     5,
+       5,    57,    58,    59,    60,    61,    62,    63,    64,     7,
+     185,    67,    68,    69,    70,    71,    72,    73,     5,    75,
+      76,    77,     5,    79,     5,     7,   185,     7,     7,     7,
+     185,   691,   692,   693,    90,     5,    92,    93,    94,    95,
+      96,    97,    26,    27,    28,    29,    30,     5,   104,   185,
+     185,   107,   108,   185,     5,   185,   185,   185,     7,   115,
+     185,     5,   185,   185,   185,    24,   185,   185,   185,     7,
+       7,   185,   185,    57,    58,    59,    60,    61,    62,    63,
+      64,   185,   185,    67,    68,    69,    70,    71,    72,    73,
+      74,   185,   185,   185,     7,    79,    80,     7,     7,     7,
+     156,   157,   185,   185,   185,   185,   185,   185,    92,    93,
+     185,    95,     7,    97,     7,     7,     7,     4,     4,     4,
+     104,     4,     4,   107,     4,     4,     4,     4,     4,   185,
+       4,   115,     3,     6,     6,     3,     6,     3,     3,     6,
+       3,   185,     6,     3,     6,     6,     3,     6,     4,     4,
+       4,     4,     4,     4,     4,     4,     3,   188,     4,   186,
+       8,     6,     4,     4,     4,     4,   186,     4,   186,   188,
+       4,     4,   156,   157,     4,   186,   186,   186,   186,     4,
+       4,     4,     4,   186,   188,   186,   186,   186,     6,   186,
+     186,   186,     3,   186,   188,     4,   185,   185,     8,   185,
+     185,   185,     8,     4,     8,     3,     8,     4,   185,   919,
+     185,   185,   922,   185,   185,   925,   185,   919,   928,   925,
+     185,   925,   919,   933,   185,   922,   936,     4,   925,   939,
+     933,   928,   919,   188,     4,   919,   933,     4,   186,   936,
+     185,   928,   952,   922,   928,   928,   925,     5,     7,   928,
+     185,   961,     4,     4,   933,   952,     4,   967,     4,   919,
+     188,   958,   922,   186,   961,   925,   186,     4,   928,   185,
+     967,   185,   919,   933,   572,   651,   936,   455,   919,   919,
+     641,   928,   961,   742,   967,   919,   933,   928,   928,   936,
+     461,   919,   952,   933,   928,   919,   936,   919,   958,   933,
+     928,   961,   936,   919,   928,   933,   928,   967,   936,   919,
+     919,   657,   928,   919,   919,   919,   919,   919,   928,   928,
+     967,   919,   928,   928,   928,   928,   928,   919,   919,   919,
+     928,   919,   919,   919,   405,   918,   928,   928,   928,   892,
+     928,   928,   928,   928,   941,   913,   939,   931,   505,   948,
+     930,   921,   919,  1112,   502,   497,   967,  1117,   922,   924,
+     938,   936,   969,   925,   927,   693,   713,   656,   652,   958,
+     528,   473,  1127,   522,   934,   476,  1147,   524,  1167,    -1,
+      -1,    -1,   967,    -1,    -1,    -1,    -1,   487,    -1,    -1,
+      -1,    -1,    -1,    -1,   952,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1112,    -1,    -1,    -1,   962,  1117,    -1,    -1,
+      -1,    -1,  1075,    -1,  1117,  1112,    -1,  1127,    -1,    -1,
+    1117,    -1,    -1,    -1,    -1,  1112,    -1,    -1,  1112,  1112,
+    1127,    -1,    -1,  1112,    -1,    -1,    -1,    -1,  1117,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1127,    -1,
+      -1,    -1,  1112,    -1,    -1,    -1,    -1,  1117,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1112,    -1,  1127,    -1,    -1,
+    1117,  1112,  1112,    -1,    -1,    -1,    -1,  1117,  1112,    -1,
+      -1,    -1,    -1,  1117,  1112,    -1,    -1,    -1,  1112,  1117,
+    1112,    -1,    -1,    -1,    -1,    -1,  1112,    -1,    -1,    -1,
+      -1,    -1,  1112,  1112,    -1,    -1,  1112,  1112,  1112,  1112,
+    1112,    -1,    -1,    -1,  1112,    -1,    -1,    -1,    -1,    -1,
+    1112,  1112,  1112,    -1,  1112,  1112,  1112,  1112
   };
 
   const short
   Dhcp4Parser::yystos_[] =
   {
-       0,   170,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,   181,   182,   183,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
-       0,     5,     7,     9,   184,   185,   186,   187,   204,   205,
-     206,   211,     7,   220,     7,   226,     7,   262,     7,   360,
-       7,   440,     7,   456,     7,   392,     7,   398,     7,   422,
-       7,   336,     7,   521,     7,   567,     7,   558,   212,   207,
-     221,   227,   263,   361,   441,   457,   393,   399,   423,   337,
-     522,   568,   559,   204,   213,   214,   184,   209,   210,    10,
-     157,   167,   168,   169,   184,   219,   222,   223,   224,   550,
-     552,   554,   565,    11,    14,    23,    25,    26,    27,    28,
+       0,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
+       0,     5,     7,     9,   185,   186,   187,   188,   205,   206,
+     207,   212,     7,   221,     7,   227,     7,   264,     7,   362,
+       7,   442,     7,   458,     7,   394,     7,   400,     7,   424,
+       7,   338,     7,   523,     7,   569,     7,   560,   213,   208,
+     222,   228,   265,   363,   443,   459,   395,   401,   425,   339,
+     524,   570,   561,   205,   214,   215,   185,   210,   211,    10,
+     158,   168,   169,   170,   185,   220,   223,   224,   225,   552,
+     554,   556,   567,    11,    14,    23,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    57,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    77,    78,    88,    91,    92,    96,   101,   102,
-     107,   117,   120,   127,   128,   131,   135,   155,   156,   158,
-     219,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   238,   239,   241,   242,   243,   244,   245,   246,   247,
-     250,   252,   254,   256,   258,   273,   275,   281,   283,   321,
-     330,   344,   354,   378,   382,   390,   416,   446,   448,   450,
-     461,   463,   465,   488,   500,   501,   509,   519,   556,   571,
-      15,    16,    19,    22,   219,   260,   261,   264,   266,   269,
-     272,   446,   448,    74,    75,    76,    89,    93,    94,    95,
-     103,   106,   114,   219,   230,   231,   232,   233,   234,   235,
-     236,   237,   242,   243,   244,   245,   246,   247,   250,   252,
-     254,   256,   362,   363,   364,   366,   368,   370,   372,   374,
-     376,   378,   381,   416,   434,   446,   448,   450,   461,   463,
-     465,   485,    90,   219,   374,   376,   416,   442,   443,   444,
-     446,   448,   102,   108,   109,   110,   111,   112,   113,   115,
-     219,   416,   446,   448,   458,   459,   460,   461,   463,   465,
-     467,   471,   473,   475,   477,   479,   481,   483,   390,    34,
-      79,    81,    82,    85,    86,    87,   219,   301,   400,   401,
-     402,   403,   404,   405,   406,   408,   410,   412,   413,   415,
-     446,   448,    80,    83,    84,   219,   301,   404,   410,   424,
-     425,   426,   427,   428,   430,   431,   432,   433,   446,   448,
-     118,   119,   219,   338,   339,   340,   342,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     155,   156,   219,   446,   448,   523,   524,   525,   526,   528,
-     529,   531,   532,   533,   536,   538,   540,   541,   542,   544,
-     546,   548,   569,   570,   571,    12,    13,   560,   561,   562,
-     564,     6,     3,     4,     8,     3,   225,   566,   551,   553,
-     555,     4,     3,     8,   557,   259,   276,     4,     4,     4,
-     462,   464,   466,   274,   282,   284,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   240,     4,     4,     4,   248,
-     251,   253,   355,   391,   417,   383,   447,   449,   379,   322,
-     489,   451,   331,   345,     4,   502,   510,   520,   255,   257,
-     572,     3,     8,   265,   267,   270,     4,     3,     8,   367,
-     369,   371,   435,   365,   373,     4,   377,   375,   486,     3,
-       8,   445,     3,     8,   484,   472,   474,   478,   476,   482,
-     480,   468,     8,     3,     8,   407,   302,     4,   411,   409,
-     414,     4,     8,     3,   429,     4,     4,     8,     3,   341,
-     343,     3,     8,     4,   539,   527,     4,   530,     4,     4,
-     534,   537,     4,     4,   543,   545,   547,   549,     3,     8,
-       3,     8,   563,     4,     3,     8,   204,   204,   184,     4,
-       4,     4,     4,     4,   223,     4,     4,     4,   187,   187,
-     187,     4,     4,     4,     4,     4,     4,   185,   185,   185,
-     185,   185,   187,   186,   186,   185,     4,   187,   187,   187,
+      72,    73,    74,    78,    79,    89,    92,    93,    97,   102,
+     103,   108,   118,   121,   128,   129,   132,   136,   156,   157,
+     159,   220,   229,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   242,   243,   244,   245,   246,   247,
+     248,   251,   253,   255,   257,   259,   260,   275,   277,   283,
+     285,   323,   332,   346,   356,   380,   384,   392,   418,   448,
+     450,   452,   463,   465,   467,   490,   502,   503,   511,   521,
+     558,   573,    15,    16,    19,    22,   220,   262,   263,   266,
+     268,   271,   274,   448,   450,    75,    76,    77,    90,    94,
+      95,    96,   104,   107,   115,   220,   231,   232,   233,   234,
+     235,   236,   237,   238,   243,   244,   245,   246,   247,   248,
+     251,   253,   255,   257,   259,   364,   365,   366,   368,   370,
+     372,   374,   376,   378,   380,   383,   418,   436,   448,   450,
+     452,   463,   465,   467,   487,    91,   220,   376,   378,   418,
+     444,   445,   446,   448,   450,   103,   109,   110,   111,   112,
+     113,   114,   116,   220,   418,   448,   450,   460,   461,   462,
+     463,   465,   467,   469,   473,   475,   477,   479,   481,   483,
+     485,   392,    34,    80,    82,    83,    86,    87,    88,   220,
+     303,   402,   403,   404,   405,   406,   407,   408,   410,   412,
+     414,   415,   417,   448,   450,    81,    84,    85,   220,   303,
+     406,   412,   426,   427,   428,   429,   430,   432,   433,   434,
+     435,   448,   450,   119,   120,   220,   340,   341,   342,   344,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   156,   157,   220,   448,   450,   525,   526,
+     527,   528,   530,   531,   533,   534,   535,   538,   540,   542,
+     543,   544,   546,   548,   550,   571,   572,   573,    12,    13,
+     562,   563,   564,   566,     6,     3,     4,     8,     3,   226,
+     568,   553,   555,   557,     4,     3,     8,   559,   261,   278,
+       4,     4,     4,   464,   466,   468,   276,   284,   286,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,   241,     4,
+       4,     4,   249,   252,   254,     4,   357,   393,   419,   385,
+     449,   451,   381,   324,   491,   453,   333,   347,     4,   504,
+     512,   522,   256,   258,   574,     3,     8,   267,   269,   272,
+       4,     3,     8,   369,   371,   373,   437,   367,   375,     4,
+     379,   377,   488,     3,     8,   447,     3,     8,   486,   474,
+     476,   480,   478,   484,   482,   470,     8,     3,     8,   409,
+     304,     4,   413,   411,   416,     4,     8,     3,   431,     4,
+       4,     8,     3,   343,   345,     3,     8,     4,   541,   529,
+       4,   532,     4,     4,   536,   539,     4,     4,   545,   547,
+     549,   551,     3,     8,     3,     8,   565,     4,     3,     8,
+     205,   205,   185,     4,     4,     4,     4,     4,   224,     4,
+       4,     4,   188,   188,   188,     4,     4,     4,     4,     4,
+       4,   186,   186,   186,   186,   186,   188,   187,   187,   186,
+       4,   188,   188,   188,     4,     4,     4,   188,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   185,     4,     4,     4,     4,
-       4,     4,   229,     4,     4,     4,   187,   261,     4,     4,
-       4,     4,     4,     4,   185,     4,     4,     4,   363,     4,
-     443,     4,     4,     4,     4,     4,     4,     4,     4,   460,
-       4,     4,   185,     4,     4,     4,   187,   402,     4,   187,
-     187,   426,     4,     4,   339,   187,     4,     4,   185,     4,
-     185,   185,     4,     4,   187,   187,     4,     4,     4,     4,
-     524,   570,     4,   185,   561,     4,     7,     7,   204,   204,
-     204,     7,     7,     7,   184,   184,   184,     7,     7,     5,
-     184,   151,   152,   153,   154,   187,   249,   184,   184,     5,
-       5,     5,     5,   206,   208,   184,    97,    98,    99,   100,
-     380,     5,     5,     5,     5,     7,     7,     7,     7,   184,
-     184,     5,     5,   215,    17,    18,   268,    20,    21,   271,
-     184,   184,   184,     5,   184,   184,   215,   184,     7,   184,
-     215,   184,   184,   184,   184,   184,   184,   184,   184,   184,
-     184,   184,   184,   184,   184,   204,   184,   184,   184,    18,
-     149,   535,   150,   249,   184,   184,   184,     5,   204,   228,
-     569,   560,   260,    24,   277,   278,   279,    34,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,    55,    56,   219,   289,   290,   291,
-     294,   296,   298,   300,   301,   303,   304,   305,   306,   307,
-     308,   309,   310,   312,   314,   316,   318,   319,   320,   289,
-       7,   285,   286,   287,     7,   356,   357,   358,     7,   394,
-     395,   396,     7,   418,   419,   420,     7,   384,   385,   386,
-     108,   109,   110,   111,   113,   323,   324,   325,   326,   327,
-     328,   329,     7,   490,   491,     7,   452,   453,   454,     7,
-     332,   333,   334,   121,   122,   123,   124,   125,   126,   346,
-     347,   348,   349,   350,   351,   352,   353,   129,   130,   219,
-     446,   448,   503,   504,   505,   507,   132,   133,   134,   184,
-     446,   448,   511,   512,   513,   514,   516,   517,   523,     7,
-     573,   574,   216,     7,   436,   437,   438,   116,   467,   469,
-     487,   285,     8,     8,     8,     8,   280,     3,     8,   292,
-     295,   297,   299,     4,     4,     4,     4,     4,   311,   313,
-     315,   317,     4,     4,     4,     4,     4,     4,     3,     8,
-       8,   288,     6,     3,   359,     6,     3,   397,     6,     3,
-     421,     6,     3,   387,     6,     3,     3,     6,   492,     3,
-       6,   455,     6,     3,   335,     6,     3,     4,     4,     4,
-       4,     4,     4,     3,     8,   506,   508,     3,     8,     4,
-     515,     4,   518,     3,     8,     8,   575,     3,     6,   184,
-     217,   218,   439,     6,     3,   470,     8,     6,     4,   278,
-       4,     4,     4,     4,   185,   187,   185,   187,   185,     4,
-       4,     4,     4,   185,   185,   185,   185,   187,   185,   290,
-     289,   287,   362,   358,   400,   396,   424,   420,   219,   230,
-     231,   232,   233,   234,   235,   236,   237,   242,   243,   244,
-     245,   246,   247,   250,   252,   254,   256,   301,   354,   372,
-     374,   376,   378,   388,   389,   416,   446,   448,   461,   463,
-     465,   485,   386,   324,   104,   105,   219,   301,   390,   416,
-     446,   448,   461,   463,   465,   493,   494,   495,   496,   497,
-     499,   491,   458,   454,   338,   334,   185,   185,   185,   185,
-     185,   185,   347,     4,     4,   504,   187,     4,   185,     4,
-     512,   159,   161,   162,   219,   301,   446,   448,   576,   577,
-     578,   579,   581,   574,     6,     3,   442,   438,     4,   184,
-      35,    36,    37,    38,   293,   184,   184,   184,   184,   184,
-     184,   184,     8,     8,     8,     8,     3,     8,   498,     4,
-       8,     3,     8,     8,   184,   184,   184,   204,   582,     4,
-     580,     3,     8,   184,     8,   215,   389,     4,   187,   495,
-       4,   185,     4,   577,   184,     5,   184,     7,   583,   584,
-     585,     3,     6,   160,   163,   164,   165,   166,   586,   587,
-     588,   590,   591,   592,   593,   584,   589,     4,     4,     4,
-     594,     3,     8,     4,   187,   185,   185,     4,   587,   184,
-     184
+     186,     4,     4,     4,     4,     4,     4,   230,     4,     4,
+       4,   188,   263,     4,     4,     4,     4,     4,     4,   186,
+       4,     4,     4,   365,     4,   445,     4,     4,     4,     4,
+       4,     4,     4,     4,   462,     4,     4,   186,     4,     4,
+       4,   188,   404,     4,   188,   188,   428,     4,     4,   341,
+     188,     4,     4,   186,     4,   186,   186,     4,     4,   188,
+     188,     4,     4,     4,     4,   526,   572,     4,   186,   563,
+       4,     7,     7,   205,   205,   205,     7,     7,     7,   185,
+     185,   185,     7,     7,     5,   185,   152,   153,   154,   155,
+     188,   250,   185,   185,     5,     5,     5,     5,   207,   209,
+     185,    98,    99,   100,   101,   382,     5,     5,     5,     5,
+       7,     7,     7,     7,   185,   185,     5,     5,   216,    17,
+      18,   270,    20,    21,   273,   185,   185,   185,     5,   185,
+     185,   216,   185,     7,   185,   216,   185,   185,   185,   185,
+     185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
+     205,   185,   185,   185,    18,   150,   537,   151,   250,   185,
+     185,   185,     5,   205,   229,   571,   562,   262,    24,   279,
+     280,   281,    34,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,   220,   291,   292,   293,   296,   298,   300,   302,   303,
+     305,   306,   307,   308,   309,   310,   311,   312,   314,   316,
+     318,   320,   321,   322,   291,     7,   287,   288,   289,     7,
+     358,   359,   360,     7,   396,   397,   398,     7,   420,   421,
+     422,     7,   386,   387,   388,   109,   110,   111,   112,   114,
+     325,   326,   327,   328,   329,   330,   331,     7,   492,   493,
+       7,   454,   455,   456,     7,   334,   335,   336,   122,   123,
+     124,   125,   126,   127,   348,   349,   350,   351,   352,   353,
+     354,   355,   130,   131,   220,   448,   450,   505,   506,   507,
+     509,   133,   134,   135,   185,   448,   450,   513,   514,   515,
+     516,   518,   519,   525,     7,   575,   576,   217,     7,   438,
+     439,   440,   117,   469,   471,   489,   287,     8,     8,     8,
+       8,   282,     3,     8,   294,   297,   299,   301,     4,     4,
+       4,     4,     4,   313,   315,   317,   319,     4,     4,     4,
+       4,     4,     4,     3,     8,     8,   290,     6,     3,   361,
+       6,     3,   399,     6,     3,   423,     6,     3,   389,     6,
+       3,     3,     6,   494,     3,     6,   457,     6,     3,   337,
+       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
+     508,   510,     3,     8,     4,   517,     4,   520,     3,     8,
+       8,   577,     3,     6,   185,   218,   219,   441,     6,     3,
+     472,     8,     6,     4,   280,     4,     4,     4,     4,   186,
+     188,   186,   188,   186,     4,     4,     4,     4,   186,   186,
+     186,   186,   188,   186,   292,   291,   289,   364,   360,   402,
+     398,   426,   422,   220,   231,   232,   233,   234,   235,   236,
+     237,   238,   243,   244,   245,   246,   247,   248,   251,   253,
+     255,   257,   259,   303,   356,   374,   376,   378,   380,   390,
+     391,   418,   448,   450,   463,   465,   467,   487,   388,   326,
+     105,   106,   220,   303,   392,   418,   448,   450,   463,   465,
+     467,   495,   496,   497,   498,   499,   501,   493,   460,   456,
+     340,   336,   186,   186,   186,   186,   186,   186,   349,     4,
+       4,   506,   188,     4,   186,     4,   514,   160,   162,   163,
+     220,   303,   448,   450,   578,   579,   580,   581,   583,   576,
+       6,     3,   444,   440,     4,   185,    35,    36,    37,    38,
+     295,   185,   185,   185,   185,   185,   185,   185,     8,     8,
+       8,     8,     3,     8,   500,     4,     8,     3,     8,     8,
+     185,   185,   185,   205,   584,     4,   582,     3,     8,   185,
+       8,   216,   391,     4,   188,   497,     4,   186,     4,   579,
+     185,     5,   185,     7,   585,   586,   587,     3,     6,   161,
+     164,   165,   166,   167,   588,   589,   590,   592,   593,   594,
+     595,   586,   591,     4,     4,     4,   596,     3,     8,     4,
+     188,   186,   186,     4,   589,   185,   185
   };
 
   const short
   Dhcp4Parser::yyr1_[] =
   {
-       0,   188,   190,   189,   191,   189,   192,   189,   193,   189,
-     194,   189,   195,   189,   196,   189,   197,   189,   198,   189,
-     199,   189,   200,   189,   201,   189,   202,   189,   203,   189,
-     204,   204,   204,   204,   204,   204,   204,   205,   207,   206,
-     208,   209,   209,   210,   210,   212,   211,   213,   213,   214,
-     214,   216,   215,   217,   217,   218,   218,   219,   221,   220,
-     222,   222,   223,   223,   223,   223,   223,   223,   225,   224,
-     227,   226,   228,   228,   229,   229,   229,   229,   229,   229,
-     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
-     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
-     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
-     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
-     229,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   240,   239,   241,   242,   243,   244,   245,   246,   248,
-     247,   249,   249,   249,   249,   249,   251,   250,   253,   252,
-     255,   254,   257,   256,   259,   258,   260,   260,   261,   261,
-     261,   261,   261,   261,   261,   263,   262,   265,   264,   267,
-     266,   268,   268,   270,   269,   271,   271,   272,   274,   273,
-     276,   275,   277,   277,   278,   280,   279,   282,   281,   284,
-     283,   285,   285,   286,   286,   288,   287,   289,   289,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     292,   291,   293,   293,   293,   293,   295,   294,   297,   296,
-     299,   298,   300,   302,   301,   303,   304,   305,   306,   307,
-     308,   309,   311,   310,   313,   312,   315,   314,   317,   316,
-     318,   319,   320,   322,   321,   323,   323,   324,   324,   324,
-     324,   324,   325,   326,   327,   328,   329,   331,   330,   332,
-     332,   333,   333,   335,   334,   337,   336,   338,   338,   338,
-     339,   339,   341,   340,   343,   342,   345,   344,   346,   346,
-     347,   347,   347,   347,   347,   347,   348,   349,   350,   351,
-     352,   353,   355,   354,   356,   356,   357,   357,   359,   358,
-     361,   360,   362,   362,   363,   363,   363,   363,   363,   363,
-     363,   363,   363,   363,   363,   363,   363,   363,   363,   363,
-     363,   363,   363,   363,   363,   363,   363,   363,   363,   363,
-     363,   363,   363,   363,   363,   363,   363,   363,   363,   363,
-     363,   365,   364,   367,   366,   369,   368,   371,   370,   373,
-     372,   375,   374,   377,   376,   379,   378,   380,   380,   380,
-     380,   381,   383,   382,   384,   384,   385,   385,   387,   386,
-     388,   388,   389,   389,   389,   389,   389,   389,   389,   389,
-     389,   389,   389,   389,   389,   389,   389,   389,   389,   389,
-     389,   389,   389,   389,   389,   389,   389,   389,   389,   389,
-     389,   389,   389,   389,   391,   390,   393,   392,   394,   394,
-     395,   395,   397,   396,   399,   398,   400,   400,   401,   401,
-     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
-     403,   404,   405,   407,   406,   409,   408,   411,   410,   412,
-     414,   413,   415,   417,   416,   418,   418,   419,   419,   421,
-     420,   423,   422,   424,   424,   425,   425,   426,   426,   426,
-     426,   426,   426,   426,   426,   426,   427,   429,   428,   430,
-     431,   432,   433,   435,   434,   436,   436,   437,   437,   439,
-     438,   441,   440,   442,   442,   443,   443,   443,   443,   443,
-     443,   443,   445,   444,   447,   446,   449,   448,   451,   450,
-     452,   452,   453,   453,   455,   454,   457,   456,   458,   458,
-     459,   459,   460,   460,   460,   460,   460,   460,   460,   460,
-     460,   460,   460,   460,   460,   460,   460,   462,   461,   464,
-     463,   466,   465,   468,   467,   470,   469,   472,   471,   474,
-     473,   476,   475,   478,   477,   480,   479,   482,   481,   484,
-     483,   486,   485,   487,   487,   489,   488,   490,   490,   492,
-     491,   493,   493,   494,   494,   495,   495,   495,   495,   495,
-     495,   495,   495,   495,   495,   495,   496,   498,   497,   499,
-     500,   502,   501,   503,   503,   504,   504,   504,   504,   504,
-     506,   505,   508,   507,   510,   509,   511,   511,   512,   512,
-     512,   512,   512,   512,   513,   515,   514,   516,   518,   517,
-     520,   519,   522,   521,   523,   523,   524,   524,   524,   524,
-     524,   524,   524,   524,   524,   524,   524,   524,   524,   524,
-     524,   524,   524,   524,   525,   527,   526,   528,   530,   529,
-     531,   532,   534,   533,   535,   535,   537,   536,   539,   538,
-     540,   541,   543,   542,   545,   544,   547,   546,   549,   548,
-     551,   550,   553,   552,   555,   554,   557,   556,   559,   558,
-     560,   560,   561,   561,   563,   562,   564,   566,   565,   568,
-     567,   569,   569,   570,   572,   571,   573,   573,   575,   574,
-     576,   576,   577,   577,   577,   577,   577,   577,   577,   578,
-     580,   579,   582,   581,   583,   583,   585,   584,   586,   586,
-     587,   587,   587,   587,   587,   589,   588,   590,   591,   592,
-     594,   593
+       0,   189,   191,   190,   192,   190,   193,   190,   194,   190,
+     195,   190,   196,   190,   197,   190,   198,   190,   199,   190,
+     200,   190,   201,   190,   202,   190,   203,   190,   204,   190,
+     205,   205,   205,   205,   205,   205,   205,   206,   208,   207,
+     209,   210,   210,   211,   211,   213,   212,   214,   214,   215,
+     215,   217,   216,   218,   218,   219,   219,   220,   222,   221,
+     223,   223,   224,   224,   224,   224,   224,   224,   226,   225,
+     228,   227,   229,   229,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   241,   240,   242,   243,   244,   245,   246,   247,
+     249,   248,   250,   250,   250,   250,   250,   252,   251,   254,
+     253,   256,   255,   258,   257,   259,   261,   260,   262,   262,
+     263,   263,   263,   263,   263,   263,   263,   265,   264,   267,
+     266,   269,   268,   270,   270,   272,   271,   273,   273,   274,
+     276,   275,   278,   277,   279,   279,   280,   282,   281,   284,
+     283,   286,   285,   287,   287,   288,   288,   290,   289,   291,
+     291,   292,   292,   292,   292,   292,   292,   292,   292,   292,
+     292,   292,   292,   292,   292,   292,   292,   292,   292,   292,
+     292,   292,   294,   293,   295,   295,   295,   295,   297,   296,
+     299,   298,   301,   300,   302,   304,   303,   305,   306,   307,
+     308,   309,   310,   311,   313,   312,   315,   314,   317,   316,
+     319,   318,   320,   321,   322,   324,   323,   325,   325,   326,
+     326,   326,   326,   326,   327,   328,   329,   330,   331,   333,
+     332,   334,   334,   335,   335,   337,   336,   339,   338,   340,
+     340,   340,   341,   341,   343,   342,   345,   344,   347,   346,
+     348,   348,   349,   349,   349,   349,   349,   349,   350,   351,
+     352,   353,   354,   355,   357,   356,   358,   358,   359,   359,
+     361,   360,   363,   362,   364,   364,   365,   365,   365,   365,
+     365,   365,   365,   365,   365,   365,   365,   365,   365,   365,
+     365,   365,   365,   365,   365,   365,   365,   365,   365,   365,
+     365,   365,   365,   365,   365,   365,   365,   365,   365,   365,
+     365,   365,   365,   365,   367,   366,   369,   368,   371,   370,
+     373,   372,   375,   374,   377,   376,   379,   378,   381,   380,
+     382,   382,   382,   382,   383,   385,   384,   386,   386,   387,
+     387,   389,   388,   390,   390,   391,   391,   391,   391,   391,
+     391,   391,   391,   391,   391,   391,   391,   391,   391,   391,
+     391,   391,   391,   391,   391,   391,   391,   391,   391,   391,
+     391,   391,   391,   391,   391,   391,   391,   391,   393,   392,
+     395,   394,   396,   396,   397,   397,   399,   398,   401,   400,
+     402,   402,   403,   403,   404,   404,   404,   404,   404,   404,
+     404,   404,   404,   404,   405,   406,   407,   409,   408,   411,
+     410,   413,   412,   414,   416,   415,   417,   419,   418,   420,
+     420,   421,   421,   423,   422,   425,   424,   426,   426,   427,
+     427,   428,   428,   428,   428,   428,   428,   428,   428,   428,
+     429,   431,   430,   432,   433,   434,   435,   437,   436,   438,
+     438,   439,   439,   441,   440,   443,   442,   444,   444,   445,
+     445,   445,   445,   445,   445,   445,   447,   446,   449,   448,
+     451,   450,   453,   452,   454,   454,   455,   455,   457,   456,
+     459,   458,   460,   460,   461,   461,   462,   462,   462,   462,
+     462,   462,   462,   462,   462,   462,   462,   462,   462,   462,
+     462,   464,   463,   466,   465,   468,   467,   470,   469,   472,
+     471,   474,   473,   476,   475,   478,   477,   480,   479,   482,
+     481,   484,   483,   486,   485,   488,   487,   489,   489,   491,
+     490,   492,   492,   494,   493,   495,   495,   496,   496,   497,
+     497,   497,   497,   497,   497,   497,   497,   497,   497,   497,
+     498,   500,   499,   501,   502,   504,   503,   505,   505,   506,
+     506,   506,   506,   506,   508,   507,   510,   509,   512,   511,
+     513,   513,   514,   514,   514,   514,   514,   514,   515,   517,
+     516,   518,   520,   519,   522,   521,   524,   523,   525,   525,
+     526,   526,   526,   526,   526,   526,   526,   526,   526,   526,
+     526,   526,   526,   526,   526,   526,   526,   526,   527,   529,
+     528,   530,   532,   531,   533,   534,   536,   535,   537,   537,
+     539,   538,   541,   540,   542,   543,   545,   544,   547,   546,
+     549,   548,   551,   550,   553,   552,   555,   554,   557,   556,
+     559,   558,   561,   560,   562,   562,   563,   563,   565,   564,
+     566,   568,   567,   570,   569,   571,   571,   572,   574,   573,
+     575,   575,   577,   576,   578,   578,   579,   579,   579,   579,
+     579,   579,   579,   580,   582,   581,   584,   583,   585,   585,
+     587,   586,   588,   588,   589,   589,   589,   589,   589,   591,
+     590,   592,   593,   594,   596,   595
   };
 
   const signed char
@@ -5046,68 +5055,68 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     0,     4,     3,     3,     3,     3,     3,     3,     0,
-       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     1,     1,     0,     4,     1,     1,     3,     0,     6,
-       0,     6,     1,     3,     1,     0,     4,     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,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     0,     4,     3,     3,     3,     3,     3,     3,
+       0,     4,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     3,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     1,     1,     0,     4,     1,     1,     3,
+       0,     6,     0,     6,     1,     3,     1,     0,     4,     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,
-       0,     4,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     3,     0,     4,     3,     3,     3,     3,     3,
-       3,     3,     0,     4,     0,     4,     0,     4,     0,     4,
-       3,     3,     3,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     3,     0,     4,     3,     3,     3,
+       3,     3,     3,     3,     0,     4,     0,     4,     0,     4,
+       0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     1,     1,     1,
-       1,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       1,     1,     1,     1,     3,     0,     6,     0,     1,     1,
+       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     6,     0,     4,     0,     1,
-       1,     3,     0,     4,     0,     4,     0,     1,     1,     3,
+       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,     0,     1,     1,     3,     1,     1,     1,     1,
        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,     0,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     6,     1,     1,     0,     6,     1,     3,     0,
-       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
-       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
-       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
+       4,     0,     4,     0,     4,     0,     6,     1,     1,     0,
+       6,     1,     3,     0,     4,     0,     1,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
-       3,     3,     0,     4,     1,     1,     0,     4,     0,     4,
-       3,     3,     0,     4,     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,     1,     0,     4,     3,     3,     3,
-       0,     4
+       1,     0,     4,     3,     3,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     3,     0,     4,     0,     6,     0,     4,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
+       0,     4,     0,     4,     3,     3,     0,     4,     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,     1,     0,
+       4,     3,     3,     3,     0,     4
   };
 
 
@@ -5138,10 +5147,11 @@ namespace isc { namespace dhcp {
   "\"t2-percent\"", "\"decline-probation-period\"", "\"server-tag\"",
   "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
   "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
-  "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"", "\"subnet4\"",
-  "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
+  "\"store-extended-info\"", "\"subnet4\"", "\"4o6-interface\"",
+  "\"4o6-interface-id\"", "\"4o6-subnet\"", "\"option-def\"",
+  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
+  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
   "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"",
   "\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"",
   "\"interface\"", "\"id\"", "\"reservation-mode\"", "\"disabled\"",
@@ -5188,19 +5198,19 @@ namespace isc { namespace dhcp {
   "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value",
   "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24",
   "hostname_char_set", "$@25", "hostname_char_replacement", "$@26",
-  "interfaces_config", "$@27", "interfaces_config_params",
-  "interfaces_config_param", "sub_interfaces4", "$@28", "interfaces_list",
-  "$@29", "dhcp_socket_type", "$@30", "socket_type", "outbound_interface",
-  "$@31", "outbound_interface_value", "re_detect", "lease_database",
-  "$@32", "sanity_checks", "$@33", "sanity_checks_params",
-  "sanity_checks_param", "lease_checks", "$@34", "hosts_database", "$@35",
-  "hosts_databases", "$@36", "database_list", "not_empty_database_list",
-  "database", "$@37", "database_map_params", "database_map_param",
-  "database_type", "$@38", "db_type", "user", "$@39", "password", "$@40",
-  "host", "$@41", "port", "name", "$@42", "persist", "lfc_interval",
-  "readonly", "connect_timeout", "request_timeout", "tcp_keepalive",
-  "tcp_nodelay", "contact_points", "$@43", "keyspace", "$@44",
-  "consistency", "$@45", "serial_consistency", "$@46",
+  "store_extended_info", "interfaces_config", "$@27",
+  "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
+  "$@28", "interfaces_list", "$@29", "dhcp_socket_type", "$@30",
+  "socket_type", "outbound_interface", "$@31", "outbound_interface_value",
+  "re_detect", "lease_database", "$@32", "sanity_checks", "$@33",
+  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@34",
+  "hosts_database", "$@35", "hosts_databases", "$@36", "database_list",
+  "not_empty_database_list", "database", "$@37", "database_map_params",
+  "database_map_param", "database_type", "$@38", "db_type", "user", "$@39",
+  "password", "$@40", "host", "$@41", "port", "name", "$@42", "persist",
+  "lfc_interval", "readonly", "connect_timeout", "request_timeout",
+  "tcp_keepalive", "tcp_nodelay", "contact_points", "$@43", "keyspace",
+  "$@44", "consistency", "$@45", "serial_consistency", "$@46",
   "max_reconnect_tries", "reconnect_wait_time", "max_row_errors",
   "host_reservation_identifiers", "$@47",
   "host_reservation_identifiers_list", "host_reservation_identifier",
@@ -5276,80 +5286,80 @@ namespace isc { namespace dhcp {
   const short
   Dhcp4Parser::yyrline_[] =
   {
-       0,   275,   275,   275,   276,   276,   277,   277,   278,   278,
-     279,   279,   280,   280,   281,   281,   282,   282,   283,   283,
-     284,   284,   285,   285,   286,   286,   287,   287,   288,   288,
-     296,   297,   298,   299,   300,   301,   302,   305,   310,   310,
-     321,   324,   325,   328,   332,   339,   339,   346,   347,   350,
-     354,   361,   361,   368,   369,   372,   376,   387,   397,   397,
-     413,   414,   418,   419,   420,   421,   422,   423,   426,   426,
-     441,   441,   450,   451,   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,
-     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
-     492,   493,   494,   495,   496,   497,   498,   499,   500,   501,
-     502,   503,   506,   511,   516,   521,   526,   531,   536,   541,
-     546,   551,   551,   559,   564,   569,   574,   579,   584,   589,
-     589,   597,   600,   603,   606,   609,   615,   615,   623,   623,
-     631,   631,   639,   639,   647,   647,   658,   659,   662,   663,
-     664,   665,   666,   667,   668,   671,   671,   680,   680,   690,
-     690,   697,   698,   701,   701,   708,   710,   714,   720,   720,
-     732,   732,   742,   743,   745,   747,   747,   765,   765,   777,
-     777,   787,   788,   791,   792,   795,   795,   805,   806,   809,
-     810,   811,   812,   813,   814,   815,   816,   817,   818,   819,
-     820,   821,   822,   823,   824,   825,   826,   827,   828,   829,
-     832,   832,   839,   840,   841,   842,   845,   845,   853,   853,
-     861,   861,   869,   874,   874,   882,   887,   892,   897,   902,
-     907,   912,   917,   917,   925,   925,   933,   933,   941,   941,
-     949,   954,   959,   965,   965,   975,   976,   979,   980,   981,
-     982,   983,   986,   991,   996,  1001,  1006,  1011,  1011,  1021,
-    1022,  1025,  1026,  1029,  1029,  1039,  1039,  1049,  1050,  1051,
-    1054,  1055,  1058,  1058,  1066,  1066,  1074,  1074,  1085,  1086,
-    1089,  1090,  1091,  1092,  1093,  1094,  1097,  1102,  1107,  1112,
-    1117,  1122,  1130,  1130,  1143,  1144,  1147,  1148,  1155,  1155,
-    1181,  1181,  1192,  1193,  1197,  1198,  1199,  1200,  1201,  1202,
-    1203,  1204,  1205,  1206,  1207,  1208,  1209,  1210,  1211,  1212,
-    1213,  1214,  1215,  1216,  1217,  1218,  1219,  1220,  1221,  1222,
-    1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,  1231,  1232,
-    1233,  1236,  1236,  1244,  1244,  1252,  1252,  1260,  1260,  1268,
-    1268,  1276,  1276,  1284,  1284,  1294,  1294,  1301,  1302,  1303,
-    1304,  1307,  1314,  1314,  1325,  1326,  1330,  1331,  1334,  1334,
-    1342,  1343,  1346,  1347,  1348,  1349,  1350,  1351,  1352,  1353,
-    1354,  1355,  1356,  1357,  1358,  1359,  1360,  1361,  1362,  1363,
-    1364,  1365,  1366,  1367,  1368,  1369,  1370,  1371,  1372,  1373,
-    1374,  1375,  1376,  1377,  1384,  1384,  1397,  1397,  1406,  1407,
-    1410,  1411,  1416,  1416,  1431,  1431,  1445,  1446,  1449,  1450,
-    1453,  1454,  1455,  1456,  1457,  1458,  1459,  1460,  1461,  1462,
-    1465,  1467,  1472,  1474,  1474,  1482,  1482,  1490,  1490,  1498,
-    1500,  1500,  1508,  1517,  1517,  1529,  1530,  1535,  1536,  1541,
-    1541,  1553,  1553,  1565,  1566,  1571,  1572,  1577,  1578,  1579,
-    1580,  1581,  1582,  1583,  1584,  1585,  1588,  1590,  1590,  1598,
-    1600,  1602,  1607,  1615,  1615,  1627,  1628,  1631,  1632,  1635,
-    1635,  1645,  1645,  1655,  1656,  1659,  1660,  1661,  1662,  1663,
-    1664,  1665,  1668,  1668,  1676,  1676,  1701,  1701,  1731,  1731,
-    1741,  1742,  1745,  1746,  1749,  1749,  1758,  1758,  1767,  1768,
-    1771,  1772,  1776,  1777,  1778,  1779,  1780,  1781,  1782,  1783,
-    1784,  1785,  1786,  1787,  1788,  1789,  1790,  1793,  1793,  1801,
-    1801,  1809,  1809,  1817,  1817,  1825,  1825,  1835,  1835,  1843,
-    1843,  1851,  1851,  1859,  1859,  1867,  1867,  1875,  1875,  1883,
-    1883,  1896,  1896,  1906,  1907,  1913,  1913,  1923,  1924,  1927,
-    1927,  1937,  1938,  1941,  1942,  1945,  1946,  1947,  1948,  1949,
-    1950,  1951,  1952,  1953,  1954,  1955,  1958,  1960,  1960,  1968,
-    1977,  1984,  1984,  1994,  1995,  1998,  1999,  2000,  2001,  2002,
-    2005,  2005,  2013,  2013,  2024,  2024,  2036,  2037,  2040,  2041,
-    2042,  2043,  2044,  2045,  2048,  2053,  2053,  2061,  2066,  2066,
-    2075,  2075,  2087,  2087,  2097,  2098,  2101,  2102,  2103,  2104,
-    2105,  2106,  2107,  2108,  2109,  2110,  2111,  2112,  2113,  2114,
-    2115,  2116,  2117,  2118,  2121,  2126,  2126,  2134,  2139,  2139,
-    2147,  2152,  2157,  2157,  2165,  2166,  2169,  2169,  2178,  2178,
-    2187,  2193,  2199,  2199,  2207,  2207,  2216,  2216,  2225,  2225,
-    2236,  2236,  2243,  2243,  2250,  2250,  2257,  2257,  2268,  2268,
-    2278,  2279,  2283,  2284,  2287,  2287,  2297,  2307,  2307,  2317,
-    2317,  2328,  2329,  2333,  2337,  2337,  2349,  2350,  2354,  2354,
-    2362,  2363,  2366,  2367,  2368,  2369,  2370,  2371,  2372,  2375,
-    2380,  2380,  2388,  2388,  2398,  2399,  2402,  2402,  2410,  2411,
-    2414,  2415,  2416,  2417,  2418,  2421,  2421,  2429,  2434,  2439,
-    2444,  2444
+       0,   276,   276,   276,   277,   277,   278,   278,   279,   279,
+     280,   280,   281,   281,   282,   282,   283,   283,   284,   284,
+     285,   285,   286,   286,   287,   287,   288,   288,   289,   289,
+     297,   298,   299,   300,   301,   302,   303,   306,   311,   311,
+     322,   325,   326,   329,   333,   340,   340,   347,   348,   351,
+     355,   362,   362,   369,   370,   373,   377,   388,   398,   398,
+     414,   415,   419,   420,   421,   422,   423,   424,   427,   427,
+     442,   442,   451,   452,   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,   482,
+     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
+     493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
+     503,   504,   505,   508,   513,   518,   523,   528,   533,   538,
+     543,   548,   553,   553,   561,   566,   571,   576,   581,   586,
+     591,   591,   599,   602,   605,   608,   611,   617,   617,   625,
+     625,   633,   633,   641,   641,   649,   654,   654,   665,   666,
+     669,   670,   671,   672,   673,   674,   675,   678,   678,   687,
+     687,   697,   697,   704,   705,   708,   708,   715,   717,   721,
+     727,   727,   739,   739,   749,   750,   752,   754,   754,   772,
+     772,   784,   784,   794,   795,   798,   799,   802,   802,   812,
+     813,   816,   817,   818,   819,   820,   821,   822,   823,   824,
+     825,   826,   827,   828,   829,   830,   831,   832,   833,   834,
+     835,   836,   839,   839,   846,   847,   848,   849,   852,   852,
+     860,   860,   868,   868,   876,   881,   881,   889,   894,   899,
+     904,   909,   914,   919,   924,   924,   932,   932,   940,   940,
+     948,   948,   956,   961,   966,   972,   972,   982,   983,   986,
+     987,   988,   989,   990,   993,   998,  1003,  1008,  1013,  1018,
+    1018,  1028,  1029,  1032,  1033,  1036,  1036,  1046,  1046,  1056,
+    1057,  1058,  1061,  1062,  1065,  1065,  1073,  1073,  1081,  1081,
+    1092,  1093,  1096,  1097,  1098,  1099,  1100,  1101,  1104,  1109,
+    1114,  1119,  1124,  1129,  1137,  1137,  1150,  1151,  1154,  1155,
+    1162,  1162,  1188,  1188,  1199,  1200,  1204,  1205,  1206,  1207,
+    1208,  1209,  1210,  1211,  1212,  1213,  1214,  1215,  1216,  1217,
+    1218,  1219,  1220,  1221,  1222,  1223,  1224,  1225,  1226,  1227,
+    1228,  1229,  1230,  1231,  1232,  1233,  1234,  1235,  1236,  1237,
+    1238,  1239,  1240,  1241,  1244,  1244,  1252,  1252,  1260,  1260,
+    1268,  1268,  1276,  1276,  1284,  1284,  1292,  1292,  1302,  1302,
+    1309,  1310,  1311,  1312,  1315,  1322,  1322,  1333,  1334,  1338,
+    1339,  1342,  1342,  1350,  1351,  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,  1393,  1393,
+    1406,  1406,  1415,  1416,  1419,  1420,  1425,  1425,  1440,  1440,
+    1454,  1455,  1458,  1459,  1462,  1463,  1464,  1465,  1466,  1467,
+    1468,  1469,  1470,  1471,  1474,  1476,  1481,  1483,  1483,  1491,
+    1491,  1499,  1499,  1507,  1509,  1509,  1517,  1526,  1526,  1538,
+    1539,  1544,  1545,  1550,  1550,  1562,  1562,  1574,  1575,  1580,
+    1581,  1586,  1587,  1588,  1589,  1590,  1591,  1592,  1593,  1594,
+    1597,  1599,  1599,  1607,  1609,  1611,  1616,  1624,  1624,  1636,
+    1637,  1640,  1641,  1644,  1644,  1654,  1654,  1664,  1665,  1668,
+    1669,  1670,  1671,  1672,  1673,  1674,  1677,  1677,  1685,  1685,
+    1710,  1710,  1740,  1740,  1750,  1751,  1754,  1755,  1758,  1758,
+    1767,  1767,  1776,  1777,  1780,  1781,  1785,  1786,  1787,  1788,
+    1789,  1790,  1791,  1792,  1793,  1794,  1795,  1796,  1797,  1798,
+    1799,  1802,  1802,  1810,  1810,  1818,  1818,  1826,  1826,  1834,
+    1834,  1844,  1844,  1852,  1852,  1860,  1860,  1868,  1868,  1876,
+    1876,  1884,  1884,  1892,  1892,  1905,  1905,  1915,  1916,  1922,
+    1922,  1932,  1933,  1936,  1936,  1946,  1947,  1950,  1951,  1954,
+    1955,  1956,  1957,  1958,  1959,  1960,  1961,  1962,  1963,  1964,
+    1967,  1969,  1969,  1977,  1986,  1993,  1993,  2003,  2004,  2007,
+    2008,  2009,  2010,  2011,  2014,  2014,  2022,  2022,  2033,  2033,
+    2045,  2046,  2049,  2050,  2051,  2052,  2053,  2054,  2057,  2062,
+    2062,  2070,  2075,  2075,  2084,  2084,  2096,  2096,  2106,  2107,
+    2110,  2111,  2112,  2113,  2114,  2115,  2116,  2117,  2118,  2119,
+    2120,  2121,  2122,  2123,  2124,  2125,  2126,  2127,  2130,  2135,
+    2135,  2143,  2148,  2148,  2156,  2161,  2166,  2166,  2174,  2175,
+    2178,  2178,  2187,  2187,  2196,  2202,  2208,  2208,  2216,  2216,
+    2225,  2225,  2234,  2234,  2245,  2245,  2252,  2252,  2259,  2259,
+    2266,  2266,  2277,  2277,  2287,  2288,  2292,  2293,  2296,  2296,
+    2306,  2316,  2316,  2326,  2326,  2337,  2338,  2342,  2346,  2346,
+    2358,  2359,  2363,  2363,  2371,  2372,  2375,  2376,  2377,  2378,
+    2379,  2380,  2381,  2384,  2389,  2389,  2397,  2397,  2407,  2408,
+    2411,  2411,  2419,  2420,  2423,  2424,  2425,  2426,  2427,  2430,
+    2430,  2438,  2443,  2448,  2453,  2453
   };
 
   // Print the state stack on the debug stream.
@@ -5384,9 +5394,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5388 "dhcp4_parser.cc"
+#line 5398 "dhcp4_parser.cc"
 
-#line 2453 "dhcp4_parser.yy"
+#line 2462 "dhcp4_parser.yy"
 
 
 void
index 52c9abee7d392eebdf31fff1c5be556094c7b8b3..e0c3b12be84df6059721cd1eb8db9e4c0f1247e4 100644 (file)
@@ -542,121 +542,122 @@ namespace isc { namespace dhcp {
         TOKEN_DDNS_REPLACE_CLIENT_NAME = 325,
         TOKEN_DDNS_GENERATED_PREFIX = 326,
         TOKEN_DDNS_QUALIFYING_SUFFIX = 327,
-        TOKEN_SUBNET4 = 328,
-        TOKEN_SUBNET_4O6_INTERFACE = 329,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 330,
-        TOKEN_SUBNET_4O6_SUBNET = 331,
-        TOKEN_OPTION_DEF = 332,
-        TOKEN_OPTION_DATA = 333,
-        TOKEN_NAME = 334,
-        TOKEN_DATA = 335,
-        TOKEN_CODE = 336,
-        TOKEN_SPACE = 337,
-        TOKEN_CSV_FORMAT = 338,
-        TOKEN_ALWAYS_SEND = 339,
-        TOKEN_RECORD_TYPES = 340,
-        TOKEN_ENCAPSULATE = 341,
-        TOKEN_ARRAY = 342,
-        TOKEN_SHARED_NETWORKS = 343,
-        TOKEN_POOLS = 344,
-        TOKEN_POOL = 345,
-        TOKEN_USER_CONTEXT = 346,
-        TOKEN_COMMENT = 347,
-        TOKEN_SUBNET = 348,
-        TOKEN_INTERFACE = 349,
-        TOKEN_ID = 350,
-        TOKEN_RESERVATION_MODE = 351,
-        TOKEN_DISABLED = 352,
-        TOKEN_OUT_OF_POOL = 353,
-        TOKEN_GLOBAL = 354,
-        TOKEN_ALL = 355,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 356,
-        TOKEN_CLIENT_CLASSES = 357,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 358,
-        TOKEN_TEST = 359,
-        TOKEN_ONLY_IF_REQUIRED = 360,
-        TOKEN_CLIENT_CLASS = 361,
-        TOKEN_RESERVATIONS = 362,
-        TOKEN_DUID = 363,
-        TOKEN_HW_ADDRESS = 364,
-        TOKEN_CIRCUIT_ID = 365,
-        TOKEN_CLIENT_ID = 366,
-        TOKEN_HOSTNAME = 367,
-        TOKEN_FLEX_ID = 368,
-        TOKEN_RELAY = 369,
-        TOKEN_IP_ADDRESS = 370,
-        TOKEN_IP_ADDRESSES = 371,
-        TOKEN_HOOKS_LIBRARIES = 372,
-        TOKEN_LIBRARY = 373,
-        TOKEN_PARAMETERS = 374,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 375,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 376,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 377,
-        TOKEN_HOLD_RECLAIMED_TIME = 378,
-        TOKEN_MAX_RECLAIM_LEASES = 379,
-        TOKEN_MAX_RECLAIM_TIME = 380,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 381,
-        TOKEN_DHCP4O6_PORT = 382,
-        TOKEN_CONTROL_SOCKET = 383,
-        TOKEN_SOCKET_TYPE = 384,
-        TOKEN_SOCKET_NAME = 385,
-        TOKEN_DHCP_QUEUE_CONTROL = 386,
-        TOKEN_ENABLE_QUEUE = 387,
-        TOKEN_QUEUE_TYPE = 388,
-        TOKEN_CAPACITY = 389,
-        TOKEN_DHCP_DDNS = 390,
-        TOKEN_ENABLE_UPDATES = 391,
-        TOKEN_QUALIFYING_SUFFIX = 392,
-        TOKEN_SERVER_IP = 393,
-        TOKEN_SERVER_PORT = 394,
-        TOKEN_SENDER_IP = 395,
-        TOKEN_SENDER_PORT = 396,
-        TOKEN_MAX_QUEUE_SIZE = 397,
-        TOKEN_NCR_PROTOCOL = 398,
-        TOKEN_NCR_FORMAT = 399,
-        TOKEN_OVERRIDE_NO_UPDATE = 400,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 401,
-        TOKEN_REPLACE_CLIENT_NAME = 402,
-        TOKEN_GENERATED_PREFIX = 403,
-        TOKEN_TCP = 404,
-        TOKEN_JSON = 405,
-        TOKEN_WHEN_PRESENT = 406,
-        TOKEN_NEVER = 407,
-        TOKEN_ALWAYS = 408,
-        TOKEN_WHEN_NOT_PRESENT = 409,
-        TOKEN_HOSTNAME_CHAR_SET = 410,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 411,
-        TOKEN_LOGGING = 412,
-        TOKEN_LOGGERS = 413,
-        TOKEN_OUTPUT_OPTIONS = 414,
-        TOKEN_OUTPUT = 415,
-        TOKEN_DEBUGLEVEL = 416,
-        TOKEN_SEVERITY = 417,
-        TOKEN_FLUSH = 418,
-        TOKEN_MAXSIZE = 419,
-        TOKEN_MAXVER = 420,
-        TOKEN_PATTERN = 421,
-        TOKEN_DHCP6 = 422,
-        TOKEN_DHCPDDNS = 423,
-        TOKEN_CONTROL_AGENT = 424,
-        TOKEN_TOPLEVEL_JSON = 425,
-        TOKEN_TOPLEVEL_DHCP4 = 426,
-        TOKEN_SUB_DHCP4 = 427,
-        TOKEN_SUB_INTERFACES4 = 428,
-        TOKEN_SUB_SUBNET4 = 429,
-        TOKEN_SUB_POOL4 = 430,
-        TOKEN_SUB_RESERVATION = 431,
-        TOKEN_SUB_OPTION_DEFS = 432,
-        TOKEN_SUB_OPTION_DEF = 433,
-        TOKEN_SUB_OPTION_DATA = 434,
-        TOKEN_SUB_HOOKS_LIBRARY = 435,
-        TOKEN_SUB_DHCP_DDNS = 436,
-        TOKEN_SUB_LOGGING = 437,
-        TOKEN_SUB_CONFIG_CONTROL = 438,
-        TOKEN_STRING = 439,
-        TOKEN_INTEGER = 440,
-        TOKEN_FLOAT = 441,
-        TOKEN_BOOLEAN = 442
+        TOKEN_STORE_EXTENDED_INFO = 328,
+        TOKEN_SUBNET4 = 329,
+        TOKEN_SUBNET_4O6_INTERFACE = 330,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 331,
+        TOKEN_SUBNET_4O6_SUBNET = 332,
+        TOKEN_OPTION_DEF = 333,
+        TOKEN_OPTION_DATA = 334,
+        TOKEN_NAME = 335,
+        TOKEN_DATA = 336,
+        TOKEN_CODE = 337,
+        TOKEN_SPACE = 338,
+        TOKEN_CSV_FORMAT = 339,
+        TOKEN_ALWAYS_SEND = 340,
+        TOKEN_RECORD_TYPES = 341,
+        TOKEN_ENCAPSULATE = 342,
+        TOKEN_ARRAY = 343,
+        TOKEN_SHARED_NETWORKS = 344,
+        TOKEN_POOLS = 345,
+        TOKEN_POOL = 346,
+        TOKEN_USER_CONTEXT = 347,
+        TOKEN_COMMENT = 348,
+        TOKEN_SUBNET = 349,
+        TOKEN_INTERFACE = 350,
+        TOKEN_ID = 351,
+        TOKEN_RESERVATION_MODE = 352,
+        TOKEN_DISABLED = 353,
+        TOKEN_OUT_OF_POOL = 354,
+        TOKEN_GLOBAL = 355,
+        TOKEN_ALL = 356,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 357,
+        TOKEN_CLIENT_CLASSES = 358,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 359,
+        TOKEN_TEST = 360,
+        TOKEN_ONLY_IF_REQUIRED = 361,
+        TOKEN_CLIENT_CLASS = 362,
+        TOKEN_RESERVATIONS = 363,
+        TOKEN_DUID = 364,
+        TOKEN_HW_ADDRESS = 365,
+        TOKEN_CIRCUIT_ID = 366,
+        TOKEN_CLIENT_ID = 367,
+        TOKEN_HOSTNAME = 368,
+        TOKEN_FLEX_ID = 369,
+        TOKEN_RELAY = 370,
+        TOKEN_IP_ADDRESS = 371,
+        TOKEN_IP_ADDRESSES = 372,
+        TOKEN_HOOKS_LIBRARIES = 373,
+        TOKEN_LIBRARY = 374,
+        TOKEN_PARAMETERS = 375,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 376,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 377,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 378,
+        TOKEN_HOLD_RECLAIMED_TIME = 379,
+        TOKEN_MAX_RECLAIM_LEASES = 380,
+        TOKEN_MAX_RECLAIM_TIME = 381,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 382,
+        TOKEN_DHCP4O6_PORT = 383,
+        TOKEN_CONTROL_SOCKET = 384,
+        TOKEN_SOCKET_TYPE = 385,
+        TOKEN_SOCKET_NAME = 386,
+        TOKEN_DHCP_QUEUE_CONTROL = 387,
+        TOKEN_ENABLE_QUEUE = 388,
+        TOKEN_QUEUE_TYPE = 389,
+        TOKEN_CAPACITY = 390,
+        TOKEN_DHCP_DDNS = 391,
+        TOKEN_ENABLE_UPDATES = 392,
+        TOKEN_QUALIFYING_SUFFIX = 393,
+        TOKEN_SERVER_IP = 394,
+        TOKEN_SERVER_PORT = 395,
+        TOKEN_SENDER_IP = 396,
+        TOKEN_SENDER_PORT = 397,
+        TOKEN_MAX_QUEUE_SIZE = 398,
+        TOKEN_NCR_PROTOCOL = 399,
+        TOKEN_NCR_FORMAT = 400,
+        TOKEN_OVERRIDE_NO_UPDATE = 401,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 402,
+        TOKEN_REPLACE_CLIENT_NAME = 403,
+        TOKEN_GENERATED_PREFIX = 404,
+        TOKEN_TCP = 405,
+        TOKEN_JSON = 406,
+        TOKEN_WHEN_PRESENT = 407,
+        TOKEN_NEVER = 408,
+        TOKEN_ALWAYS = 409,
+        TOKEN_WHEN_NOT_PRESENT = 410,
+        TOKEN_HOSTNAME_CHAR_SET = 411,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 412,
+        TOKEN_LOGGING = 413,
+        TOKEN_LOGGERS = 414,
+        TOKEN_OUTPUT_OPTIONS = 415,
+        TOKEN_OUTPUT = 416,
+        TOKEN_DEBUGLEVEL = 417,
+        TOKEN_SEVERITY = 418,
+        TOKEN_FLUSH = 419,
+        TOKEN_MAXSIZE = 420,
+        TOKEN_MAXVER = 421,
+        TOKEN_PATTERN = 422,
+        TOKEN_DHCP6 = 423,
+        TOKEN_DHCPDDNS = 424,
+        TOKEN_CONTROL_AGENT = 425,
+        TOKEN_TOPLEVEL_JSON = 426,
+        TOKEN_TOPLEVEL_DHCP4 = 427,
+        TOKEN_SUB_DHCP4 = 428,
+        TOKEN_SUB_INTERFACES4 = 429,
+        TOKEN_SUB_SUBNET4 = 430,
+        TOKEN_SUB_POOL4 = 431,
+        TOKEN_SUB_RESERVATION = 432,
+        TOKEN_SUB_OPTION_DEFS = 433,
+        TOKEN_SUB_OPTION_DEF = 434,
+        TOKEN_SUB_OPTION_DATA = 435,
+        TOKEN_SUB_HOOKS_LIBRARY = 436,
+        TOKEN_SUB_DHCP_DDNS = 437,
+        TOKEN_SUB_LOGGING = 438,
+        TOKEN_SUB_CONFIG_CONTROL = 439,
+        TOKEN_STRING = 440,
+        TOKEN_INTEGER = 441,
+        TOKEN_FLOAT = 442,
+        TOKEN_BOOLEAN = 443
       };
     };
 
@@ -798,30 +799,30 @@ namespace isc { namespace dhcp {
         // Type destructor.
 switch (yytype)
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -901,13 +902,13 @@ switch (yytype)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -2064,6 +2065,21 @@ switch (yytype)
         return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_STORE_EXTENDED_INFO (location_type l)
+      {
+        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_STORE_EXTENDED_INFO (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -4095,10 +4111,10 @@ switch (yytype)
     enum
     {
       yyeof_ = 0,
-      yylast_ = 1160,     ///< Last index in yytable_.
-      yynnts_ = 407,  ///< Number of nonterminal symbols.
+      yylast_ = 1167,     ///< Last index in yytable_.
+      yynnts_ = 408,  ///< Number of nonterminal symbols.
       yyfinal_ = 30, ///< Termination state number.
-      yyntokens_ = 188  ///< Number of tokens.
+      yyntokens_ = 189  ///< Number of tokens.
     };
 
 
@@ -4160,9 +4176,9 @@ switch (yytype)
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187
+     185,   186,   187,   188
     };
-    const int user_token_number_max_ = 442;
+    const int user_token_number_max_ = 443;
 
     if (t <= 0)
       return yyeof_;
@@ -4182,30 +4198,30 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -4224,30 +4240,30 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -4273,30 +4289,30 @@ switch (yytype)
     super_type::move (s);
     switch (this->type_get ())
     {
-      case 204: // value
-      case 208: // map_value
-      case 249: // ddns_replace_client_name_value
-      case 268: // socket_type
-      case 271: // outbound_interface_value
-      case 293: // db_type
-      case 380: // hr_mode
-      case 535: // ncr_protocol_value
+      case 205: // value
+      case 209: // map_value
+      case 250: // ddns_replace_client_name_value
+      case 270: // socket_type
+      case 273: // outbound_interface_value
+      case 295: // db_type
+      case 382: // hr_mode
+      case 537: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 187: // "boolean"
+      case 188: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 186: // "floating point"
+      case 187: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 185: // "integer"
+      case 186: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 184: // "constant string"
+      case 185: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -4356,7 +4372,7 @@ switch (yytype)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 4360 "dhcp4_parser.h"
+#line 4376 "dhcp4_parser.h"
 
 
 
index f4d5c4368608b481620ea3d4a604f5b6cd5d93a5..497a197bb554e1a80a0f5f1c81376a2d6c2fdc89 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202003301426
+// Generated 202004021911
 // A Bison parser, made by GNU Bison 3.5.3.
 
 // Locations for Bison parsers in C++
index 20044db1130412fca296ee23e1c1e2713bc2ed2b..eade9cabbb08d3e023a935dd8d2f3a8a7f6b0ff3 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202003301426
+// Generated 202004021911
 // A Bison parser, made by GNU Bison 3.5.3.
 
 // Starting with Bison 3.2, this file is useless: the structure it
index c001a0982b51c4f79df4290b28660bb51c91f2c2..3ecdc24aeda3c7075bd6b090044ce4ff6db8e5fa 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202003301426
+// Generated 202004021911
 // A Bison parser, made by GNU Bison 3.5.3.
 
 // Starting with Bison 3.2, this file is useless: the structure it
index 6c0007a85ebbb8fd988ff928f5511f50da708c64..4bc28def80ac378126a1432b93b50504307b1de6 100644 (file)
@@ -249,29 +249,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -290,29 +290,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -331,29 +331,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -371,29 +371,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -436,68 +436,68 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 192: // "constant string"
-#line 271 "dhcp6_parser.yy"
+      case 193: // "constant string"
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 443 "dhcp6_parser.cc"
         break;
 
-      case 193: // "integer"
-#line 271 "dhcp6_parser.yy"
+      case 194: // "integer"
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 449 "dhcp6_parser.cc"
         break;
 
-      case 194: // "floating point"
-#line 271 "dhcp6_parser.yy"
+      case 195: // "floating point"
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 455 "dhcp6_parser.cc"
         break;
 
-      case 195: // "boolean"
-#line 271 "dhcp6_parser.yy"
+      case 196: // "boolean"
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 461 "dhcp6_parser.cc"
         break;
 
-      case 213: // value
-#line 271 "dhcp6_parser.yy"
+      case 214: // value
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 467 "dhcp6_parser.cc"
         break;
 
-      case 217: // map_value
-#line 271 "dhcp6_parser.yy"
+      case 218: // map_value
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 473 "dhcp6_parser.cc"
         break;
 
-      case 258: // ddns_replace_client_name_value
-#line 271 "dhcp6_parser.yy"
+      case 259: // ddns_replace_client_name_value
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 479 "dhcp6_parser.cc"
         break;
 
-      case 292: // db_type
-#line 271 "dhcp6_parser.yy"
+      case 294: // db_type
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 485 "dhcp6_parser.cc"
         break;
 
-      case 386: // hr_mode
-#line 271 "dhcp6_parser.yy"
+      case 388: // hr_mode
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 491 "dhcp6_parser.cc"
         break;
 
-      case 522: // duid_type
-#line 271 "dhcp6_parser.yy"
+      case 524: // duid_type
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 497 "dhcp6_parser.cc"
         break;
 
-      case 565: // ncr_protocol_value
-#line 271 "dhcp6_parser.yy"
+      case 567: // ncr_protocol_value
+#line 272 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 503 "dhcp6_parser.cc"
         break;
@@ -717,29 +717,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -764,139 +764,139 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 280 "dhcp6_parser.yy"
+#line 281 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 770 "dhcp6_parser.cc"
     break;
 
   case 4:
-#line 281 "dhcp6_parser.yy"
+#line 282 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 776 "dhcp6_parser.cc"
     break;
 
   case 6:
-#line 282 "dhcp6_parser.yy"
+#line 283 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.DHCP6; }
 #line 782 "dhcp6_parser.cc"
     break;
 
   case 8:
-#line 283 "dhcp6_parser.yy"
+#line 284 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 788 "dhcp6_parser.cc"
     break;
 
   case 10:
-#line 284 "dhcp6_parser.yy"
+#line 285 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET6; }
 #line 794 "dhcp6_parser.cc"
     break;
 
   case 12:
-#line 285 "dhcp6_parser.yy"
+#line 286 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 800 "dhcp6_parser.cc"
     break;
 
   case 14:
-#line 286 "dhcp6_parser.yy"
+#line 287 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.PD_POOLS; }
 #line 806 "dhcp6_parser.cc"
     break;
 
   case 16:
-#line 287 "dhcp6_parser.yy"
+#line 288 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 812 "dhcp6_parser.cc"
     break;
 
   case 18:
-#line 288 "dhcp6_parser.yy"
+#line 289 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.DHCP6; }
 #line 818 "dhcp6_parser.cc"
     break;
 
   case 20:
-#line 289 "dhcp6_parser.yy"
+#line 290 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 824 "dhcp6_parser.cc"
     break;
 
   case 22:
-#line 290 "dhcp6_parser.yy"
+#line 291 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 830 "dhcp6_parser.cc"
     break;
 
   case 24:
-#line 291 "dhcp6_parser.yy"
+#line 292 "dhcp6_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 836 "dhcp6_parser.cc"
     break;
 
   case 26:
-#line 292 "dhcp6_parser.yy"
+#line 293 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 842 "dhcp6_parser.cc"
     break;
 
   case 28:
-#line 293 "dhcp6_parser.yy"
+#line 294 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.LOGGING; }
 #line 848 "dhcp6_parser.cc"
     break;
 
   case 30:
-#line 294 "dhcp6_parser.yy"
+#line 295 "dhcp6_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 854 "dhcp6_parser.cc"
     break;
 
   case 32:
-#line 302 "dhcp6_parser.yy"
+#line 303 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 860 "dhcp6_parser.cc"
     break;
 
   case 33:
-#line 303 "dhcp6_parser.yy"
+#line 304 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 866 "dhcp6_parser.cc"
     break;
 
   case 34:
-#line 304 "dhcp6_parser.yy"
+#line 305 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 872 "dhcp6_parser.cc"
     break;
 
   case 35:
-#line 305 "dhcp6_parser.yy"
+#line 306 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 878 "dhcp6_parser.cc"
     break;
 
   case 36:
-#line 306 "dhcp6_parser.yy"
+#line 307 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 884 "dhcp6_parser.cc"
     break;
 
   case 37:
-#line 307 "dhcp6_parser.yy"
+#line 308 "dhcp6_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 890 "dhcp6_parser.cc"
     break;
 
   case 38:
-#line 308 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 896 "dhcp6_parser.cc"
     break;
 
   case 39:
-#line 311 "dhcp6_parser.yy"
+#line 312 "dhcp6_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -905,7 +905,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 316 "dhcp6_parser.yy"
+#line 317 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -916,7 +916,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 321 "dhcp6_parser.yy"
+#line 322 "dhcp6_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -926,13 +926,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 327 "dhcp6_parser.yy"
+#line 328 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 932 "dhcp6_parser.cc"
     break;
 
   case 45:
-#line 334 "dhcp6_parser.yy"
+#line 335 "dhcp6_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -941,7 +941,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 338 "dhcp6_parser.yy"
+#line 339 "dhcp6_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 345 "dhcp6_parser.yy"
+#line 346 "dhcp6_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -960,7 +960,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 348 "dhcp6_parser.yy"
+#line 349 "dhcp6_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -968,7 +968,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 356 "dhcp6_parser.yy"
+#line 357 "dhcp6_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -977,7 +977,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 360 "dhcp6_parser.yy"
+#line 361 "dhcp6_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -986,7 +986,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 367 "dhcp6_parser.yy"
+#line 368 "dhcp6_parser.yy"
                               {
     // List parsing about to start
 }
@@ -994,7 +994,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 369 "dhcp6_parser.yy"
+#line 370 "dhcp6_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -1003,7 +1003,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 378 "dhcp6_parser.yy"
+#line 379 "dhcp6_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1012,7 +1012,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 382 "dhcp6_parser.yy"
+#line 383 "dhcp6_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -1021,7 +1021,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 393 "dhcp6_parser.yy"
+#line 394 "dhcp6_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -1032,7 +1032,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60:
-#line 403 "dhcp6_parser.yy"
+#line 404 "dhcp6_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1043,7 +1043,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61:
-#line 408 "dhcp6_parser.yy"
+#line 409 "dhcp6_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1056,7 +1056,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 70:
-#line 431 "dhcp6_parser.yy"
+#line 432 "dhcp6_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1069,7 +1069,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71:
-#line 438 "dhcp6_parser.yy"
+#line 439 "dhcp6_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1079,7 +1079,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 72:
-#line 446 "dhcp6_parser.yy"
+#line 447 "dhcp6_parser.yy"
                           {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1089,7 +1089,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 73:
-#line 450 "dhcp6_parser.yy"
+#line 451 "dhcp6_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1097,16 +1097,16 @@ namespace isc { namespace dhcp {
 #line 1098 "dhcp6_parser.cc"
     break;
 
-  case 125:
-#line 512 "dhcp6_parser.yy"
+  case 126:
+#line 514 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1106 "dhcp6_parser.cc"
     break;
 
-  case 126:
-#line 514 "dhcp6_parser.yy"
+  case 127:
+#line 516 "dhcp6_parser.yy"
                {
     ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
@@ -1115,8 +1115,8 @@ namespace isc { namespace dhcp {
 #line 1116 "dhcp6_parser.cc"
     break;
 
-  case 127:
-#line 520 "dhcp6_parser.yy"
+  case 128:
+#line 522 "dhcp6_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
@@ -1124,8 +1124,8 @@ namespace isc { namespace dhcp {
 #line 1125 "dhcp6_parser.cc"
     break;
 
-  case 128:
-#line 525 "dhcp6_parser.yy"
+  case 129:
+#line 527 "dhcp6_parser.yy"
                                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("min-preferred-lifetime", prf);
@@ -1133,8 +1133,8 @@ namespace isc { namespace dhcp {
 #line 1134 "dhcp6_parser.cc"
     break;
 
-  case 129:
-#line 530 "dhcp6_parser.yy"
+  case 130:
+#line 532 "dhcp6_parser.yy"
                                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-preferred-lifetime", prf);
@@ -1142,8 +1142,8 @@ namespace isc { namespace dhcp {
 #line 1143 "dhcp6_parser.cc"
     break;
 
-  case 130:
-#line 535 "dhcp6_parser.yy"
+  case 131:
+#line 537 "dhcp6_parser.yy"
                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1151,8 +1151,8 @@ namespace isc { namespace dhcp {
 #line 1152 "dhcp6_parser.cc"
     break;
 
-  case 131:
-#line 540 "dhcp6_parser.yy"
+  case 132:
+#line 542 "dhcp6_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("min-valid-lifetime", prf);
@@ -1160,8 +1160,8 @@ namespace isc { namespace dhcp {
 #line 1161 "dhcp6_parser.cc"
     break;
 
-  case 132:
-#line 545 "dhcp6_parser.yy"
+  case 133:
+#line 547 "dhcp6_parser.yy"
                                                      {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-valid-lifetime", prf);
@@ -1169,8 +1169,8 @@ namespace isc { namespace dhcp {
 #line 1170 "dhcp6_parser.cc"
     break;
 
-  case 133:
-#line 550 "dhcp6_parser.yy"
+  case 134:
+#line 552 "dhcp6_parser.yy"
                                        {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -1178,8 +1178,8 @@ namespace isc { namespace dhcp {
 #line 1179 "dhcp6_parser.cc"
     break;
 
-  case 134:
-#line 555 "dhcp6_parser.yy"
+  case 135:
+#line 557 "dhcp6_parser.yy"
                                          {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -1187,8 +1187,8 @@ namespace isc { namespace dhcp {
 #line 1188 "dhcp6_parser.cc"
     break;
 
-  case 135:
-#line 560 "dhcp6_parser.yy"
+  case 136:
+#line 562 "dhcp6_parser.yy"
                                                        {
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("calculate-tee-times", ctt);
@@ -1196,8 +1196,8 @@ namespace isc { namespace dhcp {
 #line 1197 "dhcp6_parser.cc"
     break;
 
-  case 136:
-#line 565 "dhcp6_parser.yy"
+  case 137:
+#line 567 "dhcp6_parser.yy"
                                    {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
@@ -1205,8 +1205,8 @@ namespace isc { namespace dhcp {
 #line 1206 "dhcp6_parser.cc"
     break;
 
-  case 137:
-#line 570 "dhcp6_parser.yy"
+  case 138:
+#line 572 "dhcp6_parser.yy"
                                    {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
@@ -1214,8 +1214,8 @@ namespace isc { namespace dhcp {
 #line 1215 "dhcp6_parser.cc"
     break;
 
-  case 138:
-#line 575 "dhcp6_parser.yy"
+  case 139:
+#line 577 "dhcp6_parser.yy"
                                                                  {
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1223,8 +1223,8 @@ namespace isc { namespace dhcp {
 #line 1224 "dhcp6_parser.cc"
     break;
 
-  case 139:
-#line 580 "dhcp6_parser.yy"
+  case 140:
+#line 582 "dhcp6_parser.yy"
                                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
@@ -1232,8 +1232,8 @@ namespace isc { namespace dhcp {
 #line 1233 "dhcp6_parser.cc"
     break;
 
-  case 140:
-#line 585 "dhcp6_parser.yy"
+  case 141:
+#line 587 "dhcp6_parser.yy"
                                                                {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
@@ -1241,8 +1241,8 @@ namespace isc { namespace dhcp {
 #line 1242 "dhcp6_parser.cc"
     break;
 
-  case 141:
-#line 590 "dhcp6_parser.yy"
+  case 142:
+#line 592 "dhcp6_parser.yy"
                                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
@@ -1250,16 +1250,16 @@ namespace isc { namespace dhcp {
 #line 1251 "dhcp6_parser.cc"
     break;
 
-  case 142:
-#line 595 "dhcp6_parser.yy"
+  case 143:
+#line 597 "dhcp6_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 1259 "dhcp6_parser.cc"
     break;
 
-  case 143:
-#line 597 "dhcp6_parser.yy"
+  case 144:
+#line 599 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1267,40 +1267,40 @@ namespace isc { namespace dhcp {
 #line 1268 "dhcp6_parser.cc"
     break;
 
-  case 144:
-#line 603 "dhcp6_parser.yy"
+  case 145:
+#line 605 "dhcp6_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1276 "dhcp6_parser.cc"
     break;
 
-  case 145:
-#line 606 "dhcp6_parser.yy"
+  case 146:
+#line 608 "dhcp6_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1284 "dhcp6_parser.cc"
     break;
 
-  case 146:
-#line 609 "dhcp6_parser.yy"
+  case 147:
+#line 611 "dhcp6_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1292 "dhcp6_parser.cc"
     break;
 
-  case 147:
-#line 612 "dhcp6_parser.yy"
+  case 148:
+#line 614 "dhcp6_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1300 "dhcp6_parser.cc"
     break;
 
-  case 148:
-#line 615 "dhcp6_parser.yy"
+  case 149:
+#line 617 "dhcp6_parser.yy"
              {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -1308,16 +1308,16 @@ namespace isc { namespace dhcp {
 #line 1309 "dhcp6_parser.cc"
     break;
 
-  case 149:
-#line 621 "dhcp6_parser.yy"
+  case 150:
+#line 623 "dhcp6_parser.yy"
                                              {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1317 "dhcp6_parser.cc"
     break;
 
-  case 150:
-#line 623 "dhcp6_parser.yy"
+  case 151:
+#line 625 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1326,16 +1326,16 @@ namespace isc { namespace dhcp {
 #line 1327 "dhcp6_parser.cc"
     break;
 
-  case 151:
-#line 629 "dhcp6_parser.yy"
+  case 152:
+#line 631 "dhcp6_parser.yy"
                                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1335 "dhcp6_parser.cc"
     break;
 
-  case 152:
-#line 631 "dhcp6_parser.yy"
+  case 153:
+#line 633 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1344,16 +1344,16 @@ namespace isc { namespace dhcp {
 #line 1345 "dhcp6_parser.cc"
     break;
 
-  case 153:
-#line 637 "dhcp6_parser.yy"
+  case 154:
+#line 639 "dhcp6_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1353 "dhcp6_parser.cc"
     break;
 
-  case 154:
-#line 639 "dhcp6_parser.yy"
+  case 155:
+#line 641 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
@@ -1362,16 +1362,16 @@ namespace isc { namespace dhcp {
 #line 1363 "dhcp6_parser.cc"
     break;
 
-  case 155:
-#line 645 "dhcp6_parser.yy"
+  case 156:
+#line 647 "dhcp6_parser.yy"
                                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1371 "dhcp6_parser.cc"
     break;
 
-  case 156:
-#line 647 "dhcp6_parser.yy"
+  case 157:
+#line 649 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
@@ -1380,491 +1380,500 @@ namespace isc { namespace dhcp {
 #line 1381 "dhcp6_parser.cc"
     break;
 
-  case 157:
-#line 653 "dhcp6_parser.yy"
+  case 158:
+#line 655 "dhcp6_parser.yy"
+                                                       {
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("store-extended-info", b);
+}
+#line 1390 "dhcp6_parser.cc"
+    break;
+
+  case 159:
+#line 660 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1389 "dhcp6_parser.cc"
+#line 1398 "dhcp6_parser.cc"
     break;
 
-  case 158:
-#line 655 "dhcp6_parser.yy"
+  case 160:
+#line 662 "dhcp6_parser.yy"
                {
     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 1399 "dhcp6_parser.cc"
+#line 1408 "dhcp6_parser.cc"
     break;
 
-  case 159:
-#line 661 "dhcp6_parser.yy"
+  case 161:
+#line 668 "dhcp6_parser.yy"
                                      {
     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 1410 "dhcp6_parser.cc"
+#line 1419 "dhcp6_parser.cc"
     break;
 
-  case 160:
-#line 666 "dhcp6_parser.yy"
+  case 162:
+#line 673 "dhcp6_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1420 "dhcp6_parser.cc"
+#line 1429 "dhcp6_parser.cc"
     break;
 
-  case 161:
-#line 672 "dhcp6_parser.yy"
+  case 163:
+#line 679 "dhcp6_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1430 "dhcp6_parser.cc"
+#line 1439 "dhcp6_parser.cc"
     break;
 
-  case 162:
-#line 676 "dhcp6_parser.yy"
+  case 164:
+#line 683 "dhcp6_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1439 "dhcp6_parser.cc"
+#line 1448 "dhcp6_parser.cc"
     break;
 
-  case 170:
-#line 692 "dhcp6_parser.yy"
+  case 172:
+#line 699 "dhcp6_parser.yy"
                             {
     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 1450 "dhcp6_parser.cc"
+#line 1459 "dhcp6_parser.cc"
     break;
 
-  case 171:
-#line 697 "dhcp6_parser.yy"
+  case 173:
+#line 704 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1459 "dhcp6_parser.cc"
+#line 1468 "dhcp6_parser.cc"
     break;
 
-  case 172:
-#line 702 "dhcp6_parser.yy"
+  case 174:
+#line 709 "dhcp6_parser.yy"
                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1468 "dhcp6_parser.cc"
+#line 1477 "dhcp6_parser.cc"
     break;
 
-  case 173:
-#line 708 "dhcp6_parser.yy"
+  case 175:
+#line 715 "dhcp6_parser.yy"
                                {
     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 1479 "dhcp6_parser.cc"
+#line 1488 "dhcp6_parser.cc"
     break;
 
-  case 174:
-#line 713 "dhcp6_parser.yy"
+  case 176:
+#line 720 "dhcp6_parser.yy"
                                                           {
     // 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 1490 "dhcp6_parser.cc"
+#line 1499 "dhcp6_parser.cc"
     break;
 
-  case 175:
-#line 720 "dhcp6_parser.yy"
+  case 177:
+#line 727 "dhcp6_parser.yy"
                                {
     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 1501 "dhcp6_parser.cc"
+#line 1510 "dhcp6_parser.cc"
     break;
 
-  case 176:
-#line 725 "dhcp6_parser.yy"
+  case 178:
+#line 732 "dhcp6_parser.yy"
                                                           {
     // 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 1512 "dhcp6_parser.cc"
+#line 1521 "dhcp6_parser.cc"
     break;
 
-  case 177:
-#line 732 "dhcp6_parser.yy"
+  case 179:
+#line 739 "dhcp6_parser.yy"
                                  {
     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 1523 "dhcp6_parser.cc"
+#line 1532 "dhcp6_parser.cc"
     break;
 
-  case 178:
-#line 737 "dhcp6_parser.yy"
+  case 180:
+#line 744 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1532 "dhcp6_parser.cc"
+#line 1541 "dhcp6_parser.cc"
     break;
 
-  case 183:
-#line 750 "dhcp6_parser.yy"
+  case 185:
+#line 757 "dhcp6_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1542 "dhcp6_parser.cc"
+#line 1551 "dhcp6_parser.cc"
     break;
 
-  case 184:
-#line 754 "dhcp6_parser.yy"
+  case 186:
+#line 761 "dhcp6_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1552 "dhcp6_parser.cc"
+#line 1561 "dhcp6_parser.cc"
     break;
 
-  case 208:
-#line 787 "dhcp6_parser.yy"
+  case 210:
+#line 794 "dhcp6_parser.yy"
                     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1560 "dhcp6_parser.cc"
+#line 1569 "dhcp6_parser.cc"
     break;
 
-  case 209:
-#line 789 "dhcp6_parser.yy"
+  case 211:
+#line 796 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1569 "dhcp6_parser.cc"
+#line 1578 "dhcp6_parser.cc"
     break;
 
-  case 210:
-#line 794 "dhcp6_parser.yy"
+  case 212:
+#line 801 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1575 "dhcp6_parser.cc"
+#line 1584 "dhcp6_parser.cc"
     break;
 
-  case 211:
-#line 795 "dhcp6_parser.yy"
+  case 213:
+#line 802 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1581 "dhcp6_parser.cc"
+#line 1590 "dhcp6_parser.cc"
     break;
 
-  case 212:
-#line 796 "dhcp6_parser.yy"
+  case 214:
+#line 803 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1587 "dhcp6_parser.cc"
+#line 1596 "dhcp6_parser.cc"
     break;
 
-  case 213:
-#line 797 "dhcp6_parser.yy"
+  case 215:
+#line 804 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1593 "dhcp6_parser.cc"
+#line 1602 "dhcp6_parser.cc"
     break;
 
-  case 214:
-#line 800 "dhcp6_parser.yy"
+  case 216:
+#line 807 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1601 "dhcp6_parser.cc"
+#line 1610 "dhcp6_parser.cc"
     break;
 
-  case 215:
-#line 802 "dhcp6_parser.yy"
+  case 217:
+#line 809 "dhcp6_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1611 "dhcp6_parser.cc"
+#line 1620 "dhcp6_parser.cc"
     break;
 
-  case 216:
-#line 808 "dhcp6_parser.yy"
+  case 218:
+#line 815 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1619 "dhcp6_parser.cc"
+#line 1628 "dhcp6_parser.cc"
     break;
 
-  case 217:
-#line 810 "dhcp6_parser.yy"
+  case 219:
+#line 817 "dhcp6_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1629 "dhcp6_parser.cc"
+#line 1638 "dhcp6_parser.cc"
     break;
 
-  case 218:
-#line 816 "dhcp6_parser.yy"
+  case 220:
+#line 823 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1637 "dhcp6_parser.cc"
+#line 1646 "dhcp6_parser.cc"
     break;
 
-  case 219:
-#line 818 "dhcp6_parser.yy"
+  case 221:
+#line 825 "dhcp6_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1647 "dhcp6_parser.cc"
+#line 1656 "dhcp6_parser.cc"
     break;
 
-  case 220:
-#line 824 "dhcp6_parser.yy"
+  case 222:
+#line 831 "dhcp6_parser.yy"
                          {
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1656 "dhcp6_parser.cc"
+#line 1665 "dhcp6_parser.cc"
     break;
 
-  case 221:
-#line 829 "dhcp6_parser.yy"
+  case 223:
+#line 836 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1664 "dhcp6_parser.cc"
+#line 1673 "dhcp6_parser.cc"
     break;
 
-  case 222:
-#line 831 "dhcp6_parser.yy"
+  case 224:
+#line 838 "dhcp6_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1674 "dhcp6_parser.cc"
+#line 1683 "dhcp6_parser.cc"
     break;
 
-  case 223:
-#line 837 "dhcp6_parser.yy"
+  case 225:
+#line 844 "dhcp6_parser.yy"
                                {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1683 "dhcp6_parser.cc"
+#line 1692 "dhcp6_parser.cc"
     break;
 
-  case 224:
-#line 842 "dhcp6_parser.yy"
+  case 226:
+#line 849 "dhcp6_parser.yy"
                                          {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1692 "dhcp6_parser.cc"
+#line 1701 "dhcp6_parser.cc"
     break;
 
-  case 225:
-#line 847 "dhcp6_parser.yy"
+  case 227:
+#line 854 "dhcp6_parser.yy"
                                  {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1701 "dhcp6_parser.cc"
+#line 1710 "dhcp6_parser.cc"
     break;
 
-  case 226:
-#line 852 "dhcp6_parser.yy"
+  case 228:
+#line 859 "dhcp6_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1710 "dhcp6_parser.cc"
+#line 1719 "dhcp6_parser.cc"
     break;
 
-  case 227:
-#line 857 "dhcp6_parser.yy"
+  case 229:
+#line 864 "dhcp6_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1719 "dhcp6_parser.cc"
+#line 1728 "dhcp6_parser.cc"
     break;
 
-  case 228:
-#line 862 "dhcp6_parser.yy"
+  case 230:
+#line 869 "dhcp6_parser.yy"
                                              {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-row-errors", n);
 }
-#line 1728 "dhcp6_parser.cc"
+#line 1737 "dhcp6_parser.cc"
     break;
 
-  case 229:
-#line 867 "dhcp6_parser.yy"
+  case 231:
+#line 874 "dhcp6_parser.yy"
                                                {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1737 "dhcp6_parser.cc"
+#line 1746 "dhcp6_parser.cc"
     break;
 
-  case 230:
-#line 872 "dhcp6_parser.yy"
+  case 232:
+#line 879 "dhcp6_parser.yy"
                                            {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1746 "dhcp6_parser.cc"
+#line 1755 "dhcp6_parser.cc"
     break;
 
-  case 231:
-#line 877 "dhcp6_parser.yy"
+  case 233:
+#line 884 "dhcp6_parser.yy"
                                        {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1755 "dhcp6_parser.cc"
+#line 1764 "dhcp6_parser.cc"
     break;
 
-  case 232:
-#line 882 "dhcp6_parser.yy"
+  case 234:
+#line 889 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1763 "dhcp6_parser.cc"
+#line 1772 "dhcp6_parser.cc"
     break;
 
-  case 233:
-#line 884 "dhcp6_parser.yy"
+  case 235:
+#line 891 "dhcp6_parser.yy"
                {
     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 1773 "dhcp6_parser.cc"
+#line 1782 "dhcp6_parser.cc"
     break;
 
-  case 234:
-#line 890 "dhcp6_parser.yy"
+  case 236:
+#line 897 "dhcp6_parser.yy"
                                                        {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1782 "dhcp6_parser.cc"
+#line 1791 "dhcp6_parser.cc"
     break;
 
-  case 235:
-#line 895 "dhcp6_parser.yy"
+  case 237:
+#line 902 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1790 "dhcp6_parser.cc"
+#line 1799 "dhcp6_parser.cc"
     break;
 
-  case 236:
-#line 897 "dhcp6_parser.yy"
+  case 238:
+#line 904 "dhcp6_parser.yy"
                {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1800 "dhcp6_parser.cc"
+#line 1809 "dhcp6_parser.cc"
     break;
 
-  case 237:
-#line 903 "dhcp6_parser.yy"
+  case 239:
+#line 910 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1808 "dhcp6_parser.cc"
+#line 1817 "dhcp6_parser.cc"
     break;
 
-  case 238:
-#line 905 "dhcp6_parser.yy"
+  case 240:
+#line 912 "dhcp6_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1818 "dhcp6_parser.cc"
+#line 1827 "dhcp6_parser.cc"
     break;
 
-  case 239:
-#line 911 "dhcp6_parser.yy"
+  case 241:
+#line 918 "dhcp6_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1826 "dhcp6_parser.cc"
+#line 1835 "dhcp6_parser.cc"
     break;
 
-  case 240:
-#line 913 "dhcp6_parser.yy"
+  case 242:
+#line 920 "dhcp6_parser.yy"
                {
     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 1836 "dhcp6_parser.cc"
+#line 1845 "dhcp6_parser.cc"
     break;
 
-  case 241:
-#line 919 "dhcp6_parser.yy"
+  case 243:
+#line 926 "dhcp6_parser.yy"
                              {
     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 1847 "dhcp6_parser.cc"
+#line 1856 "dhcp6_parser.cc"
     break;
 
-  case 242:
-#line 924 "dhcp6_parser.yy"
+  case 244:
+#line 931 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1856 "dhcp6_parser.cc"
+#line 1865 "dhcp6_parser.cc"
     break;
 
-  case 246:
-#line 934 "dhcp6_parser.yy"
+  case 248:
+#line 941 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1864 "dhcp6_parser.cc"
+#line 1873 "dhcp6_parser.cc"
     break;
 
-  case 247:
-#line 936 "dhcp6_parser.yy"
+  case 249:
+#line 943 "dhcp6_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1880,307 +1889,307 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1884 "dhcp6_parser.cc"
+#line 1893 "dhcp6_parser.cc"
     break;
 
-  case 248:
-#line 952 "dhcp6_parser.yy"
+  case 250:
+#line 959 "dhcp6_parser.yy"
                          {
     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 1895 "dhcp6_parser.cc"
+#line 1904 "dhcp6_parser.cc"
     break;
 
-  case 249:
-#line 957 "dhcp6_parser.yy"
+  case 251:
+#line 964 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1904 "dhcp6_parser.cc"
+#line 1913 "dhcp6_parser.cc"
     break;
 
-  case 254:
-#line 970 "dhcp6_parser.yy"
+  case 256:
+#line 977 "dhcp6_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1913 "dhcp6_parser.cc"
+#line 1922 "dhcp6_parser.cc"
     break;
 
-  case 255:
-#line 975 "dhcp6_parser.yy"
+  case 257:
+#line 982 "dhcp6_parser.yy"
                    {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1922 "dhcp6_parser.cc"
+#line 1931 "dhcp6_parser.cc"
     break;
 
-  case 256:
-#line 980 "dhcp6_parser.yy"
+  case 258:
+#line 987 "dhcp6_parser.yy"
                                                            {
     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 1933 "dhcp6_parser.cc"
+#line 1942 "dhcp6_parser.cc"
     break;
 
-  case 257:
-#line 985 "dhcp6_parser.yy"
+  case 259:
+#line 992 "dhcp6_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1942 "dhcp6_parser.cc"
+#line 1951 "dhcp6_parser.cc"
     break;
 
-  case 263:
-#line 999 "dhcp6_parser.yy"
+  case 265:
+#line 1006 "dhcp6_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1951 "dhcp6_parser.cc"
+#line 1960 "dhcp6_parser.cc"
     break;
 
-  case 264:
-#line 1004 "dhcp6_parser.yy"
+  case 266:
+#line 1011 "dhcp6_parser.yy"
                   {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1960 "dhcp6_parser.cc"
+#line 1969 "dhcp6_parser.cc"
     break;
 
-  case 265:
-#line 1011 "dhcp6_parser.yy"
+  case 267:
+#line 1018 "dhcp6_parser.yy"
                                                {
     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 1971 "dhcp6_parser.cc"
+#line 1980 "dhcp6_parser.cc"
     break;
 
-  case 266:
-#line 1016 "dhcp6_parser.yy"
+  case 268:
+#line 1023 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1980 "dhcp6_parser.cc"
+#line 1989 "dhcp6_parser.cc"
     break;
 
-  case 267:
-#line 1021 "dhcp6_parser.yy"
+  case 269:
+#line 1028 "dhcp6_parser.yy"
                                  {
     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 1991 "dhcp6_parser.cc"
+#line 2000 "dhcp6_parser.cc"
     break;
 
-  case 268:
-#line 1026 "dhcp6_parser.yy"
+  case 270:
+#line 1033 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2000 "dhcp6_parser.cc"
+#line 2009 "dhcp6_parser.cc"
     break;
 
-  case 273:
-#line 1039 "dhcp6_parser.yy"
+  case 275:
+#line 1046 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2010 "dhcp6_parser.cc"
+#line 2019 "dhcp6_parser.cc"
     break;
 
-  case 274:
-#line 1043 "dhcp6_parser.yy"
+  case 276:
+#line 1050 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2020 "dhcp6_parser.cc"
+#line 2029 "dhcp6_parser.cc"
     break;
 
-  case 275:
-#line 1049 "dhcp6_parser.yy"
+  case 277:
+#line 1056 "dhcp6_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2030 "dhcp6_parser.cc"
+#line 2039 "dhcp6_parser.cc"
     break;
 
-  case 276:
-#line 1053 "dhcp6_parser.yy"
+  case 278:
+#line 1060 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2040 "dhcp6_parser.cc"
+#line 2049 "dhcp6_parser.cc"
     break;
 
-  case 282:
-#line 1068 "dhcp6_parser.yy"
+  case 284:
+#line 1075 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2048 "dhcp6_parser.cc"
+#line 2057 "dhcp6_parser.cc"
     break;
 
-  case 283:
-#line 1070 "dhcp6_parser.yy"
+  case 285:
+#line 1077 "dhcp6_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 2058 "dhcp6_parser.cc"
+#line 2067 "dhcp6_parser.cc"
     break;
 
-  case 284:
-#line 1076 "dhcp6_parser.yy"
+  case 286:
+#line 1083 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2066 "dhcp6_parser.cc"
+#line 2075 "dhcp6_parser.cc"
     break;
 
-  case 285:
-#line 1078 "dhcp6_parser.yy"
+  case 287:
+#line 1085 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2075 "dhcp6_parser.cc"
+#line 2084 "dhcp6_parser.cc"
     break;
 
-  case 286:
-#line 1084 "dhcp6_parser.yy"
+  case 288:
+#line 1091 "dhcp6_parser.yy"
                                                      {
     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 2086 "dhcp6_parser.cc"
+#line 2095 "dhcp6_parser.cc"
     break;
 
-  case 287:
-#line 1089 "dhcp6_parser.yy"
+  case 289:
+#line 1096 "dhcp6_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2096 "dhcp6_parser.cc"
+#line 2105 "dhcp6_parser.cc"
     break;
 
-  case 296:
-#line 1107 "dhcp6_parser.yy"
+  case 298:
+#line 1114 "dhcp6_parser.yy"
                                                                {
     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 2105 "dhcp6_parser.cc"
+#line 2114 "dhcp6_parser.cc"
     break;
 
-  case 297:
-#line 1112 "dhcp6_parser.yy"
+  case 299:
+#line 1119 "dhcp6_parser.yy"
                                                                                {
     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 2114 "dhcp6_parser.cc"
+#line 2123 "dhcp6_parser.cc"
     break;
 
-  case 298:
-#line 1117 "dhcp6_parser.yy"
+  case 300:
+#line 1124 "dhcp6_parser.yy"
                                                        {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 2123 "dhcp6_parser.cc"
+#line 2132 "dhcp6_parser.cc"
     break;
 
-  case 299:
-#line 1122 "dhcp6_parser.yy"
+  case 301:
+#line 1129 "dhcp6_parser.yy"
                                                      {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 2132 "dhcp6_parser.cc"
+#line 2141 "dhcp6_parser.cc"
     break;
 
-  case 300:
-#line 1127 "dhcp6_parser.yy"
+  case 302:
+#line 1134 "dhcp6_parser.yy"
                                                  {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 2141 "dhcp6_parser.cc"
+#line 2150 "dhcp6_parser.cc"
     break;
 
-  case 301:
-#line 1132 "dhcp6_parser.yy"
+  case 303:
+#line 1139 "dhcp6_parser.yy"
                                                                {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 2150 "dhcp6_parser.cc"
+#line 2159 "dhcp6_parser.cc"
     break;
 
-  case 302:
-#line 1140 "dhcp6_parser.yy"
+  case 304:
+#line 1147 "dhcp6_parser.yy"
                       {
     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 2161 "dhcp6_parser.cc"
+#line 2170 "dhcp6_parser.cc"
     break;
 
-  case 303:
-#line 1145 "dhcp6_parser.yy"
+  case 305:
+#line 1152 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2170 "dhcp6_parser.cc"
+#line 2179 "dhcp6_parser.cc"
     break;
 
-  case 308:
-#line 1165 "dhcp6_parser.yy"
+  case 310:
+#line 1172 "dhcp6_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2180 "dhcp6_parser.cc"
+#line 2189 "dhcp6_parser.cc"
     break;
 
-  case 309:
-#line 1169 "dhcp6_parser.yy"
+  case 311:
+#line 1176 "dhcp6_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2202,267 +2211,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2206 "dhcp6_parser.cc"
+#line 2215 "dhcp6_parser.cc"
     break;
 
-  case 310:
-#line 1191 "dhcp6_parser.yy"
+  case 312:
+#line 1198 "dhcp6_parser.yy"
                             {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2216 "dhcp6_parser.cc"
+#line 2225 "dhcp6_parser.cc"
     break;
 
-  case 311:
-#line 1195 "dhcp6_parser.yy"
+  case 313:
+#line 1202 "dhcp6_parser.yy"
                                 {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2226 "dhcp6_parser.cc"
+#line 2235 "dhcp6_parser.cc"
     break;
 
-  case 349:
-#line 1244 "dhcp6_parser.yy"
+  case 352:
+#line 1252 "dhcp6_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2234 "dhcp6_parser.cc"
+#line 2243 "dhcp6_parser.cc"
     break;
 
-  case 350:
-#line 1246 "dhcp6_parser.yy"
+  case 353:
+#line 1254 "dhcp6_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2244 "dhcp6_parser.cc"
+#line 2253 "dhcp6_parser.cc"
     break;
 
-  case 351:
-#line 1252 "dhcp6_parser.yy"
+  case 354:
+#line 1260 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2252 "dhcp6_parser.cc"
+#line 2261 "dhcp6_parser.cc"
     break;
 
-  case 352:
-#line 1254 "dhcp6_parser.yy"
+  case 355:
+#line 1262 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2262 "dhcp6_parser.cc"
+#line 2271 "dhcp6_parser.cc"
     break;
 
-  case 353:
-#line 1260 "dhcp6_parser.yy"
+  case 356:
+#line 1268 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2270 "dhcp6_parser.cc"
+#line 2279 "dhcp6_parser.cc"
     break;
 
-  case 354:
-#line 1262 "dhcp6_parser.yy"
+  case 357:
+#line 1270 "dhcp6_parser.yy"
                {
     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 2280 "dhcp6_parser.cc"
+#line 2289 "dhcp6_parser.cc"
     break;
 
-  case 355:
-#line 1268 "dhcp6_parser.yy"
+  case 358:
+#line 1276 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2288 "dhcp6_parser.cc"
+#line 2297 "dhcp6_parser.cc"
     break;
 
-  case 356:
-#line 1270 "dhcp6_parser.yy"
+  case 359:
+#line 1278 "dhcp6_parser.yy"
                {
     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 2298 "dhcp6_parser.cc"
+#line 2307 "dhcp6_parser.cc"
     break;
 
-  case 357:
-#line 1276 "dhcp6_parser.yy"
+  case 360:
+#line 1284 "dhcp6_parser.yy"
                                                {
     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 2309 "dhcp6_parser.cc"
+#line 2318 "dhcp6_parser.cc"
     break;
 
-  case 358:
-#line 1281 "dhcp6_parser.yy"
+  case 361:
+#line 1289 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2318 "dhcp6_parser.cc"
+#line 2327 "dhcp6_parser.cc"
     break;
 
-  case 359:
-#line 1286 "dhcp6_parser.yy"
+  case 362:
+#line 1294 "dhcp6_parser.yy"
                                    {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2326 "dhcp6_parser.cc"
+#line 2335 "dhcp6_parser.cc"
     break;
 
-  case 360:
-#line 1288 "dhcp6_parser.yy"
+  case 363:
+#line 1296 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2335 "dhcp6_parser.cc"
+#line 2344 "dhcp6_parser.cc"
     break;
 
-  case 361:
-#line 1293 "dhcp6_parser.yy"
+  case 364:
+#line 1301 "dhcp6_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2341 "dhcp6_parser.cc"
+#line 2350 "dhcp6_parser.cc"
     break;
 
-  case 362:
-#line 1294 "dhcp6_parser.yy"
+  case 365:
+#line 1302 "dhcp6_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2347 "dhcp6_parser.cc"
+#line 2356 "dhcp6_parser.cc"
     break;
 
-  case 363:
-#line 1295 "dhcp6_parser.yy"
+  case 366:
+#line 1303 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2353 "dhcp6_parser.cc"
+#line 2362 "dhcp6_parser.cc"
     break;
 
-  case 364:
-#line 1296 "dhcp6_parser.yy"
+  case 367:
+#line 1304 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2359 "dhcp6_parser.cc"
+#line 2368 "dhcp6_parser.cc"
     break;
 
-  case 365:
-#line 1299 "dhcp6_parser.yy"
+  case 368:
+#line 1307 "dhcp6_parser.yy"
                      {
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2368 "dhcp6_parser.cc"
+#line 2377 "dhcp6_parser.cc"
     break;
 
-  case 366:
-#line 1304 "dhcp6_parser.yy"
+  case 369:
+#line 1312 "dhcp6_parser.yy"
                                          {
     ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 2377 "dhcp6_parser.cc"
+#line 2386 "dhcp6_parser.cc"
     break;
 
-  case 367:
-#line 1312 "dhcp6_parser.yy"
+  case 370:
+#line 1320 "dhcp6_parser.yy"
                                  {
     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 2388 "dhcp6_parser.cc"
+#line 2397 "dhcp6_parser.cc"
     break;
 
-  case 368:
-#line 1317 "dhcp6_parser.yy"
+  case 371:
+#line 1325 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2397 "dhcp6_parser.cc"
+#line 2406 "dhcp6_parser.cc"
     break;
 
-  case 373:
-#line 1332 "dhcp6_parser.yy"
+  case 376:
+#line 1340 "dhcp6_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2407 "dhcp6_parser.cc"
+#line 2416 "dhcp6_parser.cc"
     break;
 
-  case 374:
-#line 1336 "dhcp6_parser.yy"
+  case 377:
+#line 1344 "dhcp6_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
-#line 2415 "dhcp6_parser.cc"
+#line 2424 "dhcp6_parser.cc"
     break;
 
-  case 409:
-#line 1382 "dhcp6_parser.yy"
+  case 413:
+#line 1391 "dhcp6_parser.yy"
                             {
     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 2426 "dhcp6_parser.cc"
+#line 2435 "dhcp6_parser.cc"
     break;
 
-  case 410:
-#line 1387 "dhcp6_parser.yy"
+  case 414:
+#line 1396 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2435 "dhcp6_parser.cc"
+#line 2444 "dhcp6_parser.cc"
     break;
 
-  case 411:
-#line 1395 "dhcp6_parser.yy"
+  case 415:
+#line 1404 "dhcp6_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2444 "dhcp6_parser.cc"
+#line 2453 "dhcp6_parser.cc"
     break;
 
-  case 412:
-#line 1398 "dhcp6_parser.yy"
+  case 416:
+#line 1407 "dhcp6_parser.yy"
                                  {
     // parsing completed
 }
-#line 2452 "dhcp6_parser.cc"
+#line 2461 "dhcp6_parser.cc"
     break;
 
-  case 417:
-#line 1414 "dhcp6_parser.yy"
+  case 421:
+#line 1423 "dhcp6_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2462 "dhcp6_parser.cc"
+#line 2471 "dhcp6_parser.cc"
     break;
 
-  case 418:
-#line 1418 "dhcp6_parser.yy"
+  case 422:
+#line 1427 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2470,21 +2479,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2474 "dhcp6_parser.cc"
+#line 2483 "dhcp6_parser.cc"
     break;
 
-  case 419:
-#line 1429 "dhcp6_parser.yy"
+  case 423:
+#line 1438 "dhcp6_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2484 "dhcp6_parser.cc"
+#line 2493 "dhcp6_parser.cc"
     break;
 
-  case 420:
-#line 1433 "dhcp6_parser.yy"
+  case 424:
+#line 1442 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2492,280 +2501,280 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2496 "dhcp6_parser.cc"
+#line 2505 "dhcp6_parser.cc"
     break;
 
-  case 436:
-#line 1465 "dhcp6_parser.yy"
+  case 440:
+#line 1474 "dhcp6_parser.yy"
                          {
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2505 "dhcp6_parser.cc"
+#line 2514 "dhcp6_parser.cc"
     break;
 
-  case 438:
-#line 1472 "dhcp6_parser.yy"
+  case 442:
+#line 1481 "dhcp6_parser.yy"
                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2513 "dhcp6_parser.cc"
+#line 2522 "dhcp6_parser.cc"
     break;
 
-  case 439:
-#line 1474 "dhcp6_parser.yy"
+  case 443:
+#line 1483 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2523 "dhcp6_parser.cc"
+#line 2532 "dhcp6_parser.cc"
     break;
 
-  case 440:
-#line 1480 "dhcp6_parser.yy"
+  case 444:
+#line 1489 "dhcp6_parser.yy"
                                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2531 "dhcp6_parser.cc"
+#line 2540 "dhcp6_parser.cc"
     break;
 
-  case 441:
-#line 1482 "dhcp6_parser.yy"
+  case 445:
+#line 1491 "dhcp6_parser.yy"
                {
     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 2541 "dhcp6_parser.cc"
+#line 2550 "dhcp6_parser.cc"
     break;
 
-  case 442:
-#line 1488 "dhcp6_parser.yy"
+  case 446:
+#line 1497 "dhcp6_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2549 "dhcp6_parser.cc"
+#line 2558 "dhcp6_parser.cc"
     break;
 
-  case 443:
-#line 1490 "dhcp6_parser.yy"
+  case 447:
+#line 1499 "dhcp6_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2559 "dhcp6_parser.cc"
+#line 2568 "dhcp6_parser.cc"
     break;
 
-  case 445:
-#line 1498 "dhcp6_parser.yy"
+  case 449:
+#line 1507 "dhcp6_parser.yy"
                                     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2567 "dhcp6_parser.cc"
+#line 2576 "dhcp6_parser.cc"
     break;
 
-  case 446:
-#line 1500 "dhcp6_parser.yy"
+  case 450:
+#line 1509 "dhcp6_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2577 "dhcp6_parser.cc"
+#line 2586 "dhcp6_parser.cc"
     break;
 
-  case 447:
-#line 1506 "dhcp6_parser.yy"
+  case 451:
+#line 1515 "dhcp6_parser.yy"
                                       {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2586 "dhcp6_parser.cc"
+#line 2595 "dhcp6_parser.cc"
     break;
 
-  case 448:
-#line 1515 "dhcp6_parser.yy"
+  case 452:
+#line 1524 "dhcp6_parser.yy"
                               {
     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 2597 "dhcp6_parser.cc"
+#line 2606 "dhcp6_parser.cc"
     break;
 
-  case 449:
-#line 1520 "dhcp6_parser.yy"
+  case 453:
+#line 1529 "dhcp6_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2606 "dhcp6_parser.cc"
+#line 2615 "dhcp6_parser.cc"
     break;
 
-  case 454:
-#line 1539 "dhcp6_parser.yy"
+  case 458:
+#line 1548 "dhcp6_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2616 "dhcp6_parser.cc"
+#line 2625 "dhcp6_parser.cc"
     break;
 
-  case 455:
-#line 1543 "dhcp6_parser.yy"
+  case 459:
+#line 1552 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2625 "dhcp6_parser.cc"
+#line 2634 "dhcp6_parser.cc"
     break;
 
-  case 456:
-#line 1551 "dhcp6_parser.yy"
+  case 460:
+#line 1560 "dhcp6_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2635 "dhcp6_parser.cc"
+#line 2644 "dhcp6_parser.cc"
     break;
 
-  case 457:
-#line 1555 "dhcp6_parser.yy"
+  case 461:
+#line 1564 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2644 "dhcp6_parser.cc"
+#line 2653 "dhcp6_parser.cc"
     break;
 
-  case 472:
-#line 1588 "dhcp6_parser.yy"
+  case 476:
+#line 1597 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2652 "dhcp6_parser.cc"
+#line 2661 "dhcp6_parser.cc"
     break;
 
-  case 473:
-#line 1590 "dhcp6_parser.yy"
+  case 477:
+#line 1599 "dhcp6_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2662 "dhcp6_parser.cc"
+#line 2671 "dhcp6_parser.cc"
     break;
 
-  case 476:
-#line 1600 "dhcp6_parser.yy"
+  case 480:
+#line 1609 "dhcp6_parser.yy"
                                                  {
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2671 "dhcp6_parser.cc"
+#line 2680 "dhcp6_parser.cc"
     break;
 
-  case 477:
-#line 1605 "dhcp6_parser.yy"
+  case 481:
+#line 1614 "dhcp6_parser.yy"
                                                    {
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2680 "dhcp6_parser.cc"
+#line 2689 "dhcp6_parser.cc"
     break;
 
-  case 478:
-#line 1613 "dhcp6_parser.yy"
+  case 482:
+#line 1622 "dhcp6_parser.yy"
                   {
     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 2691 "dhcp6_parser.cc"
+#line 2700 "dhcp6_parser.cc"
     break;
 
-  case 479:
-#line 1618 "dhcp6_parser.yy"
+  case 483:
+#line 1627 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2700 "dhcp6_parser.cc"
+#line 2709 "dhcp6_parser.cc"
     break;
 
-  case 484:
-#line 1633 "dhcp6_parser.yy"
+  case 488:
+#line 1642 "dhcp6_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2710 "dhcp6_parser.cc"
+#line 2719 "dhcp6_parser.cc"
     break;
 
-  case 485:
-#line 1637 "dhcp6_parser.yy"
+  case 489:
+#line 1646 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2720 "dhcp6_parser.cc"
+#line 2729 "dhcp6_parser.cc"
     break;
 
-  case 486:
-#line 1643 "dhcp6_parser.yy"
+  case 490:
+#line 1652 "dhcp6_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2730 "dhcp6_parser.cc"
+#line 2739 "dhcp6_parser.cc"
     break;
 
-  case 487:
-#line 1647 "dhcp6_parser.yy"
+  case 491:
+#line 1656 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2739 "dhcp6_parser.cc"
+#line 2748 "dhcp6_parser.cc"
     break;
 
-  case 497:
-#line 1665 "dhcp6_parser.yy"
+  case 501:
+#line 1674 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2747 "dhcp6_parser.cc"
+#line 2756 "dhcp6_parser.cc"
     break;
 
-  case 498:
-#line 1667 "dhcp6_parser.yy"
+  case 502:
+#line 1676 "dhcp6_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2757 "dhcp6_parser.cc"
+#line 2766 "dhcp6_parser.cc"
     break;
 
-  case 499:
-#line 1673 "dhcp6_parser.yy"
+  case 503:
+#line 1682 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2765 "dhcp6_parser.cc"
+#line 2774 "dhcp6_parser.cc"
     break;
 
-  case 500:
-#line 1675 "dhcp6_parser.yy"
+  case 504:
+#line 1684 "dhcp6_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2788,19 +2797,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2792 "dhcp6_parser.cc"
+#line 2801 "dhcp6_parser.cc"
     break;
 
-  case 501:
-#line 1698 "dhcp6_parser.yy"
+  case 505:
+#line 1707 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2800 "dhcp6_parser.cc"
+#line 2809 "dhcp6_parser.cc"
     break;
 
-  case 502:
-#line 1700 "dhcp6_parser.yy"
+  case 506:
+#line 1709 "dhcp6_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2825,41 +2834,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2829 "dhcp6_parser.cc"
+#line 2838 "dhcp6_parser.cc"
     break;
 
-  case 503:
-#line 1728 "dhcp6_parser.yy"
+  case 507:
+#line 1737 "dhcp6_parser.yy"
                         {
     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 2840 "dhcp6_parser.cc"
+#line 2849 "dhcp6_parser.cc"
     break;
 
-  case 504:
-#line 1733 "dhcp6_parser.yy"
+  case 508:
+#line 1742 "dhcp6_parser.yy"
                                                               {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2849 "dhcp6_parser.cc"
+#line 2858 "dhcp6_parser.cc"
     break;
 
-  case 509:
-#line 1748 "dhcp6_parser.yy"
+  case 513:
+#line 1757 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2859 "dhcp6_parser.cc"
+#line 2868 "dhcp6_parser.cc"
     break;
 
-  case 510:
-#line 1752 "dhcp6_parser.yy"
+  case 514:
+#line 1761 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2867,21 +2876,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2871 "dhcp6_parser.cc"
+#line 2880 "dhcp6_parser.cc"
     break;
 
-  case 511:
-#line 1760 "dhcp6_parser.yy"
+  case 515:
+#line 1769 "dhcp6_parser.yy"
                             {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2881 "dhcp6_parser.cc"
+#line 2890 "dhcp6_parser.cc"
     break;
 
-  case 512:
-#line 1764 "dhcp6_parser.yy"
+  case 516:
+#line 1773 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2889,1203 +2898,1203 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2893 "dhcp6_parser.cc"
+#line 2902 "dhcp6_parser.cc"
     break;
 
-  case 526:
-#line 1789 "dhcp6_parser.yy"
+  case 530:
+#line 1798 "dhcp6_parser.yy"
                   {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2901 "dhcp6_parser.cc"
+#line 2910 "dhcp6_parser.cc"
     break;
 
-  case 527:
-#line 1791 "dhcp6_parser.yy"
+  case 531:
+#line 1800 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2911 "dhcp6_parser.cc"
+#line 2920 "dhcp6_parser.cc"
     break;
 
-  case 528:
-#line 1797 "dhcp6_parser.yy"
+  case 532:
+#line 1806 "dhcp6_parser.yy"
                                         {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2920 "dhcp6_parser.cc"
+#line 2929 "dhcp6_parser.cc"
     break;
 
-  case 529:
-#line 1802 "dhcp6_parser.yy"
+  case 533:
+#line 1811 "dhcp6_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2928 "dhcp6_parser.cc"
+#line 2937 "dhcp6_parser.cc"
     break;
 
-  case 530:
-#line 1804 "dhcp6_parser.yy"
+  case 534:
+#line 1813 "dhcp6_parser.yy"
                {
     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 2938 "dhcp6_parser.cc"
+#line 2947 "dhcp6_parser.cc"
     break;
 
-  case 531:
-#line 1810 "dhcp6_parser.yy"
+  case 535:
+#line 1819 "dhcp6_parser.yy"
                                                        {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2947 "dhcp6_parser.cc"
+#line 2956 "dhcp6_parser.cc"
     break;
 
-  case 532:
-#line 1815 "dhcp6_parser.yy"
+  case 536:
+#line 1824 "dhcp6_parser.yy"
                                               {
     ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2956 "dhcp6_parser.cc"
+#line 2965 "dhcp6_parser.cc"
     break;
 
-  case 533:
-#line 1823 "dhcp6_parser.yy"
+  case 537:
+#line 1832 "dhcp6_parser.yy"
                            {
     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 2967 "dhcp6_parser.cc"
+#line 2976 "dhcp6_parser.cc"
     break;
 
-  case 534:
-#line 1828 "dhcp6_parser.yy"
+  case 538:
+#line 1837 "dhcp6_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2976 "dhcp6_parser.cc"
+#line 2985 "dhcp6_parser.cc"
     break;
 
-  case 539:
-#line 1841 "dhcp6_parser.yy"
+  case 543:
+#line 1850 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2986 "dhcp6_parser.cc"
+#line 2995 "dhcp6_parser.cc"
     break;
 
-  case 540:
-#line 1845 "dhcp6_parser.yy"
+  case 544:
+#line 1854 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2995 "dhcp6_parser.cc"
+#line 3004 "dhcp6_parser.cc"
     break;
 
-  case 541:
-#line 1850 "dhcp6_parser.yy"
+  case 545:
+#line 1859 "dhcp6_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3005 "dhcp6_parser.cc"
+#line 3014 "dhcp6_parser.cc"
     break;
 
-  case 542:
-#line 1854 "dhcp6_parser.yy"
+  case 546:
+#line 1863 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3014 "dhcp6_parser.cc"
+#line 3023 "dhcp6_parser.cc"
     break;
 
-  case 558:
-#line 1881 "dhcp6_parser.yy"
+  case 562:
+#line 1890 "dhcp6_parser.yy"
                            {
     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 3025 "dhcp6_parser.cc"
+#line 3034 "dhcp6_parser.cc"
     break;
 
-  case 559:
-#line 1886 "dhcp6_parser.yy"
+  case 563:
+#line 1895 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3034 "dhcp6_parser.cc"
+#line 3043 "dhcp6_parser.cc"
     break;
 
-  case 560:
-#line 1891 "dhcp6_parser.yy"
+  case 564:
+#line 1900 "dhcp6_parser.yy"
                     {
     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 3045 "dhcp6_parser.cc"
+#line 3054 "dhcp6_parser.cc"
     break;
 
-  case 561:
-#line 1896 "dhcp6_parser.yy"
+  case 565:
+#line 1905 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3054 "dhcp6_parser.cc"
+#line 3063 "dhcp6_parser.cc"
     break;
 
-  case 562:
-#line 1901 "dhcp6_parser.yy"
+  case 566:
+#line 1910 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3062 "dhcp6_parser.cc"
+#line 3071 "dhcp6_parser.cc"
     break;
 
-  case 563:
-#line 1903 "dhcp6_parser.yy"
+  case 567:
+#line 1912 "dhcp6_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3072 "dhcp6_parser.cc"
+#line 3081 "dhcp6_parser.cc"
     break;
 
-  case 564:
-#line 1909 "dhcp6_parser.yy"
+  case 568:
+#line 1918 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3080 "dhcp6_parser.cc"
+#line 3089 "dhcp6_parser.cc"
     break;
 
-  case 565:
-#line 1911 "dhcp6_parser.yy"
+  case 569:
+#line 1920 "dhcp6_parser.yy"
                {
     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 3090 "dhcp6_parser.cc"
+#line 3099 "dhcp6_parser.cc"
     break;
 
-  case 566:
-#line 1917 "dhcp6_parser.yy"
+  case 570:
+#line 1926 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3098 "dhcp6_parser.cc"
+#line 3107 "dhcp6_parser.cc"
     break;
 
-  case 567:
-#line 1919 "dhcp6_parser.yy"
+  case 571:
+#line 1928 "dhcp6_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3108 "dhcp6_parser.cc"
+#line 3117 "dhcp6_parser.cc"
     break;
 
-  case 568:
-#line 1925 "dhcp6_parser.yy"
+  case 572:
+#line 1934 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3116 "dhcp6_parser.cc"
+#line 3125 "dhcp6_parser.cc"
     break;
 
-  case 569:
-#line 1927 "dhcp6_parser.yy"
+  case 573:
+#line 1936 "dhcp6_parser.yy"
                {
     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 3126 "dhcp6_parser.cc"
+#line 3135 "dhcp6_parser.cc"
     break;
 
-  case 570:
-#line 1933 "dhcp6_parser.yy"
+  case 574:
+#line 1942 "dhcp6_parser.yy"
                                            {
     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 3137 "dhcp6_parser.cc"
+#line 3146 "dhcp6_parser.cc"
     break;
 
-  case 571:
-#line 1938 "dhcp6_parser.yy"
+  case 575:
+#line 1947 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3146 "dhcp6_parser.cc"
+#line 3155 "dhcp6_parser.cc"
     break;
 
-  case 572:
-#line 1946 "dhcp6_parser.yy"
+  case 576:
+#line 1955 "dhcp6_parser.yy"
              {
     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 3157 "dhcp6_parser.cc"
+#line 3166 "dhcp6_parser.cc"
     break;
 
-  case 573:
-#line 1951 "dhcp6_parser.yy"
+  case 577:
+#line 1960 "dhcp6_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3166 "dhcp6_parser.cc"
+#line 3175 "dhcp6_parser.cc"
     break;
 
-  case 576:
-#line 1960 "dhcp6_parser.yy"
+  case 580:
+#line 1969 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3174 "dhcp6_parser.cc"
+#line 3183 "dhcp6_parser.cc"
     break;
 
-  case 577:
-#line 1962 "dhcp6_parser.yy"
+  case 581:
+#line 1971 "dhcp6_parser.yy"
                {
     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 3184 "dhcp6_parser.cc"
+#line 3193 "dhcp6_parser.cc"
     break;
 
-  case 578:
-#line 1971 "dhcp6_parser.yy"
+  case 582:
+#line 1980 "dhcp6_parser.yy"
                                {
     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 3195 "dhcp6_parser.cc"
+#line 3204 "dhcp6_parser.cc"
     break;
 
-  case 579:
-#line 1976 "dhcp6_parser.yy"
+  case 583:
+#line 1985 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3204 "dhcp6_parser.cc"
+#line 3213 "dhcp6_parser.cc"
     break;
 
-  case 582:
-#line 1985 "dhcp6_parser.yy"
+  case 586:
+#line 1994 "dhcp6_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3214 "dhcp6_parser.cc"
+#line 3223 "dhcp6_parser.cc"
     break;
 
-  case 583:
-#line 1989 "dhcp6_parser.yy"
+  case 587:
+#line 1998 "dhcp6_parser.yy"
                                      {
     // 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 3224 "dhcp6_parser.cc"
+#line 3233 "dhcp6_parser.cc"
     break;
 
-  case 596:
-#line 2014 "dhcp6_parser.yy"
+  case 600:
+#line 2023 "dhcp6_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3232 "dhcp6_parser.cc"
+#line 3241 "dhcp6_parser.cc"
     break;
 
-  case 597:
-#line 2016 "dhcp6_parser.yy"
+  case 601:
+#line 2025 "dhcp6_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3242 "dhcp6_parser.cc"
+#line 3251 "dhcp6_parser.cc"
     break;
 
-  case 598:
-#line 2022 "dhcp6_parser.yy"
+  case 602:
+#line 2031 "dhcp6_parser.yy"
                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3251 "dhcp6_parser.cc"
+#line 3260 "dhcp6_parser.cc"
     break;
 
-  case 599:
-#line 2030 "dhcp6_parser.yy"
+  case 603:
+#line 2039 "dhcp6_parser.yy"
                      {
     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 3262 "dhcp6_parser.cc"
+#line 3271 "dhcp6_parser.cc"
     break;
 
-  case 600:
-#line 2035 "dhcp6_parser.yy"
+  case 604:
+#line 2044 "dhcp6_parser.yy"
                                                        {
     // 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 3273 "dhcp6_parser.cc"
+#line 3282 "dhcp6_parser.cc"
     break;
 
-  case 612:
-#line 2057 "dhcp6_parser.yy"
+  case 616:
+#line 2066 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3281 "dhcp6_parser.cc"
+#line 3290 "dhcp6_parser.cc"
     break;
 
-  case 613:
-#line 2059 "dhcp6_parser.yy"
+  case 617:
+#line 2068 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3290 "dhcp6_parser.cc"
+#line 3299 "dhcp6_parser.cc"
     break;
 
-  case 614:
-#line 2064 "dhcp6_parser.yy"
+  case 618:
+#line 2073 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3296 "dhcp6_parser.cc"
+#line 3305 "dhcp6_parser.cc"
     break;
 
-  case 615:
-#line 2065 "dhcp6_parser.yy"
+  case 619:
+#line 2074 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3302 "dhcp6_parser.cc"
+#line 3311 "dhcp6_parser.cc"
     break;
 
-  case 616:
-#line 2066 "dhcp6_parser.yy"
+  case 620:
+#line 2075 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3308 "dhcp6_parser.cc"
+#line 3317 "dhcp6_parser.cc"
     break;
 
-  case 617:
-#line 2069 "dhcp6_parser.yy"
+  case 621:
+#line 2078 "dhcp6_parser.yy"
                            {
     ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 3317 "dhcp6_parser.cc"
+#line 3326 "dhcp6_parser.cc"
     break;
 
-  case 618:
-#line 2074 "dhcp6_parser.yy"
+  case 622:
+#line 2083 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3325 "dhcp6_parser.cc"
+#line 3334 "dhcp6_parser.cc"
     break;
 
-  case 619:
-#line 2076 "dhcp6_parser.yy"
+  case 623:
+#line 2085 "dhcp6_parser.yy"
                {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3335 "dhcp6_parser.cc"
+#line 3344 "dhcp6_parser.cc"
     break;
 
-  case 620:
-#line 2082 "dhcp6_parser.yy"
+  case 624:
+#line 2091 "dhcp6_parser.yy"
                          {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 3344 "dhcp6_parser.cc"
+#line 3353 "dhcp6_parser.cc"
     break;
 
-  case 621:
-#line 2087 "dhcp6_parser.yy"
+  case 625:
+#line 2096 "dhcp6_parser.yy"
                                            {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 3353 "dhcp6_parser.cc"
+#line 3362 "dhcp6_parser.cc"
     break;
 
-  case 622:
-#line 2094 "dhcp6_parser.yy"
+  case 626:
+#line 2103 "dhcp6_parser.yy"
                                          {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3362 "dhcp6_parser.cc"
+#line 3371 "dhcp6_parser.cc"
     break;
 
-  case 623:
-#line 2101 "dhcp6_parser.yy"
+  case 627:
+#line 2110 "dhcp6_parser.yy"
                                {
     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 3373 "dhcp6_parser.cc"
+#line 3382 "dhcp6_parser.cc"
     break;
 
-  case 624:
-#line 2106 "dhcp6_parser.yy"
+  case 628:
+#line 2115 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3382 "dhcp6_parser.cc"
+#line 3391 "dhcp6_parser.cc"
     break;
 
-  case 632:
-#line 2122 "dhcp6_parser.yy"
+  case 636:
+#line 2131 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3390 "dhcp6_parser.cc"
+#line 3399 "dhcp6_parser.cc"
     break;
 
-  case 633:
-#line 2124 "dhcp6_parser.yy"
+  case 637:
+#line 2133 "dhcp6_parser.yy"
                {
     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 3400 "dhcp6_parser.cc"
+#line 3409 "dhcp6_parser.cc"
     break;
 
-  case 634:
-#line 2130 "dhcp6_parser.yy"
+  case 638:
+#line 2139 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3408 "dhcp6_parser.cc"
+#line 3417 "dhcp6_parser.cc"
     break;
 
-  case 635:
-#line 2132 "dhcp6_parser.yy"
+  case 639:
+#line 2141 "dhcp6_parser.yy"
                {
     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 3418 "dhcp6_parser.cc"
+#line 3427 "dhcp6_parser.cc"
     break;
 
-  case 636:
-#line 2140 "dhcp6_parser.yy"
+  case 640:
+#line 2149 "dhcp6_parser.yy"
                                        {
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3429 "dhcp6_parser.cc"
+#line 3438 "dhcp6_parser.cc"
     break;
 
-  case 637:
-#line 2145 "dhcp6_parser.yy"
+  case 641:
+#line 2154 "dhcp6_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3440 "dhcp6_parser.cc"
+#line 3449 "dhcp6_parser.cc"
     break;
 
-  case 646:
-#line 2164 "dhcp6_parser.yy"
+  case 650:
+#line 2173 "dhcp6_parser.yy"
                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-queue", b);
 }
-#line 3449 "dhcp6_parser.cc"
+#line 3458 "dhcp6_parser.cc"
     break;
 
-  case 647:
-#line 2169 "dhcp6_parser.yy"
+  case 651:
+#line 2178 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3457 "dhcp6_parser.cc"
+#line 3466 "dhcp6_parser.cc"
     break;
 
-  case 648:
-#line 2171 "dhcp6_parser.yy"
+  case 652:
+#line 2180 "dhcp6_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3467 "dhcp6_parser.cc"
+#line 3476 "dhcp6_parser.cc"
     break;
 
-  case 649:
-#line 2177 "dhcp6_parser.yy"
+  case 653:
+#line 2186 "dhcp6_parser.yy"
                                  {
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3476 "dhcp6_parser.cc"
+#line 3485 "dhcp6_parser.cc"
     break;
 
-  case 650:
-#line 2182 "dhcp6_parser.yy"
+  case 654:
+#line 2191 "dhcp6_parser.yy"
                             {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3484 "dhcp6_parser.cc"
+#line 3493 "dhcp6_parser.cc"
     break;
 
-  case 651:
-#line 2184 "dhcp6_parser.yy"
+  case 655:
+#line 2193 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3493 "dhcp6_parser.cc"
+#line 3502 "dhcp6_parser.cc"
     break;
 
-  case 652:
-#line 2191 "dhcp6_parser.yy"
+  case 656:
+#line 2200 "dhcp6_parser.yy"
                      {
     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 3504 "dhcp6_parser.cc"
+#line 3513 "dhcp6_parser.cc"
     break;
 
-  case 653:
-#line 2196 "dhcp6_parser.yy"
+  case 657:
+#line 2205 "dhcp6_parser.yy"
                                                        {
     // 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 3515 "dhcp6_parser.cc"
+#line 3524 "dhcp6_parser.cc"
     break;
 
-  case 654:
-#line 2203 "dhcp6_parser.yy"
+  case 658:
+#line 2212 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3525 "dhcp6_parser.cc"
+#line 3534 "dhcp6_parser.cc"
     break;
 
-  case 655:
-#line 2207 "dhcp6_parser.yy"
+  case 659:
+#line 2216 "dhcp6_parser.yy"
                                   {
     // 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 3535 "dhcp6_parser.cc"
+#line 3544 "dhcp6_parser.cc"
     break;
 
-  case 676:
-#line 2237 "dhcp6_parser.yy"
+  case 680:
+#line 2246 "dhcp6_parser.yy"
                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3544 "dhcp6_parser.cc"
+#line 3553 "dhcp6_parser.cc"
     break;
 
-  case 677:
-#line 2242 "dhcp6_parser.yy"
+  case 681:
+#line 2251 "dhcp6_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3552 "dhcp6_parser.cc"
+#line 3561 "dhcp6_parser.cc"
     break;
 
-  case 678:
-#line 2244 "dhcp6_parser.yy"
+  case 682:
+#line 2253 "dhcp6_parser.yy"
                {
     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 3562 "dhcp6_parser.cc"
+#line 3571 "dhcp6_parser.cc"
     break;
 
-  case 679:
-#line 2250 "dhcp6_parser.yy"
+  case 683:
+#line 2259 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3570 "dhcp6_parser.cc"
+#line 3579 "dhcp6_parser.cc"
     break;
 
-  case 680:
-#line 2252 "dhcp6_parser.yy"
+  case 684:
+#line 2261 "dhcp6_parser.yy"
                {
     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 3580 "dhcp6_parser.cc"
+#line 3589 "dhcp6_parser.cc"
     break;
 
-  case 681:
-#line 2258 "dhcp6_parser.yy"
+  case 685:
+#line 2267 "dhcp6_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3589 "dhcp6_parser.cc"
+#line 3598 "dhcp6_parser.cc"
     break;
 
-  case 682:
-#line 2263 "dhcp6_parser.yy"
+  case 686:
+#line 2272 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3597 "dhcp6_parser.cc"
+#line 3606 "dhcp6_parser.cc"
     break;
 
-  case 683:
-#line 2265 "dhcp6_parser.yy"
+  case 687:
+#line 2274 "dhcp6_parser.yy"
                {
     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 3607 "dhcp6_parser.cc"
+#line 3616 "dhcp6_parser.cc"
     break;
 
-  case 684:
-#line 2271 "dhcp6_parser.yy"
+  case 688:
+#line 2280 "dhcp6_parser.yy"
                                        {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3616 "dhcp6_parser.cc"
+#line 3625 "dhcp6_parser.cc"
     break;
 
-  case 685:
-#line 2276 "dhcp6_parser.yy"
+  case 689:
+#line 2285 "dhcp6_parser.yy"
                                              {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3625 "dhcp6_parser.cc"
+#line 3634 "dhcp6_parser.cc"
     break;
 
-  case 686:
-#line 2281 "dhcp6_parser.yy"
+  case 690:
+#line 2290 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3633 "dhcp6_parser.cc"
+#line 3642 "dhcp6_parser.cc"
     break;
 
-  case 687:
-#line 2283 "dhcp6_parser.yy"
+  case 691:
+#line 2292 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3642 "dhcp6_parser.cc"
+#line 3651 "dhcp6_parser.cc"
     break;
 
-  case 688:
-#line 2289 "dhcp6_parser.yy"
+  case 692:
+#line 2298 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3648 "dhcp6_parser.cc"
+#line 3657 "dhcp6_parser.cc"
     break;
 
-  case 689:
-#line 2290 "dhcp6_parser.yy"
+  case 693:
+#line 2299 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3654 "dhcp6_parser.cc"
+#line 3663 "dhcp6_parser.cc"
     break;
 
-  case 690:
-#line 2293 "dhcp6_parser.yy"
+  case 694:
+#line 2302 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3662 "dhcp6_parser.cc"
+#line 3671 "dhcp6_parser.cc"
     break;
 
-  case 691:
-#line 2295 "dhcp6_parser.yy"
+  case 695:
+#line 2304 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3672 "dhcp6_parser.cc"
+#line 3681 "dhcp6_parser.cc"
     break;
 
-  case 692:
-#line 2302 "dhcp6_parser.yy"
+  case 696:
+#line 2311 "dhcp6_parser.yy"
                                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3681 "dhcp6_parser.cc"
+#line 3690 "dhcp6_parser.cc"
     break;
 
-  case 693:
-#line 2308 "dhcp6_parser.yy"
+  case 697:
+#line 2317 "dhcp6_parser.yy"
                                                                  {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3690 "dhcp6_parser.cc"
+#line 3699 "dhcp6_parser.cc"
     break;
 
-  case 694:
-#line 2314 "dhcp6_parser.yy"
+  case 698:
+#line 2323 "dhcp6_parser.yy"
                                              {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3698 "dhcp6_parser.cc"
+#line 3707 "dhcp6_parser.cc"
     break;
 
-  case 695:
-#line 2316 "dhcp6_parser.yy"
+  case 699:
+#line 2325 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3707 "dhcp6_parser.cc"
+#line 3716 "dhcp6_parser.cc"
     break;
 
-  case 696:
-#line 2322 "dhcp6_parser.yy"
+  case 700:
+#line 2331 "dhcp6_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3715 "dhcp6_parser.cc"
+#line 3724 "dhcp6_parser.cc"
     break;
 
-  case 697:
-#line 2324 "dhcp6_parser.yy"
+  case 701:
+#line 2333 "dhcp6_parser.yy"
                {
     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 3725 "dhcp6_parser.cc"
+#line 3734 "dhcp6_parser.cc"
     break;
 
-  case 698:
-#line 2331 "dhcp6_parser.yy"
+  case 702:
+#line 2340 "dhcp6_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3733 "dhcp6_parser.cc"
+#line 3742 "dhcp6_parser.cc"
     break;
 
-  case 699:
-#line 2333 "dhcp6_parser.yy"
+  case 703:
+#line 2342 "dhcp6_parser.yy"
                {
     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 3743 "dhcp6_parser.cc"
+#line 3752 "dhcp6_parser.cc"
     break;
 
-  case 700:
-#line 2340 "dhcp6_parser.yy"
+  case 704:
+#line 2349 "dhcp6_parser.yy"
                                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3751 "dhcp6_parser.cc"
+#line 3760 "dhcp6_parser.cc"
     break;
 
-  case 701:
-#line 2342 "dhcp6_parser.yy"
+  case 705:
+#line 2351 "dhcp6_parser.yy"
                {
     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 3761 "dhcp6_parser.cc"
+#line 3770 "dhcp6_parser.cc"
     break;
 
-  case 702:
-#line 2350 "dhcp6_parser.yy"
+  case 706:
+#line 2359 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3769 "dhcp6_parser.cc"
+#line 3778 "dhcp6_parser.cc"
     break;
 
-  case 703:
-#line 2352 "dhcp6_parser.yy"
+  case 707:
+#line 2361 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3778 "dhcp6_parser.cc"
+#line 3787 "dhcp6_parser.cc"
     break;
 
-  case 704:
-#line 2357 "dhcp6_parser.yy"
+  case 708:
+#line 2366 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3786 "dhcp6_parser.cc"
+#line 3795 "dhcp6_parser.cc"
     break;
 
-  case 705:
-#line 2359 "dhcp6_parser.yy"
+  case 709:
+#line 2368 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3795 "dhcp6_parser.cc"
+#line 3804 "dhcp6_parser.cc"
     break;
 
-  case 706:
-#line 2364 "dhcp6_parser.yy"
+  case 710:
+#line 2373 "dhcp6_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3803 "dhcp6_parser.cc"
+#line 3812 "dhcp6_parser.cc"
     break;
 
-  case 707:
-#line 2366 "dhcp6_parser.yy"
+  case 711:
+#line 2375 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3812 "dhcp6_parser.cc"
+#line 3821 "dhcp6_parser.cc"
     break;
 
-  case 708:
-#line 2373 "dhcp6_parser.yy"
+  case 712:
+#line 2382 "dhcp6_parser.yy"
                                {
     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 3823 "dhcp6_parser.cc"
+#line 3832 "dhcp6_parser.cc"
     break;
 
-  case 709:
-#line 2378 "dhcp6_parser.yy"
+  case 713:
+#line 2387 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3833 "dhcp6_parser.cc"
+#line 3842 "dhcp6_parser.cc"
     break;
 
-  case 710:
-#line 2384 "dhcp6_parser.yy"
+  case 714:
+#line 2393 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3843 "dhcp6_parser.cc"
+#line 3852 "dhcp6_parser.cc"
     break;
 
-  case 711:
-#line 2388 "dhcp6_parser.yy"
+  case 715:
+#line 2397 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 3852 "dhcp6_parser.cc"
+#line 3861 "dhcp6_parser.cc"
     break;
 
-  case 716:
-#line 2403 "dhcp6_parser.yy"
+  case 720:
+#line 2412 "dhcp6_parser.yy"
                                    {
     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 3863 "dhcp6_parser.cc"
+#line 3872 "dhcp6_parser.cc"
     break;
 
-  case 717:
-#line 2408 "dhcp6_parser.yy"
+  case 721:
+#line 2417 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3872 "dhcp6_parser.cc"
+#line 3881 "dhcp6_parser.cc"
     break;
 
-  case 718:
-#line 2413 "dhcp6_parser.yy"
+  case 722:
+#line 2422 "dhcp6_parser.yy"
                                                              {
     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 3881 "dhcp6_parser.cc"
+#line 3890 "dhcp6_parser.cc"
     break;
 
-  case 719:
-#line 2423 "dhcp6_parser.yy"
+  case 723:
+#line 2432 "dhcp6_parser.yy"
                         {
     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 3892 "dhcp6_parser.cc"
+#line 3901 "dhcp6_parser.cc"
     break;
 
-  case 720:
-#line 2428 "dhcp6_parser.yy"
+  case 724:
+#line 2437 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3901 "dhcp6_parser.cc"
+#line 3910 "dhcp6_parser.cc"
     break;
 
-  case 721:
-#line 2433 "dhcp6_parser.yy"
+  case 725:
+#line 2442 "dhcp6_parser.yy"
                             {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3911 "dhcp6_parser.cc"
+#line 3920 "dhcp6_parser.cc"
     break;
 
-  case 722:
-#line 2437 "dhcp6_parser.yy"
+  case 726:
+#line 2446 "dhcp6_parser.yy"
                                 {
     // parsing completed
 }
-#line 3919 "dhcp6_parser.cc"
+#line 3928 "dhcp6_parser.cc"
     break;
 
-  case 726:
-#line 2453 "dhcp6_parser.yy"
+  case 730:
+#line 2462 "dhcp6_parser.yy"
                  {
     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 3930 "dhcp6_parser.cc"
+#line 3939 "dhcp6_parser.cc"
     break;
 
-  case 727:
-#line 2458 "dhcp6_parser.yy"
+  case 731:
+#line 2467 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3939 "dhcp6_parser.cc"
+#line 3948 "dhcp6_parser.cc"
     break;
 
-  case 730:
-#line 2470 "dhcp6_parser.yy"
+  case 734:
+#line 2479 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3949 "dhcp6_parser.cc"
+#line 3958 "dhcp6_parser.cc"
     break;
 
-  case 731:
-#line 2474 "dhcp6_parser.yy"
+  case 735:
+#line 2483 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 3957 "dhcp6_parser.cc"
+#line 3966 "dhcp6_parser.cc"
     break;
 
-  case 741:
-#line 2491 "dhcp6_parser.yy"
+  case 745:
+#line 2500 "dhcp6_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3966 "dhcp6_parser.cc"
+#line 3975 "dhcp6_parser.cc"
     break;
 
-  case 742:
-#line 2496 "dhcp6_parser.yy"
+  case 746:
+#line 2505 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3974 "dhcp6_parser.cc"
+#line 3983 "dhcp6_parser.cc"
     break;
 
-  case 743:
-#line 2498 "dhcp6_parser.yy"
+  case 747:
+#line 2507 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3984 "dhcp6_parser.cc"
+#line 3993 "dhcp6_parser.cc"
     break;
 
-  case 744:
-#line 2504 "dhcp6_parser.yy"
+  case 748:
+#line 2513 "dhcp6_parser.yy"
                                     {
     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 3995 "dhcp6_parser.cc"
+#line 4004 "dhcp6_parser.cc"
     break;
 
-  case 745:
-#line 2509 "dhcp6_parser.yy"
+  case 749:
+#line 2518 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4004 "dhcp6_parser.cc"
+#line 4013 "dhcp6_parser.cc"
     break;
 
-  case 748:
-#line 2518 "dhcp6_parser.yy"
+  case 752:
+#line 2527 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4014 "dhcp6_parser.cc"
+#line 4023 "dhcp6_parser.cc"
     break;
 
-  case 749:
-#line 2522 "dhcp6_parser.yy"
+  case 753:
+#line 2531 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4022 "dhcp6_parser.cc"
+#line 4031 "dhcp6_parser.cc"
     break;
 
-  case 757:
-#line 2537 "dhcp6_parser.yy"
+  case 761:
+#line 2546 "dhcp6_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4030 "dhcp6_parser.cc"
+#line 4039 "dhcp6_parser.cc"
     break;
 
-  case 758:
-#line 2539 "dhcp6_parser.yy"
+  case 762:
+#line 2548 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 4040 "dhcp6_parser.cc"
+#line 4049 "dhcp6_parser.cc"
     break;
 
-  case 759:
-#line 2545 "dhcp6_parser.yy"
+  case 763:
+#line 2554 "dhcp6_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 4049 "dhcp6_parser.cc"
+#line 4058 "dhcp6_parser.cc"
     break;
 
-  case 760:
-#line 2550 "dhcp6_parser.yy"
+  case 764:
+#line 2559 "dhcp6_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 4058 "dhcp6_parser.cc"
+#line 4067 "dhcp6_parser.cc"
     break;
 
-  case 761:
-#line 2555 "dhcp6_parser.yy"
+  case 765:
+#line 2564 "dhcp6_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 4067 "dhcp6_parser.cc"
+#line 4076 "dhcp6_parser.cc"
     break;
 
-  case 762:
-#line 2560 "dhcp6_parser.yy"
+  case 766:
+#line 2569 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4075 "dhcp6_parser.cc"
+#line 4084 "dhcp6_parser.cc"
     break;
 
-  case 763:
-#line 2562 "dhcp6_parser.yy"
+  case 767:
+#line 2571 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4085 "dhcp6_parser.cc"
+#line 4094 "dhcp6_parser.cc"
     break;
 
 
-#line 4089 "dhcp6_parser.cc"
+#line 4098 "dhcp6_parser.cc"
 
             default:
               break;
@@ -4356,137 +4365,138 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -932;
+  const short Dhcp6Parser::yypact_ninf_ = -937;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     166,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,    52,    31,    76,    82,
-      97,   105,   113,   142,   152,   173,   175,   201,   224,   244,
-     245,   252,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,    31,  -101,    29,   524,    41,   196,   229,    95,
-      80,    42,    78,   257,   -38,   528,   103,   158,  -932,   254,
-     274,   306,   281,   301,  -932,  -932,  -932,  -932,  -932,   325,
-    -932,    38,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,   328,   329,   332,   335,   356,   371,
-     372,   383,   401,   409,   412,   413,  -932,   425,   426,   435,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   453,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,    56,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   468,  -932,
-      59,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,   469,   476,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,    87,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,    99,  -932,
-    -932,  -932,  -932,  -932,   481,  -932,   484,   491,  -932,  -932,
-    -932,  -932,  -932,  -932,   115,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,   386,   388,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,   407,  -932,  -932,   492,  -932,  -932,  -932,   493,
-    -932,  -932,   490,   496,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,   497,   498,  -932,
-    -932,  -932,  -932,   499,   507,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,   162,  -932,  -932,
-    -932,   509,  -932,  -932,   510,  -932,   512,   515,  -932,  -932,
-     516,   517,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   191,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,   193,  -932,  -932,  -932,
-     519,   199,  -932,  -932,  -932,  -932,    31,    31,  -932,   308,
-     521,   522,   523,   526,   527,  -932,    29,  -932,   529,   530,
-     533,   534,   536,   537,   318,   339,   355,   357,   358,   359,
-     360,   361,   333,   362,   363,   365,   545,   364,   366,   367,
-     551,   556,   559,   560,   561,   562,   563,   586,   587,   588,
-     589,   590,   592,   593,   595,   596,   597,   599,   600,   416,
-     601,   602,   606,   609,   611,   612,   524,  -932,   613,   431,
-      41,  -932,   620,   623,   624,   625,   627,   439,   438,   630,
-     633,   636,   196,  -932,   639,   229,  -932,   640,   452,   642,
-     454,   455,    95,  -932,   646,   651,   652,   655,   656,   658,
-     660,  -932,    80,  -932,   662,   663,   495,   665,   679,   680,
-     500,  -932,    78,   681,   501,   502,  -932,   257,   688,   689,
-     102,  -932,   503,   690,   695,   513,   696,   514,   518,   701,
-     704,   520,   531,   705,   706,   708,   709,   528,  -932,   103,
-    -932,   710,   525,   158,  -932,  -932,  -932,   713,   712,   714,
-      31,    31,    31,  -932,   532,   715,   716,   718,   720,   723,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,   538,  -932,  -932,  -932,    25,   539,   540,   724,
-     728,   729,   730,   543,    64,   731,   733,   734,   735,   736,
-     737,   739,   740,   741,   742,  -932,   743,   744,   745,   549,
-     554,   748,  -932,   749,  -932,  -932,   750,   751,   555,   565,
-     566,  -932,  -932,   749,   567,   753,  -932,   569,  -932,   570,
-    -932,   571,  -932,  -932,  -932,   749,   749,   749,   572,   573,
-     574,   575,  -932,   576,   577,  -932,   578,   579,   580,  -932,
-    -932,   581,  -932,  -932,  -932,   582,    31,  -932,  -932,   583,
-     584,  -932,   585,  -932,  -932,    83,   621,  -932,  -932,    25,
-     591,   594,   598,  -932,  -932,   774,  -932,  -932,    31,   524,
-     103,  -932,  -932,  -932,  -932,   158,    41,   100,   100,   773,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   775,
-     777,   778,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-     780,   -44,    31,   210,   691,   781,   782,   785,   143,    84,
-     -39,   -23,   528,  -932,  -932,   786,  -932,  -932,   787,   788,
-    -932,  -932,  -932,  -932,  -932,   -65,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,   773,  -932,   214,   266,   285,
-     287,  -932,  -932,  -932,  -932,   792,   793,   794,   795,   796,
-    -932,   797,   798,  -932,  -932,  -932,   799,   800,   801,   802,
-    -932,   300,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,   303,  -932,   803,   804,  -932,  -932,   805,
-     807,  -932,  -932,   806,   810,  -932,  -932,   808,   812,  -932,
-    -932,   811,   813,  -932,  -932,  -932,    60,  -932,  -932,  -932,
-     814,  -932,  -932,  -932,    70,  -932,  -932,  -932,  -932,   313,
-    -932,  -932,  -932,   116,  -932,  -932,   815,   816,  -932,  -932,
-     817,   819,  -932,   820,   821,   822,   823,   824,   825,   327,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   826,
-     827,   828,  -932,  -932,  -932,  -932,   381,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   387,  -932,
-    -932,  -932,   829,  -932,   830,  -932,  -932,  -932,   390,  -932,
-    -932,  -932,  -932,  -932,   411,  -932,   192,  -932,   616,  -932,
-     831,   832,  -932,  -932,   833,   835,  -932,  -932,  -932,   834,
-    -932,   837,  -932,  -932,  -932,  -932,   836,   840,   841,   842,
-     643,   653,   648,   654,   657,   843,   659,   661,   847,   849,
-     851,   664,   666,   667,   668,   100,  -932,  -932,   100,  -932,
-     773,   196,  -932,   775,    78,  -932,   777,   257,  -932,   778,
-     320,  -932,   780,   -44,  -932,  -932,   210,  -932,   852,   691,
-    -932,   234,   781,  -932,    80,  -932,   782,   -38,  -932,   785,
-     670,   671,   672,   673,   674,   675,   143,  -932,   854,   856,
-     676,   677,   678,    84,  -932,   868,   869,   -39,  -932,   683,
-     870,   682,   872,   -23,  -932,  -932,   231,   786,  -932,  -932,
-     873,   879,   229,  -932,   787,    95,  -932,   788,   880,  -932,
-    -932,   205,   626,   693,   698,  -932,  -932,  -932,  -932,  -932,
-     700,  -932,  -932,   703,   722,   752,  -932,  -932,  -932,  -932,
-    -932,   428,  -932,   429,  -932,   893,  -932,   898,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,   442,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,   759,  -932,  -932,   903,
-    -932,  -932,  -932,  -932,  -932,   900,   907,  -932,  -932,  -932,
-    -932,  -932,   904,  -932,   457,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,   235,   761,  -932,  -932,  -932,  -932,   784,
-     790,  -932,  -932,   809,  -932,    31,  -932,  -932,   911,  -932,
-    -932,  -932,  -932,  -932,   461,  -932,  -932,  -932,  -932,  -932,
-    -932,   818,   463,  -932,   467,  -932,   838,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,   320,  -932,  -932,   924,   747,  -932,   234,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,   925,   839,   933,   231,  -932,  -932,  -932,  -932,  -932,
-    -932,   844,  -932,  -932,   776,  -932,   845,  -932,  -932,   966,
-    -932,  -932,   272,  -932,    39,   966,  -932,  -932,   974,   975,
-     976,  -932,   473,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-     989,   846,   850,   853,   990,    39,  -932,   848,  -932,  -932,
-    -932,   857,  -932,  -932,  -932
+     446,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,    60,    31,    69,    73,
+      95,   116,   148,   150,   184,   208,   225,   273,   282,   295,
+     315,   318,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,    31,  -126,    29,   201,    41,   508,   227,   268,
+      88,   114,    78,    -6,   -73,   614,     0,   175,  -937,   326,
+     335,   336,   334,   341,  -937,  -937,  -937,  -937,  -937,   362,
+    -937,   109,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,   378,   383,   385,   388,   389,   391,
+     393,   394,   395,   397,   398,   399,  -937,   402,   403,   404,
+    -937,  -937,  -937,   405,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+     406,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   173,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+     407,  -937,   174,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,   409,   413,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   199,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,   200,  -937,  -937,  -937,  -937,  -937,   414,  -937,   415,
+     417,  -937,  -937,  -937,  -937,  -937,  -937,   206,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,   361,   420,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,   418,  -937,  -937,   421,  -937,
+    -937,  -937,   423,  -937,  -937,   422,   426,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+     429,   430,  -937,  -937,  -937,  -937,   427,   433,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+     236,  -937,  -937,  -937,   436,  -937,  -937,   437,  -937,   439,
+     445,  -937,  -937,   449,   450,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,   265,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   275,
+    -937,  -937,  -937,   460,   276,  -937,  -937,  -937,  -937,    31,
+      31,  -937,   244,   464,   465,   466,   469,   470,  -937,    29,
+    -937,   471,   472,   473,   475,   476,   480,   291,   292,   293,
+     298,   305,   308,   309,   311,   304,   294,   316,   312,   497,
+     319,   322,   324,   500,   510,   512,   327,   513,   515,   520,
+     522,   523,   526,   527,   528,   530,   531,   533,   534,   535,
+     536,   537,   538,   349,   540,   541,   542,   543,   544,   559,
+     201,  -937,   560,   376,    41,  -937,   569,   571,   572,   573,
+     574,   386,   387,   575,   577,   578,   508,  -937,   581,   227,
+    -937,   583,   396,   584,   408,   410,   268,  -937,   585,   587,
+     597,   601,   602,   604,   605,  -937,    88,  -937,   606,   608,
+     419,   612,   613,   615,   424,  -937,    78,   617,   443,   448,
+    -937,    -6,   638,   641,   100,  -937,   451,   644,   645,   456,
+     647,   458,   459,   650,   651,   467,   468,   656,   657,   658,
+     661,   614,  -937,     0,  -937,   662,   491,   175,  -937,  -937,
+    -937,   663,   611,   679,    31,    31,    31,  -937,   477,   688,
+     693,   695,   696,   664,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,   511,  -937,  -937,  -937,
+      -1,   517,   518,  -937,   700,   707,   708,   709,   529,    -3,
+     714,   718,   719,   720,   721,   722,   724,   725,   727,   728,
+    -937,   730,   731,   732,   539,   547,   726,  -937,   736,  -937,
+    -937,   737,   738,   552,   553,   554,  -937,  -937,   736,   555,
+     742,  -937,   557,  -937,   558,  -937,   561,  -937,  -937,  -937,
+     736,   736,   736,   562,   563,   579,   580,  -937,   582,   586,
+    -937,   588,   589,   590,  -937,  -937,   591,  -937,  -937,  -937,
+     592,    31,  -937,  -937,   593,   594,  -937,   595,  -937,  -937,
+     223,   568,  -937,  -937,    -1,   596,   598,   599,  -937,  -937,
+     747,  -937,  -937,    31,   201,     0,  -937,  -937,  -937,  -937,
+     175,    41,   101,   101,   746,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,   763,   764,   767,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,   769,   -37,    31,   159,   689,
+     773,   788,   789,   -16,   144,   -43,    30,   614,  -937,  -937,
+     790,  -937,  -937,   791,   792,  -937,  -937,  -937,  -937,  -937,
+     -56,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+     746,  -937,   279,   287,   306,   307,  -937,  -937,  -937,  -937,
+     796,   797,   798,   799,   800,  -937,   801,   802,  -937,  -937,
+    -937,   804,   805,   806,   807,  -937,   310,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   313,  -937,
+     808,   809,  -937,  -937,   810,   812,  -937,  -937,   811,   815,
+    -937,  -937,   813,   817,  -937,  -937,   816,   818,  -937,  -937,
+    -937,    43,  -937,  -937,  -937,   819,  -937,  -937,  -937,   118,
+    -937,  -937,  -937,  -937,   320,  -937,  -937,  -937,   143,  -937,
+    -937,   820,   821,  -937,  -937,   822,   824,  -937,   825,   826,
+     827,   828,   829,   830,   321,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,   831,   832,   833,  -937,  -937,  -937,
+    -937,   323,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,   338,  -937,  -937,  -937,   834,  -937,   835,
+    -937,  -937,  -937,   351,  -937,  -937,  -937,  -937,  -937,   352,
+    -937,   161,  -937,   620,  -937,   836,   837,  -937,  -937,   838,
+     840,  -937,  -937,  -937,   839,  -937,   842,  -937,  -937,  -937,
+    -937,   841,   845,   846,   847,   652,   659,   660,   665,   666,
+     848,   668,   669,   849,   852,   853,   670,   671,   672,   673,
+     101,  -937,  -937,   101,  -937,   746,   508,  -937,   763,    78,
+    -937,   764,    -6,  -937,   767,   630,  -937,   769,   -37,  -937,
+    -937,   159,  -937,   854,   689,  -937,   126,   773,  -937,    88,
+    -937,   788,   -73,  -937,   789,   675,   676,   677,   678,   680,
+     681,   -16,  -937,   855,   862,   682,   683,   684,   144,  -937,
+     869,   875,   -43,  -937,   685,   876,   690,   879,    30,  -937,
+    -937,   221,   790,  -937,  -937,   881,   886,   227,  -937,   791,
+     268,  -937,   792,   891,  -937,  -937,   218,   648,   697,   704,
+    -937,  -937,  -937,  -937,  -937,   713,  -937,  -937,   740,   741,
+     749,  -937,  -937,  -937,  -937,  -937,   353,  -937,   354,  -937,
+     892,  -937,   903,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,   355,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,   754,  -937,  -937,   908,  -937,  -937,  -937,  -937,
+    -937,   905,   912,  -937,  -937,  -937,  -937,  -937,   909,  -937,
+     365,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   257,
+     756,  -937,  -937,  -937,  -937,   765,   785,  -937,  -937,   794,
+    -937,    31,  -937,  -937,   915,  -937,  -937,  -937,  -937,  -937,
+     367,  -937,  -937,  -937,  -937,  -937,  -937,   814,   369,  -937,
+     373,  -937,   823,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   630,
+    -937,  -937,   916,   760,  -937,   126,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,   977,   843,   979,
+     221,  -937,  -937,  -937,  -937,  -937,  -937,   850,  -937,  -937,
+     980,  -937,   851,  -937,  -937,   991,  -937,  -937,   172,  -937,
+      12,   991,  -937,  -937,   995,   998,  1002,  -937,   375,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  1004,   844,   856,   857,
+    1006,    12,  -937,   860,  -937,  -937,  -937,   861,  -937,  -937,
+    -937
   };
 
   const short
@@ -4496,174 +4506,175 @@ 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,   161,     9,
-     310,    11,   486,    13,   511,    15,   541,    17,   411,    19,
-     419,    21,   456,    23,   275,    25,   654,    27,   721,    29,
-     710,    31,    49,    43,     0,     0,     0,     0,     0,     0,
-     543,     0,   421,   458,     0,     0,     0,     0,    51,     0,
-      50,     0,     0,    44,    70,   719,   702,   704,   706,     0,
-      69,     0,    62,    64,    66,    67,    68,    65,   125,   708,
-     159,   173,   175,   177,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   157,     0,     0,     0,
-     142,   149,   151,   302,   409,   448,   499,   501,   359,   367,
-     248,   265,   256,   241,   578,   533,   267,   286,   599,     0,
-     623,   636,   652,   153,   155,   726,   124,     0,    74,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,   112,   113,
-     114,    85,   118,   119,   120,   121,   122,   123,   116,   117,
-     110,    88,    89,    90,    91,   107,    92,    94,    93,    98,
-      99,    86,   111,    87,    96,    97,   105,   106,   108,    95,
-     100,   101,   102,   103,   104,   109,   115,   170,     0,   169,
-       0,   163,   165,   166,   167,   168,   478,   503,   349,   351,
-     353,     0,     0,   357,   355,   572,   348,   314,   315,   316,
-     317,   318,   319,   320,   321,   337,   338,   339,   342,   343,
-     344,   345,   346,   347,   340,   341,     0,   312,   325,   326,
-     327,   330,   331,   333,   328,   329,   322,   323,   335,   336,
-     324,   332,   334,   497,   496,   492,   493,   491,     0,   488,
-     490,   494,   495,   526,     0,   529,     0,     0,   525,   519,
-     520,   518,   523,   524,     0,   513,   515,   516,   521,   522,
-     517,   570,   558,   560,   562,   564,   566,   568,   557,   554,
-     555,   556,     0,   544,   545,   549,   550,   547,   551,   552,
-     553,   548,     0,   438,   221,     0,   442,   440,   445,     0,
-     434,   435,     0,   422,   423,   425,   437,   426,   427,   428,
-     444,   429,   430,   431,   432,   433,   472,     0,     0,   470,
-     471,   474,   475,     0,   459,   460,   462,   463,   464,   465,
-     466,   467,   468,   469,   282,   284,   279,     0,   277,   280,
-     281,     0,   677,   679,     0,   682,     0,     0,   686,   690,
-       0,     0,   694,   696,   698,   700,   675,   673,   674,     0,
-     656,   658,   659,   660,   661,   662,   663,   664,   665,   666,
-     667,   668,   669,   670,   671,   672,     0,   723,   725,   716,
-       0,     0,   712,   714,   715,    48,     0,     0,    41,     0,
-       0,     0,     0,     0,     0,    59,     0,    61,     0,     0,
+      39,     3,    37,    38,    60,     5,    72,     7,   163,     9,
+     312,    11,   490,    13,   515,    15,   545,    17,   415,    19,
+     423,    21,   460,    23,   277,    25,   658,    27,   725,    29,
+     714,    31,    49,    43,     0,     0,     0,     0,     0,     0,
+     547,     0,   425,   462,     0,     0,     0,     0,    51,     0,
+      50,     0,     0,    44,    70,   723,   706,   708,   710,     0,
+      69,     0,    62,    64,    66,    67,    68,    65,   126,   712,
+     161,   175,   177,   179,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   159,     0,     0,     0,
+     143,   150,   152,     0,   304,   413,   452,   503,   505,   362,
+     370,   250,   267,   258,   243,   582,   537,   269,   288,   603,
+       0,   627,   640,   656,   154,   156,   730,   125,     0,    74,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,   112,
+     113,   114,    85,   118,   119,   120,   121,   122,   123,   116,
+     117,   124,   110,    88,    89,    90,    91,   107,    92,    94,
+      93,    98,    99,    86,   111,    87,    96,    97,   105,   106,
+     108,    95,   100,   101,   102,   103,   104,   109,   115,   172,
+       0,   171,     0,   165,   167,   168,   169,   170,   482,   507,
+     352,   354,   356,     0,     0,   360,   358,   576,   351,   316,
+     317,   318,   319,   320,   321,   322,   323,   339,   340,   341,
+     344,   345,   346,   347,   348,   349,   342,   343,   350,     0,
+     314,   327,   328,   329,   332,   333,   335,   330,   331,   324,
+     325,   337,   338,   326,   334,   336,   501,   500,   496,   497,
+     495,     0,   492,   494,   498,   499,   530,     0,   533,     0,
+       0,   529,   523,   524,   522,   527,   528,     0,   517,   519,
+     520,   525,   526,   521,   574,   562,   564,   566,   568,   570,
+     572,   561,   558,   559,   560,     0,   548,   549,   553,   554,
+     551,   555,   556,   557,   552,     0,   442,   223,     0,   446,
+     444,   449,     0,   438,   439,     0,   426,   427,   429,   441,
+     430,   431,   432,   448,   433,   434,   435,   436,   437,   476,
+       0,     0,   474,   475,   478,   479,     0,   463,   464,   466,
+     467,   468,   469,   470,   471,   472,   473,   284,   286,   281,
+       0,   279,   282,   283,     0,   681,   683,     0,   686,     0,
+       0,   690,   694,     0,     0,   698,   700,   702,   704,   679,
+     677,   678,     0,   660,   662,   663,   664,   665,   666,   667,
+     668,   669,   670,   671,   672,   673,   674,   675,   676,     0,
+     727,   729,   720,     0,     0,   716,   718,   719,    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,     0,     0,     0,     0,     0,
        0,     0,     0,     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,   162,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   311,     0,     0,   487,     0,     0,     0,
-       0,     0,     0,   512,     0,     0,     0,     0,     0,     0,
-       0,   542,     0,   412,     0,     0,     0,     0,     0,     0,
-       0,   420,     0,     0,     0,     0,   457,     0,     0,     0,
-       0,   276,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   655,     0,
-     722,     0,     0,     0,   711,    52,    45,     0,     0,     0,
-       0,     0,     0,    63,     0,     0,     0,     0,     0,     0,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,     0,   139,   140,   141,     0,     0,     0,     0,
+       0,    73,     0,     0,     0,   164,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   313,     0,     0,
+     491,     0,     0,     0,     0,     0,     0,   516,     0,     0,
+       0,     0,     0,     0,     0,   546,     0,   416,     0,     0,
+       0,     0,     0,     0,     0,   424,     0,     0,     0,     0,
+     461,     0,     0,     0,     0,   278,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   622,     0,     0,     0,     0,
-       0,     0,    75,     0,   172,   164,     0,     0,     0,     0,
-       0,   365,   366,     0,     0,     0,   313,     0,   489,     0,
-     528,     0,   531,   532,   514,     0,     0,     0,     0,     0,
-       0,     0,   546,     0,     0,   436,     0,     0,     0,   447,
-     424,     0,   476,   477,   461,     0,     0,   278,   676,     0,
-       0,   681,     0,   684,   685,     0,     0,   692,   693,     0,
-       0,     0,     0,   657,   724,     0,   718,   713,     0,     0,
-       0,   703,   705,   707,   126,     0,     0,     0,     0,   179,
-     158,   144,   145,   146,   147,   148,   143,   150,   152,   304,
-     413,   450,    42,   500,   502,   361,   362,   363,   364,   360,
-     369,     0,    49,     0,     0,     0,   535,   269,     0,     0,
-       0,     0,     0,   154,   156,     0,    53,   171,   480,   505,
-     350,   352,   354,   358,   356,     0,   498,   527,   530,   571,
-     559,   561,   563,   565,   567,   569,   439,   222,   443,   441,
-     446,   473,   283,   285,   678,   680,   683,   688,   689,   687,
-     691,   695,   697,   699,   701,   179,    46,     0,     0,     0,
-       0,   208,   214,   216,   218,     0,     0,     0,     0,     0,
-     232,     0,     0,   235,   237,   239,     0,     0,     0,     0,
-     207,     0,   185,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   199,   206,   200,   201,   202,   197,   198,
-     203,   204,   205,     0,   183,     0,   180,   181,   308,     0,
-     305,   306,   417,     0,   414,   415,   454,     0,   451,   452,
-     373,     0,   370,   371,   254,   255,     0,   250,   252,   253,
-       0,   263,   264,   260,     0,   258,   261,   262,   246,     0,
-     243,   245,   582,     0,   580,   539,     0,   536,   537,   273,
-       0,   270,   271,     0,     0,     0,     0,     0,     0,     0,
-     288,   290,   291,   292,   293,   294,   295,   612,   618,     0,
-       0,     0,   611,   608,   609,   610,     0,   601,   603,   606,
-     604,   605,   607,   632,   634,   631,   629,   630,     0,   625,
-     627,   628,     0,   647,     0,   650,   643,   644,     0,   638,
-     640,   641,   642,   645,     0,   730,     0,   728,    55,   484,
-       0,   481,   482,   509,     0,   506,   507,   576,   575,     0,
-     574,     0,    71,   720,   709,   160,     0,     0,     0,     0,
+       0,     0,   659,     0,   726,     0,     0,     0,   715,    52,
+      45,     0,     0,     0,     0,     0,     0,    63,     0,     0,
+       0,     0,     0,     0,   128,   129,   130,   131,   132,   133,
+     134,   135,   136,   137,   138,   139,     0,   140,   141,   142,
+       0,     0,     0,   158,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   174,   176,     0,   178,
-       0,     0,   303,     0,   421,   410,     0,   458,   449,     0,
-       0,   368,     0,     0,   249,   266,     0,   257,     0,     0,
-     242,   584,     0,   579,   543,   534,     0,     0,   268,     0,
-       0,     0,     0,     0,     0,     0,     0,   287,     0,     0,
-       0,     0,     0,     0,   600,     0,     0,     0,   624,     0,
-       0,     0,     0,     0,   637,   653,     0,     0,   727,    57,
-       0,    56,     0,   479,     0,     0,   504,     0,     0,   573,
-     717,     0,     0,     0,     0,   220,   223,   224,   225,   226,
-       0,   234,   227,     0,     0,     0,   229,   230,   231,   228,
-     186,     0,   182,     0,   307,     0,   416,     0,   453,   408,
-     388,   389,   390,   392,   393,   394,   381,   382,   397,   398,
-     399,   402,   403,   404,   405,   406,   407,   400,   401,   377,
-     378,   379,   380,   386,   387,   385,   391,     0,   375,   383,
-     395,   396,   384,   372,   251,   259,     0,   244,   596,     0,
-     594,   595,   591,   592,   593,     0,   585,   586,   588,   589,
-     590,   581,     0,   538,     0,   272,   296,   297,   298,   299,
-     300,   301,   289,     0,     0,   617,   620,   621,   602,     0,
-       0,   626,   646,     0,   649,     0,   639,   744,     0,   742,
-     740,   734,   738,   739,     0,   732,   736,   737,   735,   729,
-      54,     0,     0,   483,     0,   508,     0,   210,   211,   212,
-     213,   209,   215,   217,   219,   233,   236,   238,   240,   184,
-     309,   418,   455,     0,   374,   247,     0,     0,   583,     0,
-     540,   274,   614,   615,   616,   613,   619,   633,   635,   648,
-     651,     0,     0,     0,     0,   731,    58,   485,   510,   577,
-     376,     0,   598,   587,     0,   741,     0,   733,   597,     0,
-     743,   748,     0,   746,     0,     0,   745,   757,     0,     0,
-       0,   762,     0,   750,   752,   753,   754,   755,   756,   747,
-       0,     0,     0,     0,     0,     0,   749,     0,   759,   760,
-     761,     0,   751,   758,   763
+     626,     0,     0,     0,     0,     0,     0,    75,     0,   174,
+     166,     0,     0,     0,     0,     0,   368,   369,     0,     0,
+       0,   315,     0,   493,     0,   532,     0,   535,   536,   518,
+       0,     0,     0,     0,     0,     0,     0,   550,     0,     0,
+     440,     0,     0,     0,   451,   428,     0,   480,   481,   465,
+       0,     0,   280,   680,     0,     0,   685,     0,   688,   689,
+       0,     0,   696,   697,     0,     0,     0,     0,   661,   728,
+       0,   722,   717,     0,     0,     0,   707,   709,   711,   127,
+       0,     0,     0,     0,   181,   160,   145,   146,   147,   148,
+     149,   144,   151,   153,   306,   417,   454,    42,   504,   506,
+     364,   365,   366,   367,   363,   372,     0,    49,     0,     0,
+       0,   539,   271,     0,     0,     0,     0,     0,   155,   157,
+       0,    53,   173,   484,   509,   353,   355,   357,   361,   359,
+       0,   502,   531,   534,   575,   563,   565,   567,   569,   571,
+     573,   443,   224,   447,   445,   450,   477,   285,   287,   682,
+     684,   687,   692,   693,   691,   695,   699,   701,   703,   705,
+     181,    46,     0,     0,     0,     0,   210,   216,   218,   220,
+       0,     0,     0,     0,     0,   234,     0,     0,   237,   239,
+     241,     0,     0,     0,     0,   209,     0,   187,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   201,   208,
+     202,   203,   204,   199,   200,   205,   206,   207,     0,   185,
+       0,   182,   183,   310,     0,   307,   308,   421,     0,   418,
+     419,   458,     0,   455,   456,   376,     0,   373,   374,   256,
+     257,     0,   252,   254,   255,     0,   265,   266,   262,     0,
+     260,   263,   264,   248,     0,   245,   247,   586,     0,   584,
+     543,     0,   540,   541,   275,     0,   272,   273,     0,     0,
+       0,     0,     0,     0,     0,   290,   292,   293,   294,   295,
+     296,   297,   616,   622,     0,     0,     0,   615,   612,   613,
+     614,     0,   605,   607,   610,   608,   609,   611,   636,   638,
+     635,   633,   634,     0,   629,   631,   632,     0,   651,     0,
+     654,   647,   648,     0,   642,   644,   645,   646,   649,     0,
+     734,     0,   732,    55,   488,     0,   485,   486,   513,     0,
+     510,   511,   580,   579,     0,   578,     0,    71,   724,   713,
+     162,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   176,   178,     0,   180,     0,     0,   305,     0,   425,
+     414,     0,   462,   453,     0,     0,   371,     0,     0,   251,
+     268,     0,   259,     0,     0,   244,   588,     0,   583,   547,
+     538,     0,     0,   270,     0,     0,     0,     0,     0,     0,
+       0,     0,   289,     0,     0,     0,     0,     0,     0,   604,
+       0,     0,     0,   628,     0,     0,     0,     0,     0,   641,
+     657,     0,     0,   731,    57,     0,    56,     0,   483,     0,
+       0,   508,     0,     0,   577,   721,     0,     0,     0,     0,
+     222,   225,   226,   227,   228,     0,   236,   229,     0,     0,
+       0,   231,   232,   233,   230,   188,     0,   184,     0,   309,
+       0,   420,     0,   457,   412,   391,   392,   393,   395,   396,
+     397,   384,   385,   400,   401,   402,   405,   406,   407,   408,
+     409,   410,   403,   404,   411,   380,   381,   382,   383,   389,
+     390,   388,   394,     0,   378,   386,   398,   399,   387,   375,
+     253,   261,     0,   246,   600,     0,   598,   599,   595,   596,
+     597,     0,   589,   590,   592,   593,   594,   585,     0,   542,
+       0,   274,   298,   299,   300,   301,   302,   303,   291,     0,
+       0,   621,   624,   625,   606,     0,     0,   630,   650,     0,
+     653,     0,   643,   748,     0,   746,   744,   738,   742,   743,
+       0,   736,   740,   741,   739,   733,    54,     0,     0,   487,
+       0,   512,     0,   212,   213,   214,   215,   211,   217,   219,
+     221,   235,   238,   240,   242,   186,   311,   422,   459,     0,
+     377,   249,     0,     0,   587,     0,   544,   276,   618,   619,
+     620,   617,   623,   637,   639,   652,   655,     0,     0,     0,
+       0,   735,    58,   489,   514,   581,   379,     0,   602,   591,
+       0,   745,     0,   737,   601,     0,   747,   752,     0,   750,
+       0,     0,   749,   761,     0,     0,     0,   766,     0,   754,
+     756,   757,   758,   759,   760,   751,     0,     0,     0,     0,
+       0,     0,   753,     0,   763,   764,   765,     0,   755,   762,
+     767
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,    -5,  -932,   415,
-    -932,  -932,  -932,  -932,  -932,  -932,   297,  -932,  -533,  -932,
-    -932,  -932,   -74,  -932,  -932,  -932,   603,  -932,  -932,  -932,
-    -932,   331,   542,  -932,  -932,   -62,   -42,   -40,   -34,   -30,
-     -29,   -27,   -26,     4,     5,     7,  -932,     8,     9,    10,
-      11,  -932,   343,    21,  -932,    23,  -932,    24,  -932,    26,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,   330,   535,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   248,  -932,
-      61,  -932,  -652,    67,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,   -66,  -932,  -686,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,    40,  -932,  -932,
-    -932,  -932,  -932,    50,  -675,  -932,  -932,  -932,  -932,    48,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,    37,  -932,
-    -932,  -932,    43,   504,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,    35,  -932,  -932,  -932,  -932,  -932,  -932,  -931,  -932,
-    -932,  -932,    62,  -932,  -932,  -932,    66,   541,  -932,  -932,
-    -929,  -932,  -928,  -932,    30,  -932,    32,  -932,    36,  -932,
-    -932,  -932,  -927,  -932,  -932,  -932,  -932,    63,  -932,  -932,
-    -145,   941,  -932,  -932,  -932,  -932,  -932,    71,  -932,  -932,
-    -932,    72,  -932,   544,  -932,   -76,  -932,  -932,  -932,  -932,
-    -932,   -70,  -932,  -932,  -932,  -932,  -932,   -24,  -932,  -932,
-    -932,    69,  -932,  -932,  -932,    74,  -932,   546,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,    15,
-    -932,  -932,  -932,    22,   548,  -932,  -932,   -58,  -932,    -8,
-    -932,  -932,  -932,  -932,  -932,    18,  -932,  -932,  -932,    33,
-     547,  -932,  -932,  -932,  -932,  -932,  -932,  -932,   -47,  -932,
-    -932,  -932,    75,  -932,  -932,  -932,    79,  -932,   550,   334,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -926,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,    85,  -932,  -932,  -932,  -131,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,    57,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,    58,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,    51,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,   346,   553,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,  -932,   385,   557,  -932,  -932,  -932,  -932,  -932,  -932,
-    -932,   391,   552,   -72,  -932,  -932,    55,  -932,  -932,  -120,
-    -932,  -932,  -932,  -932,  -932,  -932,  -140,  -932,  -932,  -159,
-    -932,  -932,  -932,  -932,  -932,  -932,  -932
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,    -5,  -937,   428,
+    -937,  -937,  -937,  -937,  -937,  -937,   277,  -937,  -535,  -937,
+    -937,  -937,   -74,  -937,  -937,  -937,   600,  -937,  -937,  -937,
+    -937,   337,   548,  -937,  -937,   -62,   -42,   -40,   -34,   -30,
+     -29,   -27,   -26,     4,     5,     7,  -937,     8,     9,    10,
+      11,  -937,   350,    21,  -937,    23,  -937,    24,  -937,    26,
+    -937,    36,  -937,  -937,  -937,  -937,  -937,  -937,   332,   546,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   261,
+    -937,    62,  -937,  -657,    72,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,   -66,  -937,  -691,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,    49,  -937,
+    -937,  -937,  -937,  -937,    56,  -680,  -937,  -937,  -937,  -937,
+      54,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,    42,
+    -937,  -937,  -937,    45,   504,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,    38,  -937,  -937,  -937,  -937,  -937,  -937,  -936,
+    -937,  -937,  -937,    74,  -937,  -937,  -937,    75,   549,  -937,
+    -937,  -934,  -937,  -933,  -937,    32,  -937,    40,  -937,    39,
+    -937,  -937,  -937,  -932,  -937,  -937,  -937,  -937,    63,  -937,
+    -937,  -136,   953,  -937,  -937,  -937,  -937,  -937,    77,  -937,
+    -937,  -937,    80,  -937,   525,  -937,   -76,  -937,  -937,  -937,
+    -937,  -937,   -70,  -937,  -937,  -937,  -937,  -937,   -24,  -937,
+    -937,  -937,    81,  -937,  -937,  -937,    84,  -937,   521,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+      17,  -937,  -937,  -937,    44,   566,  -937,  -937,   -58,  -937,
+      -8,  -937,  -937,  -937,  -937,  -937,    25,  -937,  -937,  -937,
+      28,   567,  -937,  -937,  -937,  -937,  -937,  -937,  -937,   -47,
+    -937,  -937,  -937,    83,  -937,  -937,  -937,    79,  -937,   550,
+     329,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -931,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,    85,  -937,  -937,  -937,  -110,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,    68,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,    65,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,    61,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,   356,   545,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,  -937,   390,   524,  -937,  -937,  -937,  -937,  -937,
+    -937,  -937,   400,   551,   -72,  -937,  -937,    64,  -937,  -937,
+    -122,  -937,  -937,  -937,  -937,  -937,  -937,  -139,  -937,  -937,
+    -157,  -937,  -937,  -937,  -937,  -937,  -937,  -937
   };
 
   const short
@@ -4671,172 +4682,173 @@ 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,   693,    92,    93,    43,    72,    89,    90,   717,   908,
-    1010,  1011,   780,    45,    74,   101,   102,   103,   410,    47,
-      75,   157,   158,   159,   418,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   440,   686,   176,   441,   177,   442,   178,   463,   179,
-     464,   180,   436,   181,   420,    49,    76,   210,   211,   212,
-     468,   213,   182,   421,   183,   422,   184,   423,   805,   806,
-     807,   948,   781,   782,   783,   926,  1151,   784,   927,   785,
-     928,   786,   929,   787,   788,   505,   789,   790,   791,   792,
-     793,   794,   795,   796,   797,   798,   935,   799,   800,   938,
-     801,   939,   802,   940,   185,   453,   839,   840,   841,   968,
-     186,   450,   826,   827,   828,   829,   187,   452,   834,   835,
-     836,   837,   188,   451,   189,   456,   850,   851,   852,   977,
-      65,    84,   357,   358,   359,   518,   360,   519,   190,   457,
-     859,   860,   861,   862,   863,   864,   865,   866,   191,   443,
-     809,   810,   811,   951,    51,    77,   246,   247,   248,   474,
-     249,   475,   250,   476,   251,   480,   252,   479,   192,   448,
-     699,   254,   255,   193,   449,   821,   822,   823,   960,  1077,
-    1078,   194,   444,    59,    81,   813,   814,   815,   954,    61,
-      82,   322,   323,   324,   325,   326,   327,   328,   504,   329,
-     508,   330,   507,   331,   332,   509,   333,   195,   445,   817,
-     818,   819,   957,    63,    83,   343,   344,   345,   346,   347,
-     513,   348,   349,   350,   351,   257,   472,   910,   911,   912,
-    1012,    53,    78,   268,   269,   270,   484,   196,   446,   197,
-     447,   260,   473,   914,   915,   916,  1015,    55,    79,   284,
-     285,   286,   487,   287,   288,   489,   289,   290,   198,   455,
-     846,   847,   848,   974,    57,    80,   302,   303,   304,   305,
-     495,   306,   496,   307,   497,   308,   498,   309,   499,   310,
-     500,   311,   494,   262,   481,   919,   920,  1018,   199,   454,
-     843,   844,   971,  1095,  1096,  1097,  1098,  1099,  1166,  1100,
-     200,   458,   876,   877,   878,   988,  1175,   879,   880,   989,
-     881,   882,   201,   202,   460,   888,   889,   890,   995,   891,
-     996,   203,   461,   898,   899,   900,   901,  1000,   902,   903,
-    1002,   204,   462,    67,    85,   379,   380,   381,   382,   523,
-     383,   524,   384,   385,   526,   386,   387,   388,   529,   749,
-     389,   530,   390,   391,   392,   533,   393,   534,   394,   535,
-     395,   536,   104,   412,   105,   413,   106,   414,   205,   419,
-      71,    87,   401,   402,   403,   541,   404,   107,   411,    69,
-      86,   396,   397,   206,   465,   906,   907,  1006,  1134,  1135,
-    1136,  1137,  1183,  1138,  1181,  1202,  1203,  1204,  1212,  1213,
-    1214,  1220,  1215,  1216,  1217,  1218,  1224
+      73,   698,    92,    93,    43,    72,    89,    90,   722,   913,
+    1015,  1016,   785,    45,    74,   101,   102,   103,   413,    47,
+      75,   158,   159,   160,   421,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     176,   443,   691,   177,   444,   178,   445,   179,   467,   180,
+     468,   181,   182,   439,   183,   423,    49,    76,   212,   213,
+     214,   472,   215,   184,   424,   185,   425,   186,   426,   810,
+     811,   812,   953,   786,   787,   788,   931,  1157,   789,   932,
+     790,   933,   791,   934,   792,   793,   509,   794,   795,   796,
+     797,   798,   799,   800,   801,   802,   803,   940,   804,   805,
+     943,   806,   944,   807,   945,   187,   457,   844,   845,   846,
+     973,   188,   454,   831,   832,   833,   834,   189,   456,   839,
+     840,   841,   842,   190,   455,   191,   460,   855,   856,   857,
+     982,    65,    84,   360,   361,   362,   522,   363,   523,   192,
+     461,   864,   865,   866,   867,   868,   869,   870,   871,   193,
+     447,   814,   815,   816,   956,    51,    77,   249,   250,   251,
+     478,   252,   479,   253,   480,   254,   484,   255,   483,   194,
+     452,   704,   257,   258,   195,   453,   826,   827,   828,   965,
+    1083,  1084,   196,   448,    59,    81,   818,   819,   820,   959,
+      61,    82,   325,   326,   327,   328,   329,   330,   331,   508,
+     332,   512,   333,   511,   334,   335,   513,   336,   197,   449,
+     822,   823,   824,   962,    63,    83,   346,   347,   348,   349,
+     350,   517,   351,   352,   353,   354,   260,   476,   915,   916,
+     917,  1017,    53,    78,   271,   272,   273,   488,   198,   450,
+     199,   451,   263,   477,   919,   920,   921,  1020,    55,    79,
+     287,   288,   289,   491,   290,   291,   493,   292,   293,   200,
+     459,   851,   852,   853,   979,    57,    80,   305,   306,   307,
+     308,   499,   309,   500,   310,   501,   311,   502,   312,   503,
+     313,   504,   314,   498,   265,   485,   924,   925,  1023,   201,
+     458,   848,   849,   976,  1101,  1102,  1103,  1104,  1105,  1172,
+    1106,   202,   462,   881,   882,   883,   993,  1181,   884,   885,
+     994,   886,   887,   203,   204,   464,   893,   894,   895,  1000,
+     896,  1001,   205,   465,   903,   904,   905,   906,  1005,   907,
+     908,  1007,   206,   466,    67,    85,   382,   383,   384,   385,
+     527,   386,   528,   387,   388,   530,   389,   390,   391,   533,
+     754,   392,   534,   393,   394,   395,   537,   396,   538,   397,
+     539,   398,   540,   104,   415,   105,   416,   106,   417,   207,
+     422,    71,    87,   404,   405,   406,   545,   407,   107,   414,
+      69,    86,   399,   400,   208,   469,   911,   912,  1011,  1140,
+    1141,  1142,  1143,  1189,  1144,  1187,  1208,  1209,  1210,  1218,
+    1219,  1220,  1226,  1221,  1222,  1223,  1224,  1230
   };
 
   const short
   Dhcp6Parser::yytable_[] =
   {
-     100,   156,   209,   226,   264,   278,   298,   341,   320,   339,
-     356,   376,    40,   342,   398,   227,   321,   340,   214,   258,
-     271,   282,   300,   873,   334,   352,   803,   377,   833,  1070,
-     261,  1071,  1072,  1076,  1082,   228,    33,   229,    34,    94,
-      35,   416,   292,   230,   136,   137,   417,   231,   232,   917,
-     233,   234,    32,   256,   267,   281,   299,   207,   208,   466,
-     136,   137,   470,   963,   467,   824,   964,   471,   215,   259,
-     272,   283,   301,   966,   335,   353,   967,   378,   354,   355,
-     723,   235,   236,    44,   237,   238,   239,   240,   241,    46,
-     482,    91,   729,   730,   731,   483,   883,   884,   242,   313,
-     243,   244,   485,   245,    48,   867,   134,   486,   265,   279,
-     266,   280,    50,   253,   766,   892,   893,   894,   492,   972,
-      52,   761,   973,   493,   136,   137,   762,   763,   764,   765,
-     766,   767,   768,   769,   770,   771,   772,   773,   774,   775,
-     776,   777,   778,   779,   314,   135,   315,   316,   825,    54,
-     317,   318,   319,    99,    99,   695,   696,   697,   698,    56,
-     135,   136,   137,   136,   137,   520,   314,   136,   137,   895,
-     521,   399,   400,   273,   274,   275,   276,   277,   136,   137,
-      58,   291,    60,   681,   682,   683,   684,   292,   293,   294,
-     295,   296,   297,    95,   537,  1007,   539,   223,  1008,   538,
-     224,   540,   543,    96,    97,    98,  1207,   544,    62,  1208,
-    1209,  1210,  1211,   868,   869,   870,   871,   466,   354,   355,
-     685,    99,   922,    36,    37,    38,    39,  1147,  1148,  1149,
-    1150,    64,  1070,    99,  1071,  1072,  1076,  1082,   747,   748,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,    66,    68,   127,   128,   129,   130,   131,   132,    70,
-     405,   135,   853,   854,   855,   856,   857,   858,   155,   539,
-      99,   216,    99,   217,   923,  1205,    99,   406,  1206,   136,
-     137,   218,   219,   220,   221,   222,   138,    99,   543,   408,
-     470,   833,    99,   924,   135,   925,  1041,   314,   223,   135,
-     314,   224,   145,   945,   409,   263,   945,   873,   946,   225,
-     407,   947,   136,   137,   136,   137,   969,   136,   137,   824,
-     831,   970,   832,   314,   336,   315,   316,   337,   338,   415,
-     986,   223,   424,   425,   224,   987,   426,  1088,  1089,   427,
-     136,   137,   100,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,   153,   154,
-     428,  1172,  1173,  1174,   114,   115,   116,   117,   118,   119,
-     120,   121,   122,   123,   124,   429,   430,   127,   128,   129,
-     130,   131,   132,   133,   993,   135,   314,   431,    99,   994,
-     997,   502,   156,  1003,   501,   998,   209,  1127,  1004,  1128,
-    1129,   545,   546,   136,   137,   432,   219,   220,   226,   222,
-     138,   264,   214,   433,   537,   503,   434,   435,   278,  1005,
-     227,    99,   223,    99,   258,   224,    99,   271,   298,   437,
-     438,   945,   482,   225,   282,   261,  1159,  1160,   320,   439,
-     228,   341,   229,   339,   300,  1163,   321,   342,   230,    99,
-    1164,   340,   231,   232,   334,   233,   234,   459,   256,   352,
-     520,   267,   215,   376,  1184,  1171,   485,   398,   281,  1185,
-     492,  1187,   469,   477,   259,  1188,  1225,   272,   299,   377,
-     478,  1226,   153,   154,   283,   488,   235,   236,   490,   237,
-     238,   239,   240,   241,   301,   491,   506,   510,   511,   512,
-     547,   514,   515,   242,   335,   243,   244,   516,   245,   353,
-     517,   560,    99,   522,   525,   265,   527,   266,   253,   528,
-     531,   532,   279,   542,   280,   548,   549,   550,   568,   378,
-     551,   552,   561,   554,   555,   108,   109,   556,   557,   110,
-     558,   559,   111,   112,   113,   671,   672,   673,   562,   572,
-     563,   564,   565,   566,   567,   576,   569,   570,   571,   573,
-     577,   574,   575,   578,   579,   580,   581,   582,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     583,   584,   585,   586,   587,   156,   588,   589,   398,   590,
-     591,   592,   209,   593,   594,   596,   597,   136,   137,   595,
-     598,   136,   137,   599,   138,   600,   601,   603,   214,   139,
-     140,   141,   142,   143,   606,   144,   604,   607,   608,   609,
-     145,   610,   611,   612,   613,   872,   885,   614,   376,   146,
-     615,   743,   147,   617,   619,   620,   621,   622,   623,   148,
-     625,   874,   886,   896,   377,   626,   627,   149,   150,   628,
-     629,   151,   630,   756,   631,   152,   633,   634,   215,   636,
-     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
-     371,   372,   373,   637,   638,   641,   153,   154,   635,   155,
-     374,   375,   645,   646,   649,   639,   642,   643,   648,   650,
-     652,   875,   887,   897,   378,   655,   651,   653,   656,   659,
-     660,   654,   661,   662,   665,   657,    99,   668,   666,   669,
-      99,   670,   675,   676,   674,   677,   658,   678,   679,   689,
-     680,   687,   688,   690,   691,   694,   700,    34,   701,   702,
-     703,   713,   705,   704,   706,   707,   714,   720,   708,   709,
-     710,   711,   712,   715,   716,   718,   719,   721,   722,   724,
-     725,   726,   727,   728,   732,   733,   734,   735,   736,   737,
-     738,   739,   740,   741,   742,   744,   745,   746,   750,   755,
-     804,  1199,   808,   752,   812,   816,   753,   820,   842,   845,
-     754,   838,   849,   905,   909,   913,   930,   931,   932,   933,
-     934,   936,   937,   941,   942,   943,   944,   950,  1009,   949,
-     953,   952,   955,   956,   958,   959,   962,   961,  1152,   976,
-     965,   975,   979,   978,   980,   981,   982,   983,   984,   985,
-     990,   991,   992,   999,  1001,  1014,  1025,  1013,  1017,  1016,
-    1021,  1027,  1019,  1020,  1022,  1023,  1024,  1030,  1026,  1028,
-    1029,  1033,  1031,  1034,  1032,  1035,  1086,  1036,  1113,  1037,
-    1114,  1039,  1038,  1106,  1107,  1108,  1109,  1110,  1111,  1115,
-    1116,  1117,  1119,  1120,  1123,  1124,  1125,   226,  1122,  1140,
-     320,   341,  1141,   339,  1146,  1153,  1049,   342,   321,   227,
-    1154,   340,  1155,   258,  1069,  1156,   334,  1090,  1050,   352,
-     298,  1161,  1080,   356,   261,  1091,  1162,  1167,  1168,   228,
-    1169,   229,  1170,  1093,  1157,  1182,   300,   230,  1051,   872,
-    1052,   231,   232,   885,   233,   234,  1053,   256,  1191,  1194,
-    1054,  1055,  1130,  1056,  1057,   874,  1079,  1196,   264,   886,
-    1131,   278,  1192,   259,  1158,   896,   335,  1092,  1132,   353,
-     299,  1165,  1081,  1176,   271,   235,   236,   282,   237,   238,
-     239,   240,   241,  1094,  1058,  1059,   301,  1060,  1061,  1062,
-    1063,  1064,   242,  1201,   243,   244,  1177,   245,  1221,  1222,
-    1223,  1065,  1178,  1066,  1067,   875,  1068,   253,   267,   887,
-    1073,   281,  1074,  1227,  1231,   897,  1075,   692,  1133,   830,
-     757,  1179,   751,   921,   272,   605,   760,   283,   602,  1087,
-    1186,  1042,  1040,  1084,  1085,  1044,  1105,  1043,  1190,   553,
-    1104,  1112,   312,   616,   647,  1083,  1045,  1046,  1048,  1143,
-    1189,  1047,  1195,   618,  1142,  1145,  1198,  1200,  1193,   624,
-    1233,  1228,   265,  1229,   266,   279,  1230,   280,  1144,  1234,
-    1118,  1103,   632,  1102,  1126,  1121,   640,  1101,   904,   918,
-     759,   758,  1139,   644,  1197,  1219,  1232,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  1049,
-     663,   664,     0,     0,     0,  1090,     0,  1069,     0,     0,
-     667,  1050,     0,  1091,     0,  1080,     0,     0,     0,     0,
-    1130,  1093,     0,     0,     0,     0,     0,     0,  1131,     0,
-    1180,  1051,     0,  1052,     0,     0,  1132,     0,     0,  1053,
-       0,     0,     0,  1054,  1055,     0,  1056,  1057,     0,  1079,
-       0,     0,     0,     0,     0,  1092,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  1081,     0,     0,     0,     0,
-       0,  1094,     0,     0,     0,     0,     0,  1058,  1059,     0,
-    1060,  1061,  1062,  1063,  1064,     0,  1133,     0,     0,     0,
-       0,     0,     0,     0,  1065,     0,  1066,  1067,     0,  1068,
-       0,     0,     0,  1073,     0,  1074,     0,     0,     0,  1075
+     100,   157,   211,   228,   267,   281,   301,   344,   323,   342,
+     359,   379,    40,   345,   401,   229,   324,   343,   216,   261,
+     274,   285,   303,   878,   337,   355,   808,   380,   838,  1076,
+     264,  1077,  1078,  1082,  1088,   230,    33,   231,    34,    94,
+      35,   137,   138,   232,   357,   358,   968,   233,   234,   969,
+     235,   236,   295,   259,   270,   284,   302,   209,   210,   922,
+      32,   317,   339,   318,   319,   340,   341,    91,   217,   262,
+     275,   286,   304,   829,   338,   356,    44,   381,   137,   138,
+      46,   237,   238,   728,   239,   240,   241,   242,   243,   700,
+     701,   702,   703,   888,   889,   734,   735,   736,   244,   316,
+     245,   246,    48,   247,   858,   859,   860,   861,   862,   863,
+     268,   282,   419,   248,   137,   138,   256,   420,   269,   283,
+      99,   971,   766,    50,   972,   137,   138,   767,   768,   769,
+     770,   771,   772,   773,   774,   775,   776,   777,   778,   779,
+     780,   781,   782,   783,   784,   317,   977,   318,   319,   978,
+      99,   320,   321,   322,   136,    52,   830,    54,   686,   687,
+     688,   689,   137,   138,  1012,   872,   156,  1013,   317,   897,
+     898,   899,   137,   138,   771,  1211,   470,   474,  1212,   135,
+    1213,   471,   475,  1214,  1215,  1216,  1217,    99,   402,   403,
+     294,    56,   136,   317,    95,   690,   295,   296,   297,   298,
+     299,   300,   486,   489,    96,    97,    98,   487,   490,   496,
+     137,   138,   108,   109,   497,    58,   110,   357,   358,   111,
+     112,   113,    99,   900,    36,    37,    38,    39,   137,   138,
+    1094,  1095,    60,  1076,    99,  1077,  1078,  1082,  1088,   524,
+    1153,  1154,  1155,  1156,   525,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   541,   829,
+     836,    99,   837,   542,   873,   874,   875,   876,   543,   547,
+      62,    99,   470,   544,   548,   137,   138,   927,   317,    64,
+     543,   838,   139,   136,    99,   928,  1046,   140,   141,   142,
+     143,   144,    66,   145,   266,   137,   138,   878,   146,   547,
+     474,   137,   138,   950,   929,   930,   950,   147,   951,    99,
+     148,   952,    68,   974,   991,    70,   998,   149,   975,   992,
+     225,   999,   408,   226,   136,   150,   151,    99,   409,   152,
+     410,  1002,   411,   153,   412,   100,  1003,   276,   277,   278,
+     279,   280,   137,   138,  1008,   541,   950,   486,  1169,  1009,
+    1010,  1165,  1166,  1170,   154,   155,   418,   156,   524,   505,
+    1190,   225,   489,  1177,   226,  1191,   496,  1193,  1231,   752,
+     753,  1194,   427,  1232,  1178,  1179,  1180,   428,  1133,   429,
+    1134,  1135,   430,   431,    99,   432,   157,   433,   434,   435,
+     211,   436,   437,   438,   549,   550,   440,   441,   442,   446,
+     463,   473,   228,   481,    99,   267,   216,   482,   492,   494,
+      99,   495,   281,   506,   229,   510,   507,   514,   261,   516,
+     515,   274,   301,   518,   519,   520,   521,   551,   285,   264,
+     526,   529,   323,   531,   230,   344,   231,   342,   303,   532,
+     324,   345,   232,   535,   536,   343,   233,   234,   337,   235,
+     236,    99,   259,   355,   546,   270,   217,   379,   552,   553,
+     554,   401,   284,   555,   556,   558,   559,   560,   262,   561,
+     562,   275,   302,   380,   563,   564,   565,   566,   286,   573,
+     237,   238,   567,   239,   240,   241,   242,   243,   304,   568,
+     572,   576,   569,   570,   580,   571,   575,   244,   338,   245,
+     246,   574,   247,   356,   581,   577,   582,   584,   578,   585,
+     579,   268,   248,   583,   586,   256,   587,   588,   282,   269,
+     589,   590,   591,   381,   592,   593,   283,   594,   595,   596,
+     597,   598,   599,   600,   601,   602,   603,   604,   605,   676,
+     677,   678,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   606,   608,   127,   128,   129,   130,   131,
+     132,   133,   609,   611,   136,   612,   613,   614,   615,   618,
+     616,   619,   620,   617,   218,   622,   219,   624,   626,   630,
+     625,   631,   137,   138,   220,   221,   222,   223,   224,   139,
+     157,   632,   627,   401,   628,   633,   634,   211,   635,   636,
+     638,   225,   639,   640,   226,   146,   641,   642,   674,   643,
+     644,   646,   227,   216,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,   647,
+     877,   890,   650,   379,   648,   651,   748,   653,   654,   655,
+     656,   657,   658,   659,   660,   661,   879,   891,   901,   380,
+     664,   665,   666,   662,   663,   667,   670,   673,   761,   684,
+     679,   154,   155,   217,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   671,   675,   127,   128,   129,
+     130,   131,   132,   133,   134,   680,   136,   317,   137,   138,
+     681,    99,   682,   683,   685,   694,   880,   892,   902,   381,
+     692,   693,   695,   696,   137,   138,    34,   221,   222,   705,
+     224,   139,   699,   706,   707,   708,   755,   710,   709,   711,
+     712,   720,   718,   225,   713,   714,   226,   715,   716,   717,
+     719,   721,   723,   724,   227,   725,   726,   727,   729,   730,
+     731,   732,   760,   809,   733,   737,   738,   364,   365,   366,
+     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
+     813,   817,   739,   740,   821,   741,   825,   377,   378,   742,
+     847,   743,   744,   745,   746,   747,   749,   750,   751,   757,
+     843,   758,   759,   154,   155,   850,   854,   910,   914,   918,
+     935,   936,   937,   938,   939,   941,   942,    99,   946,   947,
+     948,   949,   955,  1014,   954,   958,   957,   960,   961,   963,
+     964,   967,   966,    99,   981,   970,   980,   984,   983,   985,
+     986,   987,   988,   989,   990,   995,   996,   997,  1004,  1006,
+    1019,  1158,  1018,  1022,  1021,  1026,  1030,  1024,  1025,  1027,
+    1028,  1029,  1035,  1038,  1032,  1031,  1039,  1040,  1092,  1119,
+    1034,  1033,  1036,  1037,  1041,  1042,  1120,  1044,  1043,  1112,
+    1113,  1114,  1115,  1125,  1116,  1117,  1121,  1122,  1123,  1126,
+    1129,  1128,   228,  1131,  1130,   323,   344,  1146,   342,  1147,
+    1159,  1054,   345,   324,   229,  1152,   343,  1160,   261,  1075,
+    1167,   337,  1096,  1055,   355,   301,  1161,  1086,   359,   264,
+    1097,  1168,  1173,  1174,   230,  1175,   231,  1176,  1099,  1188,
+    1197,   303,   232,  1056,   877,  1057,   233,   234,   890,   235,
+     236,  1058,   259,  1162,  1163,  1059,  1060,  1136,  1061,  1062,
+     879,  1085,  1164,   267,   891,  1137,   281,  1171,   262,  1182,
+     901,   338,  1098,  1138,   356,   302,  1198,  1087,  1183,   274,
+     237,   238,   285,   239,   240,   241,   242,   243,  1100,  1063,
+    1064,   304,  1065,  1066,  1067,  1068,  1069,   244,  1184,   245,
+     246,  1200,   247,  1202,   835,  1205,  1070,  1185,  1071,  1072,
+     880,  1073,   248,   270,   892,   256,   284,  1079,  1207,  1227,
+     902,  1074,  1228,  1139,  1081,  1080,  1229,  1192,  1233,   275,
+    1237,   762,   286,   765,   756,   697,  1195,  1047,   607,   557,
+     610,   926,  1045,  1093,  1090,  1091,  1111,  1110,   652,  1118,
+    1089,  1048,  1049,  1196,   315,   621,  1149,  1201,  1051,  1050,
+    1234,   645,   649,  1204,  1206,  1053,  1052,  1151,  1150,   268,
+    1235,  1236,   282,  1239,  1240,   623,   637,   269,  1108,   923,
+     283,  1148,  1107,   629,  1109,  1199,  1124,  1127,  1203,  1132,
+     764,   672,  1225,   909,  1238,   763,  1145,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   668,     0,     0,     0,
+       0,     0,     0,     0,   669,  1054,     0,     0,     0,     0,
+       0,  1096,     0,  1075,     0,     0,     0,  1055,     0,  1097,
+       0,  1086,     0,     0,     0,     0,  1136,  1099,     0,     0,
+       0,     0,     0,     0,  1137,     0,  1186,  1056,     0,  1057,
+       0,     0,  1138,     0,     0,  1058,     0,     0,     0,  1059,
+    1060,     0,  1061,  1062,     0,  1085,     0,     0,     0,     0,
+       0,  1098,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  1087,     0,     0,     0,     0,     0,  1100,     0,     0,
+       0,     0,     0,  1063,  1064,     0,  1065,  1066,  1067,  1068,
+    1069,     0,  1139,     0,     0,     0,     0,     0,     0,     0,
+    1070,     0,  1071,  1072,     0,  1073,     0,     0,     0,     0,
+       0,  1079,     0,     0,     0,  1074,     0,     0,  1081,  1080
   };
 
   const short
@@ -4844,335 +4856,337 @@ namespace isc { namespace dhcp {
   {
       74,    75,    76,    77,    78,    79,    80,    83,    82,    83,
       84,    85,    17,    83,    86,    77,    82,    83,    76,    77,
-      78,    79,    80,   709,    82,    83,   678,    85,   703,   960,
-      77,   960,   960,   960,   960,    77,     5,    77,     7,    10,
-       9,     3,   107,    77,    83,    84,     8,    77,    77,   114,
-      77,    77,     0,    77,    78,    79,    80,    16,    17,     3,
-      83,    84,     3,     3,     8,   109,     6,     8,    76,    77,
-      78,    79,    80,     3,    82,    83,     6,    85,   116,   117,
-     613,    77,    77,     7,    77,    77,    77,    77,    77,     7,
-       3,   192,   625,   626,   627,     8,   135,   136,    77,    21,
-      77,    77,     3,    77,     7,    21,    64,     8,    78,    79,
-      78,    79,     7,    77,    30,   138,   139,   140,     3,     3,
-       7,    21,     6,     8,    83,    84,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    66,    65,    68,    69,   192,     7,
-      72,    73,    74,   192,   192,    91,    92,    93,    94,     7,
-      65,    83,    84,    83,    84,     3,    66,    83,    84,   192,
-       8,    13,    14,    78,    79,    80,    81,    82,    83,    84,
-       7,   101,     7,   158,   159,   160,   161,   107,   108,   109,
-     110,   111,   112,   164,     3,     3,     3,   102,     6,     8,
-     105,     8,     3,   174,   175,   176,   167,     8,     7,   170,
-     171,   172,   173,   129,   130,   131,   132,     3,   116,   117,
-     195,   192,     8,   192,   193,   194,   195,    22,    23,    24,
-      25,     7,  1163,   192,  1163,  1163,  1163,  1163,   155,   156,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,     7,     7,    57,    58,    59,    60,    61,    62,     7,
-       6,    65,   119,   120,   121,   122,   123,   124,   165,     3,
-     192,    75,   192,    77,     8,     3,   192,     3,     6,    83,
-      84,    85,    86,    87,    88,    89,    90,   192,     3,     8,
-       3,   966,   192,     8,    65,     8,   948,    66,   102,    65,
-      66,   105,   106,     3,     3,    76,     3,   993,     8,   113,
-       4,     8,    83,    84,    83,    84,     3,    83,    84,   109,
-     110,     8,   112,    66,    67,    68,    69,    70,    71,     4,
-       3,   102,     4,     4,   105,     8,     4,   103,   104,     4,
-      83,    84,   416,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   162,   163,
-       4,   126,   127,   128,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,     4,     4,    57,    58,    59,
-      60,    61,    62,    63,     3,    65,    66,     4,   192,     8,
-       3,     3,   466,     3,     8,     8,   470,   166,     8,   168,
-     169,   406,   407,    83,    84,     4,    86,    87,   482,    89,
-      90,   485,   470,     4,     3,     8,     4,     4,   492,     8,
-     482,   192,   102,   192,   482,   105,   192,   485,   502,     4,
-       4,     3,     3,   113,   492,   482,     8,     8,   512,     4,
-     482,   517,   482,   517,   502,     3,   512,   517,   482,   192,
-       8,   517,   482,   482,   512,   482,   482,     4,   482,   517,
-       3,   485,   470,   537,     3,     8,     3,   539,   492,     8,
-       3,     8,     4,     4,   482,     8,     3,   485,   502,   537,
-       4,     8,   162,   163,   492,     4,   482,   482,     4,   482,
-     482,   482,   482,   482,   502,     4,     4,     4,     8,     3,
-     192,     4,     4,   482,   512,   482,   482,     8,   482,   517,
-       3,   193,   192,     4,     4,   485,     4,   485,   482,     4,
-       4,     4,   492,     4,   492,     4,     4,     4,   195,   537,
-       4,     4,   193,     4,     4,    11,    12,     4,     4,    15,
-       4,     4,    18,    19,    20,   550,   551,   552,   193,     4,
-     193,   193,   193,   193,   193,     4,   194,   194,   193,   195,
-       4,   195,   195,     4,     4,     4,     4,     4,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-       4,     4,     4,     4,     4,   669,     4,     4,   670,     4,
-       4,     4,   676,     4,     4,     4,     4,    83,    84,   193,
-       4,    83,    84,     4,    90,     4,     4,     4,   676,    95,
-      96,    97,    98,    99,     4,   101,   195,     4,     4,     4,
-     106,     4,   193,   195,     4,   709,   710,     4,   712,   115,
-       4,   646,   118,     4,     4,   193,     4,   193,   193,   125,
-       4,   709,   710,   711,   712,     4,     4,   133,   134,     4,
-       4,   137,     4,   668,     4,   141,     4,     4,   676,     4,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,     4,     4,     4,   162,   163,   193,   165,
-     162,   163,     4,     4,     4,   195,   195,   195,   195,     4,
-       4,   709,   710,   711,   712,     4,   193,   193,     4,     4,
-       4,   193,     4,     4,     4,   195,   192,     4,   193,     7,
-     192,     7,     7,     7,   192,     7,   195,     7,     5,     5,
-     192,   192,   192,     5,     5,   192,     5,     7,     5,     5,
-       5,   192,     5,     7,     5,     5,   192,   192,     7,     7,
-       7,     7,     7,     5,     5,     5,     5,   192,   192,   192,
-       7,   192,   192,   192,   192,   192,   192,   192,   192,   192,
-     192,   192,   192,   192,   192,   192,   192,   192,   157,     5,
-       7,     5,     7,   192,     7,     7,   192,     7,     7,     7,
-     192,   100,     7,     7,     7,     7,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     3,   192,     6,
-       3,     6,     6,     3,     6,     3,     3,     6,   192,     3,
-       6,     6,     3,     6,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     3,   193,     6,     3,     6,
-       4,   193,     8,     6,     4,     4,     4,     4,   195,   195,
-     193,     4,   193,     4,   193,     4,     4,   193,     4,   193,
-       4,   193,   195,   193,   193,   193,   193,   193,   193,   193,
-     193,   193,     4,     4,     4,   193,     4,   951,   195,     6,
-     954,   957,     3,   957,     4,   192,   960,   957,   954,   951,
-     192,   957,   192,   951,   960,   192,   954,   971,   960,   957,
-     974,     8,   960,   977,   951,   971,     8,     4,     8,   951,
-       3,   951,     8,   971,   192,     4,   974,   951,   960,   993,
-     960,   951,   951,   997,   951,   951,   960,   951,     4,     4,
-     960,   960,  1006,   960,   960,   993,   960,     4,  1012,   997,
-    1006,  1015,   195,   951,   192,  1003,   954,   971,  1006,   957,
-     974,   192,   960,   192,  1012,   951,   951,  1015,   951,   951,
-     951,   951,   951,   971,   960,   960,   974,   960,   960,   960,
-     960,   960,   951,     7,   951,   951,   192,   951,     4,     4,
-       4,   960,   192,   960,   960,   993,   960,   951,  1012,   997,
-     960,  1015,   960,     4,     4,  1003,   960,   582,  1006,   702,
-     669,   192,   659,   755,  1012,   470,   676,  1015,   466,   969,
-     192,   950,   945,   963,   966,   953,   979,   951,  1163,   416,
-     977,   986,    81,   482,   520,   962,   954,   956,   959,  1014,
-     192,   957,   193,   485,  1012,  1017,   192,   192,  1169,   492,
-     192,   195,  1012,   193,  1012,  1015,   193,  1015,  1015,   192,
-     993,   976,   502,   974,  1003,   997,   512,   972,   712,   725,
-     675,   670,  1007,   517,  1184,  1205,  1225,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1163,
-     537,   539,    -1,    -1,    -1,  1169,    -1,  1163,    -1,    -1,
-     543,  1163,    -1,  1169,    -1,  1163,    -1,    -1,    -1,    -1,
-    1184,  1169,    -1,    -1,    -1,    -1,    -1,    -1,  1184,    -1,
-    1125,  1163,    -1,  1163,    -1,    -1,  1184,    -1,    -1,  1163,
-      -1,    -1,    -1,  1163,  1163,    -1,  1163,  1163,    -1,  1163,
-      -1,    -1,    -1,    -1,    -1,  1169,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1163,    -1,    -1,    -1,    -1,
-      -1,  1169,    -1,    -1,    -1,    -1,    -1,  1163,  1163,    -1,
-    1163,  1163,  1163,  1163,  1163,    -1,  1184,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1163,    -1,  1163,  1163,    -1,  1163,
-      -1,    -1,    -1,  1163,    -1,  1163,    -1,    -1,    -1,  1163
+      78,    79,    80,   714,    82,    83,   683,    85,   708,   965,
+      77,   965,   965,   965,   965,    77,     5,    77,     7,    10,
+       9,    84,    85,    77,   117,   118,     3,    77,    77,     6,
+      77,    77,   108,    77,    78,    79,    80,    16,    17,   115,
+       0,    67,    68,    69,    70,    71,    72,   193,    76,    77,
+      78,    79,    80,   110,    82,    83,     7,    85,    84,    85,
+       7,    77,    77,   618,    77,    77,    77,    77,    77,    92,
+      93,    94,    95,   136,   137,   630,   631,   632,    77,    21,
+      77,    77,     7,    77,   120,   121,   122,   123,   124,   125,
+      78,    79,     3,    77,    84,    85,    77,     8,    78,    79,
+     193,     3,    21,     7,     6,    84,    85,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    67,     3,    69,    70,     6,
+     193,    73,    74,    75,    66,     7,   193,     7,   159,   160,
+     161,   162,    84,    85,     3,    21,   166,     6,    67,   139,
+     140,   141,    84,    85,    30,     3,     3,     3,     6,    65,
+     168,     8,     8,   171,   172,   173,   174,   193,    13,    14,
+     102,     7,    66,    67,   165,   196,   108,   109,   110,   111,
+     112,   113,     3,     3,   175,   176,   177,     8,     8,     3,
+      84,    85,    11,    12,     8,     7,    15,   117,   118,    18,
+      19,    20,   193,   193,   193,   194,   195,   196,    84,    85,
+     104,   105,     7,  1169,   193,  1169,  1169,  1169,  1169,     3,
+      22,    23,    24,    25,     8,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      59,    60,    61,    62,    63,    64,    65,    66,     3,   110,
+     111,   193,   113,     8,   130,   131,   132,   133,     3,     3,
+       7,   193,     3,     8,     8,    84,    85,     8,    67,     7,
+       3,   971,    91,    66,   193,     8,   953,    96,    97,    98,
+      99,   100,     7,   102,    77,    84,    85,   998,   107,     3,
+       3,    84,    85,     3,     8,     8,     3,   116,     8,   193,
+     119,     8,     7,     3,     3,     7,     3,   126,     8,     8,
+     103,     8,     6,   106,    66,   134,   135,   193,     3,   138,
+       4,     3,     8,   142,     3,   419,     8,    79,    80,    81,
+      82,    83,    84,    85,     3,     3,     3,     3,     3,     8,
+       8,     8,     8,     8,   163,   164,     4,   166,     3,     8,
+       3,   103,     3,     8,   106,     8,     3,     8,     3,   156,
+     157,     8,     4,     8,   127,   128,   129,     4,   167,     4,
+     169,   170,     4,     4,   193,     4,   470,     4,     4,     4,
+     474,     4,     4,     4,   409,   410,     4,     4,     4,     4,
+       4,     4,   486,     4,   193,   489,   474,     4,     4,     4,
+     193,     4,   496,     3,   486,     4,     8,     4,   486,     3,
+       8,   489,   506,     4,     4,     8,     3,   193,   496,   486,
+       4,     4,   516,     4,   486,   521,   486,   521,   506,     4,
+     516,   521,   486,     4,     4,   521,   486,   486,   516,   486,
+     486,   193,   486,   521,     4,   489,   474,   541,     4,     4,
+       4,   543,   496,     4,     4,     4,     4,     4,   486,     4,
+       4,   489,   506,   541,     4,   194,   194,   194,   496,   195,
+     486,   486,   194,   486,   486,   486,   486,   486,   506,   194,
+     196,     4,   194,   194,     4,   194,   194,   486,   516,   486,
+     486,   195,   486,   521,     4,   196,     4,     4,   196,     4,
+     196,   489,   486,   196,     4,   486,     4,     4,   496,   489,
+       4,     4,     4,   541,     4,     4,   496,     4,     4,     4,
+       4,     4,     4,   194,     4,     4,     4,     4,     4,   554,
+     555,   556,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,     4,     4,    57,    58,    59,    60,    61,
+      62,    63,   196,     4,    66,     4,     4,     4,     4,     4,
+     194,     4,     4,   196,    76,     4,    78,     4,     4,     4,
+     194,     4,    84,    85,    86,    87,    88,    89,    90,    91,
+     674,     4,   194,   675,   194,     4,     4,   681,     4,     4,
+       4,   103,     4,   194,   106,   107,     4,     4,     7,     4,
+     196,     4,   114,   681,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   196,
+     714,   715,     4,   717,   196,     4,   651,   196,     4,     4,
+     194,     4,   194,   194,     4,     4,   714,   715,   716,   717,
+       4,     4,     4,   196,   196,     4,     4,     4,   673,     5,
+     193,   163,   164,   681,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,   194,     7,    57,    58,    59,
+      60,    61,    62,    63,    64,     7,    66,    67,    84,    85,
+       7,   193,     7,     7,   193,     5,   714,   715,   716,   717,
+     193,   193,     5,     5,    84,    85,     7,    87,    88,     5,
+      90,    91,   193,     5,     5,     5,   158,     5,     7,     5,
+       5,     5,   193,   103,     7,     7,   106,     7,     7,     7,
+     193,     5,     5,     5,   114,   193,   193,   193,   193,     7,
+     193,   193,     5,     7,   193,   193,   193,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+       7,     7,   193,   193,     7,   193,     7,   163,   164,   193,
+       7,   193,   193,   193,   193,   193,   193,   193,   193,   193,
+     101,   193,   193,   163,   164,     7,     7,     7,     7,     7,
+       4,     4,     4,     4,     4,     4,     4,   193,     4,     4,
+       4,     4,     3,   193,     6,     3,     6,     6,     3,     6,
+       3,     3,     6,   193,     3,     6,     6,     3,     6,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       3,   193,     6,     3,     6,     4,   194,     8,     6,     4,
+       4,     4,     4,     4,   194,   196,     4,     4,     4,     4,
+     194,   196,   194,   194,   194,   194,     4,   194,   196,   194,
+     194,   194,   194,     4,   194,   194,   194,   194,   194,     4,
+       4,   196,   956,     4,   194,   959,   962,     6,   962,     3,
+     193,   965,   962,   959,   956,     4,   962,   193,   956,   965,
+       8,   959,   976,   965,   962,   979,   193,   965,   982,   956,
+     976,     8,     4,     8,   956,     3,   956,     8,   976,     4,
+       4,   979,   956,   965,   998,   965,   956,   956,  1002,   956,
+     956,   965,   956,   193,   193,   965,   965,  1011,   965,   965,
+     998,   965,   193,  1017,  1002,  1011,  1020,   193,   956,   193,
+    1008,   959,   976,  1011,   962,   979,   196,   965,   193,  1017,
+     956,   956,  1020,   956,   956,   956,   956,   956,   976,   965,
+     965,   979,   965,   965,   965,   965,   965,   956,   193,   956,
+     956,     4,   956,     4,   707,     5,   965,   193,   965,   965,
+     998,   965,   956,  1017,  1002,   956,  1020,   965,     7,     4,
+    1008,   965,     4,  1011,   965,   965,     4,   193,     4,  1017,
+       4,   674,  1020,   681,   664,   587,   193,   955,   470,   419,
+     474,   760,   950,   974,   968,   971,   984,   982,   524,   991,
+     967,   956,   958,  1169,    81,   486,  1019,   194,   961,   959,
+     196,   516,   521,   193,   193,   964,   962,  1022,  1020,  1017,
+     194,   194,  1020,   193,   193,   489,   506,  1017,   979,   730,
+    1020,  1017,   977,   496,   981,  1175,   998,  1002,  1190,  1008,
+     680,   547,  1211,   717,  1231,   675,  1012,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   541,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   543,  1169,    -1,    -1,    -1,    -1,
+      -1,  1175,    -1,  1169,    -1,    -1,    -1,  1169,    -1,  1175,
+      -1,  1169,    -1,    -1,    -1,    -1,  1190,  1175,    -1,    -1,
+      -1,    -1,    -1,    -1,  1190,    -1,  1131,  1169,    -1,  1169,
+      -1,    -1,  1190,    -1,    -1,  1169,    -1,    -1,    -1,  1169,
+    1169,    -1,  1169,  1169,    -1,  1169,    -1,    -1,    -1,    -1,
+      -1,  1175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1169,    -1,    -1,    -1,    -1,    -1,  1175,    -1,    -1,
+      -1,    -1,    -1,  1169,  1169,    -1,  1169,  1169,  1169,  1169,
+    1169,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1169,    -1,  1169,  1169,    -1,  1169,    -1,    -1,    -1,    -1,
+      -1,  1169,    -1,    -1,    -1,  1169,    -1,    -1,  1169,  1169
   };
 
   const short
   Dhcp6Parser::yystos_[] =
   {
-       0,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,     0,     5,     7,     9,   192,   193,   194,   195,
-     213,   214,   215,   220,     7,   229,     7,   235,     7,   271,
-       7,   370,     7,   447,     7,   463,     7,   480,     7,   399,
-       7,   405,     7,   429,     7,   346,     7,   549,     7,   595,
-       7,   586,   221,   216,   230,   236,   272,   371,   448,   464,
-     481,   400,   406,   430,   347,   550,   596,   587,   213,   222,
-     223,   192,   218,   219,    10,   164,   174,   175,   176,   192,
-     228,   231,   232,   233,   578,   580,   582,   593,    11,    12,
+       0,   178,   179,   180,   181,   182,   183,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,     0,     5,     7,     9,   193,   194,   195,   196,
+     214,   215,   216,   221,     7,   230,     7,   236,     7,   273,
+       7,   372,     7,   449,     7,   465,     7,   482,     7,   401,
+       7,   407,     7,   431,     7,   348,     7,   551,     7,   597,
+       7,   588,   222,   217,   231,   237,   274,   373,   450,   466,
+     483,   402,   408,   432,   349,   552,   598,   589,   214,   223,
+     224,   193,   219,   220,    10,   165,   175,   176,   177,   193,
+     229,   232,   233,   234,   580,   582,   584,   595,    11,    12,
       15,    18,    19,    20,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      60,    61,    62,    63,    64,    65,    83,    84,    90,    95,
-      96,    97,    98,    99,   101,   106,   115,   118,   125,   133,
-     134,   137,   141,   162,   163,   165,   228,   237,   238,   239,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   259,   261,   263,   265,
-     267,   269,   278,   280,   282,   320,   326,   332,   338,   340,
-     354,   364,   384,   389,   397,   423,   453,   455,   474,   504,
-     516,   528,   529,   537,   547,   584,   599,    16,    17,   228,
-     273,   274,   275,   277,   453,   455,    75,    77,    85,    86,
-      87,    88,    89,   102,   105,   113,   228,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   253,   254,
-     255,   256,   259,   261,   263,   265,   372,   373,   374,   376,
-     378,   380,   382,   384,   387,   388,   423,   441,   453,   455,
-     457,   474,   499,    76,   228,   380,   382,   423,   449,   450,
-     451,   453,   455,    78,    79,    80,    81,    82,   228,   380,
-     382,   423,   453,   455,   465,   466,   467,   469,   470,   472,
-     473,   101,   107,   108,   109,   110,   111,   112,   228,   423,
-     453,   455,   482,   483,   484,   485,   487,   489,   491,   493,
-     495,   497,   397,    21,    66,    68,    69,    72,    73,    74,
-     228,   300,   407,   408,   409,   410,   411,   412,   413,   415,
-     417,   419,   420,   422,   453,   455,    67,    70,    71,   228,
-     300,   411,   417,   431,   432,   433,   434,   435,   437,   438,
-     439,   440,   453,   455,   116,   117,   228,   348,   349,   350,
-     352,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   162,   163,   228,   453,   455,   551,
-     552,   553,   554,   556,   558,   559,   561,   562,   563,   566,
-     568,   569,   570,   572,   574,   576,   597,   598,   599,    13,
-      14,   588,   589,   590,   592,     6,     3,     4,     8,     3,
-     234,   594,   579,   581,   583,     4,     3,     8,   240,   585,
-     270,   279,   281,   283,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   268,     4,     4,     4,
-     257,   260,   262,   365,   398,   424,   454,   456,   385,   390,
-     327,   339,   333,   321,   505,   475,   341,   355,   517,     4,
-     530,   538,   548,   264,   266,   600,     3,     8,   276,     4,
-       3,     8,   442,   458,   375,   377,   379,     4,     4,   383,
-     381,   500,     3,     8,   452,     3,     8,   468,     4,   471,
-       4,     4,     3,     8,   498,   486,   488,   490,   492,   494,
-     496,     8,     3,     8,   414,   301,     4,   418,   416,   421,
-       4,     8,     3,   436,     4,     4,     8,     3,   351,   353,
-       3,     8,     4,   555,   557,     4,   560,     4,     4,   564,
-     567,     4,     4,   571,   573,   575,   577,     3,     8,     3,
-       8,   591,     4,     3,     8,   213,   213,   192,     4,     4,
-       4,     4,     4,   232,     4,     4,     4,     4,     4,     4,
-     193,   193,   193,   193,   193,   193,   193,   193,   195,   194,
-     194,   193,     4,   195,   195,   195,     4,     4,     4,     4,
+      60,    61,    62,    63,    64,    65,    66,    84,    85,    91,
+      96,    97,    98,    99,   100,   102,   107,   116,   119,   126,
+     134,   135,   138,   142,   163,   164,   166,   229,   238,   239,
+     240,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   260,   262,   264,
+     266,   268,   269,   271,   280,   282,   284,   322,   328,   334,
+     340,   342,   356,   366,   386,   391,   399,   425,   455,   457,
+     476,   506,   518,   530,   531,   539,   549,   586,   601,    16,
+      17,   229,   275,   276,   277,   279,   455,   457,    76,    78,
+      86,    87,    88,    89,    90,   103,   106,   114,   229,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     254,   255,   256,   257,   260,   262,   264,   266,   268,   374,
+     375,   376,   378,   380,   382,   384,   386,   389,   390,   425,
+     443,   455,   457,   459,   476,   501,    77,   229,   382,   384,
+     425,   451,   452,   453,   455,   457,    79,    80,    81,    82,
+      83,   229,   382,   384,   425,   455,   457,   467,   468,   469,
+     471,   472,   474,   475,   102,   108,   109,   110,   111,   112,
+     113,   229,   425,   455,   457,   484,   485,   486,   487,   489,
+     491,   493,   495,   497,   499,   399,    21,    67,    69,    70,
+      73,    74,    75,   229,   302,   409,   410,   411,   412,   413,
+     414,   415,   417,   419,   421,   422,   424,   455,   457,    68,
+      71,    72,   229,   302,   413,   419,   433,   434,   435,   436,
+     437,   439,   440,   441,   442,   455,   457,   117,   118,   229,
+     350,   351,   352,   354,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   163,   164,   229,
+     455,   457,   553,   554,   555,   556,   558,   560,   561,   563,
+     564,   565,   568,   570,   571,   572,   574,   576,   578,   599,
+     600,   601,    13,    14,   590,   591,   592,   594,     6,     3,
+       4,     8,     3,   235,   596,   581,   583,   585,     4,     3,
+       8,   241,   587,   272,   281,   283,   285,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,   270,
+       4,     4,     4,   258,   261,   263,     4,   367,   400,   426,
+     456,   458,   387,   392,   329,   341,   335,   323,   507,   477,
+     343,   357,   519,     4,   532,   540,   550,   265,   267,   602,
+       3,     8,   278,     4,     3,     8,   444,   460,   377,   379,
+     381,     4,     4,   385,   383,   502,     3,     8,   454,     3,
+       8,   470,     4,   473,     4,     4,     3,     8,   500,   488,
+     490,   492,   494,   496,   498,     8,     3,     8,   416,   303,
+       4,   420,   418,   423,     4,     8,     3,   438,     4,     4,
+       8,     3,   353,   355,     3,     8,     4,   557,   559,     4,
+     562,     4,     4,   566,   569,     4,     4,   573,   575,   577,
+     579,     3,     8,     3,     8,   593,     4,     3,     8,   214,
+     214,   193,     4,     4,     4,     4,     4,   233,     4,     4,
+       4,     4,     4,     4,   194,   194,   194,   194,   194,   194,
+     194,   194,   196,   195,   195,   194,     4,   196,   196,   196,
+       4,     4,     4,   196,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   193,     4,     4,     4,     4,
-       4,     4,   238,     4,   195,   274,     4,     4,     4,     4,
-       4,   193,   195,     4,     4,     4,   373,     4,   450,     4,
-     193,     4,   193,   193,   466,     4,     4,     4,     4,     4,
-       4,     4,   484,     4,     4,   193,     4,     4,     4,   195,
-     409,     4,   195,   195,   433,     4,     4,   349,   195,     4,
-       4,   193,     4,   193,   193,     4,     4,   195,   195,     4,
-       4,     4,     4,   552,   598,     4,   193,   589,     4,     7,
-       7,   213,   213,   213,   192,     7,     7,     7,     7,     5,
-     192,   158,   159,   160,   161,   195,   258,   192,   192,     5,
-       5,     5,   215,   217,   192,    91,    92,    93,    94,   386,
-       5,     5,     5,     5,     7,     5,     5,     5,     7,     7,
-       7,     7,     7,   192,   192,     5,     5,   224,     5,     5,
-     192,   192,   192,   224,   192,     7,   192,   192,   192,   224,
-     224,   224,   192,   192,   192,   192,   192,   192,   192,   192,
-     192,   192,   192,   213,   192,   192,   192,   155,   156,   565,
-     157,   258,   192,   192,   192,     5,   213,   237,   597,   588,
-     273,    21,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-     228,   288,   289,   290,   293,   295,   297,   299,   300,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   313,
-     314,   316,   318,   288,     7,   284,   285,   286,     7,   366,
-     367,   368,     7,   401,   402,   403,     7,   425,   426,   427,
-       7,   391,   392,   393,   109,   192,   328,   329,   330,   331,
-     222,   110,   112,   330,   334,   335,   336,   337,   100,   322,
-     323,   324,     7,   506,   507,     7,   476,   477,   478,     7,
-     342,   343,   344,   119,   120,   121,   122,   123,   124,   356,
-     357,   358,   359,   360,   361,   362,   363,    21,   129,   130,
-     131,   132,   228,   302,   453,   455,   518,   519,   520,   523,
-     524,   526,   527,   135,   136,   228,   453,   455,   531,   532,
-     533,   535,   138,   139,   140,   192,   453,   455,   539,   540,
-     541,   542,   544,   545,   551,     7,   601,   602,   225,     7,
-     443,   444,   445,     7,   459,   460,   461,   114,   485,   501,
-     502,   284,     8,     8,     8,     8,   291,   294,   296,   298,
-       4,     4,     4,     4,     4,   312,     4,     4,   315,   317,
-     319,     4,     4,     4,     4,     3,     8,     8,   287,     6,
-       3,   369,     6,     3,   404,     6,     3,   428,     6,     3,
-     394,     6,     3,     3,     6,     6,     3,     6,   325,     3,
-       8,   508,     3,     6,   479,     6,     3,   345,     6,     3,
-       4,     4,     4,     4,     4,     4,     3,     8,   521,   525,
-       4,     4,     4,     3,     8,   534,   536,     3,     8,     4,
-     543,     4,   546,     3,     8,     8,   603,     3,     6,   192,
-     226,   227,   446,     6,     3,   462,     6,     3,   503,     8,
-       6,     4,     4,     4,     4,   193,   195,   193,   195,   193,
-       4,   193,   193,     4,     4,     4,   193,   193,   195,   193,
-     289,   288,   286,   372,   368,   407,   403,   431,   427,   228,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   253,   254,   255,   256,   259,   261,   263,   265,   300,
-     364,   376,   378,   380,   382,   384,   388,   395,   396,   423,
-     453,   455,   499,   393,   329,   335,     4,   323,   103,   104,
-     228,   300,   423,   453,   455,   509,   510,   511,   512,   513,
-     515,   507,   482,   478,   348,   344,   193,   193,   193,   193,
-     193,   193,   357,     4,     4,   193,   193,   193,   519,     4,
-       4,   532,   195,     4,   193,     4,   540,   166,   168,   169,
-     228,   300,   453,   455,   604,   605,   606,   607,   609,   602,
-       6,     3,   449,   445,   465,   461,     4,    22,    23,    24,
-      25,   292,   192,   192,   192,   192,   192,   192,   192,     8,
-       8,     8,     8,     3,     8,   192,   514,     4,     8,     3,
-       8,     8,   126,   127,   128,   522,   192,   192,   192,   192,
-     213,   610,     4,   608,     3,     8,   192,     8,     8,   192,
-     396,     4,   195,   511,     4,   193,     4,   605,   192,     5,
-     192,     7,   611,   612,   613,     3,     6,   167,   170,   171,
-     172,   173,   614,   615,   616,   618,   619,   620,   621,   612,
-     617,     4,     4,     4,   622,     3,     8,     4,   195,   193,
-     193,     4,   615,   192,   192
+     194,     4,     4,     4,     4,     4,     4,   239,     4,   196,
+     276,     4,     4,     4,     4,     4,   194,   196,     4,     4,
+       4,   375,     4,   452,     4,   194,     4,   194,   194,   468,
+       4,     4,     4,     4,     4,     4,     4,   486,     4,     4,
+     194,     4,     4,     4,   196,   411,     4,   196,   196,   435,
+       4,     4,   351,   196,     4,     4,   194,     4,   194,   194,
+       4,     4,   196,   196,     4,     4,     4,     4,   554,   600,
+       4,   194,   591,     4,     7,     7,   214,   214,   214,   193,
+       7,     7,     7,     7,     5,   193,   159,   160,   161,   162,
+     196,   259,   193,   193,     5,     5,     5,   216,   218,   193,
+      92,    93,    94,    95,   388,     5,     5,     5,     5,     7,
+       5,     5,     5,     7,     7,     7,     7,     7,   193,   193,
+       5,     5,   225,     5,     5,   193,   193,   193,   225,   193,
+       7,   193,   193,   193,   225,   225,   225,   193,   193,   193,
+     193,   193,   193,   193,   193,   193,   193,   193,   214,   193,
+     193,   193,   156,   157,   567,   158,   259,   193,   193,   193,
+       5,   214,   238,   599,   590,   275,    21,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,   229,   290,   291,   292,   295,
+     297,   299,   301,   302,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,   313,   315,   316,   318,   320,   290,     7,
+     286,   287,   288,     7,   368,   369,   370,     7,   403,   404,
+     405,     7,   427,   428,   429,     7,   393,   394,   395,   110,
+     193,   330,   331,   332,   333,   223,   111,   113,   332,   336,
+     337,   338,   339,   101,   324,   325,   326,     7,   508,   509,
+       7,   478,   479,   480,     7,   344,   345,   346,   120,   121,
+     122,   123,   124,   125,   358,   359,   360,   361,   362,   363,
+     364,   365,    21,   130,   131,   132,   133,   229,   304,   455,
+     457,   520,   521,   522,   525,   526,   528,   529,   136,   137,
+     229,   455,   457,   533,   534,   535,   537,   139,   140,   141,
+     193,   455,   457,   541,   542,   543,   544,   546,   547,   553,
+       7,   603,   604,   226,     7,   445,   446,   447,     7,   461,
+     462,   463,   115,   487,   503,   504,   286,     8,     8,     8,
+       8,   293,   296,   298,   300,     4,     4,     4,     4,     4,
+     314,     4,     4,   317,   319,   321,     4,     4,     4,     4,
+       3,     8,     8,   289,     6,     3,   371,     6,     3,   406,
+       6,     3,   430,     6,     3,   396,     6,     3,     3,     6,
+       6,     3,     6,   327,     3,     8,   510,     3,     6,   481,
+       6,     3,   347,     6,     3,     4,     4,     4,     4,     4,
+       4,     3,     8,   523,   527,     4,     4,     4,     3,     8,
+     536,   538,     3,     8,     4,   545,     4,   548,     3,     8,
+       8,   605,     3,     6,   193,   227,   228,   448,     6,     3,
+     464,     6,     3,   505,     8,     6,     4,     4,     4,     4,
+     194,   196,   194,   196,   194,     4,   194,   194,     4,     4,
+       4,   194,   194,   196,   194,   291,   290,   288,   374,   370,
+     409,   405,   433,   429,   229,   242,   243,   244,   245,   246,
+     247,   248,   249,   250,   251,   252,   254,   255,   256,   257,
+     260,   262,   264,   266,   268,   302,   366,   378,   380,   382,
+     384,   386,   390,   397,   398,   425,   455,   457,   501,   395,
+     331,   337,     4,   325,   104,   105,   229,   302,   425,   455,
+     457,   511,   512,   513,   514,   515,   517,   509,   484,   480,
+     350,   346,   194,   194,   194,   194,   194,   194,   359,     4,
+       4,   194,   194,   194,   521,     4,     4,   534,   196,     4,
+     194,     4,   542,   167,   169,   170,   229,   302,   455,   457,
+     606,   607,   608,   609,   611,   604,     6,     3,   451,   447,
+     467,   463,     4,    22,    23,    24,    25,   294,   193,   193,
+     193,   193,   193,   193,   193,     8,     8,     8,     8,     3,
+       8,   193,   516,     4,     8,     3,     8,     8,   127,   128,
+     129,   524,   193,   193,   193,   193,   214,   612,     4,   610,
+       3,     8,   193,     8,     8,   193,   398,     4,   196,   513,
+       4,   194,     4,   607,   193,     5,   193,     7,   613,   614,
+     615,     3,     6,   168,   171,   172,   173,   174,   616,   617,
+     618,   620,   621,   622,   623,   614,   619,     4,     4,     4,
+     624,     3,     8,     4,   196,   194,   194,     4,   617,   193,
+     193
   };
 
   const short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   196,   198,   197,   199,   197,   200,   197,   201,   197,
-     202,   197,   203,   197,   204,   197,   205,   197,   206,   197,
-     207,   197,   208,   197,   209,   197,   210,   197,   211,   197,
-     212,   197,   213,   213,   213,   213,   213,   213,   213,   214,
-     216,   215,   217,   218,   218,   219,   219,   221,   220,   222,
-     222,   223,   223,   225,   224,   226,   226,   227,   227,   228,
-     230,   229,   231,   231,   232,   232,   232,   232,   232,   232,
-     234,   233,   236,   235,   237,   237,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
-     238,   238,   238,   238,   238,   240,   239,   241,   242,   243,
+       0,   197,   199,   198,   200,   198,   201,   198,   202,   198,
+     203,   198,   204,   198,   205,   198,   206,   198,   207,   198,
+     208,   198,   209,   198,   210,   198,   211,   198,   212,   198,
+     213,   198,   214,   214,   214,   214,   214,   214,   214,   215,
+     217,   216,   218,   219,   219,   220,   220,   222,   221,   223,
+     223,   224,   224,   226,   225,   227,   227,   228,   228,   229,
+     231,   230,   232,   232,   233,   233,   233,   233,   233,   233,
+     235,   234,   237,   236,   238,   238,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   241,   240,   242,   243,
      244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   257,   256,   258,   258,   258,   258,   258,   260,
-     259,   262,   261,   264,   263,   266,   265,   268,   267,   270,
-     269,   272,   271,   273,   273,   274,   274,   274,   274,   274,
-     276,   275,   277,   279,   278,   281,   280,   283,   282,   284,
-     284,   285,   285,   287,   286,   288,   288,   289,   289,   289,
-     289,   289,   289,   289,   289,   289,   289,   289,   289,   289,
-     289,   289,   289,   289,   289,   289,   289,   289,   291,   290,
-     292,   292,   292,   292,   294,   293,   296,   295,   298,   297,
-     299,   301,   300,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   312,   311,   313,   315,   314,   317,   316,   319,
-     318,   321,   320,   322,   322,   323,   325,   324,   327,   326,
-     328,   328,   329,   329,   330,   331,   333,   332,   334,   334,
-     335,   335,   335,   336,   337,   339,   338,   341,   340,   342,
-     342,   343,   343,   345,   344,   347,   346,   348,   348,   348,
-     349,   349,   351,   350,   353,   352,   355,   354,   356,   356,
-     357,   357,   357,   357,   357,   357,   358,   359,   360,   361,
-     362,   363,   365,   364,   366,   366,   367,   367,   369,   368,
-     371,   370,   372,   372,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   373,
-     373,   373,   373,   373,   373,   373,   373,   373,   373,   375,
-     374,   377,   376,   379,   378,   381,   380,   383,   382,   385,
-     384,   386,   386,   386,   386,   387,   388,   390,   389,   391,
-     391,   392,   392,   394,   393,   395,   395,   396,   396,   396,
-     396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
-     396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
-     396,   396,   396,   396,   396,   396,   396,   396,   396,   398,
-     397,   400,   399,   401,   401,   402,   402,   404,   403,   406,
-     405,   407,   407,   408,   408,   409,   409,   409,   409,   409,
-     409,   409,   409,   409,   409,   410,   411,   412,   414,   413,
-     416,   415,   418,   417,   419,   421,   420,   422,   424,   423,
-     425,   425,   426,   426,   428,   427,   430,   429,   431,   431,
-     432,   432,   433,   433,   433,   433,   433,   433,   433,   433,
-     433,   434,   436,   435,   437,   438,   439,   440,   442,   441,
-     443,   443,   444,   444,   446,   445,   448,   447,   449,   449,
-     450,   450,   450,   450,   450,   450,   450,   452,   451,   454,
-     453,   456,   455,   458,   457,   459,   459,   460,   460,   462,
-     461,   464,   463,   465,   465,   466,   466,   466,   466,   466,
-     466,   466,   466,   466,   466,   466,   468,   467,   469,   471,
-     470,   472,   473,   475,   474,   476,   476,   477,   477,   479,
-     478,   481,   480,   482,   482,   483,   483,   484,   484,   484,
-     484,   484,   484,   484,   484,   484,   484,   484,   486,   485,
-     488,   487,   490,   489,   492,   491,   494,   493,   496,   495,
-     498,   497,   500,   499,   501,   501,   503,   502,   505,   504,
-     506,   506,   508,   507,   509,   509,   510,   510,   511,   511,
-     511,   511,   511,   511,   511,   512,   514,   513,   515,   517,
-     516,   518,   518,   519,   519,   519,   519,   519,   519,   519,
-     519,   519,   521,   520,   522,   522,   522,   523,   525,   524,
-     526,   527,   528,   530,   529,   531,   531,   532,   532,   532,
-     532,   532,   534,   533,   536,   535,   538,   537,   539,   539,
-     540,   540,   540,   540,   540,   540,   541,   543,   542,   544,
-     546,   545,   548,   547,   550,   549,   551,   551,   552,   552,
-     552,   552,   552,   552,   552,   552,   552,   552,   552,   552,
-     552,   552,   552,   552,   552,   552,   553,   555,   554,   557,
-     556,   558,   560,   559,   561,   562,   564,   563,   565,   565,
-     567,   566,   568,   569,   571,   570,   573,   572,   575,   574,
-     577,   576,   579,   578,   581,   580,   583,   582,   585,   584,
-     587,   586,   588,   588,   589,   589,   591,   590,   592,   594,
-     593,   596,   595,   597,   597,   598,   600,   599,   601,   601,
-     603,   602,   604,   604,   605,   605,   605,   605,   605,   605,
-     605,   606,   608,   607,   610,   609,   611,   611,   613,   612,
-     614,   614,   615,   615,   615,   615,   615,   617,   616,   618,
-     619,   620,   622,   621
+     254,   255,   256,   258,   257,   259,   259,   259,   259,   259,
+     261,   260,   263,   262,   265,   264,   267,   266,   268,   270,
+     269,   272,   271,   274,   273,   275,   275,   276,   276,   276,
+     276,   276,   278,   277,   279,   281,   280,   283,   282,   285,
+     284,   286,   286,   287,   287,   289,   288,   290,   290,   291,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     293,   292,   294,   294,   294,   294,   296,   295,   298,   297,
+     300,   299,   301,   303,   302,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   314,   313,   315,   317,   316,   319,
+     318,   321,   320,   323,   322,   324,   324,   325,   327,   326,
+     329,   328,   330,   330,   331,   331,   332,   333,   335,   334,
+     336,   336,   337,   337,   337,   338,   339,   341,   340,   343,
+     342,   344,   344,   345,   345,   347,   346,   349,   348,   350,
+     350,   350,   351,   351,   353,   352,   355,   354,   357,   356,
+     358,   358,   359,   359,   359,   359,   359,   359,   360,   361,
+     362,   363,   364,   365,   367,   366,   368,   368,   369,   369,
+     371,   370,   373,   372,   374,   374,   375,   375,   375,   375,
+     375,   375,   375,   375,   375,   375,   375,   375,   375,   375,
+     375,   375,   375,   375,   375,   375,   375,   375,   375,   375,
+     375,   375,   375,   375,   375,   375,   375,   375,   375,   375,
+     375,   375,   377,   376,   379,   378,   381,   380,   383,   382,
+     385,   384,   387,   386,   388,   388,   388,   388,   389,   390,
+     392,   391,   393,   393,   394,   394,   396,   395,   397,   397,
+     398,   398,   398,   398,   398,   398,   398,   398,   398,   398,
+     398,   398,   398,   398,   398,   398,   398,   398,   398,   398,
+     398,   398,   398,   398,   398,   398,   398,   398,   398,   398,
+     398,   398,   398,   400,   399,   402,   401,   403,   403,   404,
+     404,   406,   405,   408,   407,   409,   409,   410,   410,   411,
+     411,   411,   411,   411,   411,   411,   411,   411,   411,   412,
+     413,   414,   416,   415,   418,   417,   420,   419,   421,   423,
+     422,   424,   426,   425,   427,   427,   428,   428,   430,   429,
+     432,   431,   433,   433,   434,   434,   435,   435,   435,   435,
+     435,   435,   435,   435,   435,   436,   438,   437,   439,   440,
+     441,   442,   444,   443,   445,   445,   446,   446,   448,   447,
+     450,   449,   451,   451,   452,   452,   452,   452,   452,   452,
+     452,   454,   453,   456,   455,   458,   457,   460,   459,   461,
+     461,   462,   462,   464,   463,   466,   465,   467,   467,   468,
+     468,   468,   468,   468,   468,   468,   468,   468,   468,   468,
+     470,   469,   471,   473,   472,   474,   475,   477,   476,   478,
+     478,   479,   479,   481,   480,   483,   482,   484,   484,   485,
+     485,   486,   486,   486,   486,   486,   486,   486,   486,   486,
+     486,   486,   488,   487,   490,   489,   492,   491,   494,   493,
+     496,   495,   498,   497,   500,   499,   502,   501,   503,   503,
+     505,   504,   507,   506,   508,   508,   510,   509,   511,   511,
+     512,   512,   513,   513,   513,   513,   513,   513,   513,   514,
+     516,   515,   517,   519,   518,   520,   520,   521,   521,   521,
+     521,   521,   521,   521,   521,   521,   523,   522,   524,   524,
+     524,   525,   527,   526,   528,   529,   530,   532,   531,   533,
+     533,   534,   534,   534,   534,   534,   536,   535,   538,   537,
+     540,   539,   541,   541,   542,   542,   542,   542,   542,   542,
+     543,   545,   544,   546,   548,   547,   550,   549,   552,   551,
+     553,   553,   554,   554,   554,   554,   554,   554,   554,   554,
+     554,   554,   554,   554,   554,   554,   554,   554,   554,   554,
+     555,   557,   556,   559,   558,   560,   562,   561,   563,   564,
+     566,   565,   567,   567,   569,   568,   570,   571,   573,   572,
+     575,   574,   577,   576,   579,   578,   581,   580,   583,   582,
+     585,   584,   587,   586,   589,   588,   590,   590,   591,   591,
+     593,   592,   594,   596,   595,   598,   597,   599,   599,   600,
+     602,   601,   603,   603,   605,   604,   606,   606,   607,   607,
+     607,   607,   607,   607,   607,   608,   610,   609,   612,   611,
+     613,   613,   615,   614,   616,   616,   617,   617,   617,   617,
+     617,   619,   618,   620,   621,   622,   624,   623
   };
 
   const signed char
@@ -5190,71 +5204,71 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     3,     3,     3,
+       1,     1,     1,     1,     1,     1,     0,     4,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     0,     4,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     4,     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,
+       3,     3,     3,     0,     4,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     0,     4,     0,     4,     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,     0,     4,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
-       3,     0,     4,     3,     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,
+       0,     4,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     3,     0,     4,     3,     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,     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,
-       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,     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,
-       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,
+       3,     1,     0,     4,     0,     4,     0,     4,     1,     0,
+       4,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
+       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     0,     4,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     4,     3,     0,     4,     3,     3,     0,     6,     0,
+       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     6,     1,     1,
+       0,     4,     0,     6,     1,     3,     0,     4,     0,     1,
        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     1,     1,     3,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       4,     3,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     3,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
+       1,     3,     0,     4,     3,     3,     3,     0,     6,     1,
+       3,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
+       3,     0,     4,     3,     0,     4,     0,     6,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     0,     4,     0,     4,     3,     0,     4,     3,     3,
+       0,     4,     1,     1,     0,     4,     3,     3,     0,     4,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     6,     1,     1,     0,     4,     0,     6,
-       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     1,     1,     1,     3,     0,     4,
-       3,     3,     3,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
        0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
-       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
-       0,     4,     3,     3,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     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,     1,     0,     4,     3,
-       3,     3,     0,     4
+       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,
+       1,     0,     4,     3,     3,     3,     0,     4
   };
 
 
@@ -5282,9 +5296,10 @@ namespace isc { namespace dhcp {
   "\"t1-percent\"", "\"t2-percent\"", "\"decline-probation-period\"",
   "\"server-tag\"", "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
   "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
-  "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"", "\"subnet6\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
+  "\"store-extended-info\"", "\"subnet6\"", "\"option-def\"",
+  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
+  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
   "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"",
   "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"",
   "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"",
@@ -5337,19 +5352,20 @@ namespace isc { namespace dhcp {
   "ddns_replace_client_name", "$@23", "ddns_replace_client_name_value",
   "ddns_generated_prefix", "$@24", "ddns_qualifying_suffix", "$@25",
   "hostname_char_set", "$@26", "hostname_char_replacement", "$@27",
-  "server_tag", "$@28", "interfaces_config", "$@29", "sub_interfaces6",
-  "$@30", "interfaces_config_params", "interfaces_config_param",
-  "interfaces_list", "$@31", "re_detect", "lease_database", "$@32",
-  "hosts_database", "$@33", "hosts_databases", "$@34", "database_list",
-  "not_empty_database_list", "database", "$@35", "database_map_params",
-  "database_map_param", "database_type", "$@36", "db_type", "user", "$@37",
-  "password", "$@38", "host", "$@39", "port", "name", "$@40", "persist",
-  "lfc_interval", "readonly", "connect_timeout", "reconnect_wait_time",
-  "max_row_errors", "request_timeout", "tcp_keepalive", "tcp_nodelay",
-  "contact_points", "$@41", "max_reconnect_tries", "keyspace", "$@42",
-  "consistency", "$@43", "serial_consistency", "$@44", "sanity_checks",
-  "$@45", "sanity_checks_params", "sanity_checks_param", "lease_checks",
-  "$@46", "mac_sources", "$@47", "mac_sources_list", "mac_sources_value",
+  "store_extended_info", "server_tag", "$@28", "interfaces_config", "$@29",
+  "sub_interfaces6", "$@30", "interfaces_config_params",
+  "interfaces_config_param", "interfaces_list", "$@31", "re_detect",
+  "lease_database", "$@32", "hosts_database", "$@33", "hosts_databases",
+  "$@34", "database_list", "not_empty_database_list", "database", "$@35",
+  "database_map_params", "database_map_param", "database_type", "$@36",
+  "db_type", "user", "$@37", "password", "$@38", "host", "$@39", "port",
+  "name", "$@40", "persist", "lfc_interval", "readonly", "connect_timeout",
+  "reconnect_wait_time", "max_row_errors", "request_timeout",
+  "tcp_keepalive", "tcp_nodelay", "contact_points", "$@41",
+  "max_reconnect_tries", "keyspace", "$@42", "consistency", "$@43",
+  "serial_consistency", "$@44", "sanity_checks", "$@45",
+  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@46",
+  "mac_sources", "$@47", "mac_sources_list", "mac_sources_value",
   "duid_id", "string_id", "host_reservation_identifiers", "$@48",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "hw_address_id", "flex_id", "relay_supplied_options", "$@49",
@@ -5429,83 +5445,83 @@ namespace isc { namespace dhcp {
   const short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   280,   280,   280,   281,   281,   282,   282,   283,   283,
-     284,   284,   285,   285,   286,   286,   287,   287,   288,   288,
-     289,   289,   290,   290,   291,   291,   292,   292,   293,   293,
-     294,   294,   302,   303,   304,   305,   306,   307,   308,   311,
-     316,   316,   327,   330,   331,   334,   338,   345,   345,   352,
-     353,   356,   360,   367,   367,   374,   375,   378,   382,   393,
-     403,   403,   418,   419,   423,   424,   425,   426,   427,   428,
-     431,   431,   446,   446,   455,   456,   461,   462,   463,   464,
-     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
-     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
-     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
-     505,   506,   507,   508,   509,   512,   512,   520,   525,   530,
-     535,   540,   545,   550,   555,   560,   565,   570,   575,   580,
-     585,   590,   595,   595,   603,   606,   609,   612,   615,   621,
-     621,   629,   629,   637,   637,   645,   645,   653,   653,   661,
-     661,   672,   672,   681,   682,   685,   686,   687,   688,   689,
-     692,   692,   702,   708,   708,   720,   720,   732,   732,   742,
-     743,   746,   747,   750,   750,   760,   761,   764,   765,   766,
-     767,   768,   769,   770,   771,   772,   773,   774,   775,   776,
-     777,   778,   779,   780,   781,   782,   783,   784,   787,   787,
-     794,   795,   796,   797,   800,   800,   808,   808,   816,   816,
-     824,   829,   829,   837,   842,   847,   852,   857,   862,   867,
-     872,   877,   882,   882,   890,   895,   895,   903,   903,   911,
-     911,   919,   919,   929,   930,   932,   934,   934,   952,   952,
-     962,   963,   966,   967,   970,   975,   980,   980,   990,   991,
-     994,   995,   996,   999,  1004,  1011,  1011,  1021,  1021,  1031,
-    1032,  1035,  1036,  1039,  1039,  1049,  1049,  1059,  1060,  1061,
-    1064,  1065,  1068,  1068,  1076,  1076,  1084,  1084,  1095,  1096,
-    1099,  1100,  1101,  1102,  1103,  1104,  1107,  1112,  1117,  1122,
-    1127,  1132,  1140,  1140,  1153,  1154,  1157,  1158,  1165,  1165,
-    1191,  1191,  1202,  1203,  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,  1244,
-    1244,  1252,  1252,  1260,  1260,  1268,  1268,  1276,  1276,  1286,
-    1286,  1293,  1294,  1295,  1296,  1299,  1304,  1312,  1312,  1323,
-    1324,  1328,  1329,  1332,  1332,  1340,  1341,  1344,  1345,  1346,
-    1347,  1348,  1349,  1350,  1351,  1352,  1353,  1354,  1355,  1356,
-    1357,  1358,  1359,  1360,  1361,  1362,  1363,  1364,  1365,  1366,
-    1367,  1368,  1369,  1370,  1371,  1372,  1373,  1374,  1375,  1382,
-    1382,  1395,  1395,  1404,  1405,  1408,  1409,  1414,  1414,  1429,
-    1429,  1443,  1444,  1447,  1448,  1451,  1452,  1453,  1454,  1455,
-    1456,  1457,  1458,  1459,  1460,  1463,  1465,  1470,  1472,  1472,
-    1480,  1480,  1488,  1488,  1496,  1498,  1498,  1506,  1515,  1515,
-    1527,  1528,  1533,  1534,  1539,  1539,  1551,  1551,  1563,  1564,
-    1569,  1570,  1575,  1576,  1577,  1578,  1579,  1580,  1581,  1582,
-    1583,  1586,  1588,  1588,  1596,  1598,  1600,  1605,  1613,  1613,
-    1625,  1626,  1629,  1630,  1633,  1633,  1643,  1643,  1652,  1653,
-    1656,  1657,  1658,  1659,  1660,  1661,  1662,  1665,  1665,  1673,
-    1673,  1698,  1698,  1728,  1728,  1740,  1741,  1744,  1745,  1748,
-    1748,  1760,  1760,  1772,  1773,  1776,  1777,  1778,  1779,  1780,
-    1781,  1782,  1783,  1784,  1785,  1786,  1789,  1789,  1797,  1802,
-    1802,  1810,  1815,  1823,  1823,  1833,  1834,  1837,  1838,  1841,
-    1841,  1850,  1850,  1859,  1860,  1863,  1864,  1868,  1869,  1870,
-    1871,  1872,  1873,  1874,  1875,  1876,  1877,  1878,  1881,  1881,
-    1891,  1891,  1901,  1901,  1909,  1909,  1917,  1917,  1925,  1925,
-    1933,  1933,  1946,  1946,  1956,  1957,  1960,  1960,  1971,  1971,
-    1981,  1982,  1985,  1985,  1995,  1996,  1999,  2000,  2003,  2004,
-    2005,  2006,  2007,  2008,  2009,  2012,  2014,  2014,  2022,  2030,
-    2030,  2042,  2043,  2046,  2047,  2048,  2049,  2050,  2051,  2052,
-    2053,  2054,  2057,  2057,  2064,  2065,  2066,  2069,  2074,  2074,
-    2082,  2087,  2094,  2101,  2101,  2111,  2112,  2115,  2116,  2117,
-    2118,  2119,  2122,  2122,  2130,  2130,  2140,  2140,  2152,  2153,
-    2156,  2157,  2158,  2159,  2160,  2161,  2164,  2169,  2169,  2177,
-    2182,  2182,  2191,  2191,  2203,  2203,  2213,  2214,  2217,  2218,
-    2219,  2220,  2221,  2222,  2223,  2224,  2225,  2226,  2227,  2228,
-    2229,  2230,  2231,  2232,  2233,  2234,  2237,  2242,  2242,  2250,
-    2250,  2258,  2263,  2263,  2271,  2276,  2281,  2281,  2289,  2290,
-    2293,  2293,  2302,  2308,  2314,  2314,  2322,  2322,  2331,  2331,
-    2340,  2340,  2350,  2350,  2357,  2357,  2364,  2364,  2373,  2373,
-    2384,  2384,  2394,  2395,  2399,  2400,  2403,  2403,  2413,  2423,
-    2423,  2433,  2433,  2444,  2445,  2449,  2453,  2453,  2465,  2466,
-    2470,  2470,  2478,  2479,  2482,  2483,  2484,  2485,  2486,  2487,
-    2488,  2491,  2496,  2496,  2504,  2504,  2514,  2515,  2518,  2518,
-    2526,  2527,  2530,  2531,  2532,  2533,  2534,  2537,  2537,  2545,
-    2550,  2555,  2560,  2560
+       0,   281,   281,   281,   282,   282,   283,   283,   284,   284,
+     285,   285,   286,   286,   287,   287,   288,   288,   289,   289,
+     290,   290,   291,   291,   292,   292,   293,   293,   294,   294,
+     295,   295,   303,   304,   305,   306,   307,   308,   309,   312,
+     317,   317,   328,   331,   332,   335,   339,   346,   346,   353,
+     354,   357,   361,   368,   368,   375,   376,   379,   383,   394,
+     404,   404,   419,   420,   424,   425,   426,   427,   428,   429,
+     432,   432,   447,   447,   456,   457,   462,   463,   464,   465,
+     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
+     486,   487,   488,   489,   490,   491,   492,   493,   494,   495,
+     496,   497,   498,   499,   500,   501,   502,   503,   504,   505,
+     506,   507,   508,   509,   510,   511,   514,   514,   522,   527,
+     532,   537,   542,   547,   552,   557,   562,   567,   572,   577,
+     582,   587,   592,   597,   597,   605,   608,   611,   614,   617,
+     623,   623,   631,   631,   639,   639,   647,   647,   655,   660,
+     660,   668,   668,   679,   679,   688,   689,   692,   693,   694,
+     695,   696,   699,   699,   709,   715,   715,   727,   727,   739,
+     739,   749,   750,   753,   754,   757,   757,   767,   768,   771,
+     772,   773,   774,   775,   776,   777,   778,   779,   780,   781,
+     782,   783,   784,   785,   786,   787,   788,   789,   790,   791,
+     794,   794,   801,   802,   803,   804,   807,   807,   815,   815,
+     823,   823,   831,   836,   836,   844,   849,   854,   859,   864,
+     869,   874,   879,   884,   889,   889,   897,   902,   902,   910,
+     910,   918,   918,   926,   926,   936,   937,   939,   941,   941,
+     959,   959,   969,   970,   973,   974,   977,   982,   987,   987,
+     997,   998,  1001,  1002,  1003,  1006,  1011,  1018,  1018,  1028,
+    1028,  1038,  1039,  1042,  1043,  1046,  1046,  1056,  1056,  1066,
+    1067,  1068,  1071,  1072,  1075,  1075,  1083,  1083,  1091,  1091,
+    1102,  1103,  1106,  1107,  1108,  1109,  1110,  1111,  1114,  1119,
+    1124,  1129,  1134,  1139,  1147,  1147,  1160,  1161,  1164,  1165,
+    1172,  1172,  1198,  1198,  1209,  1210,  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,
+    1248,  1249,  1252,  1252,  1260,  1260,  1268,  1268,  1276,  1276,
+    1284,  1284,  1294,  1294,  1301,  1302,  1303,  1304,  1307,  1312,
+    1320,  1320,  1331,  1332,  1336,  1337,  1340,  1340,  1348,  1349,
+    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,  1391,  1391,  1404,  1404,  1413,  1414,  1417,
+    1418,  1423,  1423,  1438,  1438,  1452,  1453,  1456,  1457,  1460,
+    1461,  1462,  1463,  1464,  1465,  1466,  1467,  1468,  1469,  1472,
+    1474,  1479,  1481,  1481,  1489,  1489,  1497,  1497,  1505,  1507,
+    1507,  1515,  1524,  1524,  1536,  1537,  1542,  1543,  1548,  1548,
+    1560,  1560,  1572,  1573,  1578,  1579,  1584,  1585,  1586,  1587,
+    1588,  1589,  1590,  1591,  1592,  1595,  1597,  1597,  1605,  1607,
+    1609,  1614,  1622,  1622,  1634,  1635,  1638,  1639,  1642,  1642,
+    1652,  1652,  1661,  1662,  1665,  1666,  1667,  1668,  1669,  1670,
+    1671,  1674,  1674,  1682,  1682,  1707,  1707,  1737,  1737,  1749,
+    1750,  1753,  1754,  1757,  1757,  1769,  1769,  1781,  1782,  1785,
+    1786,  1787,  1788,  1789,  1790,  1791,  1792,  1793,  1794,  1795,
+    1798,  1798,  1806,  1811,  1811,  1819,  1824,  1832,  1832,  1842,
+    1843,  1846,  1847,  1850,  1850,  1859,  1859,  1868,  1869,  1872,
+    1873,  1877,  1878,  1879,  1880,  1881,  1882,  1883,  1884,  1885,
+    1886,  1887,  1890,  1890,  1900,  1900,  1910,  1910,  1918,  1918,
+    1926,  1926,  1934,  1934,  1942,  1942,  1955,  1955,  1965,  1966,
+    1969,  1969,  1980,  1980,  1990,  1991,  1994,  1994,  2004,  2005,
+    2008,  2009,  2012,  2013,  2014,  2015,  2016,  2017,  2018,  2021,
+    2023,  2023,  2031,  2039,  2039,  2051,  2052,  2055,  2056,  2057,
+    2058,  2059,  2060,  2061,  2062,  2063,  2066,  2066,  2073,  2074,
+    2075,  2078,  2083,  2083,  2091,  2096,  2103,  2110,  2110,  2120,
+    2121,  2124,  2125,  2126,  2127,  2128,  2131,  2131,  2139,  2139,
+    2149,  2149,  2161,  2162,  2165,  2166,  2167,  2168,  2169,  2170,
+    2173,  2178,  2178,  2186,  2191,  2191,  2200,  2200,  2212,  2212,
+    2222,  2223,  2226,  2227,  2228,  2229,  2230,  2231,  2232,  2233,
+    2234,  2235,  2236,  2237,  2238,  2239,  2240,  2241,  2242,  2243,
+    2246,  2251,  2251,  2259,  2259,  2267,  2272,  2272,  2280,  2285,
+    2290,  2290,  2298,  2299,  2302,  2302,  2311,  2317,  2323,  2323,
+    2331,  2331,  2340,  2340,  2349,  2349,  2359,  2359,  2366,  2366,
+    2373,  2373,  2382,  2382,  2393,  2393,  2403,  2404,  2408,  2409,
+    2412,  2412,  2422,  2432,  2432,  2442,  2442,  2453,  2454,  2458,
+    2462,  2462,  2474,  2475,  2479,  2479,  2487,  2488,  2491,  2492,
+    2493,  2494,  2495,  2496,  2497,  2500,  2505,  2505,  2513,  2513,
+    2523,  2524,  2527,  2527,  2535,  2536,  2539,  2540,  2541,  2542,
+    2543,  2546,  2546,  2554,  2559,  2564,  2569,  2569
   };
 
   // Print the state stack on the debug stream.
@@ -5540,9 +5556,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5544 "dhcp6_parser.cc"
+#line 5560 "dhcp6_parser.cc"
 
-#line 2568 "dhcp6_parser.yy"
+#line 2577 "dhcp6_parser.yy"
 
 
 void
index 62ef4e4485f33faca97d1789fe0739c895b227d1..426d9448219c8725292d9e3eea8719ccf78346a0 100644 (file)
@@ -531,139 +531,140 @@ namespace isc { namespace dhcp {
         TOKEN_DDNS_REPLACE_CLIENT_NAME = 315,
         TOKEN_DDNS_GENERATED_PREFIX = 316,
         TOKEN_DDNS_QUALIFYING_SUFFIX = 317,
-        TOKEN_SUBNET6 = 318,
-        TOKEN_OPTION_DEF = 319,
-        TOKEN_OPTION_DATA = 320,
-        TOKEN_NAME = 321,
-        TOKEN_DATA = 322,
-        TOKEN_CODE = 323,
-        TOKEN_SPACE = 324,
-        TOKEN_CSV_FORMAT = 325,
-        TOKEN_ALWAYS_SEND = 326,
-        TOKEN_RECORD_TYPES = 327,
-        TOKEN_ENCAPSULATE = 328,
-        TOKEN_ARRAY = 329,
-        TOKEN_POOLS = 330,
-        TOKEN_POOL = 331,
-        TOKEN_PD_POOLS = 332,
-        TOKEN_PREFIX = 333,
-        TOKEN_PREFIX_LEN = 334,
-        TOKEN_EXCLUDED_PREFIX = 335,
-        TOKEN_EXCLUDED_PREFIX_LEN = 336,
-        TOKEN_DELEGATED_LEN = 337,
-        TOKEN_USER_CONTEXT = 338,
-        TOKEN_COMMENT = 339,
-        TOKEN_SUBNET = 340,
-        TOKEN_INTERFACE = 341,
-        TOKEN_INTERFACE_ID = 342,
-        TOKEN_ID = 343,
-        TOKEN_RAPID_COMMIT = 344,
-        TOKEN_RESERVATION_MODE = 345,
-        TOKEN_DISABLED = 346,
-        TOKEN_OUT_OF_POOL = 347,
-        TOKEN_GLOBAL = 348,
-        TOKEN_ALL = 349,
-        TOKEN_SHARED_NETWORKS = 350,
-        TOKEN_MAC_SOURCES = 351,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 352,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 353,
-        TOKEN_SANITY_CHECKS = 354,
-        TOKEN_LEASE_CHECKS = 355,
-        TOKEN_CLIENT_CLASSES = 356,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 357,
-        TOKEN_TEST = 358,
-        TOKEN_ONLY_IF_REQUIRED = 359,
-        TOKEN_CLIENT_CLASS = 360,
-        TOKEN_RESERVATIONS = 361,
-        TOKEN_IP_ADDRESSES = 362,
-        TOKEN_PREFIXES = 363,
-        TOKEN_DUID = 364,
-        TOKEN_HW_ADDRESS = 365,
-        TOKEN_HOSTNAME = 366,
-        TOKEN_FLEX_ID = 367,
-        TOKEN_RELAY = 368,
-        TOKEN_IP_ADDRESS = 369,
-        TOKEN_HOOKS_LIBRARIES = 370,
-        TOKEN_LIBRARY = 371,
-        TOKEN_PARAMETERS = 372,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 373,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 374,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 375,
-        TOKEN_HOLD_RECLAIMED_TIME = 376,
-        TOKEN_MAX_RECLAIM_LEASES = 377,
-        TOKEN_MAX_RECLAIM_TIME = 378,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 379,
-        TOKEN_SERVER_ID = 380,
-        TOKEN_LLT = 381,
-        TOKEN_EN = 382,
-        TOKEN_LL = 383,
-        TOKEN_IDENTIFIER = 384,
-        TOKEN_HTYPE = 385,
-        TOKEN_TIME = 386,
-        TOKEN_ENTERPRISE_ID = 387,
-        TOKEN_DHCP4O6_PORT = 388,
-        TOKEN_CONTROL_SOCKET = 389,
-        TOKEN_SOCKET_TYPE = 390,
-        TOKEN_SOCKET_NAME = 391,
-        TOKEN_DHCP_QUEUE_CONTROL = 392,
-        TOKEN_ENABLE_QUEUE = 393,
-        TOKEN_QUEUE_TYPE = 394,
-        TOKEN_CAPACITY = 395,
-        TOKEN_DHCP_DDNS = 396,
-        TOKEN_ENABLE_UPDATES = 397,
-        TOKEN_QUALIFYING_SUFFIX = 398,
-        TOKEN_SERVER_IP = 399,
-        TOKEN_SERVER_PORT = 400,
-        TOKEN_SENDER_IP = 401,
-        TOKEN_SENDER_PORT = 402,
-        TOKEN_MAX_QUEUE_SIZE = 403,
-        TOKEN_NCR_PROTOCOL = 404,
-        TOKEN_NCR_FORMAT = 405,
-        TOKEN_OVERRIDE_NO_UPDATE = 406,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 407,
-        TOKEN_REPLACE_CLIENT_NAME = 408,
-        TOKEN_GENERATED_PREFIX = 409,
-        TOKEN_UDP = 410,
-        TOKEN_TCP = 411,
-        TOKEN_JSON = 412,
-        TOKEN_WHEN_PRESENT = 413,
-        TOKEN_NEVER = 414,
-        TOKEN_ALWAYS = 415,
-        TOKEN_WHEN_NOT_PRESENT = 416,
-        TOKEN_HOSTNAME_CHAR_SET = 417,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 418,
-        TOKEN_LOGGING = 419,
-        TOKEN_LOGGERS = 420,
-        TOKEN_OUTPUT_OPTIONS = 421,
-        TOKEN_OUTPUT = 422,
-        TOKEN_DEBUGLEVEL = 423,
-        TOKEN_SEVERITY = 424,
-        TOKEN_FLUSH = 425,
-        TOKEN_MAXSIZE = 426,
-        TOKEN_MAXVER = 427,
-        TOKEN_PATTERN = 428,
-        TOKEN_DHCP4 = 429,
-        TOKEN_DHCPDDNS = 430,
-        TOKEN_CONTROL_AGENT = 431,
-        TOKEN_TOPLEVEL_JSON = 432,
-        TOKEN_TOPLEVEL_DHCP6 = 433,
-        TOKEN_SUB_DHCP6 = 434,
-        TOKEN_SUB_INTERFACES6 = 435,
-        TOKEN_SUB_SUBNET6 = 436,
-        TOKEN_SUB_POOL6 = 437,
-        TOKEN_SUB_PD_POOL = 438,
-        TOKEN_SUB_RESERVATION = 439,
-        TOKEN_SUB_OPTION_DEFS = 440,
-        TOKEN_SUB_OPTION_DEF = 441,
-        TOKEN_SUB_OPTION_DATA = 442,
-        TOKEN_SUB_HOOKS_LIBRARY = 443,
-        TOKEN_SUB_DHCP_DDNS = 444,
-        TOKEN_SUB_LOGGING = 445,
-        TOKEN_SUB_CONFIG_CONTROL = 446,
-        TOKEN_STRING = 447,
-        TOKEN_INTEGER = 448,
-        TOKEN_FLOAT = 449,
-        TOKEN_BOOLEAN = 450
+        TOKEN_STORE_EXTENDED_INFO = 318,
+        TOKEN_SUBNET6 = 319,
+        TOKEN_OPTION_DEF = 320,
+        TOKEN_OPTION_DATA = 321,
+        TOKEN_NAME = 322,
+        TOKEN_DATA = 323,
+        TOKEN_CODE = 324,
+        TOKEN_SPACE = 325,
+        TOKEN_CSV_FORMAT = 326,
+        TOKEN_ALWAYS_SEND = 327,
+        TOKEN_RECORD_TYPES = 328,
+        TOKEN_ENCAPSULATE = 329,
+        TOKEN_ARRAY = 330,
+        TOKEN_POOLS = 331,
+        TOKEN_POOL = 332,
+        TOKEN_PD_POOLS = 333,
+        TOKEN_PREFIX = 334,
+        TOKEN_PREFIX_LEN = 335,
+        TOKEN_EXCLUDED_PREFIX = 336,
+        TOKEN_EXCLUDED_PREFIX_LEN = 337,
+        TOKEN_DELEGATED_LEN = 338,
+        TOKEN_USER_CONTEXT = 339,
+        TOKEN_COMMENT = 340,
+        TOKEN_SUBNET = 341,
+        TOKEN_INTERFACE = 342,
+        TOKEN_INTERFACE_ID = 343,
+        TOKEN_ID = 344,
+        TOKEN_RAPID_COMMIT = 345,
+        TOKEN_RESERVATION_MODE = 346,
+        TOKEN_DISABLED = 347,
+        TOKEN_OUT_OF_POOL = 348,
+        TOKEN_GLOBAL = 349,
+        TOKEN_ALL = 350,
+        TOKEN_SHARED_NETWORKS = 351,
+        TOKEN_MAC_SOURCES = 352,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 353,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 354,
+        TOKEN_SANITY_CHECKS = 355,
+        TOKEN_LEASE_CHECKS = 356,
+        TOKEN_CLIENT_CLASSES = 357,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 358,
+        TOKEN_TEST = 359,
+        TOKEN_ONLY_IF_REQUIRED = 360,
+        TOKEN_CLIENT_CLASS = 361,
+        TOKEN_RESERVATIONS = 362,
+        TOKEN_IP_ADDRESSES = 363,
+        TOKEN_PREFIXES = 364,
+        TOKEN_DUID = 365,
+        TOKEN_HW_ADDRESS = 366,
+        TOKEN_HOSTNAME = 367,
+        TOKEN_FLEX_ID = 368,
+        TOKEN_RELAY = 369,
+        TOKEN_IP_ADDRESS = 370,
+        TOKEN_HOOKS_LIBRARIES = 371,
+        TOKEN_LIBRARY = 372,
+        TOKEN_PARAMETERS = 373,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 374,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 375,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 376,
+        TOKEN_HOLD_RECLAIMED_TIME = 377,
+        TOKEN_MAX_RECLAIM_LEASES = 378,
+        TOKEN_MAX_RECLAIM_TIME = 379,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 380,
+        TOKEN_SERVER_ID = 381,
+        TOKEN_LLT = 382,
+        TOKEN_EN = 383,
+        TOKEN_LL = 384,
+        TOKEN_IDENTIFIER = 385,
+        TOKEN_HTYPE = 386,
+        TOKEN_TIME = 387,
+        TOKEN_ENTERPRISE_ID = 388,
+        TOKEN_DHCP4O6_PORT = 389,
+        TOKEN_CONTROL_SOCKET = 390,
+        TOKEN_SOCKET_TYPE = 391,
+        TOKEN_SOCKET_NAME = 392,
+        TOKEN_DHCP_QUEUE_CONTROL = 393,
+        TOKEN_ENABLE_QUEUE = 394,
+        TOKEN_QUEUE_TYPE = 395,
+        TOKEN_CAPACITY = 396,
+        TOKEN_DHCP_DDNS = 397,
+        TOKEN_ENABLE_UPDATES = 398,
+        TOKEN_QUALIFYING_SUFFIX = 399,
+        TOKEN_SERVER_IP = 400,
+        TOKEN_SERVER_PORT = 401,
+        TOKEN_SENDER_IP = 402,
+        TOKEN_SENDER_PORT = 403,
+        TOKEN_MAX_QUEUE_SIZE = 404,
+        TOKEN_NCR_PROTOCOL = 405,
+        TOKEN_NCR_FORMAT = 406,
+        TOKEN_OVERRIDE_NO_UPDATE = 407,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 408,
+        TOKEN_REPLACE_CLIENT_NAME = 409,
+        TOKEN_GENERATED_PREFIX = 410,
+        TOKEN_UDP = 411,
+        TOKEN_TCP = 412,
+        TOKEN_JSON = 413,
+        TOKEN_WHEN_PRESENT = 414,
+        TOKEN_NEVER = 415,
+        TOKEN_ALWAYS = 416,
+        TOKEN_WHEN_NOT_PRESENT = 417,
+        TOKEN_HOSTNAME_CHAR_SET = 418,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 419,
+        TOKEN_LOGGING = 420,
+        TOKEN_LOGGERS = 421,
+        TOKEN_OUTPUT_OPTIONS = 422,
+        TOKEN_OUTPUT = 423,
+        TOKEN_DEBUGLEVEL = 424,
+        TOKEN_SEVERITY = 425,
+        TOKEN_FLUSH = 426,
+        TOKEN_MAXSIZE = 427,
+        TOKEN_MAXVER = 428,
+        TOKEN_PATTERN = 429,
+        TOKEN_DHCP4 = 430,
+        TOKEN_DHCPDDNS = 431,
+        TOKEN_CONTROL_AGENT = 432,
+        TOKEN_TOPLEVEL_JSON = 433,
+        TOKEN_TOPLEVEL_DHCP6 = 434,
+        TOKEN_SUB_DHCP6 = 435,
+        TOKEN_SUB_INTERFACES6 = 436,
+        TOKEN_SUB_SUBNET6 = 437,
+        TOKEN_SUB_POOL6 = 438,
+        TOKEN_SUB_PD_POOL = 439,
+        TOKEN_SUB_RESERVATION = 440,
+        TOKEN_SUB_OPTION_DEFS = 441,
+        TOKEN_SUB_OPTION_DEF = 442,
+        TOKEN_SUB_OPTION_DATA = 443,
+        TOKEN_SUB_HOOKS_LIBRARY = 444,
+        TOKEN_SUB_DHCP_DDNS = 445,
+        TOKEN_SUB_LOGGING = 446,
+        TOKEN_SUB_CONFIG_CONTROL = 447,
+        TOKEN_STRING = 448,
+        TOKEN_INTEGER = 449,
+        TOKEN_FLOAT = 450,
+        TOKEN_BOOLEAN = 451
       };
     };
 
@@ -805,29 +806,29 @@ namespace isc { namespace dhcp {
         // Type destructor.
 switch (yytype)
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -907,13 +908,13 @@ switch (yytype)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1920,6 +1921,21 @@ switch (yytype)
         return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_STORE_EXTENDED_INFO (location_type l)
+      {
+        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_STORE_EXTENDED_INFO (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_STORE_EXTENDED_INFO, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -4221,10 +4237,10 @@ switch (yytype)
     enum
     {
       yyeof_ = 0,
-      yylast_ = 1199,     ///< Last index in yytable_.
-      yynnts_ = 427,  ///< Number of nonterminal symbols.
+      yylast_ = 1209,     ///< Last index in yytable_.
+      yynnts_ = 428,  ///< Number of nonterminal symbols.
       yyfinal_ = 32, ///< Termination state number.
-      yyntokens_ = 196  ///< Number of tokens.
+      yyntokens_ = 197  ///< Number of tokens.
     };
 
 
@@ -4287,9 +4303,9 @@ switch (yytype)
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195
+     195,   196
     };
-    const int user_token_number_max_ = 450;
+    const int user_token_number_max_ = 451;
 
     if (t <= 0)
       return yyeof_;
@@ -4309,29 +4325,29 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -4350,29 +4366,29 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -4398,29 +4414,29 @@ switch (yytype)
     super_type::move (s);
     switch (this->type_get ())
     {
-      case 213: // value
-      case 217: // map_value
-      case 258: // ddns_replace_client_name_value
-      case 292: // db_type
-      case 386: // hr_mode
-      case 522: // duid_type
-      case 565: // ncr_protocol_value
+      case 214: // value
+      case 218: // map_value
+      case 259: // ddns_replace_client_name_value
+      case 294: // db_type
+      case 388: // hr_mode
+      case 524: // duid_type
+      case 567: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 195: // "boolean"
+      case 196: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 194: // "floating point"
+      case 195: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 193: // "integer"
+      case 194: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 192: // "constant string"
+      case 193: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -4480,7 +4496,7 @@ switch (yytype)
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 4484 "dhcp6_parser.h"
+#line 4500 "dhcp6_parser.h"
 
 
 
index f0f6d817cee8a6bd8991beba0560ebbd1ab2869b..1f920a223c9b2b29552e331bc6c650812219bf30 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202003301426
+// Generated 202004021911
 // A Bison parser, made by GNU Bison 3.5.3.
 
 // Locations for Bison parsers in C++
index 20044db1130412fca296ee23e1c1e2713bc2ed2b..eade9cabbb08d3e023a935dd8d2f3a8a7f6b0ff3 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202003301426
+// Generated 202004021911
 // A Bison parser, made by GNU Bison 3.5.3.
 
 // Starting with Bison 3.2, this file is useless: the structure it
index c001a0982b51c4f79df4290b28660bb51c91f2c2..3ecdc24aeda3c7075bd6b090044ce4ff6db8e5fa 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202003301426
+// Generated 202004021911
 // A Bison parser, made by GNU Bison 3.5.3.
 
 // Starting with Bison 3.2, this file is useless: the structure it