]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Finishing merge of trac5098 (migrate client class def)
authorFrancis Dupont <fdupont@isc.org>
Thu, 19 Jan 2017 13:38:51 +0000 (14:38 +0100)
committerFrancis Dupont <fdupont@isc.org>
Thu, 19 Jan 2017 13:38:51 +0000 (14:38 +0100)
1  2 
ChangeLog
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/lib/dhcpsrv/srv_config.h

diff --cc ChangeLog
index c7e14dcc1fce80d39c4d2f70af4ac8b7de2e7523,138cbc07c4e5050dc70e507dad48ce3a62342d47..808c52783b6fb7030c41cffd41db15d6a3c6fd3c
+++ b/ChangeLog
@@@ -1,18 -1,3 +1,23 @@@
++1207. [func]          fdupont
++      Client classes parser migrated to SimpleParser. The 'name'
++      parameter in 'client-classes' definitions is now mandatory.
++      (Trac #5098, git xxx)
++
 +1206. [func]          tomek
 +      'hooks-libraries' parser migrated to SimpleParser. The code will
 +      now refuse a configuration if a hook library fails to load.
 +      (Trac #5031, #5041, git 1bbaf4cbcf6fda59bacdf526a6c762315fdd88a1)
 +
 +1205. [func]          tomek
 +      Parsers for interfaces configuration converted to SimpleParser.
 +      Removed obsolete 'version' parameter in Dhcp6.
 +      (Trac #5020, #5038, git 3d8e48c640e302670c04907468d11faafbe9fe7b)
 +
 +1204.   [func]         marcin
 +      Added 'control_command_receive' hook point to Kea Command
 +      Manager.
 +        (Trac #5100, git d0c7cb29a7df3588c540afb4ca56de55f26142e0)
 +
  1203.   [func]         marcin
        Implemented TCPAcceptor class in libkea-asiolink. This class
        provides means to listen and asynchronously accept new TCP
index e0f813f8ff4852ecc7f059fb2f17a4cb82965a41,10113cde2b090253fbaf11d5c51ca397f4e7601f..60f1be02fe17203f918be3e8d1975bc266b47170
@@@ -253,10 -253,7 +253,10 @@@ namespace isc { namespace dhcp 
    {
        switch (that.type_get ())
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          value.move< ElementPtr > (that.value);
          break;
  
      state = that.state;
        switch (that.type_get ())
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          value.copy< ElementPtr > (that.value);
          break;
  
          << yysym.location << ": ";
      switch (yytype)
      {
 -            case 98: // "constant string"
 +            case 128: // "constant string"
  
 -#line 189 "dhcp4_parser.yy" // lalr1.cc:636
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< std::string > (); }
 -#line 352 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 358 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
 -      case 99: // "integer"
 +      case 129: // "integer"
  
 -#line 189 "dhcp4_parser.yy" // lalr1.cc:636
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< int64_t > (); }
 -#line 359 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 365 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
 -      case 100: // "floating point"
 +      case 130: // "floating point"
  
 -#line 189 "dhcp4_parser.yy" // lalr1.cc:636
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< double > (); }
 -#line 366 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 372 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
 -      case 101: // "boolean"
 +      case 131: // "boolean"
  
 -#line 189 "dhcp4_parser.yy" // lalr1.cc:636
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< bool > (); }
 -#line 373 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 379 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
 -      case 114: // value
 +      case 145: // value
  
 -#line 189 "dhcp4_parser.yy" // lalr1.cc:636
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< ElementPtr > (); }
 -#line 380 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 386 "dhcp4_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 184: // socket_type
++      case 186: // socket_type
 +
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 393 "dhcp4_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 397: // ncr_protocol_value
++      case 399: // ncr_protocol_value
 +
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 400 "dhcp4_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 406: // replace_client_name_value
++      case 408: // replace_client_name_value
 +
 +#line 202 "dhcp4_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 407 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
  
           when using variants.  */
          switch (yyr1_[yyn])
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          yylhs.value.build< ElementPtr > ();
          break;
  
      {
      // list parsing complete. Put any sanity checking here
  }
 -#line 782 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 818 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 40:
- #line 278 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 267 "dhcp4_parser.yy" // lalr1.cc:859
++  case 42:
++#line 281 "dhcp4_parser.yy" // lalr1.cc:859
+     {
+                   // List consisting of a single element.
+                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+                   }
 -#line 791 "dhcp4_parser.cc" // lalr1.cc:859
++#line 827 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 41:
 -#line 271 "dhcp4_parser.yy" // lalr1.cc:859
++  case 43:
++#line 285 "dhcp4_parser.yy" // lalr1.cc:859
+     {
+                   // List ending with , and a value.
+                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+                   }
 -#line 800 "dhcp4_parser.cc" // lalr1.cc:859
++#line 836 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 42:
 -#line 278 "dhcp4_parser.yy" // lalr1.cc:859
++  case 44:
++#line 292 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // List parsing about to start
  }
- #line 826 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 808 "dhcp4_parser.cc" // lalr1.cc:859
++#line 844 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 41:
 -  case 43:
--#line 280 "dhcp4_parser.yy" // lalr1.cc:859
++  case 45:
++#line 294 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // list parsing complete. Put any sanity checking here
      //ctx.stack_.pop_back();
  }
- #line 835 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 817 "dhcp4_parser.cc" // lalr1.cc:859
++#line 853 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 44:
 -  case 46:
--#line 289 "dhcp4_parser.yy" // lalr1.cc:859
++  case 48:
++#line 303 "dhcp4_parser.yy" // lalr1.cc:859
      {
-                   // List consisting of a single element.
-                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
-                   }
- #line 844 "dhcp4_parser.cc" // lalr1.cc:859
+                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+                           ctx.stack_.back()->add(s);
+                           }
 -#line 826 "dhcp4_parser.cc" // lalr1.cc:859
++#line 862 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 45:
 -  case 47:
--#line 293 "dhcp4_parser.yy" // lalr1.cc:859
++  case 49:
++#line 307 "dhcp4_parser.yy" // lalr1.cc:859
      {
-                   // List ending with , and a value.
-                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
-                   }
- #line 853 "dhcp4_parser.cc" // lalr1.cc:859
+                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+                           ctx.stack_.back()->add(s);
+                           }
 -#line 835 "dhcp4_parser.cc" // lalr1.cc:859
++#line 871 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 46:
 -  case 48:
--#line 304 "dhcp4_parser.yy" // lalr1.cc:859
++  case 50:
++#line 318 "dhcp4_parser.yy" // lalr1.cc:859
      {
      const std::string& where = ctx.contextName();
      const std::string& keyword = yystack_[1].value.as< std::string > ();
      error(yystack_[1].location,
            "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
  }
- #line 864 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 846 "dhcp4_parser.cc" // lalr1.cc:859
++#line 882 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 47:
 -  case 49:
--#line 314 "dhcp4_parser.yy" // lalr1.cc:859
++  case 51:
++#line 328 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 875 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 857 "dhcp4_parser.cc" // lalr1.cc:859
++#line 893 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 48:
 -  case 50:
--#line 319 "dhcp4_parser.yy" // lalr1.cc:859
++  case 52:
++#line 333 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // map parsing completed. If we ever want to do any wrap up
      // (maybe some sanity checking), this would be the best place
      // for it.
  }
- #line 885 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 867 "dhcp4_parser.cc" // lalr1.cc:859
++#line 903 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 56:
 -  case 58:
--#line 338 "dhcp4_parser.yy" // lalr1.cc:859
++  case 60:
++#line 352 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      ctx.stack_.push_back(m);
      ctx.enter(ctx.DHCP4);
  }
- #line 898 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 880 "dhcp4_parser.cc" // lalr1.cc:859
++#line 916 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 57:
 -  case 59:
--#line 345 "dhcp4_parser.yy" // lalr1.cc:859
++  case 61:
++#line 359 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // map parsing completed. If we ever want to do any wrap up
      // (maybe some sanity checking), this would be the best place
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 910 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 892 "dhcp4_parser.cc" // lalr1.cc:859
++#line 928 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 58:
 -  case 60:
--#line 355 "dhcp4_parser.yy" // lalr1.cc:859
++  case 62:
++#line 369 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the Dhcp4 map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 920 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 902 "dhcp4_parser.cc" // lalr1.cc:859
++#line 938 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 59:
 -  case 61:
--#line 359 "dhcp4_parser.yy" // lalr1.cc:859
++  case 63:
++#line 373 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 928 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 910 "dhcp4_parser.cc" // lalr1.cc:859
++#line 946 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 84:
 -  case 86:
--#line 393 "dhcp4_parser.yy" // lalr1.cc:859
++  case 88:
++#line 407 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("valid-lifetime", prf);
  }
- #line 937 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 919 "dhcp4_parser.cc" // lalr1.cc:859
++#line 955 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 85:
 -  case 87:
--#line 398 "dhcp4_parser.yy" // lalr1.cc:859
++  case 89:
++#line 412 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("renew-timer", prf);
  }
- #line 946 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 928 "dhcp4_parser.cc" // lalr1.cc:859
++#line 964 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 86:
 -  case 88:
--#line 403 "dhcp4_parser.yy" // lalr1.cc:859
++  case 90:
++#line 417 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("rebind-timer", prf);
  }
- #line 955 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 937 "dhcp4_parser.cc" // lalr1.cc:859
++#line 973 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 87:
 -  case 89:
--#line 408 "dhcp4_parser.yy" // lalr1.cc:859
++  case 91:
++#line 422 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("decline-probation-period", dpp);
  }
- #line 964 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 946 "dhcp4_parser.cc" // lalr1.cc:859
++#line 982 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 88:
 -  case 90:
--#line 413 "dhcp4_parser.yy" // lalr1.cc:859
++  case 92:
++#line 427 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("echo-client-id", echo);
  }
- #line 973 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 955 "dhcp4_parser.cc" // lalr1.cc:859
++#line 991 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 89:
 -  case 91:
--#line 418 "dhcp4_parser.yy" // lalr1.cc:859
++  case 93:
++#line 432 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("match-client-id", match);
  }
- #line 982 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 964 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1000 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 90:
 -  case 92:
--#line 424 "dhcp4_parser.yy" // lalr1.cc:859
++  case 94:
++#line 438 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces-config", i);
      ctx.stack_.push_back(i);
      ctx.enter(ctx.INTERFACES_CONFIG);
  }
- #line 993 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 975 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1011 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 91:
 -  case 93:
--#line 429 "dhcp4_parser.yy" // lalr1.cc:859
++  case 95:
++#line 443 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1002 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 984 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1020 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 96:
 -  case 98:
--#line 442 "dhcp4_parser.yy" // lalr1.cc:859
++  case 100:
++#line 456 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the interfaces-config map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1012 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 994 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 97:
 -  case 99:
--#line 446 "dhcp4_parser.yy" // lalr1.cc:859
++  case 101:
++#line 460 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1020 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1002 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1038 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 98:
 -  case 100:
--#line 450 "dhcp4_parser.yy" // lalr1.cc:859
++  case 102:
++#line 464 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1031 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1013 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1049 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 99:
 -  case 101:
--#line 455 "dhcp4_parser.yy" // lalr1.cc:859
++  case 103:
++#line 469 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1040 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1022 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1058 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 100:
 -  case 102:
--#line 460 "dhcp4_parser.yy" // lalr1.cc:859
++  case 104:
++#line 474 "dhcp4_parser.yy" // lalr1.cc:859
      {
 -    ctx.enter(ctx.NO_KEYWORD);
 +    ctx.enter(ctx.DHCP_SOCKET_TYPE);
  }
- #line 1048 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1030 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1066 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 101:
 -  case 103:
--#line 462 "dhcp4_parser.yy" // lalr1.cc:859
++  case 105:
++#line 476 "dhcp4_parser.yy" // lalr1.cc:859
      {
 -    ElementPtr type(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 -    ctx.stack_.back()->set("dhcp-socket-type", type);
 +    ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 1057 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1040 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1075 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 102:
- #line 467 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 104:
 -#line 468 "dhcp4_parser.yy" // lalr1.cc:859
++  case 106:
++#line 481 "dhcp4_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
- #line 1063 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1081 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 103:
- #line 468 "dhcp4_parser.yy" // lalr1.cc:859
++  case 107:
++#line 482 "dhcp4_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
- #line 1069 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1087 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 104:
- #line 471 "dhcp4_parser.yy" // lalr1.cc:859
++  case 108:
++#line 485 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("lease-database", i);
      ctx.stack_.push_back(i);
      ctx.enter(ctx.LEASE_DATABASE);
  }
- #line 1080 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1051 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1098 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 105:
- #line 476 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 473 "dhcp4_parser.yy" // lalr1.cc:859
++  case 109:
++#line 490 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1089 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1060 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1107 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 106:
- #line 481 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 478 "dhcp4_parser.yy" // lalr1.cc:859
++  case 110:
++#line 495 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hosts-database", i);
      ctx.stack_.push_back(i);
      ctx.enter(ctx.HOSTS_DATABASE);
  }
- #line 1100 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1071 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1118 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 107:
- #line 486 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 483 "dhcp4_parser.yy" // lalr1.cc:859
++  case 111:
++#line 500 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1109 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1080 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1127 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 119:
- #line 506 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 503 "dhcp4_parser.yy" // lalr1.cc:859
++  case 123:
++#line 520 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1117 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1088 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1135 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 120:
- #line 508 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 505 "dhcp4_parser.yy" // lalr1.cc:859
++  case 124:
++#line 522 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("type", prf);
      ctx.leave();
  }
- #line 1127 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1098 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1145 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 121:
- #line 514 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 511 "dhcp4_parser.yy" // lalr1.cc:859
++  case 125:
++#line 528 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1135 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1106 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1153 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 122:
- #line 516 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 513 "dhcp4_parser.yy" // lalr1.cc:859
++  case 126:
++#line 530 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("user", user);
      ctx.leave();
  }
- #line 1145 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1116 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1163 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 123:
- #line 522 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 519 "dhcp4_parser.yy" // lalr1.cc:859
++  case 127:
++#line 536 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1153 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1124 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1171 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 124:
- #line 524 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 521 "dhcp4_parser.yy" // lalr1.cc:859
++  case 128:
++#line 538 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("password", pwd);
      ctx.leave();
  }
- #line 1163 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1134 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1181 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 125:
- #line 530 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 527 "dhcp4_parser.yy" // lalr1.cc:859
++  case 129:
++#line 544 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1171 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1142 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1189 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 126:
- #line 532 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 529 "dhcp4_parser.yy" // lalr1.cc:859
++  case 130:
++#line 546 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("host", h);
      ctx.leave();
  }
- #line 1181 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1152 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1199 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 127:
- #line 538 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 535 "dhcp4_parser.yy" // lalr1.cc:859
++  case 131:
++#line 552 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1189 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1160 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1207 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 128:
- #line 540 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 537 "dhcp4_parser.yy" // lalr1.cc:859
++  case 132:
++#line 554 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("name", name);
      ctx.leave();
  }
- #line 1199 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1170 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1217 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 129:
- #line 546 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 543 "dhcp4_parser.yy" // lalr1.cc:859
++  case 133:
++#line 560 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("persist", n);
  }
- #line 1208 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1179 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1226 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 130:
- #line 551 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 548 "dhcp4_parser.yy" // lalr1.cc:859
++  case 134:
++#line 565 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("lfc-interval", n);
  }
- #line 1217 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1188 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1235 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 131:
- #line 556 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 553 "dhcp4_parser.yy" // lalr1.cc:859
++  case 135:
++#line 570 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("readonly", n);
  }
- #line 1226 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1197 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1244 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 132:
- #line 561 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 558 "dhcp4_parser.yy" // lalr1.cc:859
++  case 136:
++#line 575 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(duid);
  }
- #line 1235 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1206 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1253 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 133:
- #line 566 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 563 "dhcp4_parser.yy" // lalr1.cc:859
++  case 137:
++#line 580 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("host-reservation-identifiers", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
  }
- #line 1246 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1217 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1264 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 134:
- #line 571 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 568 "dhcp4_parser.yy" // lalr1.cc:859
++  case 138:
++#line 585 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1255 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1226 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1273 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 141:
- #line 586 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 583 "dhcp4_parser.yy" // lalr1.cc:859
++  case 145:
++#line 600 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(hwaddr);
  }
- #line 1264 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1235 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1282 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 142:
- #line 591 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 588 "dhcp4_parser.yy" // lalr1.cc:859
++  case 146:
++#line 605 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(circuit);
  }
- #line 1273 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1244 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1291 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 143:
- #line 596 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 593 "dhcp4_parser.yy" // lalr1.cc:859
++  case 147:
++#line 610 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(client);
  }
- #line 1282 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1253 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1300 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 144:
- #line 601 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 598 "dhcp4_parser.yy" // lalr1.cc:859
++  case 148:
++#line 615 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hooks-libraries", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.HOOKS_LIBRARIES);
  }
- #line 1293 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1264 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1311 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 145:
- #line 606 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 603 "dhcp4_parser.yy" // lalr1.cc:859
++  case 149:
++#line 620 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1302 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1273 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1320 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 150:
- #line 619 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 616 "dhcp4_parser.yy" // lalr1.cc:859
++  case 154:
++#line 633 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1312 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1283 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1330 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 151:
- #line 623 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 620 "dhcp4_parser.yy" // lalr1.cc:859
++  case 155:
++#line 637 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1320 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1291 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1338 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 152:
- #line 627 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 624 "dhcp4_parser.yy" // lalr1.cc:859
++  case 156:
++#line 641 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the hooks-libraries list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1330 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1301 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1348 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 153:
- #line 631 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 628 "dhcp4_parser.yy" // lalr1.cc:859
++  case 157:
++#line 645 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1338 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1309 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1356 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 159:
- #line 644 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 641 "dhcp4_parser.yy" // lalr1.cc:859
++  case 163:
++#line 658 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1346 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1317 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1364 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 160:
- #line 646 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 643 "dhcp4_parser.yy" // lalr1.cc:859
++  case 164:
++#line 660 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("library", lib);
      ctx.leave();
  }
- #line 1356 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1327 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1374 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 161:
- #line 652 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 649 "dhcp4_parser.yy" // lalr1.cc:859
++  case 165:
++#line 666 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1364 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1335 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1382 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 162:
- #line 654 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 651 "dhcp4_parser.yy" // lalr1.cc:859
++  case 166:
++#line 668 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 1373 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1344 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1391 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 163:
- #line 660 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 657 "dhcp4_parser.yy" // lalr1.cc:859
++  case 167:
++#line 674 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("expired-leases-processing", m);
      ctx.stack_.push_back(m);
 -    ctx.enter(ctx.NO_KEYWORD);
 +    ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
  }
- #line 1384 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1355 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1402 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
--  case 164:
- #line 665 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 662 "dhcp4_parser.yy" // lalr1.cc:859
++  case 168:
++#line 679 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1393 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1364 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1411 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 173:
- #line 682 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 167:
 -#line 674 "dhcp4_parser.yy" // lalr1.cc:859
++  case 177:
++#line 696 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 -    ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), value);
 +    ctx.stack_.back()->set("reclaim-timer-wait-time", value);
  }
- #line 1402 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1373 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1420 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 174:
- #line 687 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 168:
 -#line 682 "dhcp4_parser.yy" // lalr1.cc:859
++  case 178:
++#line 701 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 +}
- #line 1411 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1429 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 175:
- #line 692 "dhcp4_parser.yy" // lalr1.cc:859
++  case 179:
++#line 706 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("hold-reclaimed-time", value);
 +}
- #line 1420 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1438 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 176:
- #line 697 "dhcp4_parser.yy" // lalr1.cc:859
++  case 180:
++#line 711 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("max-reclaim-leases", value);
 +}
- #line 1429 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1447 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 177:
- #line 702 "dhcp4_parser.yy" // lalr1.cc:859
++  case 181:
++#line 716 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("max-reclaim-time", value);
 +}
- #line 1438 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1456 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 178:
- #line 707 "dhcp4_parser.yy" // lalr1.cc:859
++  case 182:
++#line 721 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 +}
- #line 1447 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1465 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 179:
- #line 715 "dhcp4_parser.yy" // lalr1.cc:859
++  case 183:
++#line 729 "dhcp4_parser.yy" // lalr1.cc:859
      {
      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 1458 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1384 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1476 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 180:
- #line 720 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 169:
 -#line 687 "dhcp4_parser.yy" // lalr1.cc:859
++  case 184:
++#line 734 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1467 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1393 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1485 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 185:
- #line 740 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 174:
 -#line 707 "dhcp4_parser.yy" // lalr1.cc:859
++  case 189:
++#line 754 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1477 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1403 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1495 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 186:
- #line 744 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 175:
 -#line 711 "dhcp4_parser.yy" // lalr1.cc:859
++  case 190:
++#line 758 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Once we reached this place, the subnet parsing is now complete.
      // If we want to, we can implement default values here.
      // }
      ctx.stack_.pop_back();
  }
- #line 1500 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1426 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1518 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 187:
- #line 763 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 176:
 -#line 730 "dhcp4_parser.yy" // lalr1.cc:859
++  case 191:
++#line 777 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the subnet4 list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1510 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1436 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1528 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 188:
- #line 767 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 177:
 -#line 734 "dhcp4_parser.yy" // lalr1.cc:859
++  case 192:
++#line 781 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1518 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1444 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1536 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 211:
- #line 799 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 200:
 -#line 766 "dhcp4_parser.yy" // lalr1.cc:859
++  case 215:
++#line 813 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1526 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1452 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1544 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 212:
- #line 801 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 201:
 -#line 768 "dhcp4_parser.yy" // lalr1.cc:859
++  case 216:
++#line 815 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("subnet", subnet);
      ctx.leave();
  }
- #line 1536 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1462 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1554 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 213:
- #line 807 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 202:
 -#line 774 "dhcp4_parser.yy" // lalr1.cc:859
++  case 217:
++#line 821 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1544 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1470 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1562 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 214:
- #line 809 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 203:
 -#line 776 "dhcp4_parser.yy" // lalr1.cc:859
++  case 218:
++#line 823 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("4o6-interface", iface);
      ctx.leave();
  }
- #line 1554 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1480 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1572 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 215:
- #line 815 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 204:
 -#line 782 "dhcp4_parser.yy" // lalr1.cc:859
++  case 219:
++#line 829 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1562 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1488 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1580 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 216:
- #line 817 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 205:
 -#line 784 "dhcp4_parser.yy" // lalr1.cc:859
++  case 220:
++#line 831 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("4o6-interface-id", iface);
      ctx.leave();
  }
- #line 1572 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1498 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1590 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 217:
- #line 823 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 206:
 -#line 790 "dhcp4_parser.yy" // lalr1.cc:859
++  case 221:
++#line 837 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1580 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1506 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1598 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 218:
- #line 825 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 207:
 -#line 792 "dhcp4_parser.yy" // lalr1.cc:859
++  case 222:
++#line 839 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("4o6-subnet", iface);
      ctx.leave();
  }
- #line 1590 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1516 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1608 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 219:
- #line 831 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 208:
 -#line 798 "dhcp4_parser.yy" // lalr1.cc:859
++  case 223:
++#line 845 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1598 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1524 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1616 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 220:
- #line 833 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 209:
 -#line 800 "dhcp4_parser.yy" // lalr1.cc:859
++  case 224:
++#line 847 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interface", iface);
      ctx.leave();
  }
- #line 1608 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1534 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1626 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 221:
- #line 839 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 210:
 -#line 806 "dhcp4_parser.yy" // lalr1.cc:859
++  case 225:
++#line 853 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1616 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1542 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1634 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 222:
- #line 841 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 211:
 -#line 808 "dhcp4_parser.yy" // lalr1.cc:859
++  case 226:
++#line 855 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interface-id", iface);
      ctx.leave();
  }
- #line 1626 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1552 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1644 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 223:
- #line 847 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 212:
 -#line 814 "dhcp4_parser.yy" // lalr1.cc:859
++  case 227:
++#line 861 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.CLIENT_CLASS);
  }
- #line 1634 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1560 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1652 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 224:
- #line 849 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 213:
 -#line 816 "dhcp4_parser.yy" // lalr1.cc:859
++  case 228:
++#line 863 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-class", cls);
      ctx.leave();
  }
- #line 1644 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1570 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1662 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 225:
- #line 855 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 214:
 -#line 822 "dhcp4_parser.yy" // lalr1.cc:859
++  case 229:
++#line 869 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1652 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1578 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1670 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 226:
- #line 857 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 215:
 -#line 824 "dhcp4_parser.yy" // lalr1.cc:859
++  case 230:
++#line 871 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("reservation-mode", rm);
      ctx.leave();
  }
- #line 1662 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1588 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1680 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 227:
- #line 863 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 216:
 -#line 830 "dhcp4_parser.yy" // lalr1.cc:859
++  case 231:
++#line 877 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("id", id);
  }
- #line 1671 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1597 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1689 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 228:
- #line 868 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 217:
 -#line 835 "dhcp4_parser.yy" // lalr1.cc:859
++  case 232:
++#line 882 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("rapid-commit", rc);
  }
- #line 1680 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1606 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1698 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 229:
- #line 877 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 218:
 -#line 844 "dhcp4_parser.yy" // lalr1.cc:859
++  case 233:
++#line 891 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("option-def", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.OPTION_DEF);
  }
- #line 1691 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1617 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1709 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 230:
- #line 882 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 219:
 -#line 849 "dhcp4_parser.yy" // lalr1.cc:859
++  case 234:
++#line 896 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1700 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1626 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1718 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 235:
- #line 899 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 224:
 -#line 866 "dhcp4_parser.yy" // lalr1.cc:859
++  case 239:
++#line 913 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1710 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1636 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1728 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 236:
- #line 903 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 225:
 -#line 870 "dhcp4_parser.yy" // lalr1.cc:859
++  case 240:
++#line 917 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1718 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1644 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1736 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 237:
- #line 910 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 226:
 -#line 877 "dhcp4_parser.yy" // lalr1.cc:859
++  case 241:
++#line 924 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the option-def list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1728 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1654 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1746 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 238:
- #line 914 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 227:
 -#line 881 "dhcp4_parser.yy" // lalr1.cc:859
++  case 242:
++#line 928 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1736 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1662 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1754 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 252:
- #line 940 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 241:
 -#line 907 "dhcp4_parser.yy" // lalr1.cc:859
++  case 256:
++#line 954 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("code", code);
  }
- #line 1745 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1671 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1763 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 255:
- #line 949 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 244:
 -#line 916 "dhcp4_parser.yy" // lalr1.cc:859
++  case 259:
++#line 963 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1753 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1679 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1771 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 256:
- #line 951 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 245:
 -#line 918 "dhcp4_parser.yy" // lalr1.cc:859
++  case 260:
++#line 965 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("record-types", rtypes);
      ctx.leave();
  }
- #line 1763 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1689 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1781 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 257:
- #line 957 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 246:
 -#line 924 "dhcp4_parser.yy" // lalr1.cc:859
++  case 261:
++#line 971 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1771 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1697 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1789 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 258:
- #line 959 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 247:
 -#line 926 "dhcp4_parser.yy" // lalr1.cc:859
++  case 262:
++#line 973 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("space", space);
      ctx.leave();
  }
- #line 1781 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1707 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1799 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 260:
- #line 967 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 249:
 -#line 934 "dhcp4_parser.yy" // lalr1.cc:859
++  case 264:
++#line 981 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1789 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1715 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1807 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 261:
- #line 969 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 250:
 -#line 936 "dhcp4_parser.yy" // lalr1.cc:859
++  case 265:
++#line 983 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("encapsulate", encap);
      ctx.leave();
  }
- #line 1799 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1725 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1817 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 262:
- #line 975 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 251:
 -#line 942 "dhcp4_parser.yy" // lalr1.cc:859
++  case 266:
++#line 989 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("array", array);
  }
- #line 1808 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1734 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1826 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 263:
- #line 984 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 252:
 -#line 951 "dhcp4_parser.yy" // lalr1.cc:859
++  case 267:
++#line 998 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("option-data", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.OPTION_DATA);
  }
- #line 1819 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1745 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1837 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 264:
- #line 989 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 253:
 -#line 956 "dhcp4_parser.yy" // lalr1.cc:859
++  case 268:
++#line 1003 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1828 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1754 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1846 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 269:
- #line 1008 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 258:
 -#line 975 "dhcp4_parser.yy" // lalr1.cc:859
++  case 273:
++#line 1022 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1838 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1764 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1856 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 270:
- #line 1012 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 259:
 -#line 979 "dhcp4_parser.yy" // lalr1.cc:859
++  case 274:
++#line 1026 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1846 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1772 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1864 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 271:
- #line 1019 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 260:
 -#line 986 "dhcp4_parser.yy" // lalr1.cc:859
++  case 275:
++#line 1033 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the option-data list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1856 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1782 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1874 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 272:
- #line 1023 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 261:
 -#line 990 "dhcp4_parser.yy" // lalr1.cc:859
++  case 276:
++#line 1037 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1864 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1790 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1882 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 284:
- #line 1052 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 273:
 -#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
++  case 288:
++#line 1066 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1872 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1798 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1890 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 285:
- #line 1054 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 274:
 -#line 1021 "dhcp4_parser.yy" // lalr1.cc:859
++  case 289:
++#line 1068 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("data", data);
      ctx.leave();
  }
- #line 1882 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1808 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1900 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 288:
- #line 1064 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 277:
 -#line 1031 "dhcp4_parser.yy" // lalr1.cc:859
++  case 292:
++#line 1078 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("csv-format", space);
  }
- #line 1891 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1817 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1909 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 289:
- #line 1072 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 278:
 -#line 1039 "dhcp4_parser.yy" // lalr1.cc:859
++  case 293:
++#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("pools", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.POOLS);
  }
- #line 1902 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1828 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1920 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 290:
- #line 1077 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 279:
 -#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
++  case 294:
++#line 1091 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1911 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1837 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 295:
- #line 1092 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 284:
 -#line 1059 "dhcp4_parser.yy" // lalr1.cc:859
++  case 299:
++#line 1106 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1921 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1847 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1939 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 296:
- #line 1096 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 285:
 -#line 1063 "dhcp4_parser.yy" // lalr1.cc:859
++  case 300:
++#line 1110 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1929 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1855 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 297:
- #line 1100 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 286:
 -#line 1067 "dhcp4_parser.yy" // lalr1.cc:859
++  case 301:
++#line 1114 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the pool list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1939 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1865 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1957 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 298:
- #line 1104 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 287:
 -#line 1071 "dhcp4_parser.yy" // lalr1.cc:859
++  case 302:
++#line 1118 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1947 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1873 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1965 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 304:
- #line 1117 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 293:
 -#line 1084 "dhcp4_parser.yy" // lalr1.cc:859
++  case 308:
++#line 1131 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1955 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1881 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1973 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 305:
- #line 1119 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 294:
 -#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
++  case 309:
++#line 1133 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("pool", pool);
      ctx.leave();
  }
- #line 1965 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1891 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 306:
- #line 1128 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 295:
 -#line 1095 "dhcp4_parser.yy" // lalr1.cc:859
++  case 310:
++#line 1142 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("reservations", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.RESERVATIONS);
  }
- #line 1976 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1902 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1994 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 307:
- #line 1133 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 296:
 -#line 1100 "dhcp4_parser.yy" // lalr1.cc:859
++  case 311:
++#line 1147 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1985 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1911 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 312:
- #line 1146 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 301:
 -#line 1113 "dhcp4_parser.yy" // lalr1.cc:859
++  case 316:
++#line 1160 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1995 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1921 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 313:
- #line 1150 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 302:
 -#line 1117 "dhcp4_parser.yy" // lalr1.cc:859
++  case 317:
++#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2003 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2021 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 314:
- #line 1154 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 303:
 -#line 1121 "dhcp4_parser.yy" // lalr1.cc:859
++  case 318:
++#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the reservations list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 2013 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1939 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2031 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 315:
- #line 1158 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 304:
 -#line 1125 "dhcp4_parser.yy" // lalr1.cc:859
++  case 319:
++#line 1172 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 2021 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2039 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 332:
- #line 1185 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 321:
 -#line 1152 "dhcp4_parser.yy" // lalr1.cc:859
++  case 336:
++#line 1199 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2029 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1955 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2047 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 333:
- #line 1187 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 322:
 -#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
++  case 337:
++#line 1201 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("next-server", next_server);
      ctx.leave();
  }
- #line 2039 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1965 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2057 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 334:
- #line 1193 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 323:
 -#line 1160 "dhcp4_parser.yy" // lalr1.cc:859
++  case 338:
++#line 1207 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2047 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1973 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2065 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 335:
- #line 1195 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 324:
 -#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
++  case 339:
++#line 1209 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("server-hostname", srv);
      ctx.leave();
  }
- #line 2057 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2075 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 336:
- #line 1201 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 325:
 -#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
++  case 340:
++#line 1215 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2065 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1991 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2083 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 337:
- #line 1203 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 326:
 -#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
++  case 341:
++#line 1217 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("boot-file-name", bootfile);
      ctx.leave();
  }
- #line 2075 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2001 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2093 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 338:
- #line 1209 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 327:
 -#line 1176 "dhcp4_parser.yy" // lalr1.cc:859
++  case 342:
++#line 1223 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2083 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2009 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2101 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 339:
- #line 1211 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 328:
 -#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
++  case 343:
++#line 1225 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("ip-address", addr);
      ctx.leave();
  }
- #line 2093 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2019 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2111 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 340:
- #line 1217 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 329:
 -#line 1184 "dhcp4_parser.yy" // lalr1.cc:859
++  case 344:
++#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2101 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2027 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2119 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 341:
- #line 1219 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 330:
 -#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
++  case 345:
++#line 1233 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("duid", d);
      ctx.leave();
  }
- #line 2111 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2037 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2129 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 342:
- #line 1225 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 331:
 -#line 1192 "dhcp4_parser.yy" // lalr1.cc:859
++  case 346:
++#line 1239 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2119 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2045 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2137 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 343:
- #line 1227 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 332:
 -#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
++  case 347:
++#line 1241 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hw-address", hw);
      ctx.leave();
  }
- #line 2129 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2055 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2147 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 344:
- #line 1233 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 333:
 -#line 1200 "dhcp4_parser.yy" // lalr1.cc:859
++  case 348:
++#line 1247 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2137 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2063 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2155 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 345:
- #line 1235 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 334:
 -#line 1202 "dhcp4_parser.yy" // lalr1.cc:859
++  case 349:
++#line 1249 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-id", hw);
      ctx.leave();
  }
- #line 2147 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2073 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2165 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 346:
- #line 1241 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 335:
 -#line 1208 "dhcp4_parser.yy" // lalr1.cc:859
++  case 350:
++#line 1255 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2155 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2081 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2173 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 347:
- #line 1243 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 336:
 -#line 1210 "dhcp4_parser.yy" // lalr1.cc:859
++  case 351:
++#line 1257 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("circuit-id", hw);
      ctx.leave();
  }
- #line 2165 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2091 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2183 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 348:
- #line 1250 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 337:
 -#line 1217 "dhcp4_parser.yy" // lalr1.cc:859
++  case 352:
++#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2173 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2099 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2191 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 349:
- #line 1252 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 338:
 -#line 1219 "dhcp4_parser.yy" // lalr1.cc:859
++  case 353:
++#line 1266 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hostname", host);
      ctx.leave();
  }
- #line 2183 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2109 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2201 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 350:
- #line 1258 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 339:
 -#line 1225 "dhcp4_parser.yy" // lalr1.cc:859
++  case 354:
++#line 1272 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-classes", c);
      ctx.stack_.push_back(c);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2194 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2120 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2212 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 351:
- #line 1263 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 340:
 -#line 1230 "dhcp4_parser.yy" // lalr1.cc:859
++  case 355:
++#line 1277 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2203 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2129 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2221 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 352:
- #line 1271 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 341:
 -#line 1238 "dhcp4_parser.yy" // lalr1.cc:859
++  case 356:
++#line 1285 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("relay", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.RELAY);
  }
- #line 2214 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2140 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2232 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 353:
- #line 1276 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 342:
 -#line 1243 "dhcp4_parser.yy" // lalr1.cc:859
++  case 357:
++#line 1290 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2223 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2149 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2241 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 354:
- #line 1281 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 343:
 -#line 1248 "dhcp4_parser.yy" // lalr1.cc:859
++  case 358:
++#line 1295 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2231 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2157 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 355:
- #line 1283 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 344:
 -#line 1250 "dhcp4_parser.yy" // lalr1.cc:859
++  case 359:
++#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("ip-address", ip);
      ctx.leave();
  }
- #line 2241 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2167 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2259 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 356:
- #line 1292 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 345:
 -#line 1259 "dhcp4_parser.yy" // lalr1.cc:859
++  case 360:
++#line 1306 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-classes", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.CLIENT_CLASSES);
  }
- #line 2252 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2178 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2270 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 357:
- #line 1297 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 346:
 -#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
++  case 361:
++#line 1311 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2261 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2187 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2279 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 360:
- #line 1306 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 349:
 -#line 1273 "dhcp4_parser.yy" // lalr1.cc:859
++  case 364:
++#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 2271 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2197 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2289 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 361:
- #line 1310 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 350:
 -#line 1277 "dhcp4_parser.yy" // lalr1.cc:859
++  case 365:
++#line 1324 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2279 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2205 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2297 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 374:
- #line 1333 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 363:
 -#line 1300 "dhcp4_parser.yy" // lalr1.cc:859
++  case 378:
++#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2287 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2305 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 375:
- #line 1335 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 364:
 -#line 1302 "dhcp4_parser.yy" // lalr1.cc:859
++  case 379:
++#line 1349 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("test", test);
      ctx.leave();
  }
- #line 2297 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2223 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2315 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 376:
- #line 1344 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 365:
 -#line 1311 "dhcp4_parser.yy" // lalr1.cc:859
++  case 380:
++#line 1358 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("server-id", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.SERVER_ID);
  }
- #line 2308 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2234 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2326 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 377:
- #line 1349 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 366:
 -#line 1316 "dhcp4_parser.yy" // lalr1.cc:859
++  case 381:
++#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2317 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2243 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2335 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 387:
- #line 1367 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 376:
 -#line 1334 "dhcp4_parser.yy" // lalr1.cc:859
++  case 391:
++#line 1381 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("htype", htype);
  }
- #line 2326 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2252 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2344 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 388:
- #line 1372 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 377:
 -#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
++  case 392:
++#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2334 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2260 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2352 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 389:
- #line 1374 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 378:
 -#line 1341 "dhcp4_parser.yy" // lalr1.cc:859
++  case 393:
++#line 1388 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("identifier", id);
      ctx.leave();
  }
- #line 2344 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2270 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2362 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 390:
- #line 1380 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 379:
 -#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
++  case 394:
++#line 1394 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("time", time);
  }
- #line 2353 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2279 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2371 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 391:
- #line 1385 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 380:
 -#line 1352 "dhcp4_parser.yy" // lalr1.cc:859
++  case 395:
++#line 1399 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("enterprise-id", time);
  }
- #line 2362 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2288 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2380 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 392:
- #line 1392 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 381:
 -#line 1359 "dhcp4_parser.yy" // lalr1.cc:859
++  case 396:
++#line 1406 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("dhcp4o6-port", time);
  }
- #line 2371 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2297 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2389 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 393:
- #line 1399 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 382:
 -#line 1366 "dhcp4_parser.yy" // lalr1.cc:859
++  case 397:
++#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("control-socket", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.CONTROL_SOCKET);
  }
- #line 2382 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2308 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2400 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 394:
- #line 1404 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 383:
 -#line 1371 "dhcp4_parser.yy" // lalr1.cc:859
++  case 398:
++#line 1418 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2391 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2317 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2409 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 399:
- #line 1417 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 388:
 -#line 1384 "dhcp4_parser.yy" // lalr1.cc:859
++  case 403:
++#line 1431 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2399 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2325 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2417 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 400:
- #line 1419 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 389:
 -#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
++  case 404:
++#line 1433 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("socket-type", stype);
      ctx.leave();
  }
- #line 2409 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2335 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2427 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 401:
- #line 1425 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 390:
 -#line 1392 "dhcp4_parser.yy" // lalr1.cc:859
++  case 405:
++#line 1439 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2417 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2343 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2435 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 402:
- #line 1427 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 391:
 -#line 1394 "dhcp4_parser.yy" // lalr1.cc:859
++  case 406:
++#line 1441 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("socket-name", name);
      ctx.leave();
  }
- #line 2427 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2353 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2445 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 403:
- #line 1435 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 392:
 -#line 1402 "dhcp4_parser.yy" // lalr1.cc:859
++  case 407:
++#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("dhcp-ddns", m);
      ctx.stack_.push_back(m);
 -    ctx.enter(ctx.NO_KEYWORD);
 +    ctx.enter(ctx.DHCP_DDNS);
  }
- #line 2438 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2364 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2456 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 404:
- #line 1440 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 393:
 -#line 1407 "dhcp4_parser.yy" // lalr1.cc:859
++  case 408:
++#line 1454 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2447 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2373 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2465 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 405:
- #line 1445 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 394:
 -#line 1414 "dhcp4_parser.yy" // lalr1.cc:859
++  case 409:
++#line 1459 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    // Parse the dhcp-ddns map
 +    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.push_back(m);
 +}
- #line 2457 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2475 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 406:
- #line 1449 "dhcp4_parser.yy" // lalr1.cc:859
++  case 410:
++#line 1463 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    // parsing completed
 +}
- #line 2465 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2483 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 425:
- #line 1475 "dhcp4_parser.yy" // lalr1.cc:859
++  case 429:
++#line 1489 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("enable-updates", b);
 +}
- #line 2474 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 426:
- #line 1480 "dhcp4_parser.yy" // lalr1.cc:859
++  case 430:
++#line 1494 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2482 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2381 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2500 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 427:
- #line 1482 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 395:
 -#line 1416 "dhcp4_parser.yy" // lalr1.cc:859
++  case 431:
++#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("qualifying-suffix", s);
 +    ctx.leave();
 +}
- #line 2492 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2510 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 428:
- #line 1488 "dhcp4_parser.yy" // lalr1.cc:859
++  case 432:
++#line 1502 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2500 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2518 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 429:
- #line 1490 "dhcp4_parser.yy" // lalr1.cc:859
++  case 433:
++#line 1504 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("server-ip", s);
 +    ctx.leave();
 +}
- #line 2510 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2528 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 430:
- #line 1496 "dhcp4_parser.yy" // lalr1.cc:859
++  case 434:
++#line 1510 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("server-port", i);
 +}
- #line 2519 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2537 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 431:
- #line 1501 "dhcp4_parser.yy" // lalr1.cc:859
++  case 435:
++#line 1515 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2527 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2545 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 432:
- #line 1503 "dhcp4_parser.yy" // lalr1.cc:859
++  case 436:
++#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("sender-ip", s);
 +    ctx.leave();
 +}
- #line 2537 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2555 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 433:
- #line 1509 "dhcp4_parser.yy" // lalr1.cc:859
++  case 437:
++#line 1523 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("sender-port", i);
 +}
- #line 2546 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2564 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 434:
- #line 1514 "dhcp4_parser.yy" // lalr1.cc:859
++  case 438:
++#line 1528 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("max-queue-size", i);
 +}
- #line 2555 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2573 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 435:
- #line 1519 "dhcp4_parser.yy" // lalr1.cc:859
++  case 439:
++#line 1533 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NCR_PROTOCOL);
 +}
- #line 2563 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2581 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 436:
- #line 1521 "dhcp4_parser.yy" // lalr1.cc:859
++  case 440:
++#line 1535 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
 +    ctx.leave();
 +}
- #line 2572 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2590 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 437:
- #line 1527 "dhcp4_parser.yy" // lalr1.cc:859
++  case 441:
++#line 1541 "dhcp4_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
- #line 2578 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2596 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 438:
- #line 1528 "dhcp4_parser.yy" // lalr1.cc:859
++  case 442:
++#line 1542 "dhcp4_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
- #line 2584 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2602 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 439:
- #line 1531 "dhcp4_parser.yy" // lalr1.cc:859
++  case 443:
++#line 1545 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NCR_FORMAT);
 +}
- #line 2592 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2610 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 440:
- #line 1533 "dhcp4_parser.yy" // lalr1.cc:859
++  case 444:
++#line 1547 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("ncr-format", json);
 +    ctx.leave();
 +}
- #line 2602 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2620 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 441:
- #line 1539 "dhcp4_parser.yy" // lalr1.cc:859
++  case 445:
++#line 1553 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("always-include-fqdn", b);
 +}
- #line 2611 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2629 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 442:
- #line 1544 "dhcp4_parser.yy" // lalr1.cc:859
++  case 446:
++#line 1558 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("allow-client-update",  b);
 +}
- #line 2620 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2638 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 443:
- #line 1549 "dhcp4_parser.yy" // lalr1.cc:859
++  case 447:
++#line 1563 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("override-no-update", b);
 +}
- #line 2629 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2647 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 444:
- #line 1554 "dhcp4_parser.yy" // lalr1.cc:859
++  case 448:
++#line 1568 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("override-client-update", b);
 +}
- #line 2638 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2656 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 445:
- #line 1559 "dhcp4_parser.yy" // lalr1.cc:859
++  case 449:
++#line 1573 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.REPLACE_CLIENT_NAME);
 +}
- #line 2646 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2664 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 446:
- #line 1561 "dhcp4_parser.yy" // lalr1.cc:859
++  case 450:
++#line 1575 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
 +    ctx.leave();
 +}
- #line 2655 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2673 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 447:
- #line 1567 "dhcp4_parser.yy" // lalr1.cc:859
++  case 451:
++#line 1581 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
 +      }
- #line 2663 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2681 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 448:
- #line 1570 "dhcp4_parser.yy" // lalr1.cc:859
++  case 452:
++#line 1584 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
 +      }
- #line 2671 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2689 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 449:
- #line 1573 "dhcp4_parser.yy" // lalr1.cc:859
++  case 453:
++#line 1587 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
 +      }
- #line 2679 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2697 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 450:
- #line 1576 "dhcp4_parser.yy" // lalr1.cc:859
++  case 454:
++#line 1590 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
 +      }
- #line 2687 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2705 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 451:
- #line 1579 "dhcp4_parser.yy" // lalr1.cc:859
++  case 455:
++#line 1593 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +      error(yystack_[0].location, "boolean values for the replace-client-name are "
 +                "no longer supported");
 +      }
- #line 2696 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2714 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 452:
- #line 1585 "dhcp4_parser.yy" // lalr1.cc:859
++  case 456:
++#line 1599 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2704 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2722 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 453:
- #line 1587 "dhcp4_parser.yy" // lalr1.cc:859
++  case 457:
++#line 1601 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("generated-prefix", s);
 +    ctx.leave();
 +}
- #line 2714 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2732 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 454:
- #line 1595 "dhcp4_parser.yy" // lalr1.cc:859
++  case 458:
++#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2722 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2740 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 455:
- #line 1597 "dhcp4_parser.yy" // lalr1.cc:859
++  case 459:
++#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2731 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2390 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2749 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 456:
- #line 1602 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 396:
 -#line 1421 "dhcp4_parser.yy" // lalr1.cc:859
++  case 460:
++#line 1616 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2739 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2398 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2757 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 457:
- #line 1604 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 397:
 -#line 1423 "dhcp4_parser.yy" // lalr1.cc:859
++  case 461:
++#line 1618 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2748 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2407 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2766 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 458:
- #line 1614 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 398:
 -#line 1433 "dhcp4_parser.yy" // lalr1.cc:859
++  case 462:
++#line 1628 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("Logging", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.LOGGING);
  }
- #line 2759 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2418 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2777 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 459:
- #line 1619 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 399:
 -#line 1438 "dhcp4_parser.yy" // lalr1.cc:859
++  case 463:
++#line 1633 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2768 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2427 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2786 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 463:
- #line 1636 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 403:
 -#line 1455 "dhcp4_parser.yy" // lalr1.cc:859
++  case 467:
++#line 1650 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("loggers", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.LOGGERS);
  }
- #line 2779 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2438 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2797 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 464:
- #line 1641 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 404:
 -#line 1460 "dhcp4_parser.yy" // lalr1.cc:859
++  case 468:
++#line 1655 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2788 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2447 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2806 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 467:
- #line 1653 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 407:
 -#line 1472 "dhcp4_parser.yy" // lalr1.cc:859
++  case 471:
++#line 1667 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(l);
      ctx.stack_.push_back(l);
  }
- #line 2798 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2457 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2816 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 468:
- #line 1657 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 408:
 -#line 1476 "dhcp4_parser.yy" // lalr1.cc:859
++  case 472:
++#line 1671 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2806 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2465 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2824 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 476:
- #line 1672 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 416:
 -#line 1491 "dhcp4_parser.yy" // lalr1.cc:859
++  case 480:
++#line 1686 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("debuglevel", dl);
  }
- #line 2815 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2474 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2833 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 477:
- #line 1676 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 417:
 -#line 1495 "dhcp4_parser.yy" // lalr1.cc:859
++  case 481:
++#line 1690 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2823 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2482 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2841 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 478:
- #line 1678 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 418:
 -#line 1497 "dhcp4_parser.yy" // lalr1.cc:859
++  case 482:
++#line 1692 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("severity", sev);
      ctx.leave();
  }
- #line 2833 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2851 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 479:
- #line 1684 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 419:
 -#line 1503 "dhcp4_parser.yy" // lalr1.cc:859
++  case 483:
++#line 1698 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("output_options", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.OUTPUT_OPTIONS);
  }
- #line 2844 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2503 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2862 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 480:
- #line 1689 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 420:
 -#line 1508 "dhcp4_parser.yy" // lalr1.cc:859
++  case 484:
++#line 1703 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2853 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2512 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2871 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 483:
- #line 1698 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 423:
 -#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
++  case 487:
++#line 1712 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 2863 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2522 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2881 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 484:
- #line 1702 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 424:
 -#line 1521 "dhcp4_parser.yy" // lalr1.cc:859
++  case 488:
++#line 1716 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2871 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2530 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2889 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 487:
- #line 1710 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 427:
 -#line 1529 "dhcp4_parser.yy" // lalr1.cc:859
++  case 491:
++#line 1724 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2879 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2538 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2897 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 488:
- #line 1712 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 428:
 -#line 1531 "dhcp4_parser.yy" // lalr1.cc:859
++  case 492:
++#line 1726 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("output", sev);
      ctx.leave();
  }
- #line 2889 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2548 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2907 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
  
- #line 2893 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2552 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2911 "dhcp4_parser.cc" // lalr1.cc:859
              default:
                break;
              }
    }
  
  
-   const short int Dhcp4Parser::yypact_ninf_ = -483;
 -  const short int Dhcp4Parser::yypact_ninf_ = -414;
++  const short int Dhcp4Parser::yypact_ninf_ = -482;
  
    const signed char Dhcp4Parser::yytable_ninf_ = -1;
  
    const short int
    Dhcp4Parser::yypact_[] =
    {
-      194,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,    35,    23,    56,    58,    80,    86,   124,   125,
-      160,   169,   184,   201,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,    23,   -33,    19,    88,
-       64,    20,    -5,    27,   118,    71,   -30,   235,  -483,   101,
-      147,   206,   214,   225,  -483,  -483,  -483,  -483,   228,  -483,
-       40,  -483,  -483,  -483,  -483,  -483,  -483,   239,   240,  -483,
-     -483,  -483,   241,   243,   244,   245,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,   246,  -483,  -483,  -483,    46,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,    50,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,   247,   248,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,    75,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,    93,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-      249,   250,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,   252,  -483,  -483,  -483,   254,
-     -483,  -483,  -483,   251,   258,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,   259,  -483,  -483,  -483,
-     -483,   256,   262,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,    94,  -483,  -483,  -483,   264,  -483,  -483,   265,
-     -483,   266,   269,  -483,  -483,   271,   272,   274,   275,  -483,
-     -483,  -483,   100,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-       23,    23,  -483,   126,   276,   279,   282,   283,  -483,    19,
-     -483,   284,   131,   135,   291,   295,   297,   175,   176,   177,
-      178,   299,   305,   334,   335,   336,   337,   338,   339,   216,
-      340,   342,    88,  -483,   343,   344,    64,  -483,    42,   345,
-      346,   347,   348,   349,   350,   351,   229,   226,   352,   355,
-      356,   357,    20,  -483,   358,    -5,  -483,   360,   361,   362,
-      363,   364,   365,   366,   367,   368,  -483,    27,   369,   370,
-      253,   371,   372,   373,   255,  -483,   118,   374,   257,  -483,
-       71,   375,   376,   -28,  -483,   260,   377,   379,   261,   380,
-      263,   267,   381,   383,   268,   273,   277,   278,   385,   389,
-      235,  -483,  -483,  -483,   390,   388,   391,    23,    23,  -483,
-      395,  -483,  -483,   285,   396,   398,  -483,  -483,  -483,  -483,
-      392,   401,   402,   405,   406,   407,   408,   409,  -483,   410,
-      411,  -483,   414,   102,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,   412,   418,  -483,  -483,  -483,   286,   294,   296,
-      420,   298,   301,   302,  -483,  -483,   303,   306,   430,   416,
-     -483,   308,  -483,   309,   310,   414,   311,   312,   314,   316,
-      317,   319,  -483,   320,   321,  -483,   322,   324,   325,  -483,
-     -483,   326,  -483,  -483,   327,    23,  -483,  -483,   328,   329,
-     -483,   331,  -483,  -483,    21,   359,  -483,  -483,  -483,  -483,
-       31,   332,  -483,    23,    88,   354,  -483,  -483,    64,  -483,
-      154,   154,   454,   458,   459,   174,    26,   460,   128,   106,
-      155,   235,  -483,  -483,  -483,  -483,  -483,   464,  -483,    42,
-     -483,  -483,  -483,   462,  -483,  -483,  -483,  -483,  -483,   463,
-      404,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,   122,  -483,   165,  -483,  -483,   166,
-     -483,  -483,  -483,   468,   469,   470,  -483,   181,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,   187,  -483,   471,
-      472,  -483,  -483,   473,   477,  -483,  -483,   475,   479,  -483,
-     -483,  -483,  -483,  -483,  -483,    61,  -483,  -483,  -483,  -483,
-     -483,   143,  -483,   478,   480,  -483,   481,   482,   483,   484,
-      485,   486,   189,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,   487,   488,   489,  -483,  -483,  -483,   190,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,   203,  -483,  -483,  -483,   209,
-       23,   378,  -483,  -483,   491,   492,  -483,  -483,   493,   495,
-     -483,  -483,   494,  -483,   490,   354,  -483,  -483,   496,   497,
-      499,   382,   386,   387,   154,  -483,  -483,    20,  -483,   454,
-      118,  -483,   458,    71,  -483,   459,   174,  -483,    26,  -483,
-      -30,  -483,   460,   393,   394,   397,   399,   400,   403,   128,
-     -483,   500,   413,   415,   417,   106,  -483,   501,   503,   155,
-     -483,  -483,   502,  -483,    -5,  -483,   462,    27,  -483,   463,
-      505,  -483,   506,  -483,   384,   419,   421,  -483,  -483,  -483,
-     -483,   211,  -483,   508,  -483,   509,  -483,  -483,  -483,   215,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,   422,  -483,
-     -483,  -483,  -483,   423,   424,  -483,  -483,   217,  -483,   511,
-     -483,   425,   507,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,   227,  -483,    29,
-      507,  -483,  -483,   516,  -483,  -483,  -483,   218,  -483,  -483,
-     -483,  -483,  -483,   517,   426,   520,    29,  -483,   522,  -483,
-      428,  -483,   518,  -483,  -483,   236,  -483,   427,   518,  -483,
-     -483,   221,  -483,  -483,   526,   427,  -483,   429,  -483,  -483
 -     187,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,    50,    22,    53,    55,    57,    74,    89,    99,   120,
 -     126,   144,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,    22,    59,    18,    71,    24,    19,    47,    93,
 -      91,   121,   -35,  -414,   158,   170,   182,   195,   211,  -414,
 -    -414,  -414,  -414,   186,  -414,    43,  -414,  -414,  -414,  -414,
 -    -414,  -414,   220,   231,  -414,  -414,  -414,   232,   235,   237,
 -     238,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   240,
 -    -414,  -414,  -414,    58,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,    72,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -     241,   242,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,    85,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,   110,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,   208,   229,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -     244,  -414,  -414,  -414,   245,  -414,  -414,  -414,   215,   249,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,   254,  -414,  -414,  -414,  -414,   251,   250,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,   111,  -414,  -414,
 -    -414,  -414,    22,    22,  -414,   167,   256,   257,   263,   265,
 -    -414,    18,  -414,   267,   171,   172,   281,   282,   283,   189,
 -     191,   193,   194,   285,   287,   290,   291,   292,   293,   296,
 -     297,   204,   298,   300,    71,  -414,   301,   302,    24,  -414,
 -      41,   303,   304,   305,   306,   307,   308,   309,   216,   213,
 -     312,   313,   314,   315,    19,  -414,   316,    47,  -414,   317,
 -     318,   319,   320,   321,   322,   323,   324,   325,  -414,    93,
 -     326,   327,   233,   329,   330,   331,   236,  -414,    91,   332,
 -     239,  -414,   121,   334,   335,     6,  -414,  -414,  -414,   337,
 -     336,   338,    22,    22,  -414,   339,  -414,  -414,   246,   340,
 -     341,  -414,  -414,  -414,  -414,   344,   345,   346,   347,   348,
 -     349,   350,   351,  -414,   352,   355,  -414,   358,   258,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,   356,   364,  -414,
 -    -414,  -414,   270,   271,   272,   366,   274,   275,   277,  -414,
 -    -414,   286,   288,   374,   373,  -414,   289,  -414,   294,   299,
 -     358,   310,   311,   328,   333,   342,   343,  -414,   353,   354,
 -    -414,   357,   359,   360,  -414,  -414,   361,  -414,  -414,   362,
 -      22,  -414,    22,    71,   261,  -414,  -414,    24,  -414,    17,
 -      17,   376,   378,   381,   168,    38,   383,   363,   103,    65,
 -      59,  -414,  -414,  -414,   377,  -414,    41,  -414,  -414,  -414,
 -     384,  -414,  -414,  -414,  -414,  -414,   387,   365,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,   141,  -414,   162,
 -    -414,  -414,   163,  -414,  -414,  -414,   391,   392,   394,  -414,
 -     164,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -     180,  -414,   393,   397,  -414,  -414,   395,   399,  -414,  -414,
 -     398,   400,  -414,  -414,  -414,  -414,  -414,  -414,    86,  -414,
 -    -414,  -414,  -414,  -414,   190,  -414,   401,   402,  -414,   406,
 -     184,  -414,  -414,   407,   408,   409,  -414,  -414,  -414,   192,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,   196,  -414,  -414,
 -    -414,   199,   367,   368,  -414,  -414,   410,   403,  -414,  -414,
 -     411,   412,  -414,  -414,   413,  -414,   414,   261,  -414,  -414,
 -     415,   416,   418,   369,   370,   371,    17,  -414,  -414,    19,
 -    -414,   376,    91,  -414,   378,   121,  -414,   381,   168,  -414,
 -      38,  -414,   -35,  -414,   383,   372,   363,  -414,   419,   375,
 -     379,   380,   103,  -414,   420,   421,    65,  -414,  -414,  -414,
 -     422,   424,  -414,    47,  -414,   384,    93,  -414,   387,   425,
 -    -414,   427,  -414,   382,   385,   386,  -414,  -414,  -414,  -414,
 -     202,  -414,   426,  -414,   428,  -414,  -414,  -414,   203,  -414,
 -    -414,  -414,   388,  -414,  -414,  -414,  -414,   389,   390,  -414,
 -    -414,   396,   209,  -414,   429,  -414,   404,   431,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,   219,  -414,   100,   431,  -414,  -414,   435,
 -    -414,  -414,  -414,   210,  -414,  -414,  -414,  -414,  -414,   438,
 -     405,   439,   100,  -414,   430,  -414,   432,  -414,   437,  -414,
 -    -414,   228,  -414,   417,   437,  -414,  -414,   212,  -414,  -414,
 -     441,   417,  -414,   436,  -414,  -414
++     194,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,    36,    23,    80,   123,   139,   159,   168,   172,
++     215,   221,   222,   223,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,    23,   -85,    19,    93,
++      64,    20,     5,    27,   142,    55,   -35,   235,  -482,    43,
++     102,   205,   108,   208,  -482,  -482,  -482,  -482,   241,  -482,
++      50,  -482,  -482,  -482,  -482,  -482,  -482,   243,   244,  -482,
++    -482,  -482,   245,   246,   247,   248,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,   249,  -482,  -482,  -482,    61,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,    75,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,   250,   252,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,    98,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,    99,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++     230,   254,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,   255,  -482,  -482,  -482,   257,
++    -482,  -482,  -482,   256,   259,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,   261,  -482,  -482,  -482,
++    -482,   258,   260,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,   100,  -482,  -482,  -482,   264,  -482,  -482,   265,
++    -482,   269,   271,  -482,  -482,   272,   274,   275,   276,  -482,
++    -482,  -482,   109,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++      23,    23,  -482,   130,   278,   279,   282,   283,  -482,    19,
++    -482,   284,   162,   163,   291,   295,   297,   174,   175,   176,
++     177,   303,   305,   334,   335,   336,   337,   338,   339,   218,
++     340,   341,    93,  -482,   342,   346,    64,  -482,    42,   347,
++     348,   349,   350,   351,   352,   353,   229,   228,   356,   357,
++     358,   360,    20,  -482,   361,     5,  -482,   362,   363,   364,
++     365,   366,   367,   368,   369,   370,  -482,    27,   371,   372,
++     251,   373,   374,   375,   253,  -482,   142,   377,   262,  -482,
++      55,   378,   379,    68,  -482,   263,   381,   382,   266,   383,
++     267,   268,   384,   385,   270,   273,   277,   280,   386,   387,
++     235,  -482,  -482,  -482,   388,   391,   392,    23,    23,  -482,
++     393,  -482,  -482,   281,   395,   396,  -482,  -482,  -482,  -482,
++     400,   401,   402,   405,   407,   408,   409,   410,  -482,   411,
++     412,  -482,   415,   145,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,   406,   418,  -482,  -482,  -482,   287,   294,   296,
++     420,   301,   302,   306,  -482,  -482,   307,   308,   426,   416,
++    -482,   309,  -482,   310,   311,   415,   312,   314,   317,   319,
++     320,   321,  -482,   322,   324,  -482,   325,   326,   327,  -482,
++    -482,   328,  -482,  -482,   329,    23,  -482,  -482,   331,   332,
++    -482,   333,  -482,  -482,    33,   359,  -482,  -482,  -482,  -482,
++     -66,   343,  -482,    23,    93,   354,  -482,  -482,    64,  -482,
++     116,   116,   458,   459,   460,   171,    26,   461,   118,    40,
++     112,   235,  -482,  -482,  -482,  -482,  -482,   465,  -482,    42,
++    -482,  -482,  -482,   463,  -482,  -482,  -482,  -482,  -482,   466,
++     413,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,   110,  -482,   154,  -482,  -482,   155,
++    -482,  -482,  -482,   468,   470,   471,  -482,   164,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,   166,  -482,   472,
++     473,  -482,  -482,   475,   474,  -482,  -482,   476,   480,  -482,
++    -482,  -482,  -482,  -482,  -482,   220,  -482,  -482,  -482,  -482,
++    -482,   233,  -482,   478,   482,  -482,   483,   484,   485,   486,
++     487,   488,   170,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,   489,   490,   491,  -482,  -482,  -482,   178,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,   196,  -482,  -482,  -482,   198,
++     376,   380,  -482,  -482,   492,   493,  -482,  -482,   494,   496,
++    -482,  -482,   495,  -482,   497,   354,  -482,  -482,   498,   501,
++     502,   355,   389,   390,   116,  -482,  -482,    20,  -482,   458,
++     142,  -482,   459,    55,  -482,   460,   171,  -482,    26,  -482,
++     -35,  -482,   461,   394,   397,   398,   399,   403,   404,   118,
++    -482,   503,   414,   417,   419,    40,  -482,   505,   506,   112,
++    -482,  -482,  -482,   507,   508,  -482,     5,  -482,   463,    27,
++    -482,   466,   510,  -482,   511,  -482,   421,   422,   423,  -482,
++    -482,  -482,  -482,   202,  -482,   504,  -482,   509,  -482,  -482,
++    -482,   204,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++     424,  -482,  -482,  -482,  -482,   425,   427,  -482,  -482,   428,
++     210,  -482,   512,  -482,   429,   515,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,   234,  -482,    89,   515,  -482,  -482,   520,  -482,  -482,
++    -482,   216,  -482,  -482,  -482,  -482,  -482,   521,   430,   525,
++      89,  -482,   514,  -482,   432,  -482,   523,  -482,  -482,   240,
++    -482,   433,   523,  -482,  -482,   217,  -482,  -482,   527,   433,
++    -482,   434,  -482,  -482
    };
  
    const unsigned short int
    Dhcp4Parser::yydefact_[] =
    {
         0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
 -      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     1,    36,    30,    26,    25,    22,    23,    24,
 -      29,     3,    27,    28,    49,     5,    60,     7,    98,     9,
 -     176,    11,   286,    13,   303,    15,   226,    17,   260,    19,
 -     152,    21,    38,    32,     0,     0,     0,     0,     0,   305,
 -     228,   262,     0,    40,     0,    39,     0,     0,    33,    58,
 -     398,   394,   396,     0,    57,     0,    51,    53,    55,    56,
 -      54,    92,     0,     0,   321,   104,   106,     0,     0,     0,
 -       0,   168,   218,   252,   133,   345,   144,   163,   365,     0,
 -     382,   392,    85,     0,    62,    64,    65,    66,    67,    82,
 -      83,    69,    70,    71,    72,    76,    77,    68,    74,    75,
 -      84,    73,    78,    79,    80,    81,   100,   102,     0,    94,
 -      96,    97,   349,   202,   204,   206,   278,   200,   208,   210,
 -       0,     0,   214,   212,   295,   341,   199,   180,   181,   182,
 -     194,     0,   178,   185,   196,   197,   198,   186,   187,   190,
 -     192,   188,   189,   183,   184,   191,   195,   193,   293,   292,
 -     291,     0,   288,   290,   323,   325,   339,   329,   331,   335,
 -     333,   337,   327,   320,   316,     0,   306,   307,   317,   318,
 -     319,   313,   309,   314,   311,   312,   315,   310,   119,   127,
 -       0,   246,   244,   249,     0,   239,   243,   240,     0,   229,
 -     230,   232,   242,   233,   234,   235,   248,   236,   237,   238,
 -     273,     0,   271,   272,   275,   276,     0,   263,   264,   266,
 -     267,   268,   269,   270,   159,   161,   156,     0,   154,   157,
 -     158,    37,     0,     0,    31,     0,     0,     0,     0,     0,
 -      48,     0,    50,     0,     0,     0,     0,     0,     0,     0,
 +      20,    22,     0,     0,     0,     0,     0,     0,     0,     0,
 +       0,     0,     0,     0,     1,    38,    32,    28,    27,    24,
-       25,    26,    31,     3,    29,    30,    47,     5,    58,     7,
-       96,     9,   187,    11,   297,    13,   314,    15,   237,    17,
-      271,    19,   152,    21,   405,    23,    42,    34,     0,     0,
-        0,     0,     0,   316,   239,   273,     0,     0,    44,     0,
-       43,     0,     0,    35,    56,   458,   454,   456,     0,    55,
-        0,    49,    51,    53,    54,    52,    90,     0,     0,   332,
-      104,   106,     0,     0,     0,     0,   179,   229,   263,   133,
-      356,   144,   163,   376,     0,   393,   403,    83,     0,    60,
-       62,    63,    64,    65,    80,    81,    67,    68,    69,    70,
-       74,    75,    66,    72,    73,    82,    71,    76,    77,    78,
-       79,    98,   100,     0,    92,    94,    95,   360,   213,   215,
-      217,   289,   211,   219,   221,     0,     0,   225,   223,   306,
-      352,   210,   191,   192,   193,   205,     0,   189,   196,   207,
-      208,   209,   197,   198,   201,   203,   199,   200,   194,   195,
-      202,   206,   204,   304,   303,   302,     0,   299,   301,   334,
-      336,   350,   340,   342,   346,   344,   348,   338,   331,   327,
-        0,   317,   318,   328,   329,   330,   324,   320,   325,   322,
-      323,   326,   321,   119,   127,     0,   257,   255,   260,     0,
-      250,   254,   251,     0,   240,   241,   243,   253,   244,   245,
-      246,   259,   247,   248,   249,   284,     0,   282,   283,   286,
-      287,     0,   274,   275,   277,   278,   279,   280,   281,   159,
-      161,   156,     0,   154,   157,   158,     0,   426,   428,     0,
-      431,     0,     0,   435,   439,     0,     0,     0,     0,   445,
-      452,   424,     0,   407,   409,   410,   411,   412,   413,   414,
-      415,   416,   417,   418,   419,   420,   421,   422,   423,    39,
-        0,     0,    33,     0,     0,     0,     0,     0,    46,     0,
-       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++      25,    26,    31,     3,    29,    30,    51,     5,    62,     7,
++     100,     9,   191,    11,   301,    13,   318,    15,   241,    17,
++     275,    19,   156,    21,   409,    23,    40,    34,     0,     0,
++       0,     0,     0,   320,   243,   277,     0,     0,    42,     0,
++      41,     0,     0,    35,    60,   462,   458,   460,     0,    59,
++       0,    53,    55,    57,    58,    56,    94,     0,     0,   336,
++     108,   110,     0,     0,     0,     0,   183,   233,   267,   137,
++     360,   148,   167,   380,     0,   397,   407,    87,     0,    64,
++      66,    67,    68,    69,    84,    85,    71,    72,    73,    74,
++      78,    79,    70,    76,    77,    86,    75,    80,    81,    82,
++      83,   102,   104,     0,    96,    98,    99,   364,   217,   219,
++     221,   293,   215,   223,   225,     0,     0,   229,   227,   310,
++     356,   214,   195,   196,   197,   209,     0,   193,   200,   211,
++     212,   213,   201,   202,   205,   207,   203,   204,   198,   199,
++     206,   210,   208,   308,   307,   306,     0,   303,   305,   338,
++     340,   354,   344,   346,   350,   348,   352,   342,   335,   331,
++       0,   321,   322,   332,   333,   334,   328,   324,   329,   326,
++     327,   330,   325,   123,   131,     0,   261,   259,   264,     0,
++     254,   258,   255,     0,   244,   245,   247,   257,   248,   249,
++     250,   263,   251,   252,   253,   288,     0,   286,   287,   290,
++     291,     0,   278,   279,   281,   282,   283,   284,   285,   163,
++     165,   160,     0,   158,   161,   162,     0,   430,   432,     0,
++     435,     0,     0,   439,   443,     0,     0,     0,     0,   449,
++     456,   428,     0,   411,   413,   414,   415,   416,   417,   418,
++     419,   420,   421,   422,   423,   424,   425,   426,   427,    39,
++       0,     0,    33,     0,     0,     0,     0,     0,    50,     0,
++      52,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,    59,     0,     0,     0,    97,   362,     0,
++       0,     0,     0,    63,     0,     0,     0,   101,   366,     0,
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,   188,     0,     0,   298,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,   315,     0,     0,     0,
-        0,     0,     0,     0,     0,   238,     0,     0,     0,   272,
-        0,     0,     0,     0,   153,     0,     0,     0,     0,     0,
++       0,     0,     0,   192,     0,     0,   302,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,   319,     0,     0,     0,
++       0,     0,     0,     0,     0,   242,     0,     0,     0,   276,
++       0,     0,     0,     0,   157,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,   406,    45,    36,     0,     0,     0,     0,     0,    50,
-        0,    88,    89,     0,     0,     0,    84,    85,    86,    87,
-        0,     0,     0,     0,     0,     0,     0,     0,   392,     0,
-        0,    61,     0,     0,    93,   374,   372,   373,   368,   369,
-      370,   371,     0,   363,   364,   366,   367,     0,     0,     0,
-        0,     0,     0,     0,   227,   228,     0,     0,     0,     0,
-      190,     0,   300,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,   319,     0,     0,   252,     0,     0,     0,   262,
-      242,     0,   288,   276,     0,     0,   155,   425,     0,     0,
-      430,     0,   433,   434,     0,     0,   441,   442,   443,   444,
-        0,     0,   408,     0,     0,     0,   455,   457,     0,   333,
-        0,     0,   181,   231,   265,     0,     0,   146,     0,     0,
-        0,     0,    40,    99,   102,   103,   101,     0,   361,     0,
-      214,   216,   218,   291,   212,   220,   222,   226,   224,   308,
-        0,   305,   335,   337,   351,   341,   343,   347,   345,   349,
-      339,   120,   128,   258,   256,   261,   285,   160,   162,   427,
-      429,   432,   437,   438,   436,   440,   447,   448,   449,   450,
-      451,   446,   453,    37,     0,   463,     0,   460,   462,     0,
-      121,   123,   125,     0,     0,     0,   118,     0,   108,   110,
-      111,   112,   113,   114,   115,   116,   117,     0,   185,     0,
-      182,   183,   235,     0,   232,   233,   269,     0,   266,   267,
-      132,   141,   142,   143,   137,     0,   135,   138,   139,   140,
-      358,     0,   150,     0,   147,   148,     0,     0,     0,     0,
-        0,     0,     0,   165,   167,   168,   169,   170,   171,   172,
-      388,     0,     0,     0,   386,   380,   385,     0,   378,   383,
-      381,   382,   384,   399,   401,     0,   395,   397,   398,     0,
-       42,     0,   365,   295,     0,   292,   293,   312,     0,   309,
-      310,   354,     0,    57,     0,     0,   459,    91,     0,     0,
-        0,     0,     0,     0,     0,   105,   107,     0,   180,     0,
-      239,   230,     0,   273,   264,     0,     0,   134,     0,   357,
-        0,   145,     0,     0,     0,     0,     0,     0,     0,     0,
-      164,     0,     0,     0,     0,     0,   377,     0,     0,     0,
-      394,   404,     0,   375,     0,   290,     0,   316,   307,     0,
-        0,   353,     0,   461,     0,     0,     0,   129,   130,   131,
-      109,     0,   184,     0,   234,     0,   268,   136,   359,     0,
-      149,   173,   174,   175,   176,   177,   178,   166,     0,   387,
-      390,   391,   379,     0,     0,   396,    41,     0,   294,     0,
-      311,     0,     0,   122,   124,   126,   186,   236,   270,   151,
-      389,   400,   402,   296,   313,   355,   467,     0,   465,     0,
-        0,   464,   479,     0,   477,   475,   471,     0,   469,   473,
-      474,   472,   466,     0,     0,     0,     0,   468,     0,   476,
-        0,   470,     0,   478,   483,     0,   481,     0,     0,   480,
-      487,     0,   485,   482,     0,     0,   484,     0,   486,   488
 -       0,     0,     0,     0,     0,    61,     0,     0,     0,    99,
 -     351,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,   177,     0,     0,   287,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,   304,     0,
 -       0,     0,     0,     0,     0,     0,     0,   227,     0,     0,
 -       0,   261,     0,     0,     0,     0,   153,    41,    34,     0,
 -       0,     0,     0,     0,    52,     0,    90,    91,     0,     0,
 -       0,    86,    87,    88,    89,     0,     0,     0,     0,     0,
 -       0,     0,     0,   381,     0,     0,    63,     0,     0,    95,
 -     363,   361,   362,   357,   358,   359,   360,     0,   352,   353,
 -     355,   356,     0,     0,     0,     0,     0,     0,     0,   216,
 -     217,     0,     0,     0,     0,   179,     0,   289,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,   308,     0,     0,
 -     241,     0,     0,     0,   251,   231,     0,   277,   265,     0,
 -       0,   155,     0,     0,     0,   395,   397,     0,   322,     0,
 -       0,   170,   220,   254,     0,     0,   146,     0,     0,     0,
 -       0,    42,   101,   103,     0,   350,     0,   203,   205,   207,
 -     280,   201,   209,   211,   215,   213,   297,     0,   294,   324,
 -     326,   340,   330,   332,   336,   334,   338,   328,   120,   128,
 -     247,   245,   250,   274,   160,   162,    35,     0,   403,     0,
 -     400,   402,     0,   121,   123,   125,     0,     0,     0,   118,
 -       0,   108,   110,   111,   112,   113,   114,   115,   116,   117,
 -       0,   174,     0,   171,   172,   224,     0,   221,   222,   258,
 -       0,   255,   256,   132,   141,   142,   143,   137,     0,   135,
 -     138,   139,   140,   347,     0,   150,     0,   147,   148,     0,
 -       0,   165,   377,     0,     0,     0,   375,   369,   374,     0,
 -     367,   372,   370,   371,   373,   388,   390,     0,   384,   386,
 -     387,     0,    44,     0,   354,   284,     0,   281,   282,   301,
 -       0,   298,   299,   343,     0,    59,     0,     0,   399,    93,
 -       0,     0,     0,     0,     0,     0,     0,   105,   107,     0,
 -     169,     0,   228,   219,     0,   262,   253,     0,     0,   134,
 -       0,   346,     0,   145,     0,     0,     0,   164,     0,     0,
 -       0,     0,     0,   366,     0,     0,     0,   383,   393,    46,
 -       0,    45,   364,     0,   279,     0,   305,   296,     0,     0,
 -     342,     0,   401,     0,     0,     0,   129,   130,   131,   109,
 -       0,   173,     0,   223,     0,   257,   136,   348,     0,   149,
 -     167,   166,     0,   376,   379,   380,   368,     0,     0,   385,
 -      43,     0,     0,   283,     0,   300,     0,     0,   122,   124,
 -     126,   175,   225,   259,   151,   378,   389,   391,    47,   285,
 -     302,   344,   407,     0,   405,     0,     0,   404,   419,     0,
 -     417,   415,   411,     0,   409,   413,   414,   412,   406,     0,
 -       0,     0,     0,   408,     0,   416,     0,   410,     0,   418,
 -     423,     0,   421,     0,     0,   420,   427,     0,   425,   422,
 -       0,     0,   424,     0,   426,   428
++       0,   410,    43,    36,     0,     0,     0,     0,     0,    54,
++       0,    92,    93,     0,     0,     0,    88,    89,    90,    91,
++       0,     0,     0,     0,     0,     0,     0,     0,   396,     0,
++       0,    65,     0,     0,    97,   378,   376,   377,   372,   373,
++     374,   375,     0,   367,   368,   370,   371,     0,     0,     0,
++       0,     0,     0,     0,   231,   232,     0,     0,     0,     0,
++     194,     0,   304,     0,     0,     0,     0,     0,     0,     0,
++       0,     0,   323,     0,     0,   256,     0,     0,     0,   266,
++     246,     0,   292,   280,     0,     0,   159,   429,     0,     0,
++     434,     0,   437,   438,     0,     0,   445,   446,   447,   448,
++       0,     0,   412,     0,     0,     0,   459,   461,     0,   337,
++       0,     0,   185,   235,   269,     0,     0,   150,     0,     0,
++       0,     0,    44,   103,   106,   107,   105,     0,   365,     0,
++     218,   220,   222,   295,   216,   224,   226,   230,   228,   312,
++       0,   309,   339,   341,   355,   345,   347,   351,   349,   353,
++     343,   124,   132,   262,   260,   265,   289,   164,   166,   431,
++     433,   436,   441,   442,   440,   444,   451,   452,   453,   454,
++     455,   450,   457,    37,     0,   467,     0,   464,   466,     0,
++     125,   127,   129,     0,     0,     0,   122,     0,   112,   114,
++     115,   116,   117,   118,   119,   120,   121,     0,   189,     0,
++     186,   187,   239,     0,   236,   237,   273,     0,   270,   271,
++     136,   145,   146,   147,   141,     0,   139,   142,   143,   144,
++     362,     0,   154,     0,   151,   152,     0,     0,     0,     0,
++       0,     0,     0,   169,   171,   172,   173,   174,   175,   176,
++     392,     0,     0,     0,   390,   384,   389,     0,   382,   387,
++     385,   386,   388,   403,   405,     0,   399,   401,   402,     0,
++      46,     0,   369,   299,     0,   296,   297,   316,     0,   313,
++     314,   358,     0,    61,     0,     0,   463,    95,     0,     0,
++       0,     0,     0,     0,     0,   109,   111,     0,   184,     0,
++     243,   234,     0,   277,   268,     0,     0,   138,     0,   361,
++       0,   149,     0,     0,     0,     0,     0,     0,     0,     0,
++     168,     0,     0,     0,     0,     0,   381,     0,     0,     0,
++     398,   408,    48,     0,    47,   379,     0,   294,     0,   320,
++     311,     0,     0,   357,     0,   465,     0,     0,     0,   133,
++     134,   135,   113,     0,   188,     0,   238,     0,   272,   140,
++     363,     0,   153,   177,   178,   179,   180,   181,   182,   170,
++       0,   391,   394,   395,   383,     0,     0,   400,    45,     0,
++       0,   298,     0,   315,     0,     0,   126,   128,   130,   190,
++     240,   274,   155,   393,   404,   406,    49,   300,   317,   359,
++     471,     0,   469,     0,     0,   468,   483,     0,   481,   479,
++     475,     0,   473,   477,   478,   476,   470,     0,     0,     0,
++       0,   472,     0,   480,     0,   474,     0,   482,   487,     0,
++     485,     0,     0,   484,   491,     0,   489,   486,     0,     0,
++     488,     0,   490,   492
    };
  
    const short int
    Dhcp4Parser::yypgoto_[] =
    {
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,    13,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,    65,  -483,  -164,  -483,   -58,  -483,  -483,  -483,   242,
-     -483,  -483,  -483,  -483,    49,   222,   -60,   -42,   -41,  -483,
-     -483,   -40,  -483,  -483,    47,   220,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,    52,  -127,  -468,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,   -63,  -483,  -482,
-     -483,  -483,  -483,  -483,  -483,  -483,  -138,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -142,  -483,  -483,  -483,  -139,   182,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -141,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -115,  -483,
-     -483,  -483,  -109,   230,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -471,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -113,  -483,  -483,  -483,
-     -110,  -483,   205,  -483,   -52,  -483,  -483,  -483,  -483,   -50,
-     -483,  -483,  -483,  -483,  -483,   -51,  -483,  -483,  -483,  -112,
-     -483,  -483,  -483,  -108,  -483,   204,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -140,  -483,  -483,  -483,
-     -137,   233,  -483,  -483,  -483,  -483,  -483,  -483,  -136,  -483,
-     -483,  -483,  -135,  -483,   223,   -47,  -483,  -300,  -483,  -294,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,    60,  -483,  -483,  -483,  -483,
-     -483,  -483,  -124,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -125,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,    74,   196,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
-     -483,  -483,  -483,  -483,   -78,  -483,  -483,  -483,  -192,  -483,
-     -483,  -207,  -483,  -483,  -483,  -483,  -483,  -483,  -218,  -483,
-     -483,  -224,  -483
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,   -34,  -414,  -414,  -414,  -414,   -75,  -414,  -414,
 -    -414,  -414,    56,  -414,  -414,  -414,   -54,  -414,  -414,  -414,
 -     197,  -414,  -414,  -414,  -414,     1,   159,   -56,   -40,   -38,
 -    -414,  -414,   -37,  -414,  -414,    30,   175,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,    29,  -116,  -398,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,   -59,  -414,  -413,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -124,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -128,  -414,  -414,  -414,  -120,   138,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -122,  -414,  -414,
 -    -414,  -414,  -104,  -414,  -414,  -414,  -101,   179,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -402,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -     -99,  -414,  -414,  -414,   -96,  -414,   173,  -414,   -52,  -414,
 -    -414,  -414,  -414,   -48,  -414,  -414,  -414,  -414,  -414,   -47,
 -    -414,  -414,  -414,  -100,  -414,  -414,  -414,   -94,  -414,   160,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -115,  -414,  -414,  -414,  -118,   198,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -119,  -414,  -414,  -414,  -114,  -414,   188,   -43,
 -    -414,  -256,  -414,  -255,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,    60,
 -    -414,  -414,  -414,  -414,  -414,  -414,   -93,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -103,  -414,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
 -     -51,  -414,  -414,  -414,  -168,  -414,  -414,  -181,  -414,  -414,
 -    -414,  -414,  -414,  -414,  -191,  -414,  -414,  -196,  -414
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,   -39,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,    34,  -482,  -482,  -482,   -58,  -482,  -482,
++    -482,   226,  -482,  -482,  -482,  -482,    13,   224,   -60,   -42,
++     -41,  -482,  -482,   -40,  -482,  -482,    46,   219,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,    47,
++    -127,  -468,  -482,  -482,  -482,  -482,  -482,  -482,  -482,   -63,
++    -482,  -481,  -482,  -482,  -482,  -482,  -482,  -482,  -137,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -142,  -482,  -482,  -482,
++    -139,   179,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -145,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -122,  -482,  -482,  -482,  -113,   231,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -470,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -114,  -482,
++    -482,  -482,  -109,  -482,   209,  -482,   -52,  -482,  -482,  -482,
++    -482,   -50,  -482,  -482,  -482,  -482,  -482,   -51,  -482,  -482,
++    -482,  -111,  -482,  -482,  -482,  -107,  -482,   207,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -140,  -482,
++    -482,  -482,  -136,   236,  -482,  -482,  -482,  -482,  -482,  -482,
++    -138,  -482,  -482,  -482,  -135,  -482,   225,   -47,  -482,  -294,
++    -482,  -293,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,    60,  -482,  -482,
++    -482,  -482,  -482,  -482,  -120,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -123,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,    76,   199,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
++    -482,  -482,  -482,  -482,  -482,  -482,   -77,  -482,  -482,  -482,
++    -194,  -482,  -482,  -209,  -482,  -482,  -482,  -482,  -482,  -482,
++    -220,  -482,  -482,  -226,  -482
    };
  
    const short int
    Dhcp4Parser::yydefgoto_[] =
    {
 -      -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
 -      20,    21,    30,    31,    32,    53,    67,    68,    33,    52,
 -      64,    65,   432,   542,   600,   601,   102,    35,    54,    75,
 -      76,    77,   246,    37,    55,   103,   104,   105,   106,   107,
 -     108,   109,   110,   111,   253,   128,   129,    39,    56,   130,
 -     276,   131,   277,   112,   257,   113,   258,   480,   481,   206,
 -     310,   483,   560,   484,   561,   485,   562,   207,   311,   487,
 -     488,   489,   507,   114,   266,   508,   509,   510,   511,   512,
 -     115,   268,   516,   517,   518,   582,    51,    62,   237,   238,
 -     239,   323,   240,   324,   116,   269,   520,   521,   117,   263,
 -     492,   493,   494,   569,    41,    57,   151,   152,   153,   285,
 -     154,   281,   155,   282,   156,   283,   157,   286,   158,   287,
 -     159,   291,   160,   290,   161,   162,   118,   264,   496,   497,
 -     498,   572,    47,    60,   208,   209,   210,   211,   212,   213,
 -     214,   215,   314,   216,   313,   217,   218,   315,   219,   119,
 -     265,   500,   501,   502,   575,    49,    61,   226,   227,   228,
 -     229,   230,   319,   231,   232,   233,   164,   284,   546,   547,
 -     548,   603,    43,    58,   171,   172,   173,   296,   165,   292,
 -     550,   551,   552,   606,    45,    59,   185,   186,   187,   120,
 -     256,   189,   299,   190,   300,   191,   307,   192,   302,   193,
 -     303,   194,   305,   195,   304,   196,   306,   197,   301,   167,
 -     293,   554,   609,   121,   267,   514,   280,   367,   368,   369,
 -     370,   371,   434,   122,   270,   529,   530,   531,   532,   588,
 -     533,   534,   123,   124,   272,   537,   538,   539,   594,   540,
 -     595,   125,   273,    78,   248,    79,   249,    80,   247,   469,
 -     470,   471,   556,   663,   664,   665,   673,   674,   675,   676,
 -     681,   677,   679,   691,   692,   693,   697,   698,   700
 +      -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-       21,    22,    23,    68,    33,    34,    57,    72,    73,    35,
-       56,   503,   640,    69,    70,   107,    37,    58,    80,    81,
-       82,   284,    39,    59,   108,   109,   110,   111,   112,   113,
-      114,   115,   116,   291,   133,   134,    41,    60,   135,   314,
-      136,   315,   506,   117,   295,   118,   296,   567,   568,   211,
-      348,   570,   658,   571,   659,   572,   660,   212,   349,   574,
-      575,   576,   594,   119,   304,   595,   596,   597,   598,   599,
-      120,   306,   603,   604,   605,   680,    53,    66,   242,   243,
-      244,   361,   245,   362,   121,   307,   612,   613,   614,   615,
-      616,   617,   618,   619,   122,   301,   579,   580,   581,   667,
-       43,    61,   156,   157,   158,   323,   159,   319,   160,   320,
-      161,   321,   162,   324,   163,   325,   164,   329,   165,   328,
-      166,   167,   123,   302,   583,   584,   585,   670,    49,    64,
-      213,   214,   215,   216,   217,   218,   219,   220,   352,   221,
-      351,   222,   223,   353,   224,   124,   303,   587,   588,   589,
-      673,    51,    65,   231,   232,   233,   234,   235,   357,   236,
-      237,   238,   169,   322,   644,   645,   646,   704,    45,    62,
-      176,   177,   178,   334,   170,   330,   648,   649,   650,   707,
-       47,    63,   190,   191,   192,   125,   294,   194,   337,   195,
-      338,   196,   345,   197,   340,   198,   341,   199,   343,   200,
-      342,   201,   344,   202,   339,   172,   331,   652,   710,   126,
-      305,   601,   318,   422,   423,   424,   425,   426,   507,   127,
-      308,   627,   628,   629,   630,   691,   631,   632,   128,   129,
-      310,   635,   636,   637,   697,   638,   698,   130,   311,    55,
-       67,   262,   263,   264,   265,   366,   266,   367,   267,   268,
-      369,   269,   270,   271,   372,   544,   272,   373,   273,   274,
-      275,   276,   277,   378,   551,   278,   379,    83,   286,    84,
-      287,    85,   285,   556,   557,   558,   654,   767,   768,   769,
-      777,   778,   779,   780,   785,   781,   783,   795,   796,   797,
-      801,   802,   804
++      21,    22,    23,    32,    33,    34,    57,    72,    73,    35,
++      56,    69,    70,   503,   640,   703,   704,   107,    37,    58,
++      80,    81,    82,   284,    39,    59,   108,   109,   110,   111,
++     112,   113,   114,   115,   116,   291,   133,   134,    41,    60,
++     135,   314,   136,   315,   506,   117,   295,   118,   296,   567,
++     568,   211,   348,   570,   658,   571,   659,   572,   660,   212,
++     349,   574,   575,   576,   594,   119,   304,   595,   596,   597,
++     598,   599,   120,   306,   603,   604,   605,   680,    53,    66,
++     242,   243,   244,   361,   245,   362,   121,   307,   612,   613,
++     614,   615,   616,   617,   618,   619,   122,   301,   579,   580,
++     581,   667,    43,    61,   156,   157,   158,   323,   159,   319,
++     160,   320,   161,   321,   162,   324,   163,   325,   164,   329,
++     165,   328,   166,   167,   123,   302,   583,   584,   585,   670,
++      49,    64,   213,   214,   215,   216,   217,   218,   219,   220,
++     352,   221,   351,   222,   223,   353,   224,   124,   303,   587,
++     588,   589,   673,    51,    65,   231,   232,   233,   234,   235,
++     357,   236,   237,   238,   169,   322,   644,   645,   646,   706,
++      45,    62,   176,   177,   178,   334,   170,   330,   648,   649,
++     650,   709,    47,    63,   190,   191,   192,   125,   294,   194,
++     337,   195,   338,   196,   345,   197,   340,   198,   341,   199,
++     343,   200,   342,   201,   344,   202,   339,   172,   331,   652,
++     712,   126,   305,   601,   318,   422,   423,   424,   425,   426,
++     507,   127,   308,   627,   628,   629,   630,   691,   631,   632,
++     128,   129,   310,   635,   636,   637,   697,   638,   698,   130,
++     311,    55,    67,   262,   263,   264,   265,   366,   266,   367,
++     267,   268,   369,   269,   270,   271,   372,   544,   272,   373,
++     273,   274,   275,   276,   277,   378,   551,   278,   379,    83,
++     286,    84,   287,    85,   285,   556,   557,   558,   654,   771,
++     772,   773,   781,   782,   783,   784,   789,   785,   787,   799,
++     800,   801,   805,   806,   808
    };
  
    const unsigned short int
    Dhcp4Parser::yytable_[] =
    {
 -      74,   147,   223,   146,   169,   183,   205,   222,   236,   224,
 -     163,   170,   184,   225,   166,   528,   188,   148,    63,   149,
 -     150,   482,   482,   513,   365,   366,   132,    23,    69,    24,
 -     527,    25,   234,   235,    83,    84,   126,   127,   198,   473,
 -     474,   475,   476,   477,   478,   132,   251,    87,    88,    89,
 -      22,   252,   133,   134,   135,   199,    93,    84,   174,   175,
 -      34,   274,    36,    73,    38,   136,   275,   137,   138,   139,
 -     140,   141,   142,   234,   235,   278,   143,   144,    93,   199,
 -     279,    40,    81,   145,    93,    82,    83,    84,   294,   578,
 -      85,    86,   579,   295,   168,   143,    42,   360,    70,    87,
 -      88,    89,    90,    91,    71,    72,    44,    92,    93,    84,
 -     174,   175,   198,   297,   325,    73,    73,    73,   298,   326,
 -      26,    27,    28,    29,   198,    94,    95,    46,   476,   199,
 -      93,   200,   201,    48,   202,   203,   204,    96,   199,    73,
 -      97,    98,   535,   536,   274,    73,    99,   100,   176,   555,
 -     101,    50,   177,   178,   179,   180,   181,    66,   182,   199,
 -     220,   200,   201,   221,   241,   557,   278,   566,   482,    73,
 -     558,   559,   567,   242,   522,   523,   524,   525,   627,   528,
 -     365,   366,   668,   566,   669,   670,   243,   586,   568,    73,
 -     250,    73,   587,   580,   527,   592,   581,    74,    73,   596,
 -     593,    73,   245,   244,   597,   294,   325,   598,   327,   328,
 -     651,   654,   297,   682,   245,   701,   308,   659,   683,    73,
 -     702,   362,   666,   317,   254,   667,   361,   503,   504,   505,
 -     506,   694,   309,   363,   695,   255,   259,   364,   147,   260,
 -     146,   261,   262,   169,   271,   288,   289,   163,   312,   316,
 -     170,   166,   318,   322,   148,   183,   149,   150,   320,   321,
 -     330,   331,   184,   223,   205,   329,   188,   332,   222,   333,
 -     224,   335,   336,   337,   225,     1,     2,     3,     4,     5,
 -       6,     7,     8,     9,    10,   338,   339,   340,   341,   345,
 -     342,   346,   343,   344,   347,   348,   349,   350,   415,   416,
 -     351,   352,   354,   353,   355,   357,   358,   372,   373,   374,
 -     375,   376,   377,   378,   380,   379,   381,   382,   383,   384,
 -     386,   388,   389,   390,   391,   392,   393,   394,   395,   396,
 -     398,   399,   400,   401,   402,   403,   406,   404,   409,   410,
 -     407,   412,   468,   413,   418,   414,   417,   419,   420,   421,
 -     422,   423,   424,   425,   426,   541,   433,   427,   428,   429,
 -     486,   486,   430,   431,   435,   479,   479,   436,   437,   438,
 -     439,   440,   441,   442,   526,   443,   465,   362,   466,   446,
 -     447,   543,   361,   491,   444,   495,   445,   448,   499,   363,
 -     515,   545,   449,   364,   549,   563,   564,   450,   565,   570,
 -     571,   573,   574,   577,   576,   584,   605,   583,   452,   453,
 -     585,   589,   590,   591,   467,   608,   604,   607,   611,   613,
 -     614,   610,   615,   632,   637,   638,   454,   641,   640,   646,
 -     553,   455,   647,   356,   652,   688,   653,   660,   662,   680,
 -     456,   457,   684,   686,   690,   703,   451,   472,   334,   490,
 -     619,   458,   459,   359,   626,   460,   629,   461,   462,   463,
 -     464,   519,   628,   411,   631,   599,   602,   621,   620,   617,
 -     616,   630,   618,   385,   633,   623,   622,   625,   634,   635,
 -     648,   624,   408,   649,   650,   642,   655,   656,   657,   645,
 -     643,   405,   644,   639,   658,   387,   544,   397,   678,   636,
 -     696,   687,   661,   699,   685,   704,   612,   486,     0,     0,
 -       0,     0,   479,   147,     0,   146,   223,     0,   205,     0,
 -       0,   222,   163,   224,     0,     0,   166,   225,   236,   148,
 -     689,   149,   150,     0,   705,     0,     0,     0,   526,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,   169,
 -       0,     0,   183,     0,     0,     0,   170,     0,     0,   184,
 -       0,     0,     0,   188,     0,     0,     0,     0,     0,     0,
 +      79,   152,   228,   151,   174,   188,   210,   227,   241,   261,
-      168,   175,   189,   229,   171,   230,   193,   626,   420,   153,
-      154,   155,   569,   569,   421,   600,    32,   137,    25,    74,
-       26,   625,    27,   137,    98,    24,   542,    88,    89,   239,
-      240,   239,   240,   289,   173,    89,   179,   180,   290,   312,
-       92,    93,    94,   316,   313,   138,   139,   140,   317,    98,
-       89,   179,   180,    36,   676,    38,    98,   677,   141,   204,
-      142,   143,   144,   145,   146,   147,   131,   132,   332,   148,
-      149,    98,   204,   333,   181,   148,   150,    40,   182,   183,
-      184,   185,   186,    42,   187,    71,   335,   363,    78,    86,
-      415,   336,   364,   380,    87,    88,    89,   279,   381,    90,
-       91,   204,   225,   205,   206,   226,   504,   505,    92,    93,
-       94,    95,    96,    78,   543,   312,    97,    98,    75,   203,
-      653,    44,    46,   563,    76,    77,   546,   547,   548,   549,
-      772,   203,   773,   774,    99,   100,   678,    78,    78,   679,
-      280,    28,    29,    30,    31,    78,   101,    78,   204,   102,
-      205,   206,   550,   207,   208,   209,   103,    48,   655,   316,
-       78,   104,   105,   656,   657,   106,    50,   203,   560,   561,
-      562,   563,   564,   565,   664,   620,   621,   622,   623,   665,
-      664,    52,   689,   695,   204,   666,   569,   690,   696,    78,
-      606,   607,   608,   609,   610,   611,   699,   728,    54,   420,
-      281,   700,   380,   626,   332,   421,    78,   701,   363,   756,
-      335,   786,   282,   759,   805,   763,   787,   625,   283,   806,
-      770,    79,   288,   771,    78,   590,   591,   592,   593,   798,
-      633,   634,   799,   292,   293,   297,    78,   298,   299,   300,
-      309,   326,   327,   347,   384,   417,   350,   346,   354,   355,
-      416,   356,   391,   358,   359,   360,   392,   418,   365,   368,
-      370,   419,   152,   371,   151,   374,   375,   174,   376,   377,
-      385,   168,    78,   386,   175,   171,   387,   388,   390,   188,
-      153,   154,   155,   382,   383,   393,   189,   228,   210,   394,
-      193,   395,   227,   400,   396,   397,   398,   399,   229,   401,
++     168,   175,   189,   229,   171,   230,   193,    68,   626,   153,
++     154,   155,   569,   569,   420,   421,   600,   137,    25,    74,
++      26,   625,    27,   137,   239,   240,    24,    88,    89,   546,
++     547,   548,   549,    71,    98,    89,   179,   180,   542,   279,
++      92,    93,    94,   289,   173,   138,   139,   140,   290,    98,
++      89,   179,   180,   203,   312,   550,    98,   563,   141,   313,
++     142,   143,   144,   145,   146,   147,   131,   132,   316,   148,
++     149,    98,   204,   317,   181,   148,   150,    36,   182,   183,
++     184,   185,   186,    78,   187,   204,   225,   205,   206,   226,
++     415,   332,   335,   363,    86,   280,   333,   336,   364,    87,
++      88,    89,   380,   312,    90,    91,   282,   381,   653,   620,
++     621,   622,   623,    92,    93,    94,    95,    96,    75,   204,
++      38,    97,    98,    78,    76,    77,   543,   239,   240,   203,
++     560,   561,   562,   563,   564,   565,    40,    78,    78,    99,
++     100,    28,    29,    30,    31,    78,   204,   655,   316,   504,
++     505,   101,   656,   657,   102,   203,    42,   664,    78,   664,
++      78,   103,   665,   689,   666,    44,   104,   105,   690,    46,
++     106,   695,   204,    78,   205,   206,   696,   207,   208,   209,
++     606,   607,   608,   609,   610,   611,   569,   633,   634,   699,
++     776,   380,   777,   778,   700,   332,   701,   363,   730,   281,
++     759,   283,   762,   335,   626,   420,   421,    78,   767,   790,
++     809,    78,    48,   676,   791,   810,   677,   625,    50,    52,
++      54,    79,   590,   591,   592,   593,   678,   774,   346,   679,
++     775,   382,   383,   802,    78,   288,   803,   292,   293,   297,
++     298,   299,   300,   309,   326,   417,   327,   347,   384,   350,
++     416,   354,   356,   360,   355,   358,   359,   418,   365,   368,
++      78,   419,   152,   370,   151,   371,   374,   174,   375,   376,
++     377,   168,   385,   386,   175,   171,   387,   388,   390,   188,
++     153,   154,   155,   391,   392,   393,   189,   228,   210,   394,
++     193,   395,   227,   396,   397,   398,   399,   400,   229,   401,
 +     230,     1,     2,     3,     4,     5,     6,     7,     8,     9,
 +      10,    11,   261,   246,   247,   248,   249,   250,   251,   252,
 +     253,   254,   255,   256,   257,   258,   259,   260,   402,   403,
-      404,   405,   406,   407,   409,   408,   410,   412,   413,   427,
-      428,   429,   430,   431,   432,   433,   436,   435,   434,   437,
-      438,   439,   441,    78,   443,   444,   445,   446,   447,   448,
-      449,   450,   451,   453,   454,   456,   457,   458,   461,   464,
-      465,   468,   455,   469,   471,   474,   459,   475,   462,   480,
-      470,   467,   472,   481,   483,   484,   473,   492,   485,   476,
-      486,   487,   488,   490,   477,   491,   493,   494,   478,   479,
-      495,   496,   497,   489,   510,   498,   499,   500,   501,   502,
-      508,   509,   511,   520,   512,   513,   514,   573,   573,   515,
-      516,   517,   566,   566,   518,   519,   521,   522,   523,   525,
-      526,   624,   527,   261,   528,   529,   417,   530,   531,   532,
-      533,   416,   534,   535,   536,   537,   539,   540,   418,   541,
-      552,   578,   419,   545,   555,   582,   586,   602,   641,   643,
-      647,   651,   661,   662,   663,   669,   702,   668,   538,   671,
-      672,   674,   675,   682,   681,   683,   684,   685,   686,   687,
-      688,   692,   693,   694,   712,   706,   553,   705,   709,   708,
-      714,   715,   711,   716,   738,   743,   703,   744,   746,   751,
-      524,   752,   753,   717,   766,   718,   757,   758,   719,   764,
-      784,   788,   731,   732,   790,   794,   733,   792,   734,   735,
-      807,   389,   736,   554,   411,   559,   414,   720,   727,   800,
-      730,   729,   739,   577,   740,   466,   741,   754,   737,   755,
-      760,   761,   762,   765,   722,   789,   793,   809,   721,   724,
-      723,   460,   440,   726,   463,   725,   748,   747,   442,   642,
-      452,   742,   749,   750,   745,   639,   482,   713,   782,   791,
-      803,   808,     0,     0,     0,     0,     0,     0,     0,     0,
++     404,   405,   406,   407,   409,   410,   412,   408,   486,   487,
++     413,   427,   428,   429,   430,   431,   432,   433,   434,   435,
++     436,   437,   438,    78,   439,   441,   443,   444,   445,   446,
++     447,   448,   449,   450,   451,   453,   454,   456,   457,   458,
++     455,   461,   464,   465,   459,   468,   469,   471,   474,   475,
++     480,   481,   483,   462,   467,   470,   472,   473,   484,   485,
++     488,   476,   490,   491,   477,   492,   493,   494,   478,   489,
++     495,   479,   496,   497,   508,   510,   498,   499,   500,   501,
++     502,   509,   511,   520,   512,   513,   538,   573,   573,   514,
++     515,   519,   566,   566,   516,   517,   518,   521,   522,   523,
++     525,   624,   526,   261,   553,   527,   417,   528,   529,   530,
++     531,   416,   532,   533,   534,   535,   536,   537,   418,   539,
++     540,   541,   419,   545,   555,   578,   582,   586,   602,   641,
++     643,   552,   661,   647,   662,   663,   669,   672,   668,   524,
++     651,   671,   674,   675,   681,   682,   719,   683,   684,   685,
++     686,   687,   688,   692,   693,   694,   708,   554,   707,   711,
++     710,   714,   716,   713,   702,   717,   718,   740,   705,   745,
++     746,   749,   760,   748,   754,   389,   755,   761,   720,   796,
++     768,   721,   770,   733,   788,   792,   734,   735,   736,   794,
++     798,   811,   737,   738,   559,   414,   411,   722,   577,   729,
++     732,   731,   466,   741,   739,   804,   742,   724,   743,   756,
++     757,   758,   763,   764,   723,   765,   766,   769,   726,   793,
++     797,   725,   813,   440,   728,   460,   727,   463,   751,   642,
++     750,   442,   452,   753,   752,   744,   747,   639,   715,   482,
++     786,   795,   807,   812,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,   174,     0,     0,   188,
-        0,     0,     0,   175,     0,     0,   189,     0,     0,     0,
-      193,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 +       0,   573,     0,     0,     0,     0,   566,   152,     0,   151,
 +     228,     0,   210,     0,     0,   227,   168,     0,     0,     0,
 +     171,   229,   241,   230,     0,   153,   154,   155,     0,     0,
 +       0,     0,     0,     0,     0,     0,     0,   624,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,     0,   174,     0,
++       0,   188,     0,     0,     0,   175,     0,     0,   189,     0,
++       0,     0,   193,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,   672,     0,     0,     0,
 -       0,   671,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,   672,     0,     0,     0,     0,   671
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,   776,     0,     0,     0,
-        0,   775,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,   776,     0,     0,     0,     0,   775
++       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++     780,     0,     0,     0,     0,   779,     0,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,   780,     0,     0,
++       0,     0,   779
    };
  
    const short int
    Dhcp4Parser::yycheck_[] =
    {
 -      54,    57,    61,    57,    58,    59,    60,    61,    62,    61,
 -      57,    58,    59,    61,    57,   428,    59,    57,    52,    57,
 -      57,   419,   420,   425,   280,   280,     7,     5,    10,     7,
 -     428,     9,    67,    68,    15,    16,    12,    13,    21,    22,
 -      23,    24,    25,    26,    27,     7,     3,    28,    29,    30,
 -       0,     8,    33,    34,    35,    38,    37,    16,    17,    18,
 -       7,     3,     7,    98,     7,    46,     8,    48,    49,    50,
 -      51,    52,    53,    67,    68,     3,    57,    58,    37,    38,
 -       8,     7,    11,    64,    37,    14,    15,    16,     3,     3,
 -      19,    20,     6,     8,    47,    57,     7,    56,    80,    28,
 -      29,    30,    31,    32,    86,    87,     7,    36,    37,    16,
 -      17,    18,    21,     3,     3,    98,    98,    98,     8,     8,
 -      98,    99,   100,   101,    21,    54,    55,     7,    25,    38,
 -      37,    40,    41,     7,    43,    44,    45,    66,    38,    98,
 -      69,    70,    77,    78,     3,    98,    75,    76,    55,     8,
 -      79,     7,    59,    60,    61,    62,    63,    98,    65,    38,
 -      39,    40,    41,    42,     6,     3,     3,     3,   566,    98,
 -       8,     8,     8,     3,    71,    72,    73,    74,   580,   592,
 -     436,   436,    82,     3,    84,    85,     4,     3,     8,    98,
 -       4,    98,     8,     3,   592,     3,     6,   251,    98,     3,
 -       8,    98,     3,     8,     8,     3,     3,     8,   242,   243,
 -       8,     8,     3,     3,     3,     3,     8,     8,     8,    98,
 -       8,   280,     3,     8,     4,     6,   280,    59,    60,    61,
 -      62,     3,     3,   280,     6,     4,     4,   280,   294,     4,
 -     294,     4,     4,   297,     4,     4,     4,   294,     4,     4,
 -     297,   294,     3,     3,   294,   309,   294,   294,     4,     8,
 -       4,     4,   309,   322,   318,    98,   309,     4,   322,     4,
 -     322,     4,   101,   101,   322,    88,    89,    90,    91,    92,
 -      93,    94,    95,    96,    97,     4,     4,     4,    99,     4,
 -      99,     4,    99,    99,     4,     4,     4,     4,   332,   333,
 -       4,     4,     4,    99,     4,     4,     4,     4,     4,     4,
 -       4,     4,     4,     4,   101,    99,     4,     4,     4,     4,
 +      58,    61,    65,    61,    62,    63,    64,    65,    66,    67,
-       61,    62,    63,    65,    61,    65,    63,   499,   318,    61,
-       61,    61,   490,   491,   318,   496,    13,     7,     5,    10,
-        7,   499,     9,     7,    39,     0,    15,    17,    18,    69,
-       70,    69,    70,     3,    49,    18,    19,    20,     8,     3,
-       30,    31,    32,     3,     8,    35,    36,    37,     8,    39,
-       18,    19,    20,     7,     3,     7,    39,     6,    48,    40,
++      61,    62,    63,    65,    61,    65,    63,    56,   499,    61,
++      61,    61,   490,   491,   318,   318,   496,     7,     5,    10,
++       7,   499,     9,     7,    69,    70,     0,    17,    18,   105,
++     106,   107,   108,   128,    39,    18,    19,    20,    15,     6,
++      30,    31,    32,     3,    49,    35,    36,    37,     8,    39,
++      18,    19,    20,    23,     3,   131,    39,    27,    48,     8,
 +      50,    51,    52,    53,    54,    55,    12,    13,     3,    59,
 +      60,    39,    40,     8,    57,    59,    66,     7,    61,    62,
-       63,    64,    65,     7,    67,   128,     3,     3,   128,    11,
-       58,     8,     8,     3,    16,    17,    18,     6,     8,    21,
-       22,    40,    41,    42,    43,    44,    14,    15,    30,    31,
-       32,    33,    34,   128,   103,     3,    38,    39,   109,    23,
-        8,     7,     7,    27,   115,   116,   105,   106,   107,   108,
-      111,    23,   113,   114,    56,    57,     3,   128,   128,     6,
-        3,   128,   129,   130,   131,   128,    68,   128,    40,    71,
-       42,    43,   131,    45,    46,    47,    78,     7,     3,     3,
-      128,    83,    84,     8,     8,    87,     7,    23,    24,    25,
-       26,    27,    28,    29,     3,    79,    80,    81,    82,     8,
-        3,     7,     3,     3,    40,     8,   664,     8,     8,   128,
-       72,    73,    74,    75,    76,    77,     3,   678,     7,   509,
-        4,     8,     3,   695,     3,   509,   128,     8,     3,     8,
-        3,     3,     8,     8,     3,     8,     8,   695,     3,     8,
-        3,   289,     4,     6,   128,    61,    62,    63,    64,     3,
-       85,    86,     6,     4,     4,     4,   128,     4,     4,     4,
-        4,     4,     4,     3,   128,   318,     4,     8,     4,     8,
-      318,     3,   131,     4,     8,     3,   131,   318,     4,     4,
-        4,   318,   332,     4,   332,     4,     4,   335,     4,     4,
-        4,   332,   128,     4,   335,   332,     4,     4,     4,   347,
-      332,   332,   332,   280,   281,     4,   347,   360,   356,     4,
-      347,     4,   360,     4,   129,   129,   129,   129,   360,     4,
++      63,    64,    65,   128,    67,    40,    41,    42,    43,    44,
++      58,     3,     3,     3,    11,     3,     8,     8,     8,    16,
++      17,    18,     3,     3,    21,    22,     8,     8,     8,    79,
++      80,    81,    82,    30,    31,    32,    33,    34,   109,    40,
++       7,    38,    39,   128,   115,   116,   103,    69,    70,    23,
++      24,    25,    26,    27,    28,    29,     7,   128,   128,    56,
++      57,   128,   129,   130,   131,   128,    40,     3,     3,    14,
++      15,    68,     8,     8,    71,    23,     7,     3,   128,     3,
++     128,    78,     8,     3,     8,     7,    83,    84,     8,     7,
++      87,     3,    40,   128,    42,    43,     8,    45,    46,    47,
++      72,    73,    74,    75,    76,    77,   664,    85,    86,     3,
++     111,     3,   113,   114,     8,     3,     8,     3,   678,     4,
++       8,     3,     8,     3,   695,   509,   509,   128,     8,     3,
++       3,   128,     7,     3,     8,     8,     6,   695,     7,     7,
++       7,   289,    61,    62,    63,    64,     3,     3,     8,     6,
++       6,   280,   281,     3,   128,     4,     6,     4,     4,     4,
++       4,     4,     4,     4,     4,   318,     4,     3,   128,     4,
++     318,     4,     3,     3,     8,     4,     8,   318,     4,     4,
++     128,   318,   332,     4,   332,     4,     4,   335,     4,     4,
++       4,   332,     4,     4,   335,   332,     4,     4,     4,   347,
++     332,   332,   332,   131,   131,     4,   347,   360,   356,     4,
++     347,     4,   360,   129,   129,   129,   129,     4,   360,     4,
 +     360,   117,   118,   119,   120,   121,   122,   123,   124,   125,
 +     126,   127,   380,    88,    89,    90,    91,    92,    93,    94,
 +      95,    96,    97,    98,    99,   100,   101,   102,     4,     4,
-        4,     4,     4,     4,     4,   129,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,     4,     4,   131,   129,     4,
++       4,     4,     4,     4,     4,     4,     4,   129,   387,   388,
++       4,     4,     4,     4,     4,     4,     4,     4,   129,   131,
 +       4,     4,     4,   128,     4,     4,     4,     4,     4,     4,
         4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-        4,     4,   129,     4,     4,     4,   131,     4,   131,     4,
-      129,   131,   129,     4,     4,     7,   129,     5,     7,   131,
-      387,   388,     7,     7,   131,     7,     5,     5,   131,   131,
-        5,     5,     5,   128,   128,     7,     7,     7,     7,     5,
-        8,     3,   128,     7,   128,     5,   128,   490,   491,   128,
-      128,   128,   490,   491,   128,     5,   128,   128,   128,   128,
-      128,   499,   128,   501,   128,   128,   509,   128,   128,   128,
 -       4,     4,    99,     4,     4,     4,     4,   101,     4,     4,
 -     101,     4,    81,     7,    98,     7,     7,     7,     7,     5,
 -       5,     5,     5,     5,     5,   430,    98,     7,     7,     7,
 -     419,   420,     7,     5,     8,   419,   420,     3,    98,    98,
 -      98,     5,    98,    98,   428,    98,   410,   436,   412,     5,
 -       7,     4,   436,     7,    98,     7,    98,    98,     7,   436,
 -       7,     7,    98,   436,     7,     4,     4,    98,     4,     6,
 -       3,     6,     3,     3,     6,     3,     3,     6,    98,    98,
 -       4,     4,     4,     4,   413,     3,     6,     6,     4,     4,
 -       4,     8,     4,     4,     4,     4,    98,     3,     6,     4,
 -      65,    98,     5,   274,     8,     5,     8,     8,     7,     4,
 -      98,    98,     4,     4,     7,     4,   390,   417,   251,   420,
 -     566,    98,    98,   278,   578,    98,   584,    98,    98,    98,
 -      98,    98,   582,   325,   586,    98,    98,   571,   569,    99,
 -     101,    99,   101,   294,    99,   574,   572,   577,    99,    99,
 -      98,   575,   322,    98,    98,   603,    98,    98,    98,   608,
 -     605,   318,   606,   596,    98,   297,   436,   309,   666,   592,
 -      83,   682,    98,   694,    99,   701,   557,   566,    -1,    -1,
 -      -1,    -1,   566,   569,    -1,   569,   575,    -1,   572,    -1,
 -      -1,   575,   569,   575,    -1,    -1,   569,   575,   582,   569,
 -      98,   569,   569,    -1,    98,    -1,    -1,    -1,   592,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,
 -      -1,    -1,   606,    -1,    -1,    -1,   603,    -1,    -1,   606,
 -      -1,    -1,    -1,   606,    -1,    -1,    -1,    -1,    -1,    -1,
++     129,     4,     4,     4,   131,     4,     4,     4,     4,     4,
++       4,     4,     4,   131,   131,   129,   129,   129,     7,     7,
++       7,   131,     7,     7,   131,     5,     5,     5,   131,   128,
++       5,   131,     5,     5,     8,   128,     7,     7,     7,     7,
++       5,     3,   128,     7,   128,     5,   465,   490,   491,   128,
++     128,     5,   490,   491,   128,   128,   128,   128,   128,   128,
++     128,   499,   128,   501,   483,   128,   509,   128,   128,   128,
 +     128,   509,   128,   128,   128,   128,   128,   128,   509,   128,
-      128,     7,   509,   104,   110,     7,     7,     7,     4,     7,
-        7,    67,     4,     4,     4,     3,   640,     6,   465,     6,
-        3,     6,     3,     3,     6,     4,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,     3,   483,     6,     3,     6,
-        4,     4,     8,     4,     4,     4,   128,     4,     6,     4,
-      445,     5,   128,   131,     7,   129,     8,     8,   131,     8,
-        4,     4,   129,   129,     4,     7,   129,     5,   129,   129,
-        4,   289,   129,   484,   312,   488,   316,   664,   676,   112,
-      682,   680,   129,   491,   129,   363,   129,   128,   689,   128,
-      128,   128,   128,   128,   669,   129,   128,   128,   667,   672,
-      670,   356,   332,   675,   360,   673,   706,   704,   335,   509,
-      347,   695,   707,   709,   699,   501,   380,   655,   770,   786,
-      798,   805,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++     128,   128,   509,   104,   110,     7,     7,     7,     7,     4,
++       7,   128,     4,     7,     4,     4,     3,     3,     6,   445,
++      67,     6,     6,     3,     6,     3,   131,     4,     4,     4,
++       4,     4,     4,     4,     4,     4,     3,   484,     6,     3,
++       6,     4,     4,     8,   128,     4,     4,     4,   128,     4,
++       4,     3,     8,     6,     4,   289,     5,     8,   129,     5,
++       8,   131,     7,   129,     4,     4,   129,   129,   129,     4,
++       7,     4,   129,   129,   488,   316,   312,   664,   491,   676,
++     682,   680,   363,   129,   689,   112,   129,   669,   129,   128,
++     128,   128,   128,   128,   667,   128,   128,   128,   672,   129,
++     128,   670,   128,   332,   675,   356,   673,   360,   708,   509,
++     706,   335,   347,   711,   709,   695,   699,   501,   655,   380,
++     774,   790,   802,   809,    -1,    -1,    -1,    -1,    -1,    -1,
 +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 +      -1,   664,    -1,    -1,    -1,    -1,   664,   667,    -1,   667,
 +     673,    -1,   670,    -1,    -1,   673,   667,    -1,    -1,    -1,
 +     667,   673,   680,   673,    -1,   667,   667,   667,    -1,    -1,
 +      -1,    -1,    -1,    -1,    -1,    -1,    -1,   695,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,   704,    -1,    -1,   707,
-       -1,    -1,    -1,   704,    -1,    -1,   707,    -1,    -1,    -1,
-      707,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   706,    -1,
++      -1,   709,    -1,    -1,    -1,   706,    -1,    -1,   709,    -1,
++      -1,    -1,   709,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,   665,    -1,    -1,    -1,
 -      -1,   665,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,   682,    -1,    -1,    -1,    -1,   682
 +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,   769,    -1,    -1,    -1,
-       -1,   769,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,   786,    -1,    -1,    -1,    -1,   786
++     773,    -1,    -1,    -1,    -1,   773,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,
++      -1,    -1,   790
    };
  
    const unsigned short int
    Dhcp4Parser::yystos_[] =
    {
 -       0,    88,    89,    90,    91,    92,    93,    94,    95,    96,
 -      97,   103,   104,   105,   106,   107,   108,   109,   110,   111,
 -     112,   113,     0,     5,     7,     9,    98,    99,   100,   101,
 -     114,   115,   116,   120,     7,   129,     7,   135,     7,   149,
 -       7,   206,     7,   274,     7,   286,     7,   234,     7,   257,
 -       7,   188,   121,   117,   130,   136,   150,   207,   275,   287,
 -     235,   258,   189,   114,   122,   123,    98,   118,   119,    10,
 -      80,    86,    87,    98,   128,   131,   132,   133,   345,   347,
 -     349,    11,    14,    15,    16,    19,    20,    28,    29,    30,
 -      31,    32,    36,    37,    54,    55,    66,    69,    70,    75,
 -      76,    79,   128,   137,   138,   139,   140,   141,   142,   143,
 -     144,   145,   155,   157,   175,   182,   196,   200,   228,   251,
 -     291,   315,   325,   334,   335,   343,    12,    13,   147,   148,
 -     151,   153,     7,    33,    34,    35,    46,    48,    49,    50,
 -      51,    52,    53,    57,    58,    64,   128,   139,   140,   141,
 -     144,   208,   209,   210,   212,   214,   216,   218,   220,   222,
 -     224,   226,   227,   251,   268,   280,   291,   311,    47,   128,
 -     251,   276,   277,   278,    17,    18,    55,    59,    60,    61,
 -      62,    63,    65,   128,   251,   288,   289,   290,   291,   293,
 -     295,   297,   299,   301,   303,   305,   307,   309,    21,    38,
 -      40,    41,    43,    44,    45,   128,   161,   169,   236,   237,
 -     238,   239,   240,   241,   242,   243,   245,   247,   248,   250,
 -      39,    42,   128,   169,   240,   245,   259,   260,   261,   262,
 -     263,   265,   266,   267,    67,    68,   128,   190,   191,   192,
 -     194,     6,     3,     4,     8,     3,   134,   350,   346,   348,
 -       4,     3,     8,   146,     4,     4,   292,   156,   158,     4,
 -       4,     4,     4,   201,   229,   252,   176,   316,   183,   197,
 -     326,     4,   336,   344,     3,     8,   152,   154,     3,     8,
 -     318,   213,   215,   217,   269,   211,   219,   221,     4,     4,
 -     225,   223,   281,   312,     3,     8,   279,     3,     8,   294,
 -     296,   310,   300,   302,   306,   304,   308,   298,     8,     3,
 -     162,   170,     4,   246,   244,   249,     4,     8,     3,   264,
 -       4,     8,     3,   193,   195,     3,     8,   114,   114,    98,
 -       4,     4,     4,     4,   132,     4,   101,   101,     4,     4,
 -       4,    99,    99,    99,    99,     4,     4,     4,     4,     4,
 -       4,     4,     4,    99,     4,     4,   138,     4,     4,   148,
 -      56,   128,   169,   251,   291,   293,   295,   319,   320,   321,
 -     322,   323,     4,     4,     4,     4,     4,     4,     4,    99,
 -     101,     4,     4,     4,     4,   209,     4,   277,     4,     4,
 -       4,     4,     4,     4,     4,     4,     4,   290,     4,     4,
 -      99,     4,     4,     4,   101,   238,     4,   101,   261,     4,
 -       4,   191,     4,     7,     7,   114,   114,     7,    98,     7,
 -       7,     5,     5,     5,     5,     5,     5,     7,     7,     7,
 -       7,     5,   124,    98,   324,     8,     3,    98,    98,    98,
 -       5,    98,    98,    98,    98,    98,     5,     7,    98,    98,
 -      98,   124,    98,    98,    98,    98,    98,    98,    98,    98,
 -      98,    98,    98,    98,    98,   114,   114,   137,    81,   351,
 -     352,   353,   147,    22,    23,    24,    25,    26,    27,   128,
 -     159,   160,   161,   163,   165,   167,   169,   171,   172,   173,
 -     159,     7,   202,   203,   204,     7,   230,   231,   232,     7,
 -     253,   254,   255,    59,    60,    61,    62,   174,   177,   178,
 -     179,   180,   181,   222,   317,     7,   184,   185,   186,    98,
 -     198,   199,    71,    72,    73,    74,   128,   161,   171,   327,
 -     328,   329,   330,   332,   333,    77,    78,   337,   338,   339,
 -     341,   119,   125,     4,   321,     7,   270,   271,   272,     7,
 -     282,   283,   284,    65,   313,     8,   354,     3,     8,     8,
 -     164,   166,   168,     4,     4,     4,     3,     8,     8,   205,
 -       6,     3,   233,     6,     3,   256,     6,     3,     3,     6,
 -       3,     6,   187,     6,     3,     4,     3,     8,   331,     4,
 -       4,     4,     3,     8,   340,   342,     3,     8,     8,    98,
 -     126,   127,    98,   273,     6,     3,   285,     6,     3,   314,
 -       8,     4,   352,     4,     4,     4,   101,    99,   101,   160,
 -     208,   204,   236,   232,   259,   255,   178,   222,   190,   186,
 -      99,   199,     4,    99,    99,    99,   328,     4,     4,   338,
 -       6,     3,   276,   272,   288,   284,     4,     5,    98,    98,
 -      98,     8,     8,     8,     8,    98,    98,    98,    98,     8,
 -       8,    98,     7,   355,   356,   357,     3,     6,    82,    84,
 -      85,   128,   169,   358,   359,   360,   361,   363,   356,   364,
 -       4,   362,     3,     8,     4,    99,     4,   359,     5,    98,
 -       7,   365,   366,   367,     3,     6,    83,   368,   369,   366,
 -     370,     3,     8,     4,   369,    98
 +       0,   117,   118,   119,   120,   121,   122,   123,   124,   125,
 +     126,   127,   133,   134,   135,   136,   137,   138,   139,   140,
 +     141,   142,   143,   144,     0,     5,     7,     9,   128,   129,
-      130,   131,   145,   146,   147,   151,     7,   158,     7,   164,
-        7,   178,     7,   242,     7,   310,     7,   322,     7,   270,
-        7,   293,     7,   218,     7,   381,   152,   148,   159,   165,
-      179,   243,   311,   323,   271,   294,   219,   382,   145,   155,
-      156,   128,   149,   150,    10,   109,   115,   116,   128,   157,
-      160,   161,   162,   409,   411,   413,    11,    16,    17,    18,
++     130,   131,   145,   146,   147,   151,     7,   160,     7,   166,
++       7,   180,     7,   244,     7,   312,     7,   324,     7,   272,
++       7,   295,     7,   220,     7,   383,   152,   148,   161,   167,
++     181,   245,   313,   325,   273,   296,   221,   384,   145,   153,
++     154,   128,   149,   150,    10,   109,   115,   116,   128,   159,
++     162,   163,   164,   411,   413,   415,    11,    16,    17,    18,
 +      21,    22,    30,    31,    32,    33,    34,    38,    39,    56,
-       57,    68,    71,    78,    83,    84,    87,   157,   166,   167,
-      168,   169,   170,   171,   172,   173,   174,   185,   187,   205,
-      212,   226,   236,   264,   287,   327,   351,   361,   370,   371,
-      379,    12,    13,   176,   177,   180,   182,     7,    35,    36,
++      57,    68,    71,    78,    83,    84,    87,   159,   168,   169,
++     170,   171,   172,   173,   174,   175,   176,   187,   189,   207,
++     214,   228,   238,   266,   289,   329,   353,   363,   372,   373,
++     381,    12,    13,   178,   179,   182,   184,     7,    35,    36,
 +      37,    48,    50,    51,    52,    53,    54,    55,    59,    60,
-       66,   157,   168,   169,   170,   173,   244,   245,   246,   248,
-      250,   252,   254,   256,   258,   260,   262,   263,   287,   304,
-      316,   327,   347,    49,   157,   287,   312,   313,   314,    19,
-       20,    57,    61,    62,    63,    64,    65,    67,   157,   287,
-      324,   325,   326,   327,   329,   331,   333,   335,   337,   339,
-      341,   343,   345,    23,    40,    42,    43,    45,    46,    47,
-      157,   191,   199,   272,   273,   274,   275,   276,   277,   278,
-      279,   281,   283,   284,   286,    41,    44,   157,   199,   276,
-      281,   295,   296,   297,   298,   299,   301,   302,   303,    69,
-       70,   157,   220,   221,   222,   224,    88,    89,    90,    91,
++      66,   159,   170,   171,   172,   175,   246,   247,   248,   250,
++     252,   254,   256,   258,   260,   262,   264,   265,   289,   306,
++     318,   329,   349,    49,   159,   289,   314,   315,   316,    19,
++      20,    57,    61,    62,    63,    64,    65,    67,   159,   289,
++     326,   327,   328,   329,   331,   333,   335,   337,   339,   341,
++     343,   345,   347,    23,    40,    42,    43,    45,    46,    47,
++     159,   193,   201,   274,   275,   276,   277,   278,   279,   280,
++     281,   283,   285,   286,   288,    41,    44,   159,   201,   278,
++     283,   297,   298,   299,   300,   301,   303,   304,   305,    69,
++      70,   159,   222,   223,   224,   226,    88,    89,    90,    91,
 +      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-      102,   157,   383,   384,   385,   386,   388,   390,   391,   393,
-      394,   395,   398,   400,   401,   402,   403,   404,   407,     6,
-        3,     4,     8,     3,   163,   414,   410,   412,     4,     3,
-        8,   175,     4,     4,   328,   186,   188,     4,     4,     4,
-        4,   237,   265,   288,   206,   352,   213,   227,   362,     4,
-      372,   380,     3,     8,   181,   183,     3,     8,   354,   249,
-      251,   253,   305,   247,   255,   257,     4,     4,   261,   259,
-      317,   348,     3,     8,   315,     3,     8,   330,   332,   346,
-      336,   338,   342,   340,   344,   334,     8,     3,   192,   200,
-        4,   282,   280,   285,     4,     8,     3,   300,     4,     8,
-        3,   223,   225,     3,     8,     4,   387,   389,     4,   392,
-        4,     4,   396,   399,     4,     4,     4,     4,   405,   408,
-        3,     8,   145,   145,   128,     4,     4,     4,     4,   161,
++     102,   159,   385,   386,   387,   388,   390,   392,   393,   395,
++     396,   397,   400,   402,   403,   404,   405,   406,   409,     6,
++       3,     4,     8,     3,   165,   416,   412,   414,     4,     3,
++       8,   177,     4,     4,   330,   188,   190,     4,     4,     4,
++       4,   239,   267,   290,   208,   354,   215,   229,   364,     4,
++     374,   382,     3,     8,   183,   185,     3,     8,   356,   251,
++     253,   255,   307,   249,   257,   259,     4,     4,   263,   261,
++     319,   350,     3,     8,   317,     3,     8,   332,   334,   348,
++     338,   340,   344,   342,   346,   336,     8,     3,   194,   202,
++       4,   284,   282,   287,     4,     8,     3,   302,     4,     8,
++       3,   225,   227,     3,     8,     4,   389,   391,     4,   394,
++       4,     4,   398,   401,     4,     4,     4,     4,   407,   410,
++       3,     8,   145,   145,   128,     4,     4,     4,     4,   163,
 +       4,   131,   131,     4,     4,     4,   129,   129,   129,   129,
 +       4,     4,     4,     4,     4,     4,     4,     4,   129,     4,
-        4,   167,     4,     4,   177,    58,   157,   199,   287,   327,
-      329,   331,   355,   356,   357,   358,   359,     4,     4,     4,
++       4,   169,     4,     4,   179,    58,   159,   201,   289,   329,
++     331,   333,   357,   358,   359,   360,   361,     4,     4,     4,
 +       4,     4,     4,     4,   129,   131,     4,     4,     4,     4,
-      245,     4,   313,     4,     4,     4,     4,     4,     4,     4,
-        4,     4,   326,     4,     4,   129,     4,     4,     4,   131,
-      274,     4,   131,   297,     4,     4,   221,   131,     4,     4,
++     247,     4,   315,     4,     4,     4,     4,     4,     4,     4,
++       4,     4,   328,     4,     4,   129,     4,     4,     4,   131,
++     276,     4,   131,   299,     4,     4,   223,   131,     4,     4,
 +     129,     4,   129,   129,     4,     4,   131,   131,   131,   131,
-        4,     4,   384,     4,     7,     7,   145,   145,     7,   128,
++       4,     4,   386,     4,     7,     7,   145,   145,     7,   128,
 +       7,     7,     5,     5,     5,     5,     5,     5,     7,     7,
-        7,     7,     5,   153,    14,    15,   184,   360,     8,     3,
++       7,     7,     5,   155,    14,    15,   186,   362,     8,     3,
 +     128,   128,   128,     5,   128,   128,   128,   128,   128,     5,
-        7,   128,   128,   128,   153,   128,   128,   128,   128,   128,
++       7,   128,   128,   128,   155,   128,   128,   128,   128,   128,
 +     128,   128,   128,   128,   128,   128,   128,   128,   145,   128,
-      128,   128,    15,   103,   397,   104,   105,   106,   107,   108,
-      131,   406,   128,   145,   166,   110,   415,   416,   417,   176,
-       24,    25,    26,    27,    28,    29,   157,   189,   190,   191,
-      193,   195,   197,   199,   201,   202,   203,   189,     7,   238,
-      239,   240,     7,   266,   267,   268,     7,   289,   290,   291,
-       61,    62,    63,    64,   204,   207,   208,   209,   210,   211,
-      258,   353,     7,   214,   215,   216,    72,    73,    74,    75,
-       76,    77,   228,   229,   230,   231,   232,   233,   234,   235,
-       79,    80,    81,    82,   157,   191,   201,   363,   364,   365,
-      366,   368,   369,    85,    86,   373,   374,   375,   377,   383,
-      154,     4,   357,     7,   306,   307,   308,     7,   318,   319,
-      320,    67,   349,     8,   418,     3,     8,     8,   194,   196,
-      198,     4,     4,     4,     3,     8,     8,   241,     6,     3,
-      269,     6,     3,   292,     6,     3,     3,     6,     3,     6,
-      217,     6,     3,     4,     4,     4,     4,     4,     4,     3,
-        8,   367,     4,     4,     4,     3,     8,   376,   378,     3,
-        8,     8,   155,   128,   309,     6,     3,   321,     6,     3,
-      350,     8,     4,   416,     4,     4,     4,   131,   129,   131,
-      190,   244,   240,   272,   268,   295,   291,   208,   258,   220,
-      216,   129,   129,   129,   129,   129,   129,   229,     4,   129,
-      129,   129,   364,     4,     4,   374,     6,   312,   308,   324,
-      320,     4,     5,   128,   128,   128,     8,     8,     8,     8,
-      128,   128,   128,     8,     8,   128,     7,   419,   420,   421,
-        3,     6,   111,   113,   114,   157,   199,   422,   423,   424,
-      425,   427,   420,   428,     4,   426,     3,     8,     4,   129,
-        4,   423,     5,   128,     7,   429,   430,   431,     3,     6,
-      112,   432,   433,   430,   434,     3,     8,     4,   433,   128
++     128,   128,    15,   103,   399,   104,   105,   106,   107,   108,
++     131,   408,   128,   145,   168,   110,   417,   418,   419,   178,
++      24,    25,    26,    27,    28,    29,   159,   191,   192,   193,
++     195,   197,   199,   201,   203,   204,   205,   191,     7,   240,
++     241,   242,     7,   268,   269,   270,     7,   291,   292,   293,
++      61,    62,    63,    64,   206,   209,   210,   211,   212,   213,
++     260,   355,     7,   216,   217,   218,    72,    73,    74,    75,
++      76,    77,   230,   231,   232,   233,   234,   235,   236,   237,
++      79,    80,    81,    82,   159,   193,   203,   365,   366,   367,
++     368,   370,   371,    85,    86,   375,   376,   377,   379,   385,
++     156,     4,   359,     7,   308,   309,   310,     7,   320,   321,
++     322,    67,   351,     8,   420,     3,     8,     8,   196,   198,
++     200,     4,     4,     4,     3,     8,     8,   243,     6,     3,
++     271,     6,     3,   294,     6,     3,     3,     6,     3,     6,
++     219,     6,     3,     4,     4,     4,     4,     4,     4,     3,
++       8,   369,     4,     4,     4,     3,     8,   378,   380,     3,
++       8,     8,   128,   157,   158,   128,   311,     6,     3,   323,
++       6,     3,   352,     8,     4,   418,     4,     4,     4,   131,
++     129,   131,   192,   246,   242,   274,   270,   297,   293,   210,
++     260,   222,   218,   129,   129,   129,   129,   129,   129,   231,
++       4,   129,   129,   129,   366,     4,     4,   376,     6,     3,
++     314,   310,   326,   322,     4,     5,   128,   128,   128,     8,
++       8,     8,     8,   128,   128,   128,   128,     8,     8,   128,
++       7,   421,   422,   423,     3,     6,   111,   113,   114,   159,
++     201,   424,   425,   426,   427,   429,   422,   430,     4,   428,
++       3,     8,     4,   129,     4,   425,     5,   128,     7,   431,
++     432,   433,     3,     6,   112,   434,   435,   432,   436,     3,
++       8,     4,   435,   128
    };
  
    const unsigned short int
    Dhcp4Parser::yyr1_[] =
    {
 -       0,   102,   104,   103,   105,   103,   106,   103,   107,   103,
 -     108,   103,   109,   103,   110,   103,   111,   103,   112,   103,
 -     113,   103,   114,   114,   114,   114,   114,   114,   114,   115,
 -     117,   116,   118,   118,   119,   119,   121,   120,   122,   122,
 -     123,   123,   125,   124,   126,   126,   127,   127,   128,   130,
 -     129,   131,   131,   132,   132,   132,   132,   132,   134,   133,
 -     136,   135,   137,   137,   138,   138,   138,   138,   138,   138,
 -     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
 -     138,   138,   138,   138,   138,   138,   139,   140,   141,   142,
 -     143,   144,   146,   145,   147,   147,   148,   148,   150,   149,
 -     152,   151,   154,   153,   156,   155,   158,   157,   159,   159,
 -     160,   160,   160,   160,   160,   160,   160,   160,   160,   162,
 -     161,   164,   163,   166,   165,   168,   167,   170,   169,   171,
 -     172,   173,   174,   176,   175,   177,   177,   178,   178,   178,
 -     178,   179,   180,   181,   183,   182,   184,   184,   185,   185,
 -     187,   186,   189,   188,   190,   190,   190,   191,   191,   193,
 -     192,   195,   194,   197,   196,   198,   198,   199,   201,   200,
 -     202,   202,   203,   203,   205,   204,   207,   206,   208,   208,
 -     209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
 -     209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
 -     211,   210,   213,   212,   215,   214,   217,   216,   219,   218,
 -     221,   220,   223,   222,   225,   224,   226,   227,   229,   228,
 -     230,   230,   231,   231,   233,   232,   235,   234,   236,   236,
 -     237,   237,   238,   238,   238,   238,   238,   238,   238,   238,
 -     239,   240,   241,   242,   244,   243,   246,   245,   247,   249,
 -     248,   250,   252,   251,   253,   253,   254,   254,   256,   255,
 -     258,   257,   259,   259,   260,   260,   261,   261,   261,   261,
 -     261,   261,   262,   264,   263,   265,   266,   267,   269,   268,
 -     270,   270,   271,   271,   273,   272,   275,   274,   276,   276,
 -     277,   277,   277,   279,   278,   281,   280,   282,   282,   283,
 -     283,   285,   284,   287,   286,   288,   288,   289,   289,   290,
 -     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
 -     290,   292,   291,   294,   293,   296,   295,   298,   297,   300,
 -     299,   302,   301,   304,   303,   306,   305,   308,   307,   310,
 -     309,   312,   311,   314,   313,   316,   315,   317,   317,   318,
 -     222,   319,   319,   320,   320,   321,   321,   321,   321,   321,
 -     321,   321,   322,   324,   323,   326,   325,   327,   327,   328,
 -     328,   328,   328,   328,   328,   328,   329,   331,   330,   332,
 -     333,   334,   336,   335,   337,   337,   338,   338,   340,   339,
 -     342,   341,   344,   343,   346,   345,   348,   347,   350,   349,
 -     351,   351,   352,   354,   353,   355,   355,   357,   356,   358,
 -     358,   359,   359,   359,   359,   359,   360,   362,   361,   364,
 -     363,   365,   365,   367,   366,   368,   368,   370,   369
 +       0,   132,   134,   133,   135,   133,   136,   133,   137,   133,
 +     138,   133,   139,   133,   140,   133,   141,   133,   142,   133,
 +     143,   133,   144,   133,   145,   145,   145,   145,   145,   145,
 +     145,   146,   148,   147,   149,   149,   150,   150,   152,   151,
-      154,   153,   155,   155,   156,   156,   157,   159,   158,   160,
-      160,   161,   161,   161,   161,   161,   163,   162,   165,   164,
-      166,   166,   167,   167,   167,   167,   167,   167,   167,   167,
-      167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
-      167,   167,   167,   167,   168,   169,   170,   171,   172,   173,
-      175,   174,   176,   176,   177,   177,   179,   178,   181,   180,
-      183,   182,   184,   184,   186,   185,   188,   187,   189,   189,
-      190,   190,   190,   190,   190,   190,   190,   190,   190,   192,
-      191,   194,   193,   196,   195,   198,   197,   200,   199,   201,
-      202,   203,   204,   206,   205,   207,   207,   208,   208,   208,
-      208,   209,   210,   211,   213,   212,   214,   214,   215,   215,
-      217,   216,   219,   218,   220,   220,   220,   221,   221,   223,
-      222,   225,   224,   227,   226,   228,   228,   229,   229,   229,
-      229,   229,   229,   230,   231,   232,   233,   234,   235,   237,
-      236,   238,   238,   239,   239,   241,   240,   243,   242,   244,
-      244,   245,   245,   245,   245,   245,   245,   245,   245,   245,
-      245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
-      245,   247,   246,   249,   248,   251,   250,   253,   252,   255,
-      254,   257,   256,   259,   258,   261,   260,   262,   263,   265,
-      264,   266,   266,   267,   267,   269,   268,   271,   270,   272,
-      272,   273,   273,   274,   274,   274,   274,   274,   274,   274,
-      274,   275,   276,   277,   278,   280,   279,   282,   281,   283,
-      285,   284,   286,   288,   287,   289,   289,   290,   290,   292,
-      291,   294,   293,   295,   295,   296,   296,   297,   297,   297,
-      297,   297,   297,   298,   300,   299,   301,   302,   303,   305,
-      304,   306,   306,   307,   307,   309,   308,   311,   310,   312,
-      312,   313,   313,   313,   315,   314,   317,   316,   318,   318,
-      319,   319,   321,   320,   323,   322,   324,   324,   325,   325,
-      326,   326,   326,   326,   326,   326,   326,   326,   326,   326,
-      326,   326,   328,   327,   330,   329,   332,   331,   334,   333,
-      336,   335,   338,   337,   340,   339,   342,   341,   344,   343,
-      346,   345,   348,   347,   350,   349,   352,   351,   353,   353,
-      354,   258,   355,   355,   356,   356,   357,   357,   357,   357,
-      357,   357,   357,   358,   360,   359,   362,   361,   363,   363,
-      364,   364,   364,   364,   364,   364,   364,   365,   367,   366,
-      368,   369,   370,   372,   371,   373,   373,   374,   374,   376,
-      375,   378,   377,   380,   379,   382,   381,   383,   383,   384,
-      384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
-      384,   384,   384,   384,   384,   385,   387,   386,   389,   388,
-      390,   392,   391,   393,   394,   396,   395,   397,   397,   399,
-      398,   400,   401,   402,   403,   405,   404,   406,   406,   406,
-      406,   406,   408,   407,   410,   409,   412,   411,   414,   413,
-      415,   415,   416,   418,   417,   419,   419,   421,   420,   422,
-      422,   423,   423,   423,   423,   423,   424,   426,   425,   428,
-      427,   429,   429,   431,   430,   432,   432,   434,   433
++     153,   153,   154,   154,   156,   155,   157,   157,   158,   158,
++     159,   161,   160,   162,   162,   163,   163,   163,   163,   163,
++     165,   164,   167,   166,   168,   168,   169,   169,   169,   169,
++     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
++     169,   169,   169,   169,   169,   169,   169,   169,   170,   171,
++     172,   173,   174,   175,   177,   176,   178,   178,   179,   179,
++     181,   180,   183,   182,   185,   184,   186,   186,   188,   187,
++     190,   189,   191,   191,   192,   192,   192,   192,   192,   192,
++     192,   192,   192,   194,   193,   196,   195,   198,   197,   200,
++     199,   202,   201,   203,   204,   205,   206,   208,   207,   209,
++     209,   210,   210,   210,   210,   211,   212,   213,   215,   214,
++     216,   216,   217,   217,   219,   218,   221,   220,   222,   222,
++     222,   223,   223,   225,   224,   227,   226,   229,   228,   230,
++     230,   231,   231,   231,   231,   231,   231,   232,   233,   234,
++     235,   236,   237,   239,   238,   240,   240,   241,   241,   243,
++     242,   245,   244,   246,   246,   247,   247,   247,   247,   247,
++     247,   247,   247,   247,   247,   247,   247,   247,   247,   247,
++     247,   247,   247,   247,   247,   249,   248,   251,   250,   253,
++     252,   255,   254,   257,   256,   259,   258,   261,   260,   263,
++     262,   264,   265,   267,   266,   268,   268,   269,   269,   271,
++     270,   273,   272,   274,   274,   275,   275,   276,   276,   276,
++     276,   276,   276,   276,   276,   277,   278,   279,   280,   282,
++     281,   284,   283,   285,   287,   286,   288,   290,   289,   291,
++     291,   292,   292,   294,   293,   296,   295,   297,   297,   298,
++     298,   299,   299,   299,   299,   299,   299,   300,   302,   301,
++     303,   304,   305,   307,   306,   308,   308,   309,   309,   311,
++     310,   313,   312,   314,   314,   315,   315,   315,   317,   316,
++     319,   318,   320,   320,   321,   321,   323,   322,   325,   324,
++     326,   326,   327,   327,   328,   328,   328,   328,   328,   328,
++     328,   328,   328,   328,   328,   328,   330,   329,   332,   331,
++     334,   333,   336,   335,   338,   337,   340,   339,   342,   341,
++     344,   343,   346,   345,   348,   347,   350,   349,   352,   351,
++     354,   353,   355,   355,   356,   260,   357,   357,   358,   358,
++     359,   359,   359,   359,   359,   359,   359,   360,   362,   361,
++     364,   363,   365,   365,   366,   366,   366,   366,   366,   366,
++     366,   367,   369,   368,   370,   371,   372,   374,   373,   375,
++     375,   376,   376,   378,   377,   380,   379,   382,   381,   384,
++     383,   385,   385,   386,   386,   386,   386,   386,   386,   386,
++     386,   386,   386,   386,   386,   386,   386,   386,   386,   387,
++     389,   388,   391,   390,   392,   394,   393,   395,   396,   398,
++     397,   399,   399,   401,   400,   402,   403,   404,   405,   407,
++     406,   408,   408,   408,   408,   408,   410,   409,   412,   411,
++     414,   413,   416,   415,   417,   417,   418,   420,   419,   421,
++     421,   423,   422,   424,   424,   425,   425,   425,   425,   425,
++     426,   428,   427,   430,   429,   431,   431,   433,   432,   434,
++     434,   436,   435
    };
  
    const unsigned char
    {
         0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
         0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
 -       0,     3,     1,     1,     1,     1,     1,     1,     1,     1,
 -       0,     4,     0,     1,     3,     5,     0,     4,     0,     1,
 -       1,     3,     0,     4,     0,     1,     1,     3,     2,     0,
 -       4,     1,     3,     1,     1,     1,     1,     1,     0,     6,
 -       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
 +       0,     3,     0,     3,     1,     1,     1,     1,     1,     1,
 +       1,     1,     0,     4,     0,     1,     3,     5,     0,     4,
-        0,     4,     0,     1,     1,     3,     2,     0,     4,     1,
-        3,     1,     1,     1,     1,     1,     0,     6,     0,     4,
-        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
++       0,     1,     1,     3,     0,     4,     0,     1,     1,     3,
++       2,     0,     4,     1,     3,     1,     1,     1,     1,     1,
++       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
-        0,     6,     1,     3,     1,     1,     0,     4,     0,     4,
-        0,     4,     1,     1,     0,     6,     0,     6,     1,     3,
 -       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
 -       3,     3,     0,     6,     1,     3,     1,     1,     0,     4,
 -       0,     4,     0,     4,     0,     6,     0,     6,     1,     3,
--       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
--       4,     0,     4,     0,     4,     0,     4,     0,     4,     3,
--       3,     3,     1,     0,     6,     1,     3,     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,
 -       4,     0,     4,     0,     6,     1,     3,     3,     0,     6,
++       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
++       3,     3,     3,     3,     0,     6,     1,     3,     1,     1,
++       0,     4,     0,     4,     0,     4,     1,     1,     0,     6,
++       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
++       4,     0,     4,     3,     3,     3,     1,     0,     6,     1,
++       3,     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,
 -       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
 -       0,     4,     0,     4,     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,     3,     1,     1,     0,     4,     0,     4,     1,     0,
 -       4,     3,     0,     6,     0,     1,     1,     3,     0,     4,
 -       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
 -       1,     1,     1,     0,     4,     1,     1,     3,     0,     6,
 -       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
 -       1,     1,     1,     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,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-        4,     0,     4,     0,     4,     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,     3,     1,     1,     0,     4,     0,     4,     1,
-        0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
++       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
+        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
 -       4,     0,     6,     0,     4,     0,     6,     1,     3,     0,
 -       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
 -       1,     1,     1,     0,     4,     0,     6,     1,     3,     1,
 -       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
 -       3,     3,     0,     6,     1,     3,     1,     1,     0,     4,
 -       0,     4,     0,     6,     0,     4,     0,     4,     0,     6,
 -       1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
 -       3,     1,     1,     1,     1,     1,     3,     0,     4,     0,
 -       6,     1,     3,     0,     4,     1,     3,     0,     4
++       4,     3,     3,     0,     6,     0,     1,     1,     3,     0,
 +       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-        1,     1,     1,     1,     0,     4,     1,     1,     3,     0,
-        6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
-        3,     1,     1,     1,     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,     0,     4,     0,     4,     0,     4,     0,     4,
++       1,     1,     1,     1,     1,     1,     3,     1,     1,     0,
++       4,     0,     4,     1,     0,     4,     3,     0,     6,     0,
++       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
++       3,     1,     1,     1,     1,     1,     1,     1,     0,     4,
++       1,     1,     3,     0,     6,     0,     1,     1,     3,     0,
++       4,     0,     4,     1,     3,     1,     1,     1,     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,     0,     4,     0,     4,
 +       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-        0,     4,     0,     6,     0,     4,     0,     6,     1,     3,
-        0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-        1,     1,     1,     1,     0,     4,     0,     6,     1,     3,
-        1,     1,     1,     1,     1,     1,     1,     3,     0,     4,
-        3,     3,     3,     0,     6,     1,     3,     1,     1,     0,
-        4,     0,     4,     0,     6,     0,     4,     1,     3,     1,
-        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     1,     1,     3,     0,     4,     0,     4,
-        3,     0,     4,     3,     3,     0,     4,     1,     1,     0,
-        4,     3,     3,     3,     3,     0,     4,     1,     1,     1,
-        1,     1,     0,     4,     0,     4,     0,     4,     0,     6,
-        1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
-        3,     1,     1,     1,     1,     1,     3,     0,     4,     0,
-        6,     1,     3,     0,     4,     1,     3,     0,     4
++       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
++       0,     6,     1,     3,     0,     4,     0,     1,     1,     3,
++       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
++       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
++       1,     3,     0,     4,     3,     3,     3,     0,     6,     1,
++       3,     1,     1,     0,     4,     0,     4,     0,     6,     0,
++       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
++       0,     4,     0,     4,     3,     0,     4,     3,     3,     0,
++       4,     1,     1,     0,     4,     3,     3,     3,     3,     0,
++       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
++       0,     4,     0,     6,     1,     3,     1,     0,     6,     1,
++       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
++       3,     0,     4,     0,     6,     1,     3,     0,     4,     1,
++       3,     0,     4
    };
  
  
    "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
    "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"relay\"",
    "\"ip-address\"", "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
 -  "\"expired-leases-processing\"", "\"server-id\"", "\"identifier\"",
 +  "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
 +  "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
 +  "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
 +  "\"unwarned-reclaim-cycles\"", "\"server-id\"", "\"identifier\"",
    "\"htype\"", "\"time\"", "\"enterprise-id\"", "\"dhcp4o6-port\"",
    "\"control-socket\"", "\"socket-type\"", "\"socket-name\"",
 -  "\"dhcp-ddns\"", "\"Logging\"", "\"loggers\"", "\"output_options\"",
 -  "\"output\"", "\"debuglevel\"", "\"severity\"", "\"Dhcp6\"",
 -  "\"DhcpDdns\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", "SUB_DHCP4",
 -  "SUB_INTERFACES4", "SUB_SUBNET4", "SUB_POOL4", "SUB_RESERVATION",
 -  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
 +  "\"dhcp-ddns\"", "\"enable-updates\"", "\"qualifying-suffix\"",
 +  "\"server-ip\"", "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
 +  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
 +  "\"always-include-fqdn\"", "\"allow-client-update\"",
 +  "\"override-no-update\"", "\"override-client-update\"",
 +  "\"replace-client-name\"", "\"generated-prefix\"", "\"tcp\"", "\"JSON\"",
 +  "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
 +  "\"Logging\"", "\"loggers\"", "\"output_options\"", "\"output\"",
 +  "\"debuglevel\"", "\"severity\"", "\"Dhcp6\"", "\"DhcpDdns\"",
 +  "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4",
 +  "SUB_SUBNET4", "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEF",
 +  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS",
    "\"constant string\"", "\"integer\"", "\"floating point\"",
    "\"boolean\"", "$accept", "start", "$@1", "$@2", "$@3", "$@4", "$@5",
 -  "$@6", "$@7", "$@8", "$@9", "$@10", "value", "sub_json", "map2", "$@11",
 -  "map_content", "not_empty_map", "list_generic", "$@12", "list_content",
 -  "not_empty_list", "list_strings", "$@13", "list_strings_content",
 -  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@14",
 -  "global_objects", "global_object", "dhcp4_object", "$@15", "sub_dhcp4",
 -  "$@16", "global_params", "global_param", "valid_lifetime", "renew_timer",
 -  "rebind_timer", "decline_probation_period", "echo_client_id",
 -  "match_client_id", "interfaces_config", "$@17",
 -  "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
 -  "$@18", "interfaces_list", "$@19", "dhcp_socket_type", "$@20",
 -  "lease_database", "$@21", "hosts_database", "$@22",
 -  "database_map_params", "database_map_param", "type", "$@23", "user",
 -  "$@24", "password", "$@25", "host", "$@26", "name", "$@27", "persist",
 -  "lfc_interval", "readonly", "duid_id", "host_reservation_identifiers",
 -  "$@28", "host_reservation_identifiers_list",
 -  "host_reservation_identifier", "hw_address_id", "circuit_id",
 -  "client_id", "hooks_libraries", "$@29", "hooks_libraries_list",
 -  "not_empty_hooks_libraries_list", "hooks_library", "$@30",
 -  "sub_hooks_library", "$@31", "hooks_params", "hooks_param", "library",
 -  "$@32", "parameters", "$@33", "expired_leases_processing", "$@34",
 -  "expired_leases_params", "expired_leases_param", "subnet4_list", "$@35",
 -  "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@36",
 -  "sub_subnet4", "$@37", "subnet4_params", "subnet4_param", "subnet",
 -  "$@38", "subnet_4o6_interface", "$@39", "subnet_4o6_interface_id",
 -  "$@40", "subnet_4o6_subnet", "$@41", "interface", "$@42", "interface_id",
 -  "$@43", "client_class", "$@44", "reservation_mode", "$@45", "id",
 -  "rapid_commit", "option_def_list", "$@46", "option_def_list_content",
 -  "not_empty_option_def_list", "option_def_entry", "$@47",
 -  "sub_option_def", "$@48", "option_def_params",
 -  "not_empty_option_def_params", "option_def_param", "option_def_name",
 -  "code", "option_def_code", "option_def_type", "option_def_record_types",
 -  "$@49", "space", "$@50", "option_def_space", "option_def_encapsulate",
 -  "$@51", "option_def_array", "option_data_list", "$@52",
 -  "option_data_list_content", "not_empty_option_data_list",
 -  "option_data_entry", "$@53", "sub_option_data", "$@54",
 +  "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "value", "sub_json", "map2",
-   "$@12", "map_content", "not_empty_map", "list_generic", "$@13", "list2",
-   "$@14", "list_content", "not_empty_list", "unknown_map_entry",
++  "$@12", "map_content", "not_empty_map", "list_generic", "$@13",
++  "list_content", "not_empty_list", "list_strings", "$@14",
++  "list_strings_content", "not_empty_list_strings", "unknown_map_entry",
 +  "syntax_map", "$@15", "global_objects", "global_object", "dhcp4_object",
 +  "$@16", "sub_dhcp4", "$@17", "global_params", "global_param",
 +  "valid_lifetime", "renew_timer", "rebind_timer",
 +  "decline_probation_period", "echo_client_id", "match_client_id",
 +  "interfaces_config", "$@18", "interfaces_config_params",
 +  "interfaces_config_param", "sub_interfaces4", "$@19", "interfaces_list",
 +  "$@20", "dhcp_socket_type", "$@21", "socket_type", "lease_database",
 +  "$@22", "hosts_database", "$@23", "database_map_params",
 +  "database_map_param", "type", "$@24", "user", "$@25", "password", "$@26",
 +  "host", "$@27", "name", "$@28", "persist", "lfc_interval", "readonly",
 +  "duid_id", "host_reservation_identifiers", "$@29",
 +  "host_reservation_identifiers_list", "host_reservation_identifier",
 +  "hw_address_id", "circuit_id", "client_id", "hooks_libraries", "$@30",
 +  "hooks_libraries_list", "not_empty_hooks_libraries_list",
 +  "hooks_library", "$@31", "sub_hooks_library", "$@32", "hooks_params",
 +  "hooks_param", "library", "$@33", "parameters", "$@34",
 +  "expired_leases_processing", "$@35", "expired_leases_params",
 +  "expired_leases_param", "reclaim_timer_wait_time",
 +  "flush_reclaimed_timer_wait_time", "hold_reclaimed_time",
 +  "max_reclaim_leases", "max_reclaim_time", "unwarned_reclaim_cycles",
 +  "subnet4_list", "$@36", "subnet4_list_content", "not_empty_subnet4_list",
 +  "subnet4", "$@37", "sub_subnet4", "$@38", "subnet4_params",
 +  "subnet4_param", "subnet", "$@39", "subnet_4o6_interface", "$@40",
 +  "subnet_4o6_interface_id", "$@41", "subnet_4o6_subnet", "$@42",
 +  "interface", "$@43", "interface_id", "$@44", "client_class", "$@45",
 +  "reservation_mode", "$@46", "id", "rapid_commit", "option_def_list",
 +  "$@47", "option_def_list_content", "not_empty_option_def_list",
 +  "option_def_entry", "$@48", "sub_option_def", "$@49",
 +  "option_def_params", "not_empty_option_def_params", "option_def_param",
 +  "option_def_name", "code", "option_def_code", "option_def_type",
 +  "option_def_record_types", "$@50", "space", "$@51", "option_def_space",
 +  "option_def_encapsulate", "$@52", "option_def_array", "option_data_list",
 +  "$@53", "option_data_list_content", "not_empty_option_data_list",
 +  "option_data_entry", "$@54", "sub_option_data", "$@55",
    "option_data_params", "not_empty_option_data_params",
 -  "option_data_param", "option_data_name", "option_data_data", "$@55",
 +  "option_data_param", "option_data_name", "option_data_data", "$@56",
    "option_data_code", "option_data_space", "option_data_csv_format",
 -  "pools_list", "$@56", "pools_list_content", "not_empty_pools_list",
 -  "pool_list_entry", "$@57", "sub_pool4", "$@58", "pool_params",
 -  "pool_param", "pool_entry", "$@59", "reservations", "$@60",
 +  "pools_list", "$@57", "pools_list_content", "not_empty_pools_list",
 +  "pool_list_entry", "$@58", "sub_pool4", "$@59", "pool_params",
 +  "pool_param", "pool_entry", "$@60", "reservations", "$@61",
    "reservations_list", "not_empty_reservations_list", "reservation",
 -  "$@61", "sub_reservation", "$@62", "reservation_params",
 +  "$@62", "sub_reservation", "$@63", "reservation_params",
    "not_empty_reservation_params", "reservation_param", "next_server",
 -  "$@63", "server_hostname", "$@64", "boot_file_name", "$@65",
 -  "ip_address", "$@66", "duid", "$@67", "hw_address", "$@68",
 -  "client_id_value", "$@69", "circuit_id_value", "$@70", "hostname",
 -  "$@71", "reservation_client_classes", "$@72", "relay", "$@73",
 -  "relay_map", "$@74", "client_classes", "$@75", "client_classes_list",
 -  "$@76", "client_class_params", "not_empty_client_class_params",
 -  "client_class_param", "client_class_name", "client_class_test", "$@77",
 -  "server_id", "$@78", "server_id_params", "server_id_param", "htype",
 -  "identifier", "$@79", "time", "enterprise_id", "dhcp4o6_port",
 -  "control_socket", "$@80", "control_socket_params",
 -  "control_socket_param", "socket_type", "$@81", "socket_name", "$@82",
 -  "dhcp_ddns", "$@83", "dhcp6_json_object", "$@84", "dhcpddns_json_object",
 -  "$@85", "logging_object", "$@86", "logging_params", "logging_param",
 -  "loggers", "$@87", "loggers_entries", "logger_entry", "$@88",
 -  "logger_params", "logger_param", "debuglevel", "severity", "$@89",
 -  "output_options_list", "$@90", "output_options_list_content",
 -  "output_entry", "$@91", "output_params", "output_param", "$@92", YY_NULLPTR
 +  "$@64", "server_hostname", "$@65", "boot_file_name", "$@66",
 +  "ip_address", "$@67", "duid", "$@68", "hw_address", "$@69",
 +  "client_id_value", "$@70", "circuit_id_value", "$@71", "hostname",
 +  "$@72", "reservation_client_classes", "$@73", "relay", "$@74",
 +  "relay_map", "$@75", "client_classes", "$@76", "client_classes_list",
 +  "$@77", "client_class_params", "not_empty_client_class_params",
 +  "client_class_param", "client_class_name", "client_class_test", "$@78",
 +  "server_id", "$@79", "server_id_params", "server_id_param", "htype",
 +  "identifier", "$@80", "time", "enterprise_id", "dhcp4o6_port",
 +  "control_socket", "$@81", "control_socket_params",
 +  "control_socket_param", "control_socket_type", "$@82",
 +  "control_socket_name", "$@83", "dhcp_ddns", "$@84", "sub_dhcp_ddns",
 +  "$@85", "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates",
 +  "qualifying_suffix", "$@86", "server_ip", "$@87", "server_port",
 +  "sender_ip", "$@88", "sender_port", "max_queue_size", "ncr_protocol",
 +  "$@89", "ncr_protocol_value", "ncr_format", "$@90",
 +  "always_include_fqdn", "allow_client_update", "override_no_update",
 +  "override_client_update", "replace_client_name", "$@91",
 +  "replace_client_name_value", "generated_prefix", "$@92",
 +  "dhcp6_json_object", "$@93", "dhcpddns_json_object", "$@94",
 +  "logging_object", "$@95", "logging_params", "logging_param", "loggers",
 +  "$@96", "loggers_entries", "logger_entry", "$@97", "logger_params",
 +  "logger_param", "debuglevel", "severity", "$@98", "output_options_list",
 +  "$@99", "output_options_list_content", "output_entry", "$@100",
 +  "output_params", "output_param", "$@101", YY_NULLPTR
    };
  
  #if PARSER4_DEBUG
    const unsigned short int
    Dhcp4Parser::yyrline_[] =
    {
 -       0,   198,   198,   198,   199,   199,   200,   200,   201,   201,
 -     202,   202,   203,   203,   204,   204,   205,   205,   206,   206,
 -     207,   207,   215,   216,   217,   218,   219,   220,   221,   224,
 -     229,   229,   241,   242,   245,   249,   256,   256,   263,   264,
 -     267,   271,   278,   278,   285,   286,   289,   293,   304,   314,
 -     314,   326,   327,   331,   332,   333,   334,   335,   338,   338,
 -     355,   355,   363,   364,   369,   370,   371,   372,   373,   374,
 -     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
 -     385,   386,   387,   388,   389,   390,   393,   398,   403,   408,
 -     413,   418,   424,   424,   434,   435,   438,   439,   442,   442,
 -     450,   450,   460,   460,   468,   468,   478,   478,   488,   489,
 -     492,   493,   494,   495,   496,   497,   498,   499,   500,   503,
 -     503,   511,   511,   519,   519,   527,   527,   535,   535,   543,
 -     548,   553,   558,   563,   563,   573,   574,   577,   578,   579,
 -     580,   583,   588,   593,   598,   598,   608,   609,   612,   613,
 -     616,   616,   624,   624,   632,   633,   634,   637,   638,   641,
 -     641,   649,   649,   657,   657,   667,   668,   674,   682,   682,
 -     695,   696,   699,   700,   707,   707,   730,   730,   739,   740,
 -     744,   745,   746,   747,   748,   749,   750,   751,   752,   753,
 -     754,   755,   756,   757,   758,   759,   760,   761,   762,   763,
 -     766,   766,   774,   774,   782,   782,   790,   790,   798,   798,
 -     806,   806,   814,   814,   822,   822,   830,   835,   844,   844,
 -     856,   857,   860,   861,   866,   866,   877,   877,   887,   888,
 -     891,   892,   895,   896,   897,   898,   899,   900,   901,   902,
 -     905,   907,   912,   914,   916,   916,   924,   924,   932,   934,
 -     934,   942,   951,   951,   963,   964,   969,   970,   975,   975,
 -     986,   986,   997,   998,  1003,  1004,  1009,  1010,  1011,  1012,
 -    1013,  1014,  1017,  1019,  1019,  1027,  1029,  1031,  1039,  1039,
 -    1051,  1052,  1055,  1056,  1059,  1059,  1067,  1067,  1075,  1076,
 -    1079,  1080,  1081,  1084,  1084,  1095,  1095,  1105,  1106,  1109,
 -    1110,  1113,  1113,  1121,  1121,  1129,  1130,  1133,  1134,  1138,
 -    1139,  1140,  1141,  1142,  1143,  1144,  1145,  1146,  1147,  1148,
 -    1149,  1152,  1152,  1160,  1160,  1168,  1168,  1176,  1176,  1184,
 -    1184,  1192,  1192,  1200,  1200,  1208,  1208,  1217,  1217,  1225,
 -    1225,  1238,  1238,  1248,  1248,  1259,  1259,  1269,  1270,  1273,
 -    1273,  1281,  1282,  1285,  1286,  1289,  1290,  1291,  1292,  1293,
 -    1294,  1295,  1298,  1300,  1300,  1311,  1311,  1321,  1322,  1325,
 -    1326,  1327,  1328,  1329,  1330,  1331,  1334,  1339,  1339,  1347,
 -    1352,  1359,  1366,  1366,  1376,  1377,  1380,  1381,  1384,  1384,
 -    1392,  1392,  1402,  1402,  1414,  1414,  1421,  1421,  1433,  1433,
 -    1446,  1447,  1451,  1455,  1455,  1467,  1468,  1472,  1472,  1480,
 -    1481,  1484,  1485,  1486,  1487,  1488,  1491,  1495,  1495,  1503,
 -    1503,  1513,  1514,  1517,  1517,  1525,  1526,  1529,  1529
 +       0,   211,   211,   211,   212,   212,   213,   213,   214,   214,
 +     215,   215,   216,   216,   217,   217,   218,   218,   219,   219,
 +     220,   220,   221,   221,   229,   230,   231,   232,   233,   234,
 +     235,   238,   243,   243,   255,   256,   259,   263,   270,   270,
-      278,   278,   285,   286,   289,   293,   304,   314,   314,   326,
-      327,   331,   332,   333,   334,   335,   338,   338,   355,   355,
-      363,   364,   369,   370,   371,   372,   373,   374,   375,   376,
-      377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
-      387,   388,   389,   390,   393,   398,   403,   408,   413,   418,
-      424,   424,   434,   435,   438,   439,   442,   442,   450,   450,
-      460,   460,   467,   468,   471,   471,   481,   481,   491,   492,
-      495,   496,   497,   498,   499,   500,   501,   502,   503,   506,
-      506,   514,   514,   522,   522,   530,   530,   538,   538,   546,
-      551,   556,   561,   566,   566,   576,   577,   580,   581,   582,
-      583,   586,   591,   596,   601,   601,   611,   612,   615,   616,
-      619,   619,   627,   627,   635,   636,   637,   640,   641,   644,
-      644,   652,   652,   660,   660,   670,   671,   674,   675,   676,
-      677,   678,   679,   682,   687,   692,   697,   702,   707,   715,
-      715,   728,   729,   732,   733,   740,   740,   763,   763,   772,
-      773,   777,   778,   779,   780,   781,   782,   783,   784,   785,
-      786,   787,   788,   789,   790,   791,   792,   793,   794,   795,
-      796,   799,   799,   807,   807,   815,   815,   823,   823,   831,
-      831,   839,   839,   847,   847,   855,   855,   863,   868,   877,
-      877,   889,   890,   893,   894,   899,   899,   910,   910,   920,
-      921,   924,   925,   928,   929,   930,   931,   932,   933,   934,
-      935,   938,   940,   945,   947,   949,   949,   957,   957,   965,
-      967,   967,   975,   984,   984,   996,   997,  1002,  1003,  1008,
-     1008,  1019,  1019,  1030,  1031,  1036,  1037,  1042,  1043,  1044,
-     1045,  1046,  1047,  1050,  1052,  1052,  1060,  1062,  1064,  1072,
-     1072,  1084,  1085,  1088,  1089,  1092,  1092,  1100,  1100,  1108,
-     1109,  1112,  1113,  1114,  1117,  1117,  1128,  1128,  1138,  1139,
-     1142,  1143,  1146,  1146,  1154,  1154,  1162,  1163,  1166,  1167,
-     1171,  1172,  1173,  1174,  1175,  1176,  1177,  1178,  1179,  1180,
-     1181,  1182,  1185,  1185,  1193,  1193,  1201,  1201,  1209,  1209,
-     1217,  1217,  1225,  1225,  1233,  1233,  1241,  1241,  1250,  1250,
-     1258,  1258,  1271,  1271,  1281,  1281,  1292,  1292,  1302,  1303,
-     1306,  1306,  1314,  1315,  1318,  1319,  1322,  1323,  1324,  1325,
-     1326,  1327,  1328,  1331,  1333,  1333,  1344,  1344,  1354,  1355,
-     1358,  1359,  1360,  1361,  1362,  1363,  1364,  1367,  1372,  1372,
-     1380,  1385,  1392,  1399,  1399,  1409,  1410,  1413,  1414,  1417,
-     1417,  1425,  1425,  1435,  1435,  1445,  1445,  1453,  1454,  1457,
-     1458,  1459,  1460,  1461,  1462,  1463,  1464,  1465,  1466,  1467,
-     1468,  1469,  1470,  1471,  1472,  1475,  1480,  1480,  1488,  1488,
-     1496,  1501,  1501,  1509,  1514,  1519,  1519,  1527,  1528,  1531,
-     1531,  1539,  1544,  1549,  1554,  1559,  1559,  1567,  1570,  1573,
-     1576,  1579,  1585,  1585,  1595,  1595,  1602,  1602,  1614,  1614,
-     1627,  1628,  1632,  1636,  1636,  1648,  1649,  1653,  1653,  1661,
-     1662,  1665,  1666,  1667,  1668,  1669,  1672,  1676,  1676,  1684,
-     1684,  1694,  1695,  1698,  1698,  1706,  1707,  1710,  1710
++     277,   278,   281,   285,   292,   292,   299,   300,   303,   307,
++     318,   328,   328,   340,   341,   345,   346,   347,   348,   349,
++     352,   352,   369,   369,   377,   378,   383,   384,   385,   386,
++     387,   388,   389,   390,   391,   392,   393,   394,   395,   396,
++     397,   398,   399,   400,   401,   402,   403,   404,   407,   412,
++     417,   422,   427,   432,   438,   438,   448,   449,   452,   453,
++     456,   456,   464,   464,   474,   474,   481,   482,   485,   485,
++     495,   495,   505,   506,   509,   510,   511,   512,   513,   514,
++     515,   516,   517,   520,   520,   528,   528,   536,   536,   544,
++     544,   552,   552,   560,   565,   570,   575,   580,   580,   590,
++     591,   594,   595,   596,   597,   600,   605,   610,   615,   615,
++     625,   626,   629,   630,   633,   633,   641,   641,   649,   650,
++     651,   654,   655,   658,   658,   666,   666,   674,   674,   684,
++     685,   688,   689,   690,   691,   692,   693,   696,   701,   706,
++     711,   716,   721,   729,   729,   742,   743,   746,   747,   754,
++     754,   777,   777,   786,   787,   791,   792,   793,   794,   795,
++     796,   797,   798,   799,   800,   801,   802,   803,   804,   805,
++     806,   807,   808,   809,   810,   813,   813,   821,   821,   829,
++     829,   837,   837,   845,   845,   853,   853,   861,   861,   869,
++     869,   877,   882,   891,   891,   903,   904,   907,   908,   913,
++     913,   924,   924,   934,   935,   938,   939,   942,   943,   944,
++     945,   946,   947,   948,   949,   952,   954,   959,   961,   963,
++     963,   971,   971,   979,   981,   981,   989,   998,   998,  1010,
++    1011,  1016,  1017,  1022,  1022,  1033,  1033,  1044,  1045,  1050,
++    1051,  1056,  1057,  1058,  1059,  1060,  1061,  1064,  1066,  1066,
++    1074,  1076,  1078,  1086,  1086,  1098,  1099,  1102,  1103,  1106,
++    1106,  1114,  1114,  1122,  1123,  1126,  1127,  1128,  1131,  1131,
++    1142,  1142,  1152,  1153,  1156,  1157,  1160,  1160,  1168,  1168,
++    1176,  1177,  1180,  1181,  1185,  1186,  1187,  1188,  1189,  1190,
++    1191,  1192,  1193,  1194,  1195,  1196,  1199,  1199,  1207,  1207,
++    1215,  1215,  1223,  1223,  1231,  1231,  1239,  1239,  1247,  1247,
++    1255,  1255,  1264,  1264,  1272,  1272,  1285,  1285,  1295,  1295,
++    1306,  1306,  1316,  1317,  1320,  1320,  1328,  1329,  1332,  1333,
++    1336,  1337,  1338,  1339,  1340,  1341,  1342,  1345,  1347,  1347,
++    1358,  1358,  1368,  1369,  1372,  1373,  1374,  1375,  1376,  1377,
++    1378,  1381,  1386,  1386,  1394,  1399,  1406,  1413,  1413,  1423,
++    1424,  1427,  1428,  1431,  1431,  1439,  1439,  1449,  1449,  1459,
++    1459,  1467,  1468,  1471,  1472,  1473,  1474,  1475,  1476,  1477,
++    1478,  1479,  1480,  1481,  1482,  1483,  1484,  1485,  1486,  1489,
++    1494,  1494,  1502,  1502,  1510,  1515,  1515,  1523,  1528,  1533,
++    1533,  1541,  1542,  1545,  1545,  1553,  1558,  1563,  1568,  1573,
++    1573,  1581,  1584,  1587,  1590,  1593,  1599,  1599,  1609,  1609,
++    1616,  1616,  1628,  1628,  1641,  1642,  1646,  1650,  1650,  1662,
++    1663,  1667,  1667,  1675,  1676,  1679,  1680,  1681,  1682,  1683,
++    1686,  1690,  1690,  1698,  1698,  1708,  1709,  1712,  1712,  1720,
++    1721,  1724,  1724
    };
  
    // Print the state stack on the debug stream.
  
  #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
  } } // isc::dhcp
- #line 3951 "dhcp4_parser.cc" // lalr1.cc:1167
- #line 1718 "dhcp4_parser.yy" // lalr1.cc:1168
 -#line 3514 "dhcp4_parser.cc" // lalr1.cc:1167
 -#line 1537 "dhcp4_parser.yy" // lalr1.cc:1168
++#line 3978 "dhcp4_parser.cc" // lalr1.cc:1167
++#line 1732 "dhcp4_parser.yy" // lalr1.cc:1168
  
  
  void
index d3a32e194b6e456b6b9a0271eefeda3dce142d5d,273d0208e50844069a74d7ebbc5c67142d09efdd..f11d6c260f596a11504ca0ff7b4b87adc3130cb6
@@@ -1312,12 -1159,12 +1312,12 @@@ namespace isc { namespace dhcp 
      enum
      {
        yyeof_ = 0,
-       yylast_ = 728,     ///< Last index in yytable_.
-       yynnts_ = 303,  ///< Number of nonterminal symbols.
 -      yylast_ = 628,     ///< Last index in yytable_.
 -      yynnts_ = 269,  ///< Number of nonterminal symbols.
 -      yyfinal_ = 22, ///< Termination state number.
++      yylast_ = 732,     ///< Last index in yytable_.
++      yynnts_ = 305,  ///< Number of nonterminal symbols.
 +      yyfinal_ = 24, ///< Termination state number.
        yyterror_ = 1,
        yyerrcode_ = 256,
 -      yyntokens_ = 102  ///< Number of tokens.
 +      yyntokens_ = 132  ///< Number of tokens.
      };
  
  
    {
        switch (other.type_get ())
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          value.copy< ElementPtr > (other.value);
          break;
  
      (void) v;
        switch (this->type_get ())
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          value.copy< ElementPtr > (v);
          break;
  
      // Type destructor.
      switch (yytype)
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          value.template destroy< ElementPtr > ();
          break;
  
      super_type::move(s);
        switch (this->type_get ())
      {
 -      case 114: // value
 +      case 145: // value
-       case 184: // socket_type
-       case 397: // ncr_protocol_value
-       case 406: // replace_client_name_value
++      case 186: // socket_type
++      case 399: // ncr_protocol_value
++      case 408: // replace_client_name_value
          value.move< ElementPtr > (s.value);
          break;
  
    }
  
  
- #line 14 "dhcp4_parser.yy" // lalr1.cc:377
+ #line 14 "dhcp4_parser.yy" // lalr1.cc:392
  } } // isc::dhcp
- #line 2475 "dhcp4_parser.h" // lalr1.cc:377
 -#line 2124 "dhcp4_parser.h" // lalr1.cc:392
++#line 2475 "dhcp4_parser.h" // lalr1.cc:392
  
  
  
Simple merge
index b8eb27b2f154f82604a5c184cac18fad2469fe83,39f1d09267021488633c601b57e352520f03c87d..f2d3e2432d22255875b61ab4d0f9bc0cee27e752
@@@ -436,9 -439,9 +436,8 @@@ DhcpConfigParser* createGlobalDhcp4Conf
      } else if (config_id.compare("match-client-id") == 0) {
          parser = new BooleanParser(config_id, globalContext()->boolean_values_);
      // control-socket has been converted to SimpleParser already.
 -    } else if (config_id.compare("expired-leases-processing") == 0) {
 -        parser = new ExpirationConfigParser();
 +    // expired-leases-processing has been converted to SimpleParser already.
-     } else if (config_id.compare("client-classes") == 0) {
-         parser = new ClientClassDefListParser(config_id, globalContext());
+     // client-classes has been converted to SimpleParser already.
      // host-reservation-identifiers have been converted to SimpleParser already.
      } else {
          isc_throw(DhcpConfigError,
@@@ -567,8 -570,8 +566,7 @@@ configureDhcp4Server(Dhcpv4Srv&, isc::d
      // Please do not change this order!
      ParserCollection independent_parsers;
      ParserPtr subnet_parser;
 -    ParserPtr iface_parser;
      ParserPtr leases_parser;
-     ParserPtr client_classes_parser;
  
      // Some of the parsers alter the state of the system in a way that can't
      // easily be undone. (Or alter it in a way such that undoing the change has
                  continue;
              }
  
 +            if (config_pair.first == "interfaces-config") {
 +                IfacesConfigParser parser(AF_INET);
 +                CfgIfacePtr cfg_iface = CfgMgr::instance().getStagingCfg()->getCfgIface();
 +                parser.parse(cfg_iface, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "expired-leases-processing") {
 +                ExpirationConfigParser parser;
 +                parser.parse(config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "hooks-libraries") {
 +                hooks_parser.parse(config_pair.second);
 +                hooks_parser.verifyLibraries();
 +                continue;
 +            }
 +            
 +            // Legacy DhcpConfigParser stuff below
 +            if (config_pair.first == "dhcp-ddns") {
 +                // Apply defaults if not in short cut
 +                if (!D2ClientConfigParser::isShortCutDisabled(config_pair.second)) {
 +                    D2ClientConfigParser::setAllDefaults(config_pair.second);
 +                }
 +                D2ClientConfigParser parser;
 +                D2ClientConfigPtr cfg = parser.parse(config_pair.second);
 +                CfgMgr::instance().getStagingCfg()->setD2ClientConfig(cfg);
 +                continue;
 +            }
  
+             if (config_pair.first == "client-classes") {
+                 ClientClassDefListParser parser;
+                 ClientClassDictionaryPtr dictionary =
+                     parser.parse(config_pair.second, AF_INET);
+                 CfgMgr::instance().getStagingCfg()->setClientClassDictionary(dictionary);
+                 continue;
+             }
              ParserPtr parser(createGlobalDhcp4ConfigParser(config_pair.first,
                                                             config_pair.second));
              LOG_DEBUG(dhcp4_logger, DBG_DHCP4_DETAIL, DHCP4_PARSER_CREATED)
                  subnet_parser = parser;
              } else if (config_pair.first == "lease-database") {
                  leases_parser = parser;
-             } else if (config_pair.first == "client-classes") {
-                 client_classes_parser = parser;
 -            } else if (config_pair.first == "interfaces-config") {
 -                // The interface parser is independent from any other
 -                // parser and can be run here before any other parsers.
 -                iface_parser = parser;
 -                parser->build(config_pair.second);
 -            } else if (config_pair.first == "hooks-libraries") {
 -                // Executing commit will alter currently-loaded hooks
 -                // libraries.  Check if the supplied libraries are valid,
 -                // but defer the commit until everything else has committed.
 -                hooks_parser = parser;
 -                parser->build(config_pair.second);
              } else {
                  // Those parsers should be started before other
                  // parsers so we can call build straight away.
index 5d13c38309b9c8ec03b9d0d99f2f66194fa96049,59b5fa7e2f85fc0f09bc18935172d173510e2f0a..5c026ca972a135b4cb1921a948869e5c3b345131
@@@ -253,10 -253,7 +253,10 @@@ namespace isc { namespace dhcp 
    {
        switch (that.type_get ())
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          value.move< ElementPtr > (that.value);
          break;
  
      state = that.state;
        switch (that.type_get ())
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          value.copy< ElementPtr > (that.value);
          break;
  
          << yysym.location << ": ";
      switch (yytype)
      {
 -            case 99: // "constant string"
 +            case 131: // "constant string"
  
 -#line 189 "dhcp6_parser.yy" // lalr1.cc:636
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< std::string > (); }
 -#line 352 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 358 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
 -      case 100: // "integer"
 +      case 132: // "integer"
  
 -#line 189 "dhcp6_parser.yy" // lalr1.cc:636
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< int64_t > (); }
 -#line 359 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 365 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
 -      case 101: // "floating point"
 +      case 133: // "floating point"
  
 -#line 189 "dhcp6_parser.yy" // lalr1.cc:636
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< double > (); }
 -#line 366 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 372 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
 -      case 102: // "boolean"
 +      case 134: // "boolean"
  
 -#line 189 "dhcp6_parser.yy" // lalr1.cc:636
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< bool > (); }
 -#line 373 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 379 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
 -      case 116: // value
 +      case 149: // value
  
 -#line 189 "dhcp6_parser.yy" // lalr1.cc:636
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< ElementPtr > (); }
 -#line 380 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 386 "dhcp6_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 374: // duid_type
++      case 376: // duid_type
 +
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 393 "dhcp6_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 407: // ncr_protocol_value
++      case 409: // ncr_protocol_value
 +
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 400 "dhcp6_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 416: // replace_client_name_value
++      case 418: // replace_client_name_value
 +
 +#line 204 "dhcp6_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 407 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
  
           when using variants.  */
          switch (yyr1_[yyn])
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          yylhs.value.build< ElementPtr > ();
          break;
  
      {
      // list parsing complete. Put any sanity checking here
  }
 -#line 788 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 824 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
--  case 42:
- #line 281 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 268 "dhcp6_parser.yy" // lalr1.cc:859
++  case 44:
++#line 284 "dhcp6_parser.yy" // lalr1.cc:859
+     {
+                   // List consisting of a single element.
+                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+                   }
 -#line 797 "dhcp6_parser.cc" // lalr1.cc:859
++#line 833 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
 -  case 43:
 -#line 272 "dhcp6_parser.yy" // lalr1.cc:859
++  case 45:
++#line 288 "dhcp6_parser.yy" // lalr1.cc:859
+     {
+                   // List ending with , and a value.
+                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
+                   }
 -#line 806 "dhcp6_parser.cc" // lalr1.cc:859
++#line 842 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
 -  case 44:
 -#line 279 "dhcp6_parser.yy" // lalr1.cc:859
++  case 46:
++#line 295 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // List parsing about to start
  }
- #line 832 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 814 "dhcp6_parser.cc" // lalr1.cc:859
++#line 850 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 43:
- #line 283 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 45:
 -#line 281 "dhcp6_parser.yy" // lalr1.cc:859
++  case 47:
++#line 297 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // list parsing complete. Put any sanity checking here
      //ctx.stack_.pop_back();
  }
- #line 841 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 823 "dhcp6_parser.cc" // lalr1.cc:859
++#line 859 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 46:
- #line 292 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 48:
 -#line 290 "dhcp6_parser.yy" // lalr1.cc:859
++  case 50:
++#line 306 "dhcp6_parser.yy" // lalr1.cc:859
      {
-                   // List consisting of a single element.
-                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
-                   }
- #line 850 "dhcp6_parser.cc" // lalr1.cc:859
+                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+                           ctx.stack_.back()->add(s);
+                           }
 -#line 832 "dhcp6_parser.cc" // lalr1.cc:859
++#line 868 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 47:
- #line 296 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 49:
 -#line 294 "dhcp6_parser.yy" // lalr1.cc:859
++  case 51:
++#line 310 "dhcp6_parser.yy" // lalr1.cc:859
      {
-                   // List ending with , and a value.
-                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
-                   }
- #line 859 "dhcp6_parser.cc" // lalr1.cc:859
+                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+                           ctx.stack_.back()->add(s);
+                           }
 -#line 841 "dhcp6_parser.cc" // lalr1.cc:859
++#line 877 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 48:
- #line 307 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 50:
 -#line 305 "dhcp6_parser.yy" // lalr1.cc:859
++  case 52:
++#line 321 "dhcp6_parser.yy" // lalr1.cc:859
      {
      const std::string& where = ctx.contextName();
      const std::string& keyword = yystack_[1].value.as< std::string > ();
      error(yystack_[1].location,
            "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
  }
- #line 870 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 852 "dhcp6_parser.cc" // lalr1.cc:859
++#line 888 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 49:
- #line 317 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 51:
 -#line 315 "dhcp6_parser.yy" // lalr1.cc:859
++  case 53:
++#line 331 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 881 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 863 "dhcp6_parser.cc" // lalr1.cc:859
++#line 899 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 50:
- #line 322 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 52:
 -#line 320 "dhcp6_parser.yy" // lalr1.cc:859
++  case 54:
++#line 336 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // map parsing completed. If we ever want to do any wrap up
      // (maybe some sanity checking), this would be the best place
      // for it.
  }
- #line 891 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 873 "dhcp6_parser.cc" // lalr1.cc:859
++#line 909 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 58:
- #line 341 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 60:
 -#line 339 "dhcp6_parser.yy" // lalr1.cc:859
++  case 62:
++#line 355 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      ctx.stack_.push_back(m);
      ctx.enter(ctx.DHCP6);
  }
- #line 904 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 886 "dhcp6_parser.cc" // lalr1.cc:859
++#line 922 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 59:
- #line 348 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 61:
 -#line 346 "dhcp6_parser.yy" // lalr1.cc:859
++  case 63:
++#line 362 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // map parsing completed. If we ever want to do any wrap up
      // (maybe some sanity checking), this would be the best place
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 916 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 898 "dhcp6_parser.cc" // lalr1.cc:859
++#line 934 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 60:
- #line 358 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 62:
 -#line 356 "dhcp6_parser.yy" // lalr1.cc:859
++  case 64:
++#line 372 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the Dhcp6 map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 926 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 908 "dhcp6_parser.cc" // lalr1.cc:859
++#line 944 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 61:
- #line 362 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 63:
 -#line 360 "dhcp6_parser.yy" // lalr1.cc:859
++  case 65:
++#line 376 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 934 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 916 "dhcp6_parser.cc" // lalr1.cc:859
++#line 952 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 86:
- #line 396 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 88:
 -#line 394 "dhcp6_parser.yy" // lalr1.cc:859
++  case 90:
++#line 410 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("preferred-lifetime", prf);
  }
- #line 943 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 925 "dhcp6_parser.cc" // lalr1.cc:859
++#line 961 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 87:
- #line 401 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 89:
 -#line 399 "dhcp6_parser.yy" // lalr1.cc:859
++  case 91:
++#line 415 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("valid-lifetime", prf);
  }
- #line 952 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 934 "dhcp6_parser.cc" // lalr1.cc:859
++#line 970 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 88:
- #line 406 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 90:
 -#line 404 "dhcp6_parser.yy" // lalr1.cc:859
++  case 92:
++#line 420 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("renew-timer", prf);
  }
- #line 961 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 943 "dhcp6_parser.cc" // lalr1.cc:859
++#line 979 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 89:
- #line 411 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 91:
 -#line 409 "dhcp6_parser.yy" // lalr1.cc:859
++  case 93:
++#line 425 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("rebind-timer", prf);
  }
- #line 970 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 952 "dhcp6_parser.cc" // lalr1.cc:859
++#line 988 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 90:
- #line 416 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 92:
 -#line 414 "dhcp6_parser.yy" // lalr1.cc:859
++  case 94:
++#line 430 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("decline-probation-period", dpp);
  }
- #line 979 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 961 "dhcp6_parser.cc" // lalr1.cc:859
++#line 997 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 91:
- #line 421 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 93:
 -#line 419 "dhcp6_parser.yy" // lalr1.cc:859
++  case 95:
++#line 435 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces-config", i);
      ctx.stack_.push_back(i);
      ctx.enter(ctx.INTERFACES_CONFIG);
  }
- #line 990 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 972 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1008 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 92:
- #line 426 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 94:
 -#line 424 "dhcp6_parser.yy" // lalr1.cc:859
++  case 96:
++#line 440 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 999 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 981 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1017 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 93:
- #line 431 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 95:
 -#line 429 "dhcp6_parser.yy" // lalr1.cc:859
++  case 97:
++#line 445 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the interfaces-config map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1009 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 991 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1027 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 94:
- #line 435 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 96:
 -#line 433 "dhcp6_parser.yy" // lalr1.cc:859
++  case 98:
++#line 449 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1017 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 999 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1035 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 95:
- #line 439 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 97:
 -#line 437 "dhcp6_parser.yy" // lalr1.cc:859
++  case 99:
++#line 453 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1028 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1010 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1046 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 96:
- #line 444 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 98:
 -#line 442 "dhcp6_parser.yy" // lalr1.cc:859
++  case 100:
++#line 458 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1037 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1019 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1055 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 97:
- #line 449 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 99:
 -#line 447 "dhcp6_parser.yy" // lalr1.cc:859
++  case 101:
++#line 463 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("lease-database", i);
      ctx.stack_.push_back(i);
      ctx.enter(ctx.LEASE_DATABASE);
  }
- #line 1048 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1030 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1066 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 98:
- #line 454 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 100:
 -#line 452 "dhcp6_parser.yy" // lalr1.cc:859
++  case 102:
++#line 468 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1057 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1039 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1075 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 99:
- #line 459 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 101:
 -#line 457 "dhcp6_parser.yy" // lalr1.cc:859
++  case 103:
++#line 473 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hosts-database", i);
      ctx.stack_.push_back(i);
      ctx.enter(ctx.HOSTS_DATABASE);
  }
- #line 1068 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1050 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1086 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 100:
- #line 464 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 102:
 -#line 462 "dhcp6_parser.yy" // lalr1.cc:859
++  case 104:
++#line 478 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1077 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1059 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1095 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 112:
- #line 484 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 114:
 -#line 482 "dhcp6_parser.yy" // lalr1.cc:859
++  case 116:
++#line 498 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1085 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1067 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1103 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 113:
- #line 486 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 115:
 -#line 484 "dhcp6_parser.yy" // lalr1.cc:859
++  case 117:
++#line 500 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("type", prf);
      ctx.leave();
  }
- #line 1095 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1077 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1113 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 114:
- #line 492 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 116:
 -#line 490 "dhcp6_parser.yy" // lalr1.cc:859
++  case 118:
++#line 506 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1103 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1085 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1121 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 115:
- #line 494 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 117:
 -#line 492 "dhcp6_parser.yy" // lalr1.cc:859
++  case 119:
++#line 508 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("user", user);
      ctx.leave();
  }
- #line 1113 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1095 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 116:
- #line 500 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 118:
 -#line 498 "dhcp6_parser.yy" // lalr1.cc:859
++  case 120:
++#line 514 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1121 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1103 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1139 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 117:
- #line 502 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 119:
 -#line 500 "dhcp6_parser.yy" // lalr1.cc:859
++  case 121:
++#line 516 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("password", pwd);
      ctx.leave();
  }
- #line 1131 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1113 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1149 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 118:
- #line 508 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 120:
 -#line 506 "dhcp6_parser.yy" // lalr1.cc:859
++  case 122:
++#line 522 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1139 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1121 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1157 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 119:
- #line 510 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 121:
 -#line 508 "dhcp6_parser.yy" // lalr1.cc:859
++  case 123:
++#line 524 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("host", h);
      ctx.leave();
  }
- #line 1149 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1167 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 120:
- #line 516 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 122:
 -#line 514 "dhcp6_parser.yy" // lalr1.cc:859
++  case 124:
++#line 530 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1157 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1139 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1175 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 121:
- #line 518 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 123:
 -#line 516 "dhcp6_parser.yy" // lalr1.cc:859
++  case 125:
++#line 532 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("name", name);
      ctx.leave();
  }
- #line 1167 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1149 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1185 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 122:
- #line 524 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 124:
 -#line 522 "dhcp6_parser.yy" // lalr1.cc:859
++  case 126:
++#line 538 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("persist", n);
  }
- #line 1176 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1158 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1194 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 123:
- #line 529 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 125:
 -#line 527 "dhcp6_parser.yy" // lalr1.cc:859
++  case 127:
++#line 543 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("lfc-interval", n);
  }
- #line 1185 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1167 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1203 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 124:
- #line 534 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 126:
 -#line 532 "dhcp6_parser.yy" // lalr1.cc:859
++  case 128:
++#line 548 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("readonly", n);
  }
- #line 1194 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1176 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1212 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 125:
- #line 539 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 127:
 -#line 537 "dhcp6_parser.yy" // lalr1.cc:859
++  case 129:
++#line 553 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("mac-sources", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.MAC_SOURCES);
  }
- #line 1205 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1187 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1223 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 126:
- #line 544 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 128:
 -#line 542 "dhcp6_parser.yy" // lalr1.cc:859
++  case 130:
++#line 558 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1214 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1196 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1232 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 131:
- #line 557 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 133:
 -#line 555 "dhcp6_parser.yy" // lalr1.cc:859
++  case 135:
++#line 571 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(duid);
  }
- #line 1223 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1205 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1241 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 132:
- #line 562 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 134:
 -#line 560 "dhcp6_parser.yy" // lalr1.cc:859
++  case 136:
++#line 576 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(duid);
  }
- #line 1232 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1214 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1250 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 133:
- #line 567 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 135:
 -#line 565 "dhcp6_parser.yy" // lalr1.cc:859
++  case 137:
++#line 581 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("host-reservation-identifiers", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
  }
- #line 1243 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1225 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1261 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 134:
- #line 572 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 136:
 -#line 570 "dhcp6_parser.yy" // lalr1.cc:859
++  case 138:
++#line 586 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1252 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1234 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1270 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 139:
- #line 585 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 141:
 -#line 583 "dhcp6_parser.yy" // lalr1.cc:859
++  case 143:
++#line 599 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(hwaddr);
  }
- #line 1261 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1243 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1279 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 140:
 -  case 142:
--#line 590 "dhcp6_parser.yy" // lalr1.cc:859
++  case 144:
++#line 606 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("relay-supplied-options", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1272 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1254 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1290 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 141:
 -  case 143:
--#line 595 "dhcp6_parser.yy" // lalr1.cc:859
++  case 145:
++#line 611 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1281 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1263 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1299 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 142:
 -  case 144:
--#line 600 "dhcp6_parser.yy" // lalr1.cc:859
++  case 146:
++#line 616 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hooks-libraries", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.HOOKS_LIBRARIES);
  }
- #line 1292 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1274 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1310 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 143:
 -  case 145:
--#line 605 "dhcp6_parser.yy" // lalr1.cc:859
++  case 147:
++#line 621 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1301 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1283 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 148:
 -  case 150:
--#line 618 "dhcp6_parser.yy" // lalr1.cc:859
++  case 152:
++#line 634 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1311 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1293 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1329 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 149:
 -  case 151:
--#line 622 "dhcp6_parser.yy" // lalr1.cc:859
++  case 153:
++#line 638 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1319 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1301 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1337 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 150:
 -  case 152:
--#line 626 "dhcp6_parser.yy" // lalr1.cc:859
++  case 154:
++#line 642 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the hooks-libraries list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1329 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1311 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1347 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 151:
 -  case 153:
--#line 630 "dhcp6_parser.yy" // lalr1.cc:859
++  case 155:
++#line 646 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1337 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1355 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 157:
 -  case 159:
--#line 643 "dhcp6_parser.yy" // lalr1.cc:859
++  case 161:
++#line 659 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1345 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1327 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1363 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 158:
 -  case 160:
--#line 645 "dhcp6_parser.yy" // lalr1.cc:859
++  case 162:
++#line 661 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("library", lib);
      ctx.leave();
  }
- #line 1355 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1337 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 159:
 -  case 161:
--#line 651 "dhcp6_parser.yy" // lalr1.cc:859
++  case 163:
++#line 667 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1363 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1345 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1381 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 160:
 -  case 162:
--#line 653 "dhcp6_parser.yy" // lalr1.cc:859
++  case 164:
++#line 669 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 1372 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1354 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1390 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 161:
 -  case 163:
--#line 659 "dhcp6_parser.yy" // lalr1.cc:859
++  case 165:
++#line 675 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("expired-leases-processing", m);
      ctx.stack_.push_back(m);
 -    ctx.enter(ctx.NO_KEYWORD);
 +    ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
  }
- #line 1383 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1365 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1401 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 162:
 -  case 164:
--#line 664 "dhcp6_parser.yy" // lalr1.cc:859
++  case 166:
++#line 680 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1392 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1374 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1410 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 171:
- #line 681 "dhcp6_parser.yy" // lalr1.cc:859
++  case 175:
++#line 697 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 +}
- #line 1401 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1419 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 172:
- #line 686 "dhcp6_parser.yy" // lalr1.cc:859
++  case 176:
++#line 702 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 +}
- #line 1410 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1428 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 173:
- #line 691 "dhcp6_parser.yy" // lalr1.cc:859
++  case 177:
++#line 707 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("hold-reclaimed-time", value);
 +}
- #line 1419 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1437 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 174:
- #line 696 "dhcp6_parser.yy" // lalr1.cc:859
++  case 178:
++#line 712 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("max-reclaim-leases", value);
 +}
- #line 1428 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1446 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 175:
- #line 701 "dhcp6_parser.yy" // lalr1.cc:859
++  case 179:
++#line 717 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("max-reclaim-time", value);
 +}
- #line 1437 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1455 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 176:
- #line 706 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 167:
 -#line 676 "dhcp6_parser.yy" // lalr1.cc:859
++  case 180:
++#line 722 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 -    ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), value);
 +    ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
  }
- #line 1446 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1383 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1464 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 177:
- #line 714 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 168:
 -#line 684 "dhcp6_parser.yy" // lalr1.cc:859
++  case 181:
++#line 730 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("subnet6", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.SUBNET6);
  }
- #line 1457 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1394 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1475 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 178:
- #line 719 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 169:
 -#line 689 "dhcp6_parser.yy" // lalr1.cc:859
++  case 182:
++#line 735 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1466 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1403 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1484 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 183:
- #line 739 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 174:
 -#line 709 "dhcp6_parser.yy" // lalr1.cc:859
++  case 187:
++#line 755 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1476 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1413 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1494 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 184:
- #line 743 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 175:
 -#line 713 "dhcp6_parser.yy" // lalr1.cc:859
++  case 188:
++#line 759 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Once we reached this place, the subnet parsing is now complete.
      // If we want to, we can implement default values here.
      // }
      ctx.stack_.pop_back();
  }
- #line 1499 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1436 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1517 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 185:
- #line 762 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 176:
 -#line 732 "dhcp6_parser.yy" // lalr1.cc:859
++  case 189:
++#line 778 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the subnet6 list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1509 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1446 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1527 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 186:
- #line 766 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 177:
 -#line 736 "dhcp6_parser.yy" // lalr1.cc:859
++  case 190:
++#line 782 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1517 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1454 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1535 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 206:
- #line 795 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 197:
 -#line 765 "dhcp6_parser.yy" // lalr1.cc:859
++  case 210:
++#line 811 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1525 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1462 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1543 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 207:
- #line 797 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 198:
 -#line 767 "dhcp6_parser.yy" // lalr1.cc:859
++  case 211:
++#line 813 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("subnet", subnet);
      ctx.leave();
  }
- #line 1535 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1472 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1553 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 208:
- #line 803 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 199:
 -#line 773 "dhcp6_parser.yy" // lalr1.cc:859
++  case 212:
++#line 819 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1543 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1480 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1561 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 209:
- #line 805 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 200:
 -#line 775 "dhcp6_parser.yy" // lalr1.cc:859
++  case 213:
++#line 821 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interface", iface);
      ctx.leave();
  }
- #line 1553 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1490 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1571 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 210:
- #line 811 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 201:
 -#line 781 "dhcp6_parser.yy" // lalr1.cc:859
++  case 214:
++#line 827 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1561 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1498 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1579 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 211:
- #line 813 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 202:
 -#line 783 "dhcp6_parser.yy" // lalr1.cc:859
++  case 215:
++#line 829 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interface-id", iface);
      ctx.leave();
  }
- #line 1571 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1508 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1589 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 212:
- #line 819 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 203:
 -#line 789 "dhcp6_parser.yy" // lalr1.cc:859
++  case 216:
++#line 835 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.CLIENT_CLASS);
  }
- #line 1579 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1516 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1597 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 213:
- #line 821 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 204:
 -#line 791 "dhcp6_parser.yy" // lalr1.cc:859
++  case 217:
++#line 837 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-class", cls);
      ctx.leave();
  }
- #line 1589 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1526 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1607 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 214:
- #line 827 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 205:
 -#line 797 "dhcp6_parser.yy" // lalr1.cc:859
++  case 218:
++#line 843 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1597 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1534 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1615 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 215:
- #line 829 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 206:
 -#line 799 "dhcp6_parser.yy" // lalr1.cc:859
++  case 219:
++#line 845 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("reservation-mode", rm);
      ctx.leave();
  }
- #line 1607 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1544 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1625 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 216:
- #line 835 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 207:
 -#line 805 "dhcp6_parser.yy" // lalr1.cc:859
++  case 220:
++#line 851 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("id", id);
  }
- #line 1616 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1553 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1634 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 217:
- #line 840 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 208:
 -#line 810 "dhcp6_parser.yy" // lalr1.cc:859
++  case 221:
++#line 856 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("rapid-commit", rc);
  }
- #line 1625 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1562 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1643 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 218:
- #line 849 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 209:
 -#line 819 "dhcp6_parser.yy" // lalr1.cc:859
++  case 222:
++#line 865 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("option-def", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.OPTION_DEF);
  }
- #line 1636 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1573 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1654 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 219:
- #line 854 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 210:
 -#line 824 "dhcp6_parser.yy" // lalr1.cc:859
++  case 223:
++#line 870 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1645 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1582 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1663 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 224:
- #line 871 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 215:
 -#line 841 "dhcp6_parser.yy" // lalr1.cc:859
++  case 228:
++#line 887 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1655 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1592 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1673 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 225:
- #line 875 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 216:
 -#line 845 "dhcp6_parser.yy" // lalr1.cc:859
++  case 229:
++#line 891 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1663 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1600 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1681 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 226:
- #line 882 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 217:
 -#line 852 "dhcp6_parser.yy" // lalr1.cc:859
++  case 230:
++#line 898 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the option-def list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1673 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1610 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1691 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 227:
- #line 886 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 218:
 -#line 856 "dhcp6_parser.yy" // lalr1.cc:859
++  case 231:
++#line 902 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1681 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1618 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1699 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 241:
- #line 912 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 232:
 -#line 882 "dhcp6_parser.yy" // lalr1.cc:859
++  case 245:
++#line 928 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("code", code);
  }
- #line 1690 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1627 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1708 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 243:
- #line 919 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 235:
 -#line 891 "dhcp6_parser.yy" // lalr1.cc:859
++  case 247:
++#line 935 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1698 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1635 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1716 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 244:
- #line 921 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 236:
 -#line 893 "dhcp6_parser.yy" // lalr1.cc:859
++  case 248:
++#line 937 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("type", prf);
 +    ctx.leave();
 +}
- #line 1708 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1726 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 245:
- #line 927 "dhcp6_parser.yy" // lalr1.cc:859
++  case 249:
++#line 943 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 1716 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1734 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 246:
- #line 929 "dhcp6_parser.yy" // lalr1.cc:859
++  case 250:
++#line 945 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("record-types", rtypes);
      ctx.leave();
  }
- #line 1726 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1645 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1744 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 247:
- #line 935 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 237:
 -#line 899 "dhcp6_parser.yy" // lalr1.cc:859
++  case 251:
++#line 951 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1734 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1653 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1752 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 248:
- #line 937 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 238:
 -#line 901 "dhcp6_parser.yy" // lalr1.cc:859
++  case 252:
++#line 953 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("space", space);
      ctx.leave();
  }
- #line 1744 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1663 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1762 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 250:
- #line 945 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 240:
 -#line 909 "dhcp6_parser.yy" // lalr1.cc:859
++  case 254:
++#line 961 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1752 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1671 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1770 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 251:
- #line 947 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 241:
 -#line 911 "dhcp6_parser.yy" // lalr1.cc:859
++  case 255:
++#line 963 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("encapsulate", encap);
      ctx.leave();
  }
- #line 1762 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1681 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1780 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 252:
- #line 953 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 242:
 -#line 917 "dhcp6_parser.yy" // lalr1.cc:859
++  case 256:
++#line 969 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("array", array);
  }
- #line 1771 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1690 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1789 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 253:
- #line 962 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 243:
 -#line 926 "dhcp6_parser.yy" // lalr1.cc:859
++  case 257:
++#line 978 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("option-data", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.OPTION_DATA);
  }
- #line 1782 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1701 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1800 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 254:
- #line 967 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 244:
 -#line 931 "dhcp6_parser.yy" // lalr1.cc:859
++  case 258:
++#line 983 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1791 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1710 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1809 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 259:
- #line 986 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 249:
 -#line 950 "dhcp6_parser.yy" // lalr1.cc:859
++  case 263:
++#line 1002 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1801 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1720 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1819 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 260:
- #line 990 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 250:
 -#line 954 "dhcp6_parser.yy" // lalr1.cc:859
++  case 264:
++#line 1006 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1809 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1728 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1827 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 261:
- #line 997 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 251:
 -#line 961 "dhcp6_parser.yy" // lalr1.cc:859
++  case 265:
++#line 1013 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the option-data list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1819 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1738 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1837 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 262:
- #line 1001 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 252:
 -#line 965 "dhcp6_parser.yy" // lalr1.cc:859
++  case 266:
++#line 1017 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1827 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1845 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 274:
- #line 1030 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 264:
 -#line 994 "dhcp6_parser.yy" // lalr1.cc:859
++  case 278:
++#line 1046 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1835 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1754 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1853 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 275:
- #line 1032 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 265:
 -#line 996 "dhcp6_parser.yy" // lalr1.cc:859
++  case 279:
++#line 1048 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("data", data);
      ctx.leave();
  }
- #line 1845 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1764 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1863 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 278:
- #line 1042 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 268:
 -#line 1006 "dhcp6_parser.yy" // lalr1.cc:859
++  case 282:
++#line 1058 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("csv-format", space);
  }
- #line 1854 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1872 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 279:
- #line 1050 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 269:
 -#line 1014 "dhcp6_parser.yy" // lalr1.cc:859
++  case 283:
++#line 1066 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("pools", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.POOLS);
  }
- #line 1865 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1784 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1883 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 280:
- #line 1055 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 270:
 -#line 1019 "dhcp6_parser.yy" // lalr1.cc:859
++  case 284:
++#line 1071 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1874 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1793 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1892 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 285:
- #line 1070 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 275:
 -#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
++  case 289:
++#line 1086 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1884 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1803 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1902 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 286:
- #line 1074 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 276:
 -#line 1038 "dhcp6_parser.yy" // lalr1.cc:859
++  case 290:
++#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1892 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1910 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 287:
- #line 1078 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 277:
 -#line 1042 "dhcp6_parser.yy" // lalr1.cc:859
++  case 291:
++#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the pool list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1902 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1920 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 288:
- #line 1082 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 278:
 -#line 1046 "dhcp6_parser.yy" // lalr1.cc:859
++  case 292:
++#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1910 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1829 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1928 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 294:
- #line 1095 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 284:
 -#line 1059 "dhcp6_parser.yy" // lalr1.cc:859
++  case 298:
++#line 1111 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1918 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1837 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1936 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 295:
- #line 1097 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 285:
 -#line 1061 "dhcp6_parser.yy" // lalr1.cc:859
++  case 299:
++#line 1113 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("pool", pool);
      ctx.leave();
  }
- #line 1928 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1847 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1946 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 296:
- #line 1106 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 286:
 -#line 1070 "dhcp6_parser.yy" // lalr1.cc:859
++  case 300:
++#line 1122 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("pd-pools", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.PD_POOLS);
  }
- #line 1939 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1858 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 297:
- #line 1111 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 287:
 -#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
++  case 301:
++#line 1127 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1948 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1867 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1966 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 302:
- #line 1126 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 292:
 -#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
++  case 306:
++#line 1142 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 1958 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1877 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1976 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 303:
- #line 1130 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 293:
 -#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
++  case 307:
++#line 1146 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1966 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1885 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1984 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 304:
- #line 1134 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 294:
 -#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
++  case 308:
++#line 1150 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the pd-pool list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 1976 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1895 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1994 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 305:
- #line 1138 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 295:
 -#line 1102 "dhcp6_parser.yy" // lalr1.cc:859
++  case 309:
++#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1984 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1903 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2002 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 315:
- #line 1155 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 305:
 -#line 1119 "dhcp6_parser.yy" // lalr1.cc:859
++  case 319:
++#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1992 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1911 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2010 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 316:
- #line 1157 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 306:
 -#line 1121 "dhcp6_parser.yy" // lalr1.cc:859
++  case 320:
++#line 1173 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("prefix", prf);
      ctx.leave();
  }
- #line 2002 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1921 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2020 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 317:
- #line 1163 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 307:
 -#line 1127 "dhcp6_parser.yy" // lalr1.cc:859
++  case 321:
++#line 1179 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("prefix-len", prf);
  }
- #line 2011 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1930 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2029 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 318:
- #line 1168 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 308:
 -#line 1132 "dhcp6_parser.yy" // lalr1.cc:859
++  case 322:
++#line 1184 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2019 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1938 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2037 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 319:
- #line 1170 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 309:
 -#line 1134 "dhcp6_parser.yy" // lalr1.cc:859
++  case 323:
++#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("excluded-prefix", prf);
      ctx.leave();
  }
- #line 2029 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2047 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 320:
- #line 1176 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 310:
 -#line 1140 "dhcp6_parser.yy" // lalr1.cc:859
++  case 324:
++#line 1192 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("excluded-prefix-len", prf);
  }
- #line 2038 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2056 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 321:
- #line 1181 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 311:
 -#line 1145 "dhcp6_parser.yy" // lalr1.cc:859
++  case 325:
++#line 1197 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("delegated-len", deleg);
  }
- #line 2047 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1966 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2065 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 322:
- #line 1189 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 312:
 -#line 1153 "dhcp6_parser.yy" // lalr1.cc:859
++  case 326:
++#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("reservations", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.RESERVATIONS);
  }
- #line 2058 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1977 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2076 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 323:
- #line 1194 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 313:
 -#line 1158 "dhcp6_parser.yy" // lalr1.cc:859
++  case 327:
++#line 1210 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2067 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1986 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2085 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 328:
- #line 1207 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 318:
 -#line 1171 "dhcp6_parser.yy" // lalr1.cc:859
++  case 332:
++#line 1223 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 2077 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1996 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2095 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 329:
- #line 1211 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 319:
 -#line 1175 "dhcp6_parser.yy" // lalr1.cc:859
++  case 333:
++#line 1227 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2085 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2004 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2103 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 330:
- #line 1215 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 320:
 -#line 1179 "dhcp6_parser.yy" // lalr1.cc:859
++  case 334:
++#line 1231 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the reservations list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(m);
  }
- #line 2095 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2014 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2113 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 331:
- #line 1219 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 321:
 -#line 1183 "dhcp6_parser.yy" // lalr1.cc:859
++  case 335:
++#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 2103 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2022 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2121 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 344:
- #line 1242 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 334:
 -#line 1206 "dhcp6_parser.yy" // lalr1.cc:859
++  case 348:
++#line 1258 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("ip-addresses", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2114 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2033 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2132 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 345:
- #line 1247 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 335:
 -#line 1211 "dhcp6_parser.yy" // lalr1.cc:859
++  case 349:
++#line 1263 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2123 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2042 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2141 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 346:
- #line 1252 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 336:
 -#line 1216 "dhcp6_parser.yy" // lalr1.cc:859
++  case 350:
++#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("prefixes", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2134 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2053 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2152 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 347:
- #line 1257 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 337:
 -#line 1221 "dhcp6_parser.yy" // lalr1.cc:859
++  case 351:
++#line 1273 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2143 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2062 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2161 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 348:
- #line 1262 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 338:
 -#line 1226 "dhcp6_parser.yy" // lalr1.cc:859
++  case 352:
++#line 1278 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2151 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2070 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2169 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 349:
- #line 1264 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 339:
 -#line 1228 "dhcp6_parser.yy" // lalr1.cc:859
++  case 353:
++#line 1280 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("duid", d);
      ctx.leave();
  }
- #line 2161 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2080 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2179 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 350:
- #line 1270 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 340:
 -#line 1234 "dhcp6_parser.yy" // lalr1.cc:859
++  case 354:
++#line 1286 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2169 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2088 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2187 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 351:
- #line 1272 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 341:
 -#line 1236 "dhcp6_parser.yy" // lalr1.cc:859
++  case 355:
++#line 1288 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hw-address", hw);
      ctx.leave();
  }
- #line 2179 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2098 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2197 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 352:
- #line 1278 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 342:
 -#line 1242 "dhcp6_parser.yy" // lalr1.cc:859
++  case 356:
++#line 1294 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2187 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2106 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2205 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 353:
- #line 1280 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 343:
 -#line 1244 "dhcp6_parser.yy" // lalr1.cc:859
++  case 357:
++#line 1296 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hostname", host);
      ctx.leave();
  }
- #line 2197 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2116 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2215 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 354:
- #line 1286 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 344:
 -#line 1250 "dhcp6_parser.yy" // lalr1.cc:859
++  case 358:
++#line 1302 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-classes", c);
      ctx.stack_.push_back(c);
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2208 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2127 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2226 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 355:
- #line 1291 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 345:
 -#line 1255 "dhcp6_parser.yy" // lalr1.cc:859
++  case 359:
++#line 1307 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2217 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2136 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2235 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 356:
- #line 1299 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 346:
 -#line 1263 "dhcp6_parser.yy" // lalr1.cc:859
++  case 360:
++#line 1315 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("relay", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.RELAY);
  }
- #line 2228 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2147 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2246 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 357:
- #line 1304 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 347:
 -#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
++  case 361:
++#line 1320 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2237 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2156 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2255 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 358:
- #line 1309 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 348:
 -#line 1273 "dhcp6_parser.yy" // lalr1.cc:859
++  case 362:
++#line 1325 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2245 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2164 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2263 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 359:
- #line 1311 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 349:
 -#line 1275 "dhcp6_parser.yy" // lalr1.cc:859
++  case 363:
++#line 1327 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("ip-address", ip);
      ctx.leave();
  }
- #line 2255 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2174 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2273 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 360:
- #line 1320 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 350:
 -#line 1284 "dhcp6_parser.yy" // lalr1.cc:859
++  case 364:
++#line 1336 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("client-classes", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.CLIENT_CLASSES);
  }
- #line 2266 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2185 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2284 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 361:
- #line 1325 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 351:
 -#line 1289 "dhcp6_parser.yy" // lalr1.cc:859
++  case 365:
++#line 1341 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2275 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2293 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 364:
- #line 1334 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 354:
 -#line 1298 "dhcp6_parser.yy" // lalr1.cc:859
++  case 368:
++#line 1350 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 2285 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2204 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2303 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 365:
- #line 1338 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 355:
 -#line 1302 "dhcp6_parser.yy" // lalr1.cc:859
++  case 369:
++#line 1354 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2293 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2212 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2311 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 375:
- #line 1358 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 365:
 -#line 1322 "dhcp6_parser.yy" // lalr1.cc:859
++  case 379:
++#line 1374 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2301 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2220 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2319 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 376:
- #line 1360 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 366:
 -#line 1324 "dhcp6_parser.yy" // lalr1.cc:859
++  case 380:
++#line 1376 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("test", test);
      ctx.leave();
  }
- #line 2311 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2329 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 377:
- #line 1369 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 367:
 -#line 1333 "dhcp6_parser.yy" // lalr1.cc:859
++  case 381:
++#line 1385 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("server-id", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.SERVER_ID);
  }
- #line 2322 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2241 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2340 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 378:
- #line 1374 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 368:
 -#line 1338 "dhcp6_parser.yy" // lalr1.cc:859
++  case 382:
++#line 1390 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2331 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2250 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2349 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 388:
- #line 1392 "dhcp6_parser.yy" // lalr1.cc:859
++  case 392:
++#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.DUID_TYPE);
 +}
- #line 2339 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2357 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 389:
- #line 1394 "dhcp6_parser.yy" // lalr1.cc:859
++  case 393:
++#line 1410 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
 +    ctx.leave();
 +}
- #line 2348 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2366 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 390:
- #line 1399 "dhcp6_parser.yy" // lalr1.cc:859
++  case 394:
++#line 1415 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
- #line 2354 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2372 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 391:
- #line 1400 "dhcp6_parser.yy" // lalr1.cc:859
++  case 395:
++#line 1416 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
- #line 2360 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2378 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 392:
- #line 1401 "dhcp6_parser.yy" // lalr1.cc:859
++  case 396:
++#line 1417 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
- #line 2366 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2384 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 393:
- #line 1404 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 378:
 -#line 1356 "dhcp6_parser.yy" // lalr1.cc:859
++  case 397:
++#line 1420 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("htype", htype);
  }
- #line 2375 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2259 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2393 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 394:
- #line 1409 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 379:
 -#line 1361 "dhcp6_parser.yy" // lalr1.cc:859
++  case 398:
++#line 1425 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2383 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2267 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2401 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 395:
- #line 1411 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 380:
 -#line 1363 "dhcp6_parser.yy" // lalr1.cc:859
++  case 399:
++#line 1427 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("identifier", id);
      ctx.leave();
  }
- #line 2393 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2277 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2411 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 396:
- #line 1417 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 381:
 -#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
++  case 400:
++#line 1433 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("time", time);
  }
- #line 2402 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2286 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2420 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 397:
- #line 1422 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 382:
 -#line 1374 "dhcp6_parser.yy" // lalr1.cc:859
++  case 401:
++#line 1438 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("enterprise-id", time);
  }
- #line 2411 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2295 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2429 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 398:
- #line 1429 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 383:
 -#line 1381 "dhcp6_parser.yy" // lalr1.cc:859
++  case 402:
++#line 1445 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("dhcp4o6-port", time);
  }
- #line 2420 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2304 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 399:
- #line 1436 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 384:
 -#line 1388 "dhcp6_parser.yy" // lalr1.cc:859
++  case 403:
++#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("control-socket", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.CONTROL_SOCKET);
  }
- #line 2431 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2315 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2449 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 400:
- #line 1441 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 385:
 -#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
++  case 404:
++#line 1457 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2440 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2324 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2458 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 405:
- #line 1454 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 390:
 -#line 1406 "dhcp6_parser.yy" // lalr1.cc:859
++  case 409:
++#line 1470 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2448 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2332 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2466 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 406:
- #line 1456 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 391:
 -#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
++  case 410:
++#line 1472 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("socket-type", stype);
      ctx.leave();
  }
- #line 2458 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2342 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2476 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 407:
- #line 1462 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 392:
 -#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
++  case 411:
++#line 1478 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2466 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2350 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2484 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 408:
- #line 1464 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 393:
 -#line 1416 "dhcp6_parser.yy" // lalr1.cc:859
++  case 412:
++#line 1480 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("socket-name", name);
      ctx.leave();
  }
- #line 2476 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2360 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2494 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 409:
- #line 1472 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 394:
 -#line 1424 "dhcp6_parser.yy" // lalr1.cc:859
++  case 413:
++#line 1488 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("dhcp-ddns", m);
      ctx.stack_.push_back(m);
 -    ctx.enter(ctx.NO_KEYWORD);
 +    ctx.enter(ctx.DHCP_DDNS);
  }
- #line 2487 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2371 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2505 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 410:
- #line 1477 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 395:
 -#line 1429 "dhcp6_parser.yy" // lalr1.cc:859
++  case 414:
++#line 1493 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2496 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2380 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2514 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 411:
- #line 1482 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 396:
 -#line 1436 "dhcp6_parser.yy" // lalr1.cc:859
++  case 415:
++#line 1498 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    // Parse the dhcp-ddns map
 +    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.push_back(m);
 +}
- #line 2506 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2524 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 412:
- #line 1486 "dhcp6_parser.yy" // lalr1.cc:859
++  case 416:
++#line 1502 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    // parsing completed
 +}
- #line 2514 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 431:
- #line 1512 "dhcp6_parser.yy" // lalr1.cc:859
++  case 435:
++#line 1528 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("enable-updates", b);
 +}
- #line 2523 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 432:
- #line 1517 "dhcp6_parser.yy" // lalr1.cc:859
++  case 436:
++#line 1533 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2531 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2388 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 433:
- #line 1519 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 397:
 -#line 1438 "dhcp6_parser.yy" // lalr1.cc:859
++  case 437:
++#line 1535 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("qualifying-suffix", s);
 +    ctx.leave();
 +}
- #line 2541 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 434:
- #line 1525 "dhcp6_parser.yy" // lalr1.cc:859
++  case 438:
++#line 1541 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2549 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2567 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 435:
- #line 1527 "dhcp6_parser.yy" // lalr1.cc:859
++  case 439:
++#line 1543 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("server-ip", s);
 +    ctx.leave();
 +}
- #line 2559 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2577 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 436:
- #line 1533 "dhcp6_parser.yy" // lalr1.cc:859
++  case 440:
++#line 1549 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("server-port", i);
 +}
- #line 2568 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2586 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 437:
- #line 1538 "dhcp6_parser.yy" // lalr1.cc:859
++  case 441:
++#line 1554 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2576 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2594 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 438:
- #line 1540 "dhcp6_parser.yy" // lalr1.cc:859
++  case 442:
++#line 1556 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("sender-ip", s);
 +    ctx.leave();
 +}
- #line 2586 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2604 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 439:
- #line 1546 "dhcp6_parser.yy" // lalr1.cc:859
++  case 443:
++#line 1562 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("sender-port", i);
 +}
- #line 2595 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2613 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 440:
- #line 1551 "dhcp6_parser.yy" // lalr1.cc:859
++  case 444:
++#line 1567 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("max-queue-size", i);
 +}
- #line 2604 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2622 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 441:
- #line 1556 "dhcp6_parser.yy" // lalr1.cc:859
++  case 445:
++#line 1572 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NCR_PROTOCOL);
 +}
- #line 2612 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2630 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 442:
- #line 1558 "dhcp6_parser.yy" // lalr1.cc:859
++  case 446:
++#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
 +    ctx.leave();
 +}
- #line 2621 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2639 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 443:
- #line 1564 "dhcp6_parser.yy" // lalr1.cc:859
++  case 447:
++#line 1580 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
- #line 2627 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2645 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 444:
- #line 1565 "dhcp6_parser.yy" // lalr1.cc:859
++  case 448:
++#line 1581 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
- #line 2633 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2651 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 445:
- #line 1568 "dhcp6_parser.yy" // lalr1.cc:859
++  case 449:
++#line 1584 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NCR_FORMAT);
 +}
- #line 2641 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2659 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 446:
- #line 1570 "dhcp6_parser.yy" // lalr1.cc:859
++  case 450:
++#line 1586 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("ncr-format", json);
 +    ctx.leave();
 +}
- #line 2651 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2669 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 447:
- #line 1576 "dhcp6_parser.yy" // lalr1.cc:859
++  case 451:
++#line 1592 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("always-include-fqdn", b);
 +}
- #line 2660 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2678 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 448:
- #line 1581 "dhcp6_parser.yy" // lalr1.cc:859
++  case 452:
++#line 1597 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("allow-client-update",  b);
 +}
- #line 2669 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2687 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 449:
- #line 1586 "dhcp6_parser.yy" // lalr1.cc:859
++  case 453:
++#line 1602 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("override-no-update", b);
 +}
- #line 2678 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2696 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 450:
- #line 1591 "dhcp6_parser.yy" // lalr1.cc:859
++  case 454:
++#line 1607 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("override-client-update", b);
 +}
- #line 2687 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2705 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 451:
- #line 1596 "dhcp6_parser.yy" // lalr1.cc:859
++  case 455:
++#line 1612 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.REPLACE_CLIENT_NAME);
 +}
- #line 2695 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2713 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 452:
- #line 1598 "dhcp6_parser.yy" // lalr1.cc:859
++  case 456:
++#line 1614 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
 +    ctx.leave();
 +}
- #line 2704 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2722 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 453:
- #line 1604 "dhcp6_parser.yy" // lalr1.cc:859
++  case 457:
++#line 1620 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
 +      }
- #line 2712 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2730 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 454:
- #line 1607 "dhcp6_parser.yy" // lalr1.cc:859
++  case 458:
++#line 1623 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
 +      }
- #line 2720 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2738 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 455:
- #line 1610 "dhcp6_parser.yy" // lalr1.cc:859
++  case 459:
++#line 1626 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
 +      }
- #line 2728 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2746 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 456:
- #line 1613 "dhcp6_parser.yy" // lalr1.cc:859
++  case 460:
++#line 1629 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +      yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
 +      }
- #line 2736 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2754 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 457:
- #line 1616 "dhcp6_parser.yy" // lalr1.cc:859
++  case 461:
++#line 1632 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +      error(yystack_[0].location, "boolean values for the replace-client-name are "
 +                "no longer supported");
 +      }
- #line 2745 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2763 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 458:
- #line 1622 "dhcp6_parser.yy" // lalr1.cc:859
++  case 462:
++#line 1638 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2753 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2771 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 459:
- #line 1624 "dhcp6_parser.yy" // lalr1.cc:859
++  case 463:
++#line 1640 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
 +    ctx.stack_.back()->set("generated-prefix", s);
 +    ctx.leave();
 +}
- #line 2763 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2781 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 460:
- #line 1632 "dhcp6_parser.yy" // lalr1.cc:859
++  case 464:
++#line 1648 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 2771 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2789 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 461:
- #line 1634 "dhcp6_parser.yy" // lalr1.cc:859
++  case 465:
++#line 1650 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2780 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2397 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2798 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 462:
- #line 1639 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 398:
 -#line 1443 "dhcp6_parser.yy" // lalr1.cc:859
++  case 466:
++#line 1655 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2788 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2405 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2806 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 463:
- #line 1641 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 399:
 -#line 1445 "dhcp6_parser.yy" // lalr1.cc:859
++  case 467:
++#line 1657 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2797 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2414 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2815 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 464:
- #line 1651 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 400:
 -#line 1455 "dhcp6_parser.yy" // lalr1.cc:859
++  case 468:
++#line 1667 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("Logging", m);
      ctx.stack_.push_back(m);
      ctx.enter(ctx.LOGGING);
  }
- #line 2808 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2425 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2826 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 465:
- #line 1656 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 401:
 -#line 1460 "dhcp6_parser.yy" // lalr1.cc:859
++  case 469:
++#line 1672 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2817 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2434 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2835 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 469:
- #line 1673 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 405:
 -#line 1477 "dhcp6_parser.yy" // lalr1.cc:859
++  case 473:
++#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("loggers", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.LOGGERS);
  }
- #line 2828 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2445 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2846 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 470:
- #line 1678 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 406:
 -#line 1482 "dhcp6_parser.yy" // lalr1.cc:859
++  case 474:
++#line 1694 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2837 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2454 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2855 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 473:
- #line 1690 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 409:
 -#line 1494 "dhcp6_parser.yy" // lalr1.cc:859
++  case 477:
++#line 1706 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(l);
      ctx.stack_.push_back(l);
  }
- #line 2847 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2464 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2865 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 474:
- #line 1694 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 410:
 -#line 1498 "dhcp6_parser.yy" // lalr1.cc:859
++  case 478:
++#line 1710 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2855 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2472 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2873 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 482:
- #line 1709 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 418:
 -#line 1513 "dhcp6_parser.yy" // lalr1.cc:859
++  case 486:
++#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("debuglevel", dl);
  }
- #line 2864 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2481 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2882 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 483:
- #line 1713 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 419:
 -#line 1517 "dhcp6_parser.yy" // lalr1.cc:859
++  case 487:
++#line 1729 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2872 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2489 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2890 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 484:
- #line 1715 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 420:
 -#line 1519 "dhcp6_parser.yy" // lalr1.cc:859
++  case 488:
++#line 1731 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("severity", sev);
      ctx.leave();
  }
- #line 2882 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2499 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2900 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 485:
- #line 1721 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 421:
 -#line 1525 "dhcp6_parser.yy" // lalr1.cc:859
++  case 489:
++#line 1737 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("output_options", l);
      ctx.stack_.push_back(l);
      ctx.enter(ctx.OUTPUT_OPTIONS);
  }
- #line 2893 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2510 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2911 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 486:
- #line 1726 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 422:
 -#line 1530 "dhcp6_parser.yy" // lalr1.cc:859
++  case 490:
++#line 1742 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2902 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2519 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2920 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 489:
- #line 1735 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 425:
 -#line 1539 "dhcp6_parser.yy" // lalr1.cc:859
++  case 493:
++#line 1751 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 2912 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2529 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2930 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 490:
- #line 1739 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 426:
 -#line 1543 "dhcp6_parser.yy" // lalr1.cc:859
++  case 494:
++#line 1755 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2920 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2537 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2938 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 493:
- #line 1747 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 429:
 -#line 1551 "dhcp6_parser.yy" // lalr1.cc:859
++  case 497:
++#line 1763 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2928 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2545 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2946 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 494:
- #line 1749 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 430:
 -#line 1553 "dhcp6_parser.yy" // lalr1.cc:859
++  case 498:
++#line 1765 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("output", sev);
      ctx.leave();
  }
- #line 2938 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2555 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2956 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
  
- #line 2942 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2960 "dhcp6_parser.cc" // lalr1.cc:859
              default:
                break;
              }
    }
  
  
-   const short int Dhcp6Parser::yypact_ninf_ = -498;
 -  const short int Dhcp6Parser::yypact_ninf_ = -427;
++  const short int Dhcp6Parser::yypact_ninf_ = -497;
  
    const signed char Dhcp6Parser::yytable_ninf_ = -1;
  
    const short int
    Dhcp6Parser::yypact_[] =
    {
-      111,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,    32,    21,    41,    46,    59,    75,    85,
-       93,   143,   163,   170,   171,   194,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-       21,   -92,    12,    80,   187,    11,    38,    45,   112,    48,
-       65,     5,    91,  -498,   142,   223,   240,   219,   269,  -498,
-     -498,  -498,  -498,   271,  -498,    62,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,   273,   276,   277,   278,   279,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   280,
-     -498,  -498,  -498,   137,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,   265,  -498,  -498,
-     -498,  -498,  -498,  -498,   287,   288,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,   192,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,   209,  -498,  -498,  -498,   290,  -498,   295,   297,
-     -498,  -498,   210,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,   294,   300,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   301,  -498,
-     -498,  -498,   302,  -498,  -498,   296,   305,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   306,  -498,
-     -498,  -498,  -498,   303,   309,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,   211,  -498,  -498,  -498,   310,  -498,
-     -498,   311,  -498,   312,   313,  -498,  -498,   314,   315,   317,
-      318,  -498,  -498,  -498,   212,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,    21,    21,  -498,   182,   319,   320,   321,   322,
-     -498,    12,  -498,   323,   324,   325,   198,   199,   200,   201,
-      202,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-      340,   214,   341,   343,    80,  -498,   344,  -498,     8,   345,
-      346,   347,   348,   349,   222,   221,   352,   353,   354,   355,
-       11,  -498,   356,    38,  -498,   357,   230,   359,   232,   233,
-       45,  -498,   362,   363,   364,   365,   366,   367,  -498,   112,
-      368,   369,   244,   370,   371,   373,   246,  -498,    48,   374,
-      247,  -498,    65,   375,   378,    53,  -498,   250,   379,   381,
-      254,   383,   256,   257,   386,   387,   260,   261,   263,   264,
-      388,   389,    91,  -498,  -498,  -498,   392,   393,   394,    21,
-       21,  -498,   395,   396,   399,  -498,  -498,  -498,  -498,  -498,
-      402,   403,   404,   405,   406,   407,   408,   409,   410,   413,
-     -498,   414,   415,  -498,   406,  -498,  -498,  -498,  -498,   391,
-      412,  -498,  -498,  -498,   411,   418,   293,   298,   299,  -498,
-     -498,   304,   307,   422,   421,  -498,   316,  -498,   326,  -498,
-      327,  -498,  -498,  -498,   406,   406,   406,   328,   329,   330,
-     -498,   342,   350,  -498,   351,   358,   360,  -498,  -498,   361,
-     -498,  -498,   372,    21,  -498,  -498,   376,   377,  -498,   380,
-     -498,  -498,    33,   382,  -498,  -498,  -498,  -498,    17,   384,
-     -498,    21,    80,   385,  -498,  -498,   187,    26,    26,   424,
-      425,   426,   -30,  -498,  -498,   136,    14,   427,   135,    35,
-      138,    91,  -498,   436,  -498,     8,   434,   435,  -498,  -498,
-     -498,  -498,  -498,   437,   390,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,   213,  -498,   220,
-     -498,  -498,   438,  -498,  -498,  -498,  -498,   441,   444,   445,
-     -498,   239,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,   242,  -498,   446,   447,  -498,  -498,   448,   450,  -498,
-     -498,   456,   453,  -498,  -498,  -498,    49,  -498,  -498,  -498,
-       21,  -498,  -498,    73,  -498,  -498,  -498,   108,  -498,   457,
-      461,  -498,   462,   463,   464,   465,   466,   467,   243,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,   468,   470,
-      471,  -498,  -498,   245,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,   249,  -498,  -498,  -498,   251,   397,  -498,  -498,
-      459,   473,  -498,  -498,   474,   476,  -498,  -498,   477,   481,
-     -498,  -498,   469,  -498,   482,   385,  -498,  -498,   483,   486,
-      489,   490,   398,   401,   400,    26,  -498,  -498,    11,  -498,
-      424,    48,  -498,   425,    65,  -498,   426,   -30,  -498,   479,
-      136,  -498,    14,  -498,     5,  -498,   427,   416,   417,   419,
-      420,   423,   428,   135,  -498,   491,   494,   429,   430,   431,
-       35,  -498,   495,   496,   138,  -498,  -498,  -498,    38,  -498,
-      434,    45,  -498,   435,   112,  -498,   437,   497,  -498,   499,
-     -498,   433,   439,   440,   442,  -498,  -498,  -498,  -498,   252,
-     -498,   498,  -498,   501,  -498,  -498,  -498,  -498,  -498,   255,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    81,   443,
-     -498,  -498,  -498,  -498,   449,   451,  -498,   258,  -498,   259,
-     -498,   502,  -498,   452,   505,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,   116,  -498,    -3,   505,  -498,
-     -498,   509,  -498,  -498,  -498,   262,  -498,  -498,  -498,  -498,
-     -498,   510,   454,   512,    -3,  -498,   500,  -498,   458,  -498,
-      511,  -498,  -498,   141,  -498,   432,   511,  -498,  -498,   266,
-     -498,  -498,   513,   432,  -498,   460,  -498,  -498
 -     184,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,    49,    19,    46,    52,    60,    77,    87,    93,
 -      95,    99,   108,   110,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,    19,    24,    17,    85,
 -     123,    23,    25,   145,   107,    53,     6,   -33,  -427,   119,
 -     141,   142,   149,   160,  -427,  -427,  -427,  -427,   161,  -427,
 -      47,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   187,
 -     188,   189,   203,   228,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,   232,  -427,  -427,  -427,    48,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,   193,  -427,  -427,  -427,  -427,  -427,  -427,   233,
 -     235,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -      54,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,    57,  -427,  -427,
 -    -427,   236,  -427,   237,   238,  -427,  -427,   150,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,   239,   240,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,   244,  -427,  -427,  -427,   247,  -427,  -427,
 -    -427,   251,   252,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,   256,  -427,  -427,  -427,  -427,   253,
 -     259,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -     173,  -427,  -427,  -427,  -427,    19,    19,  -427,   165,   262,
 -     264,   279,   280,  -427,    17,  -427,   281,   282,   283,   190,
 -     192,   194,   195,   196,   284,   285,   287,   289,   293,   294,
 -     295,   296,   297,   298,   204,   299,   301,    85,  -427,   302,
 -    -427,     2,   303,   304,   305,   306,   307,   213,   215,   308,
 -     310,   311,   312,    23,  -427,   314,    25,  -427,   315,   220,
 -     317,   222,   223,   145,  -427,   320,   321,   322,   323,   324,
 -     325,  -427,   107,   326,   327,   234,   328,   329,   331,   241,
 -    -427,    53,   332,   242,  -427,     6,   333,   334,     9,  -427,
 -    -427,  -427,   335,   338,   339,    19,    19,  -427,   342,   343,
 -     344,  -427,  -427,  -427,  -427,  -427,   336,   337,   347,   348,
 -     349,   350,   351,   352,   356,   357,  -427,   358,   359,  -427,
 -     353,  -427,  -427,  -427,  -427,   360,   364,  -427,  -427,  -427,
 -     366,   367,   270,   274,   275,  -427,  -427,   276,   277,   373,
 -     374,  -427,   286,  -427,   288,  -427,   290,  -427,  -427,  -427,
 -     353,   353,   353,   291,   292,   300,  -427,   309,   313,  -427,
 -     316,   318,   319,  -427,  -427,   330,  -427,  -427,   340,    19,
 -    -427,    19,    85,   341,  -427,  -427,   123,   111,   111,   375,
 -     376,   377,   -17,    19,    31,    22,   379,   345,    76,    56,
 -      24,  -427,  -427,   388,  -427,     2,   386,   387,  -427,  -427,
 -    -427,  -427,  -427,   389,   346,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,   174,  -427,   175,  -427,  -427,   372,  -427,
 -    -427,  -427,   391,   393,   394,  -427,   177,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,   191,  -427,   395,   397,
 -    -427,  -427,   396,   400,  -427,  -427,   398,   402,  -427,  -427,
 -    -427,    72,  -427,  -427,  -427,   401,  -427,  -427,   139,  -427,
 -    -427,  -427,   153,  -427,   403,   407,  -427,   409,   197,  -427,
 -    -427,   410,   412,   415,  -427,  -427,  -427,   200,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,   201,  -427,  -427,  -427,   208,
 -     354,   355,  -427,  -427,   414,   421,  -427,  -427,   419,   423,
 -    -427,  -427,   422,   424,  -427,  -427,   425,  -427,   426,   341,
 -    -427,  -427,   427,   428,   430,   361,   362,   363,   111,  -427,
 -    -427,    23,  -427,   375,    53,  -427,   376,     6,  -427,   377,
 -     -17,  -427,  -427,    31,  -427,    22,  -427,   -33,  -427,   379,
 -     368,   345,  -427,   431,   369,   370,   371,    76,  -427,   432,
 -     433,    56,  -427,  -427,  -427,   434,   435,  -427,    25,  -427,
 -     386,   145,  -427,   387,   107,  -427,   389,   437,  -427,   438,
 -    -427,   365,   378,   380,  -427,  -427,  -427,  -427,   210,  -427,
 -     439,  -427,   440,  -427,  -427,  -427,  -427,   211,  -427,  -427,
 -    -427,   381,  -427,  -427,  -427,  -427,   382,   383,  -427,  -427,
 -     384,   212,  -427,   214,  -427,   441,  -427,   385,   399,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,   224,  -427,   113,   399,  -427,
 -    -427,   442,  -427,  -427,  -427,   218,  -427,  -427,  -427,  -427,
 -    -427,   446,   390,   447,   113,  -427,   450,  -427,   392,  -427,
 -     445,  -427,  -427,   225,  -427,   257,   445,  -427,  -427,   221,
 -    -427,  -427,   452,   257,  -427,   404,  -427,  -427
++      91,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,    37,    19,    50,    70,    80,    89,    92,
++     101,   149,   189,   241,   246,   254,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++      19,   -83,    17,    78,    43,    18,     7,     9,    59,    48,
++      93,     6,   141,  -497,    88,   263,   245,   261,   267,  -497,
++    -497,  -497,  -497,   269,  -497,    87,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,   270,   271,   272,   273,   276,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,   277,
++    -497,  -497,  -497,    90,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,   284,  -497,  -497,
++    -497,  -497,  -497,  -497,   280,   290,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,   133,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,   156,  -497,  -497,  -497,   291,  -497,   293,   295,
++    -497,  -497,   157,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,   294,   298,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,   301,  -497,
++    -497,  -497,   302,  -497,  -497,   299,   305,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,   306,  -497,
++    -497,  -497,  -497,   303,   309,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,   166,  -497,  -497,  -497,   310,  -497,
++    -497,   311,  -497,   312,   313,  -497,  -497,   314,   315,   317,
++     318,  -497,  -497,  -497,   167,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,    19,    19,  -497,   178,   319,   320,   321,   322,
++    -497,    17,  -497,   323,   324,   325,   181,   198,   199,   200,
++     201,   330,   331,   332,   333,   334,   335,   336,   337,   338,
++     339,   212,   341,   342,    78,  -497,   343,  -497,    41,   344,
++     345,   346,   347,   348,   221,   222,   350,   351,   353,   354,
++      18,  -497,   355,     7,  -497,   356,   229,   358,   231,   232,
++       9,  -497,   361,   362,   363,   364,   365,   366,  -497,    59,
++     367,   368,   247,   369,   370,   371,   248,  -497,    48,   372,
++     249,  -497,    93,   373,   374,   100,  -497,   250,   376,   377,
++     253,   382,   255,   257,   384,   386,   258,   259,   260,   262,
++     387,   391,   141,  -497,  -497,  -497,   395,   393,   394,    19,
++      19,  -497,   396,   397,   398,  -497,  -497,  -497,  -497,  -497,
++     401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
++    -497,   411,   412,  -497,   415,  -497,  -497,  -497,  -497,   413,
++     399,  -497,  -497,  -497,   417,   418,   283,   296,   297,  -497,
++    -497,   300,   304,   419,   425,  -497,   308,  -497,   326,  -497,
++     327,  -497,  -497,  -497,   415,   415,   415,   328,   329,   349,
++    -497,   352,   357,  -497,   359,   360,   375,  -497,  -497,   378,
++    -497,  -497,   379,    19,  -497,  -497,   380,   381,  -497,   383,
++    -497,  -497,    73,   340,  -497,  -497,  -497,  -497,   -48,   385,
++    -497,    19,    78,   388,  -497,  -497,    43,    14,    14,   426,
++     427,   430,   -22,    19,   146,    72,   433,   110,    30,   139,
++     141,  -497,  -497,   437,  -497,    41,   435,   438,  -497,  -497,
++    -497,  -497,  -497,   441,   390,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,   168,  -497,   183,
++    -497,  -497,   436,  -497,  -497,  -497,  -497,   445,   446,   447,
++    -497,   184,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,   185,  -497,   450,   449,  -497,  -497,   455,   459,  -497,
++    -497,   457,   461,  -497,  -497,  -497,   136,  -497,  -497,  -497,
++     460,  -497,  -497,   140,  -497,  -497,  -497,   251,  -497,   462,
++     464,  -497,   465,   466,   468,   469,   470,   471,   186,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,   472,   473,
++     474,  -497,  -497,   192,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,   194,  -497,  -497,  -497,   195,   389,   392,  -497,
++    -497,   475,   476,  -497,  -497,   478,   479,  -497,  -497,   480,
++     482,  -497,  -497,   484,  -497,   483,   388,  -497,  -497,   489,
++     490,   491,   492,   281,   400,   414,    14,  -497,  -497,    18,
++    -497,   426,    48,  -497,   427,    93,  -497,   430,   -22,  -497,
++    -497,   146,  -497,    72,  -497,     6,  -497,   433,   420,   421,
++     422,   423,   424,   428,   110,  -497,   493,   494,   429,   431,
++     432,    30,  -497,   495,   497,   139,  -497,  -497,  -497,   496,
++     500,  -497,     7,  -497,   435,     9,  -497,   438,    59,  -497,
++     441,   501,  -497,   448,  -497,   416,   434,   439,   440,  -497,
++    -497,  -497,  -497,   196,  -497,   499,  -497,   505,  -497,  -497,
++    -497,  -497,   219,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,    38,   442,  -497,  -497,  -497,  -497,   443,   444,  -497,
++    -497,   451,   220,  -497,   242,  -497,   507,  -497,   452,   458,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,   252,  -497,    42,   458,  -497,  -497,   504,  -497,  -497,
++    -497,   243,  -497,  -497,  -497,  -497,  -497,   513,   453,   514,
++      42,  -497,   516,  -497,   456,  -497,   512,  -497,  -497,   256,
++    -497,   454,   512,  -497,  -497,   244,  -497,  -497,   518,   454,
++    -497,   463,  -497,  -497
    };
  
    const unsigned short int
    Dhcp6Parser::yydefact_[] =
    {
         0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
 -      20,    22,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     1,    38,    32,    28,    27,    24,
 -      25,    26,    31,     3,    29,    30,    51,     5,    62,     7,
 -      95,     9,   176,    11,   277,    13,   294,    15,   320,    17,
 -     217,    19,   251,    21,   152,    23,    40,    34,     0,     0,
 -       0,     0,     0,     0,   322,   219,   253,     0,    42,     0,
 -      41,     0,     0,    35,    60,   400,   396,   398,     0,    59,
 -       0,    53,    55,    57,    58,    56,    93,    99,   101,     0,
 -       0,     0,     0,     0,   168,   209,   243,   127,   142,   135,
 -     350,   144,   163,   367,     0,   384,   394,    87,     0,    64,
 -      66,    67,    68,    69,    70,    72,    73,    74,    75,    77,
 -      76,    81,    82,    71,    79,    80,    78,    83,    84,    85,
 -      86,    97,     0,   354,   269,   286,   197,   199,   201,     0,
 -       0,   205,   203,   312,   346,   196,   180,   181,   182,   183,
 -       0,   178,   187,   188,   189,   192,   194,   190,   191,   184,
 -     185,   186,   193,   195,   284,   283,   282,     0,   279,   281,
 -     305,     0,   308,     0,     0,   304,   301,     0,   296,   298,
 -     299,   302,   303,   300,   344,   334,   336,   338,   340,   342,
 -     333,   332,     0,   323,   324,   328,   329,   326,   330,   331,
 -     327,   114,   122,     0,   237,   235,   240,     0,   230,   234,
 -     231,     0,   220,   221,   223,   233,   224,   225,   226,   239,
 -     227,   228,   229,   264,     0,   262,   263,   266,   267,     0,
 -     254,   255,   257,   258,   259,   260,   261,   159,   161,   156,
 -       0,   154,   157,   158,    39,     0,     0,    33,     0,     0,
 -       0,     0,     0,    50,     0,    52,     0,     0,     0,     0,
 +      20,    22,    24,     0,     0,     0,     0,     0,     0,     0,
 +       0,     0,     0,     0,     0,     0,     1,    40,    34,    30,
-       29,    26,    27,    28,    33,     3,    31,    32,    49,     5,
-       60,     7,    93,     9,   185,    11,   287,    13,   304,    15,
-      330,    17,   226,    19,   261,    21,   150,    23,   411,    25,
-       44,    36,     0,     0,     0,     0,     0,     0,   332,   228,
-      263,     0,     0,    46,     0,    45,     0,     0,    37,    58,
-      464,   460,   462,     0,    57,     0,    51,    53,    55,    56,
-       54,    91,    97,    99,     0,     0,     0,     0,     0,   177,
-      218,   253,   125,   140,   133,   360,   142,   161,   377,     0,
-      399,   409,    85,     0,    62,    64,    65,    66,    67,    68,
-       70,    71,    72,    73,    75,    74,    79,    80,    69,    77,
-       78,    76,    81,    82,    83,    84,    95,     0,   364,   279,
-      296,   206,   208,   210,     0,     0,   214,   212,   322,   356,
-      205,   189,   190,   191,   192,     0,   187,   196,   197,   198,
-      201,   203,   199,   200,   193,   194,   195,   202,   204,   294,
-      293,   292,     0,   289,   291,   315,     0,   318,     0,     0,
-      314,   311,     0,   306,   308,   309,   312,   313,   310,   354,
-      344,   346,   348,   350,   352,   343,   342,     0,   333,   334,
-      338,   339,   336,   340,   341,   337,   243,   120,     0,   247,
-      245,   250,     0,   239,   240,     0,   229,   230,   232,   242,
-      233,   234,   235,   249,   236,   237,   238,   274,     0,   272,
-      273,   276,   277,     0,   264,   265,   267,   268,   269,   270,
-      271,   157,   159,   154,     0,   152,   155,   156,     0,   432,
-      434,     0,   437,     0,     0,   441,   445,     0,     0,     0,
-        0,   451,   458,   430,     0,   413,   415,   416,   417,   418,
-      419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
-      429,    41,     0,     0,    35,     0,     0,     0,     0,     0,
-       48,     0,    50,     0,     0,     0,     0,     0,     0,     0,
++      29,    26,    27,    28,    33,     3,    31,    32,    53,     5,
++      64,     7,    97,     9,   189,    11,   291,    13,   308,    15,
++     334,    17,   230,    19,   265,    21,   154,    23,   415,    25,
++      42,    36,     0,     0,     0,     0,     0,     0,   336,   232,
++     267,     0,     0,    44,     0,    43,     0,     0,    37,    62,
++     468,   464,   466,     0,    61,     0,    55,    57,    59,    60,
++      58,    95,   101,   103,     0,     0,     0,     0,     0,   181,
++     222,   257,   129,   144,   137,   364,   146,   165,   381,     0,
++     403,   413,    89,     0,    66,    68,    69,    70,    71,    72,
++      74,    75,    76,    77,    79,    78,    83,    84,    73,    81,
++      82,    80,    85,    86,    87,    88,    99,     0,   368,   283,
++     300,   210,   212,   214,     0,     0,   218,   216,   326,   360,
++     209,   193,   194,   195,   196,     0,   191,   200,   201,   202,
++     205,   207,   203,   204,   197,   198,   199,   206,   208,   298,
++     297,   296,     0,   293,   295,   319,     0,   322,     0,     0,
++     318,   315,     0,   310,   312,   313,   316,   317,   314,   358,
++     348,   350,   352,   354,   356,   347,   346,     0,   337,   338,
++     342,   343,   340,   344,   345,   341,   247,   124,     0,   251,
++     249,   254,     0,   243,   244,     0,   233,   234,   236,   246,
++     237,   238,   239,   253,   240,   241,   242,   278,     0,   276,
++     277,   280,   281,     0,   268,   269,   271,   272,   273,   274,
++     275,   161,   163,   158,     0,   156,   159,   160,     0,   436,
++     438,     0,   441,     0,     0,   445,   449,     0,     0,     0,
++       0,   455,   462,   434,     0,   417,   419,   420,   421,   422,
++     423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
++     433,    41,     0,     0,    35,     0,     0,     0,     0,     0,
++      52,     0,    54,     0,     0,     0,     0,     0,     0,     0,
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,    61,     0,    94,   366,     0,
++       0,     0,     0,     0,     0,    65,     0,    98,   370,     0,
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,   186,     0,     0,   288,     0,     0,     0,     0,     0,
-        0,   305,     0,     0,     0,     0,     0,     0,   331,     0,
-        0,     0,     0,     0,     0,     0,     0,   227,     0,     0,
-        0,   262,     0,     0,     0,     0,   151,     0,     0,     0,
++       0,   190,     0,     0,   292,     0,     0,     0,     0,     0,
++       0,   309,     0,     0,     0,     0,     0,     0,   335,     0,
++       0,     0,     0,     0,     0,     0,     0,   231,     0,     0,
++       0,   266,     0,     0,     0,     0,   155,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,   412,    47,    38,     0,     0,     0,     0,
-        0,    52,     0,     0,     0,    86,    87,    88,    89,    90,
 -       0,     0,     0,     0,     0,     0,     0,     0,    63,     0,
 -      96,   356,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,   177,     0,     0,   278,     0,     0,
 -       0,     0,     0,     0,   295,     0,     0,     0,     0,     0,
 -       0,   321,     0,     0,     0,     0,     0,     0,     0,     0,
 -     218,     0,     0,     0,   252,     0,     0,     0,     0,   153,
 -      43,    36,     0,     0,     0,     0,     0,    54,     0,     0,
 -       0,    88,    89,    90,    91,    92,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,   383,     0,     0,    65,
 -       0,   365,   363,   364,   362,     0,   357,   358,   360,   361,
 -       0,     0,     0,     0,     0,   207,   208,     0,     0,     0,
 -       0,   179,     0,   280,     0,   307,     0,   310,   311,   297,
 -       0,     0,     0,     0,     0,     0,   325,     0,     0,   232,
 -       0,     0,     0,   242,   222,     0,   268,   256,     0,     0,
 -     155,     0,     0,     0,   397,   399,     0,     0,     0,   170,
 -     211,   245,     0,    40,     0,     0,   146,     0,     0,     0,
 -       0,    44,    98,     0,   355,     0,   271,   288,   198,   200,
 -     202,   206,   204,   314,     0,   285,   306,   309,   345,   335,
 -     337,   339,   341,   343,   115,   123,   238,   236,   241,   265,
 -     160,   162,    37,     0,   405,     0,   402,   404,     0,   116,
 -     118,   120,     0,     0,     0,   113,     0,   103,   105,   106,
 -     107,   108,   109,   110,   111,   112,     0,   174,     0,   171,
 -     172,   215,     0,   212,   213,   249,     0,   246,   247,   133,
 -     134,     0,   129,   131,   132,     0,   141,   139,     0,   137,
 -     140,   352,     0,   150,     0,   147,   148,     0,     0,   165,
 -     379,     0,     0,     0,   377,   371,   376,     0,   369,   374,
 -     372,   373,   375,   390,   392,     0,   386,   388,   389,     0,
 -      46,     0,   359,   275,     0,   272,   273,   292,     0,   289,
 -     290,   318,     0,   315,   316,   348,     0,    61,     0,     0,
 -     401,    94,     0,     0,     0,     0,     0,     0,     0,   100,
 -     102,     0,   169,     0,   219,   210,     0,   253,   244,     0,
 -       0,   128,   143,     0,   136,     0,   351,     0,   145,     0,
 -       0,     0,   164,     0,     0,     0,     0,     0,   368,     0,
 -       0,     0,   385,   395,    48,     0,    47,   366,     0,   270,
 -       0,     0,   287,     0,   322,   313,     0,     0,   347,     0,
 -     403,     0,     0,     0,   124,   125,   126,   104,     0,   173,
 -       0,   214,     0,   248,   130,   138,   353,     0,   149,   167,
 -     166,     0,   378,   381,   382,   370,     0,     0,   387,    45,
 -       0,     0,   274,     0,   291,     0,   317,     0,     0,   117,
 -     119,   121,   175,   216,   250,   151,   380,   391,   393,    49,
 -     276,   293,   319,   349,   409,     0,   407,     0,     0,   406,
 -     421,     0,   419,   417,   413,     0,   411,   415,   416,   414,
 -     408,     0,     0,     0,     0,   410,     0,   418,     0,   412,
 -       0,   420,   425,     0,   423,     0,     0,   422,   429,     0,
 -     427,   424,     0,     0,   426,     0,   428,   430
++       0,     0,     0,   416,    45,    38,     0,     0,     0,     0,
++       0,    56,     0,     0,     0,    90,    91,    92,    93,    94,
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      398,     0,     0,    63,     0,   375,   373,   374,   372,     0,
-      367,   368,   370,   371,     0,     0,     0,     0,     0,   216,
-      217,     0,     0,     0,     0,   188,     0,   290,     0,   317,
-        0,   320,   321,   307,     0,     0,     0,     0,     0,     0,
-      335,     0,     0,   241,     0,     0,     0,   252,   231,     0,
-      278,   266,     0,     0,   153,   431,     0,     0,   436,     0,
-      439,   440,     0,     0,   447,   448,   449,   450,     0,     0,
-      414,     0,     0,     0,   461,   463,     0,     0,     0,   179,
-      220,   255,     0,    42,   141,     0,     0,   144,     0,     0,
-        0,     0,    96,     0,   365,     0,   281,   298,   207,   209,
-      211,   215,   213,   324,     0,   295,   316,   319,   355,   345,
-      347,   349,   351,   353,   244,   121,   248,   246,   251,   275,
-      158,   160,   433,   435,   438,   443,   444,   442,   446,   453,
-      454,   455,   456,   457,   452,   459,    39,     0,   469,     0,
-      466,   468,     0,   112,   114,   116,   118,     0,     0,     0,
-      111,     0,   101,   103,   104,   105,   106,   107,   108,   109,
-      110,     0,   183,     0,   180,   181,   224,     0,   221,   222,
-      259,     0,   256,   257,   131,   132,     0,   127,   129,   130,
-       44,   139,   137,     0,   135,   138,   362,     0,   148,     0,
-      145,   146,     0,     0,     0,     0,     0,     0,     0,   163,
-      165,   166,   167,   168,   169,   170,   388,   394,     0,     0,
-        0,   387,   386,     0,   379,   381,   384,   382,   383,   385,
-      405,   407,     0,   401,   403,   404,     0,     0,   369,   285,
-        0,   282,   283,   302,     0,   299,   300,   328,     0,   325,
-      326,   358,     0,    59,     0,     0,   465,    92,     0,     0,
-        0,     0,     0,     0,     0,     0,    98,   100,     0,   178,
-        0,   228,   219,     0,   263,   254,     0,     0,   126,     0,
-        0,   134,     0,   361,     0,   143,     0,     0,     0,     0,
-        0,     0,     0,     0,   162,     0,     0,     0,     0,     0,
-        0,   378,     0,     0,     0,   400,   410,   376,     0,   280,
-        0,     0,   297,     0,   332,   323,     0,     0,   357,     0,
-      467,     0,     0,     0,     0,   122,   123,   124,   102,     0,
-      182,     0,   223,     0,   258,   128,    43,   136,   363,     0,
-      147,   171,   172,   173,   174,   175,   176,   164,     0,     0,
-      393,   396,   397,   380,     0,     0,   402,     0,   284,     0,
-      301,     0,   327,     0,     0,   113,   115,   117,   119,   184,
-      225,   260,   149,   390,   391,   392,   389,   395,   406,   408,
-      286,   303,   329,   359,   473,     0,   471,     0,     0,   470,
-      485,     0,   483,   481,   477,     0,   475,   479,   480,   478,
-      472,     0,     0,     0,     0,   474,     0,   482,     0,   476,
-        0,   484,   489,     0,   487,     0,     0,   486,   493,     0,
-      491,   488,     0,     0,   490,     0,   492,   494
++     402,     0,     0,    67,     0,   379,   377,   378,   376,     0,
++     371,   372,   374,   375,     0,     0,     0,     0,     0,   220,
++     221,     0,     0,     0,     0,   192,     0,   294,     0,   321,
++       0,   324,   325,   311,     0,     0,     0,     0,     0,     0,
++     339,     0,     0,   245,     0,     0,     0,   256,   235,     0,
++     282,   270,     0,     0,   157,   435,     0,     0,   440,     0,
++     443,   444,     0,     0,   451,   452,   453,   454,     0,     0,
++     418,     0,     0,     0,   465,   467,     0,     0,     0,   183,
++     224,   259,     0,    42,     0,     0,   148,     0,     0,     0,
++       0,    46,   100,     0,   369,     0,   285,   302,   211,   213,
++     215,   219,   217,   328,     0,   299,   320,   323,   359,   349,
++     351,   353,   355,   357,   248,   125,   252,   250,   255,   279,
++     162,   164,   437,   439,   442,   447,   448,   446,   450,   457,
++     458,   459,   460,   461,   456,   463,    39,     0,   473,     0,
++     470,   472,     0,   116,   118,   120,   122,     0,     0,     0,
++     115,     0,   105,   107,   108,   109,   110,   111,   112,   113,
++     114,     0,   187,     0,   184,   185,   228,     0,   225,   226,
++     263,     0,   260,   261,   135,   136,     0,   131,   133,   134,
++       0,   143,   141,     0,   139,   142,   366,     0,   152,     0,
++     149,   150,     0,     0,     0,     0,     0,     0,     0,   167,
++     169,   170,   171,   172,   173,   174,   392,   398,     0,     0,
++       0,   391,   390,     0,   383,   385,   388,   386,   387,   389,
++     409,   411,     0,   405,   407,   408,     0,    48,     0,   373,
++     289,     0,   286,   287,   306,     0,   303,   304,   332,     0,
++     329,   330,   362,     0,    63,     0,     0,   469,    96,     0,
++       0,     0,     0,     0,     0,     0,     0,   102,   104,     0,
++     182,     0,   232,   223,     0,   267,   258,     0,     0,   130,
++     145,     0,   138,     0,   365,     0,   147,     0,     0,     0,
++       0,     0,     0,     0,     0,   166,     0,     0,     0,     0,
++       0,     0,   382,     0,     0,     0,   404,   414,    50,     0,
++      49,   380,     0,   284,     0,     0,   301,     0,   336,   327,
++       0,     0,   361,     0,   471,     0,     0,     0,     0,   126,
++     127,   128,   106,     0,   186,     0,   227,     0,   262,   132,
++     140,   367,     0,   151,   175,   176,   177,   178,   179,   180,
++     168,     0,     0,   397,   400,   401,   384,     0,     0,   406,
++      47,     0,     0,   288,     0,   305,     0,   331,     0,     0,
++     117,   119,   121,   123,   188,   229,   264,   153,   394,   395,
++     396,   393,   399,   410,   412,    51,   290,   307,   333,   363,
++     477,     0,   475,     0,     0,   474,   489,     0,   487,   485,
++     481,     0,   479,   483,   484,   482,   476,     0,     0,     0,
++       0,   478,     0,   486,     0,   480,     0,   488,   493,     0,
++     491,     0,     0,   490,   497,     0,   495,   492,     0,     0,
++     494,     0,   496,   498
    };
  
    const short int
    Dhcp6Parser::yypgoto_[] =
    {
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,    15,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -283,  -498,   -88,  -498,   -62,  -498,  -498,  -498,
-      228,  -498,  -498,  -498,  -498,    39,   206,   -45,   -42,   -41,
-      -40,  -498,  -498,  -498,  -498,  -498,    36,  -498,  -498,  -498,
-     -498,  -498,    37,  -142,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,   -69,  -498,  -497,  -498,  -498,  -498,  -498,  -498,
-     -153,  -476,  -498,  -498,  -498,  -498,  -154,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -159,  -498,  -498,  -498,  -155,   165,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -162,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -135,  -498,
-     -498,  -498,  -132,   207,  -498,  -498,  -498,  -498,  -498,  -498,
-     -480,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -134,  -498,  -498,  -498,  -133,  -498,   183,  -498,   -55,  -498,
-     -498,  -498,  -498,  -498,   -53,  -498,  -498,  -498,  -498,  -498,
-      -54,  -498,  -498,  -498,  -136,  -498,  -498,  -498,  -131,  -498,
-      180,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -166,  -498,  -498,  -498,  -163,   217,  -498,  -498,  -498,
-     -498,  -498,  -498,  -160,  -498,  -498,  -498,  -164,   216,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -158,  -498,  -498,  -498,  -157,  -498,   205,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    54,
-     -498,  -498,  -498,  -498,  -498,  -498,  -128,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -139,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,    66,   184,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,  -498,
-     -498,   -87,  -498,  -498,  -498,  -219,  -498,  -498,  -229,  -498,
-     -498,  -498,  -498,  -498,  -498,  -240,  -498,  -498,  -246,  -498
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,    12,  -427,  -427,  -427,  -427,    15,  -427,
 -    -427,    34,  -427,  -349,  -427,  -427,  -427,   -58,  -427,  -427,
 -    -427,   205,  -427,  -427,  -427,  -427,    30,   181,   -60,   -43,
 -     -41,   -40,  -427,  -427,  -427,  -427,  -427,    44,  -427,  -427,
 -    -427,  -427,  -427,    43,  -102,  -395,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,   -56,  -427,  -426,  -427,  -427,  -427,  -427,
 -    -427,  -113,  -411,  -427,  -427,  -427,  -427,  -111,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -116,  -427,  -427,  -427,  -112,
 -     146,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -115,  -427,
 -    -427,  -427,  -427,   -95,  -427,  -427,  -427,   -86,   199,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -406,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,   -90,  -427,  -427,  -427,   -87,
 -    -427,   167,  -427,   -55,  -427,  -427,  -427,  -427,   -54,  -427,
 -    -427,  -427,  -427,  -427,   -47,  -427,  -427,  -427,   -85,  -427,
 -    -427,  -427,   -88,  -427,   168,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -114,  -427,  -427,  -427,  -110,
 -     206,  -427,  -427,  -427,  -427,  -427,  -427,  -118,  -427,  -427,
 -    -427,  -107,   198,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -119,  -427,  -427,  -427,  -109,  -427,
 -     202,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,    64,  -427,  -427,  -427,  -427,  -427,  -427,
 -     -97,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -     -94,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 -    -427,  -427,  -427,  -427,   -53,  -427,  -427,  -427,  -170,  -427,
 -    -427,  -185,  -427,  -427,  -427,  -427,  -427,  -427,  -191,  -427,
 -    -427,  -196,  -427
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,     8,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,    11,  -497,  -181,  -497,  -497,  -497,   -62,  -497,
++    -497,  -497,   233,  -497,  -497,  -497,  -497,    44,   211,   -47,
++     -45,   -44,   -42,  -497,  -497,  -497,  -497,  -497,    45,  -497,
++    -497,  -497,  -497,  -497,    39,  -138,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,   -58,  -497,  -496,  -497,  -497,  -497,
++    -497,  -497,  -149,  -475,  -497,  -497,  -497,  -497,  -151,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -154,  -497,  -497,  -497,
++    -150,   169,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -158,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -134,  -497,  -497,  -497,  -131,   209,  -497,  -497,  -497,  -497,
++    -497,  -497,  -482,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -133,  -497,  -497,  -497,  -132,  -497,   187,  -497,
++     -69,  -497,  -497,  -497,  -497,  -497,   -59,  -497,  -497,  -497,
++    -497,  -497,   -51,  -497,  -497,  -497,  -135,  -497,  -497,  -497,
++    -129,  -497,   182,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -171,  -497,  -497,  -497,  -163,   217,  -497,
++    -497,  -497,  -497,  -497,  -497,  -166,  -497,  -497,  -497,  -157,
++     226,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -161,  -497,  -497,  -497,  -156,  -497,   208,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,    62,  -497,  -497,  -497,  -497,  -497,  -497,  -125,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -136,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++      77,   190,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,  -497,
++    -497,  -497,  -497,   -78,  -497,  -497,  -497,  -215,  -497,  -497,
++    -230,  -497,  -497,  -497,  -497,  -497,  -497,  -241,  -497,  -497,
++    -245,  -497
    };
  
    const short int
    Dhcp6Parser::yydefgoto_[] =
    {
 -      -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
 -      21,    22,    23,    68,    33,    34,    57,    72,    73,    35,
 -      56,    69,    70,   432,   540,   605,   606,   107,    37,    58,
 -      80,    81,    82,   249,    39,    59,   108,   109,   110,   111,
 -     112,   113,   114,   115,   256,    41,    60,   132,   279,   116,
 -     257,   117,   258,   476,   477,   209,   313,   479,   562,   480,
 -     563,   481,   564,   210,   314,   483,   484,   485,   118,   267,
 -     501,   502,   503,   504,   119,   269,   508,   509,   510,   120,
 -     268,   121,   271,   514,   515,   516,   587,    55,    67,   240,
 -     241,   242,   326,   243,   327,   122,   272,   518,   519,   123,
 -     264,   488,   489,   490,   571,    43,    61,   150,   151,   152,
 -     284,   153,   285,   154,   286,   155,   290,   156,   289,   157,
 -     158,   124,   265,   492,   493,   494,   574,    51,    65,   211,
 -     212,   213,   214,   215,   216,   217,   218,   317,   219,   316,
 -     220,   221,   318,   222,   125,   266,   496,   497,   498,   577,
 -      53,    66,   229,   230,   231,   232,   233,   322,   234,   235,
 -     236,   160,   282,   544,   545,   546,   608,    45,    62,   167,
 -     168,   169,   295,   161,   283,   548,   549,   550,   611,    47,
 -      63,   177,   178,   179,   298,   180,   181,   300,   182,   183,
 -     162,   291,   552,   553,   554,   614,    49,    64,   192,   193,
 -     194,   195,   306,   196,   307,   197,   308,   198,   309,   199,
 -     310,   200,   305,   163,   292,   556,   617,   126,   270,   512,
 -     281,   365,   366,   367,   368,   369,   433,   127,   273,   527,
 -     528,   529,   530,   593,   531,   532,   128,   129,   275,   535,
 -     536,   537,   599,   538,   600,   130,   276,    83,   251,    84,
 -     252,    85,   250,   465,   466,   467,   558,   675,   676,   677,
 -     685,   686,   687,   688,   693,   689,   691,   703,   704,   705,
 -     709,   710,   712
 +      -1,    13,    14,    15,    16,    17,    18,    19,    20,    21,
 +      22,    23,    24,    25,    73,    35,    36,    61,    77,    78,
-       37,    60,   494,   590,    74,    75,   112,    39,    62,    85,
-       86,    87,   286,    41,    63,   113,   114,   115,   116,   117,
-      118,   119,   120,   293,    43,    64,   137,   316,   121,   294,
-      122,   295,   561,   562,   563,   658,   564,   659,   565,   660,
-      566,   661,   214,   351,   568,   569,   570,   123,   304,   586,
-      587,   588,   589,   124,   306,   593,   594,   595,   125,   305,
-      126,   308,   599,   600,   601,   684,    57,    71,   244,   245,
-      246,   363,   247,   364,   127,   309,   608,   609,   610,   611,
-      612,   613,   614,   615,   128,   301,   573,   574,   575,   668,
-       45,    65,   155,   156,   157,   321,   158,   322,   159,   323,
-      160,   327,   161,   326,   162,   163,   129,   302,   577,   578,
-      579,   671,    53,    69,   215,   216,   217,   218,   219,   220,
-      221,   350,   222,   354,   223,   353,   224,   225,   355,   226,
-      130,   303,   581,   582,   583,   674,    55,    70,   233,   234,
-      235,   236,   237,   359,   238,   239,   240,   165,   319,   640,
-      641,   642,   708,    47,    66,   172,   173,   174,   332,   166,
-      320,   644,   645,   646,   711,    49,    67,   182,   183,   184,
-      335,   185,   186,   337,   187,   188,   167,   328,   648,   649,
-      650,   714,    51,    68,   197,   198,   199,   200,   343,   201,
-      344,   202,   345,   203,   346,   204,   347,   205,   342,   168,
-      329,   652,   717,   131,   307,   597,   318,   419,   420,   421,
-      422,   423,   503,   132,   310,   623,   624,   625,   695,   776,
-      626,   627,   696,   628,   629,   133,   134,   312,   632,   633,
-      634,   702,   635,   703,   135,   313,    59,    72,   264,   265,
-      266,   267,   368,   268,   369,   269,   270,   371,   271,   272,
-      273,   374,   537,   274,   375,   275,   276,   277,   278,   279,
-      380,   544,   280,   381,    88,   288,    89,   289,    90,   287,
-      549,   550,   551,   654,   785,   786,   787,   795,   796,   797,
-      798,   803,   799,   801,   813,   814,   815,   819,   820,   822
++      37,    60,    74,    75,   502,   637,   709,   710,   112,    39,
++      62,    85,    86,    87,   286,    41,    63,   113,   114,   115,
++     116,   117,   118,   119,   120,   293,    43,    64,   137,   316,
++     121,   294,   122,   295,   561,   562,   563,   659,   564,   660,
++     565,   661,   566,   662,   214,   351,   568,   569,   570,   123,
++     304,   586,   587,   588,   589,   124,   306,   593,   594,   595,
++     125,   305,   126,   308,   599,   600,   601,   685,    57,    71,
++     244,   245,   246,   363,   247,   364,   127,   309,   608,   609,
++     610,   611,   612,   613,   614,   615,   128,   301,   573,   574,
++     575,   669,    45,    65,   155,   156,   157,   321,   158,   322,
++     159,   323,   160,   327,   161,   326,   162,   163,   129,   302,
++     577,   578,   579,   672,    53,    69,   215,   216,   217,   218,
++     219,   220,   221,   350,   222,   354,   223,   353,   224,   225,
++     355,   226,   130,   303,   581,   582,   583,   675,    55,    70,
++     233,   234,   235,   236,   237,   359,   238,   239,   240,   165,
++     319,   641,   642,   643,   712,    47,    66,   172,   173,   174,
++     332,   166,   320,   645,   646,   647,   715,    49,    67,   182,
++     183,   184,   335,   185,   186,   337,   187,   188,   167,   328,
++     649,   650,   651,   718,    51,    68,   197,   198,   199,   200,
++     343,   201,   344,   202,   345,   203,   346,   204,   347,   205,
++     342,   168,   329,   653,   721,   131,   307,   597,   318,   419,
++     420,   421,   422,   423,   503,   132,   310,   623,   624,   625,
++     696,   781,   626,   627,   697,   628,   629,   133,   134,   312,
++     632,   633,   634,   703,   635,   704,   135,   313,    59,    72,
++     264,   265,   266,   267,   368,   268,   369,   269,   270,   371,
++     271,   272,   273,   374,   537,   274,   375,   275,   276,   277,
++     278,   279,   380,   544,   280,   381,    88,   288,    89,   289,
++      90,   287,   549,   550,   551,   655,   791,   792,   793,   801,
++     802,   803,   804,   809,   805,   807,   819,   820,   821,   825,
++     826,   828
    };
  
    const unsigned short int
    Dhcp6Parser::yytable_[] =
    {
-       84,   230,   622,   150,   170,   180,   195,   213,   229,   243,
-      263,   164,   171,   181,   196,   231,   596,   232,   138,   592,
-      151,   138,    79,   152,   153,   154,    27,   207,    28,    34,
-       29,   584,    26,    94,    95,    96,    97,   101,   207,    76,
-      101,   553,   554,   555,   556,   557,   558,   559,    38,   139,
-      616,   140,   677,    40,   557,   678,   207,   141,   142,   143,
-      144,   145,   146,   206,   415,   291,    42,   101,   147,   148,
-      292,   147,   241,   242,   101,   149,   680,   169,   207,   681,
-      208,   209,    44,   210,   211,   212,   175,   176,   177,   178,
-      179,    91,    46,    92,    93,   207,   227,   208,   209,   228,
-       48,   585,    94,    95,    96,    97,    98,    99,   100,   101,
-      790,   682,   791,   792,   683,   617,   618,   619,   620,   788,
-      241,   242,   789,    80,   539,   540,   541,   542,    83,    81,
-       82,   502,   102,   103,   104,   105,    83,   535,   536,    83,
-      314,   101,    83,    83,   816,   315,   106,   817,   281,   107,
-       50,   543,    30,    31,    32,    33,   108,    83,   773,   774,
-      775,   518,   519,   520,   109,   110,    83,   189,   111,    83,
-       52,   190,   191,   192,   193,   194,    83,    54,    56,    83,
-      248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-      258,   259,   260,   261,   262,   330,    83,   584,   591,   136,
-      331,    58,   738,   622,   592,   602,   603,   604,   605,   606,
-      607,    83,   333,   340,   365,   382,   314,   334,   341,   366,
-      383,   653,    83,   655,   630,   631,   282,   284,   656,    84,
 -      79,   146,   526,   145,   165,   175,   190,   208,   225,   239,
 -     226,   227,   228,   507,   159,   166,   176,   191,   147,   511,
 -     148,   149,   478,   478,    25,    32,    26,    74,    27,   133,
 -     133,    96,   202,   525,   237,   238,   202,   223,   203,   204,
 -     224,   448,   449,   450,   499,    89,    90,    91,    92,    24,
 -     254,   277,    96,    36,    96,   255,   278,   293,   361,    38,
 -     296,   134,   294,   135,   164,   297,    78,    40,   201,   136,
 -     137,   138,   139,   140,   141,   580,   237,   238,   581,   142,
 -     142,   143,   500,   202,    42,   203,   204,   144,   205,   206,
 -     207,   201,   499,   506,    44,   472,    86,    75,    87,    88,
 -      46,    78,    48,    76,    77,    78,    50,    89,    90,    91,
 -      92,    93,    94,    95,    96,    52,    78,    54,    28,    29,
 -      30,    31,    78,    71,    78,   244,   201,   469,   470,   471,
 -     472,   473,   474,   533,   534,   131,    96,    97,    98,    99,
 -     100,   202,   583,   202,   245,   584,   246,   520,   521,   522,
 -     523,   101,    78,   303,   102,   103,   585,   247,   304,   586,
 -     104,   105,   184,   248,   106,   253,   185,   186,   187,   188,
 -     189,   526,   507,   478,    96,    78,   328,   277,   559,   636,
 -     568,   329,   557,   560,    78,   569,   170,   171,   172,   173,
 -     174,   259,   260,   261,   568,   680,    79,   681,   682,   570,
 -     591,   280,   525,   597,   601,   592,    78,   262,   598,   602,
 -      78,   248,    78,   293,   328,   296,   603,   303,   662,   665,
 -     670,   694,   671,   362,   713,   363,   695,   678,   706,   714,
 -     679,   707,   263,   146,   364,   145,   274,   287,   165,   288,
 -     299,   301,   302,   312,    78,   175,   159,   311,   315,   166,
 -     147,   319,   148,   149,   190,   321,   176,   330,   331,   320,
 -     323,   324,   325,   208,   332,   191,   333,   225,   334,   226,
 -     227,   228,     1,     2,     3,     4,     5,     6,     7,     8,
 -       9,    10,    11,   335,   336,   338,   339,   340,   346,   347,
 -     341,   348,   342,   349,   343,   344,   345,   350,   351,   352,
 -     353,   354,   355,   357,   356,   358,   360,   370,   371,   372,
 -     373,   374,   377,   375,   378,   379,   380,   376,   382,   384,
 -     385,   386,   387,   388,   390,   391,   392,   393,   394,   395,
 -     397,   398,   400,   401,   399,   402,   405,   408,   409,   411,
 -     708,   419,   420,   403,   406,   412,   413,   414,   415,   416,
 -     417,   418,   421,   422,   423,   424,   425,   426,   431,   475,
 -     475,   482,   482,   427,   428,   429,   430,   435,   434,   438,
 -     524,   436,   437,   439,   440,   441,   442,   362,   443,   363,
 -     561,   444,   487,   491,   495,   445,   513,   446,   364,   447,
 -     451,   452,   541,   543,   547,   565,   551,   566,   567,   453,
 -     573,   572,   575,   576,   578,   579,   674,   582,   454,   588,
 -     589,   555,   455,   590,   594,   456,   595,   457,   458,   596,
 -     609,   461,   464,   462,   610,   612,   613,   616,   615,   459,
 -     619,   621,   622,   618,   623,   641,   646,   647,   650,   460,
 -     649,   657,   463,   658,   517,   539,   692,   663,   664,   672,
 -     696,   698,   702,   604,   607,   700,   715,   505,   359,   337,
 -     468,   486,   625,   624,   659,   626,   627,   634,   639,   642,
 -     643,   644,   635,   638,   410,   637,   640,   660,   629,   661,
 -     666,   667,   668,   669,   673,   628,   631,   630,   404,   632,
 -     697,   701,   381,   407,   633,   654,   652,   656,   651,   542,
 -     645,   389,   383,   717,   653,   655,   620,   648,   690,   699,
 -     475,   146,   482,   145,   396,   711,   208,   716,     0,   225,
 -       0,   226,   227,   228,   159,     0,     0,     0,   147,   239,
 -     148,   149,     0,     0,     0,     0,     0,     0,     0,   524,
++      84,   231,   622,   150,   170,   180,   195,   213,   229,   243,
++     263,   232,   230,   596,   164,   171,   181,   196,   151,   592,
++     152,   153,    34,   154,    27,   138,    28,    79,    29,   553,
++     554,   555,   556,   557,   558,   559,   101,    26,   101,   584,
++      94,    95,    96,    97,   207,   616,   169,   101,    76,   557,
++     175,   176,   177,   178,   179,   136,   139,    38,   140,   539,
++     540,   541,   542,   206,   141,   142,   143,   144,   145,   146,
++     101,   207,   207,   241,   242,   147,   148,    40,   207,   138,
++     208,   209,   149,   210,   211,   212,   543,    42,   101,    91,
++     291,    92,    93,   314,   281,   292,    44,   415,   315,    46,
++      94,    95,    96,    97,    98,    99,   100,   101,    48,   585,
++     617,   618,   619,   620,   189,   778,   779,   780,   190,   191,
++     192,   193,   194,   207,   227,   208,   209,   228,    80,   147,
++     102,   103,   104,   105,    81,    82,   330,    83,    83,   678,
++      83,   331,   679,   681,   106,    83,   682,   107,    83,    83,
++      30,    31,    32,    33,   108,   796,    50,   797,   798,   333,
++     340,    83,   109,   110,   334,   341,   111,   241,   242,   365,
++     382,   314,    83,    83,   366,   383,   654,   535,   536,    83,
++     602,   603,   604,   605,   606,   607,   656,   666,   666,   694,
++      83,   657,   667,   668,   695,   701,    52,   705,   382,   330,
++     702,   741,   706,   707,   774,   622,   592,   584,   591,    83,
 +       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-       11,    12,   665,    83,   283,   665,   693,   666,   700,   417,
-      667,   694,   704,   701,   382,   330,   416,   705,   365,   706,
-      769,   333,   340,   772,   418,   804,   780,   781,   150,   823,
-      805,   170,   285,   317,   824,   290,   164,   296,   180,   171,
-      297,   298,   299,   300,   311,   151,   181,   195,   152,   153,
-      154,   324,   325,   230,   336,   196,   213,   384,   385,   338,
-      229,   339,   348,   349,   357,   352,   356,   231,   358,   232,
-      360,   361,   362,   386,   367,   370,   372,   373,   376,   377,
++      11,    12,   365,   333,    83,   630,   631,   777,   786,    84,
++     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
++     258,   259,   260,   261,   262,   340,   810,   829,    54,   283,
++     787,   811,   830,    56,   683,   794,   416,   684,   795,   822,
++     417,    58,   823,   518,   519,   520,   282,   418,   150,   284,
++     285,   170,    83,   290,   296,   297,   298,   299,   180,   164,
++     300,   311,   171,   151,   324,   152,   153,   195,   154,   181,
++     384,   385,   317,   231,   325,   336,   213,   338,   196,   339,
++     229,   349,   348,   232,   230,   352,   356,   357,   358,   386,
++     360,   361,   362,   395,   367,   370,   372,   373,   376,   377,
 +     263,   378,   379,   387,   388,   389,   390,   392,   393,   394,
-      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-      405,   406,   407,   408,   409,   411,   410,   412,   414,   424,
-      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-      436,   438,   439,   440,   441,   442,   444,   445,   446,   447,
-      448,   449,   451,   452,   454,   455,   453,   456,   459,   462,
-      457,   460,   463,   466,   465,   467,   468,   469,   470,   471,
-      472,   473,   478,   479,   474,   475,   481,   476,   477,   504,
-      482,   483,   486,   487,   484,   485,   488,   489,   490,   491,
-      492,   493,   495,   496,   497,   505,   506,   498,   567,   567,
-      499,   500,   501,   507,   508,   560,   560,   513,   514,   509,
-      510,   572,   576,   580,   598,   511,   417,   621,   512,   263,
-      637,   639,   643,   416,   647,   662,   657,   515,   663,   664,
-      670,   418,   669,   673,   672,   651,   676,   516,   517,   521,
-      522,   523,   675,   685,   686,   709,   687,   688,   689,   690,
-      691,   692,   697,   524,   698,   699,   710,   718,   531,   713,
-      712,   525,   526,   715,   716,   736,   719,   721,   538,   527,
-      722,   528,   529,   723,   724,   748,   546,   548,   749,   754,
-      755,   763,   679,   530,   764,   810,   770,   532,   533,   771,
-      782,   534,   784,   802,   806,   545,   808,   825,   812,   391,
-      413,   547,   552,   728,   735,   571,   737,   740,   707,   739,
-      464,   747,   725,   726,   727,   730,   729,   435,   731,   732,
-      734,   458,   461,   733,   758,   757,   818,   759,   741,   742,
-      437,   743,   744,   760,   450,   745,   443,   761,   762,   638,
-      746,   750,   751,   752,   765,   756,   480,   636,   720,   800,
-      766,   767,   753,   768,   777,   809,   821,   826,     0,     0,
-      778,     0,   779,   783,     0,     0,   807,     0,     0,   811,
-        0,   827,     0,     0,     0,     0,   567,     0,     0,     0,
-        0,     0,     0,   560,     0,   230,   150,     0,     0,   213,
-        0,     0,   229,     0,   164,     0,     0,     0,     0,   231,
-        0,   232,   243,   151,     0,     0,   152,   153,   154,     0,
-        0,     0,     0,     0,     0,     0,     0,     0,   621,     0,
-        0,     0,     0,     0,     0,     0,   170,     0,     0,   180,
-        0,     0,   195,     0,   171,     0,     0,   181,     0,     0,
-      196,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
++     406,   407,   408,   409,   410,   411,   412,   414,   424,   425,
++     426,   427,   428,   429,   431,   432,   430,   433,   434,   436,
++     438,   439,   440,   441,   442,   444,   445,   446,   447,   448,
++     449,   451,   452,   454,   455,   456,   459,   462,   463,   453,
++     466,   467,   457,   460,   465,   468,   469,   470,   472,   471,
++     473,   478,   474,   475,   476,   479,   477,   484,   485,   481,
++     482,   483,   505,   486,   487,   488,   489,   490,   491,   492,
++     493,   494,   495,   496,   508,   729,   497,   498,   499,   500,
++     501,   504,   506,   507,   513,   560,   560,   509,   510,   567,
++     567,   511,   514,   572,   576,   512,   621,   580,   263,   515,
++     598,   638,   640,   416,   658,   644,   538,   417,   648,   663,
++     664,   665,   671,   769,   418,   652,   670,   516,   517,   521,
++     522,   673,   674,   676,   677,   790,   680,   687,   686,   688,
++     689,   531,   690,   691,   692,   693,   698,   699,   700,   714,
++     523,   713,   717,   524,   716,   720,   719,   723,   525,   546,
++     526,   527,   722,   725,   726,   727,   728,   751,   752,   757,
++     548,   758,   760,   761,   590,   768,   528,   775,   808,   529,
++     530,   532,   533,   776,   534,   788,   545,   812,   814,   818,
++     708,   816,   831,   711,   391,   413,   547,   571,   732,   739,
++     740,   552,   730,   743,   464,   742,   750,   734,   733,   435,
++     735,   736,   738,   763,   461,   458,   737,   770,   731,   762,
++     437,   765,   744,   745,   746,   747,   748,   450,   764,   767,
++     749,   753,   766,   754,   755,   771,   443,   639,   824,   759,
++     772,   773,   480,   782,   783,   784,   756,   636,   724,   806,
++     815,   827,   785,   789,   832,   813,     0,   817,     0,     0,
++       0,     0,     0,     0,   833,     0,     0,     0,     0,     0,
++       0,     0,     0,     0,   560,     0,   231,   150,   567,     0,
++     213,     0,     0,   229,     0,     0,   232,   230,   164,     0,
++       0,     0,   151,   243,   152,   153,     0,   154,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,     0,     0,   621,
++       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++     170,     0,     0,   180,     0,     0,   195,     0,     0,     0,
++       0,   171,     0,     0,   181,     0,     0,   196,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -     165,     0,     0,   175,     0,     0,   190,     0,     0,     0,
 -       0,   166,     0,     0,   176,     0,     0,   191,     0,     0,
+        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,     0,   683,
 -       0,   684,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,   683,     0,   684
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,     0,   794,     0,
-        0,     0,     0,     0,     0,   793,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,   794,     0,     0,     0,     0,
-        0,     0,   793
++       0,   799,     0,     0,     0,   800,     0,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,     0,   799,     0,
++       0,     0,   800
    };
  
    const short int
    Dhcp6Parser::yycheck_[] =
    {
-       62,    70,   499,    65,    66,    67,    68,    69,    70,    71,
-       72,    65,    66,    67,    68,    70,   496,    70,     7,   495,
-       65,     7,    10,    65,    65,    65,     5,    30,     7,    14,
-        9,    61,     0,    22,    23,    24,    25,    29,    30,   131,
-       29,    15,    16,    17,    18,    19,    20,    21,     7,    38,
-       15,    40,     3,     7,    19,     6,    30,    46,    47,    48,
-       49,    50,    51,    15,    56,     3,     7,    29,    57,    58,
-        8,    57,    67,    68,    29,    64,     3,    39,    30,     6,
-       32,    33,     7,    35,    36,    37,    41,    42,    43,    44,
-       45,    11,     7,    13,    14,    30,    31,    32,    33,    34,
-        7,   131,    22,    23,    24,    25,    26,    27,    28,    29,
-      113,     3,   115,   116,     6,    80,    81,    82,    83,     3,
-       67,    68,     6,   111,   107,   108,   109,   110,   131,   117,
-      118,   414,    52,    53,    54,    55,   131,   104,   105,   131,
-        3,    29,   131,   131,     3,     8,    66,     6,     6,    69,
-        7,   134,   131,   132,   133,   134,    76,   131,    77,    78,
-       79,   444,   445,   446,    84,    85,   131,    55,    88,   131,
-        7,    59,    60,    61,    62,    63,   131,     7,     7,   131,
-       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-       99,   100,   101,   102,   103,     3,   131,    61,    62,    12,
-        8,     7,   682,   700,   680,    70,    71,    72,    73,    74,
-       75,   131,     3,     3,     3,     3,     3,     8,     8,     8,
-        8,     8,   131,     3,    86,    87,     3,     8,     8,   291,
 -      58,    61,   428,    61,    62,    63,    64,    65,    66,    67,
 -      66,    66,    66,   424,    61,    62,    63,    64,    61,   425,
 -      61,    61,   417,   418,     5,    13,     7,    10,     9,     7,
 -       7,    29,    30,   428,    67,    68,    30,    31,    32,    33,
 -      34,   390,   391,   392,    61,    22,    23,    24,    25,     0,
 -       3,     3,    29,     7,    29,     8,     8,     3,    56,     7,
 -       3,    38,     8,    40,    39,     8,    99,     7,    15,    46,
 -      47,    48,    49,    50,    51,     3,    67,    68,     6,    57,
 -      57,    58,    99,    30,     7,    32,    33,    64,    35,    36,
 -      37,    15,    61,    62,     7,    19,    11,    80,    13,    14,
 -       7,    99,     7,    86,    87,    99,     7,    22,    23,    24,
 -      25,    26,    27,    28,    29,     7,    99,     7,    99,   100,
 -     101,   102,    99,    99,    99,     6,    15,    16,    17,    18,
 -      19,    20,    21,    77,    78,    12,    29,    52,    53,    54,
 -      55,    30,     3,    30,     3,     6,     4,    71,    72,    73,
 -      74,    66,    99,     3,    69,    70,     3,     8,     8,     6,
 -      75,    76,    55,     3,    79,     4,    59,    60,    61,    62,
 -      63,   597,   583,   568,    29,    99,     3,     3,     3,   585,
 -       3,     8,     8,     8,    99,     8,    41,    42,    43,    44,
 -      45,     4,     4,     4,     3,    82,   254,    84,    85,     8,
 -       3,     8,   597,     3,     3,     8,    99,     4,     8,     8,
 -      99,     3,    99,     3,     3,     3,     8,     3,     8,     8,
 -       8,     3,     8,   281,     3,   281,     8,     3,     3,     8,
 -       6,     6,     4,   293,   281,   293,     4,     4,   296,     4,
 -       4,     4,     4,     3,    99,   303,   293,     8,     4,   296,
 -     293,     4,   293,   293,   312,     3,   303,   245,   246,     8,
 -       4,     8,     3,   321,    99,   312,     4,   325,     4,   325,
 -     325,   325,    88,    89,    90,    91,    92,    93,    94,    95,
 -      96,    97,    98,     4,     4,     4,     4,     4,     4,     4,
 -     100,     4,   100,     4,   100,   100,   100,     4,     4,     4,
 -       4,     4,     4,     4,   100,     4,     4,     4,     4,     4,
 -       4,     4,     4,   100,     4,     4,     4,   102,     4,     4,
 -     100,     4,   100,   100,     4,     4,     4,     4,     4,     4,
 -       4,     4,     4,     4,   100,     4,     4,     4,     4,     4,
 -      83,     5,     5,   102,   102,     7,     7,   335,   336,     7,
 -       7,     7,     5,     5,     5,     5,     5,     5,     5,   417,
 -     418,   417,   418,     7,     7,     7,     7,     3,     8,    99,
 -     428,     5,     5,    99,    99,    99,    99,   435,     5,   435,
 -       8,     7,     7,     7,     7,    99,     7,    99,   435,    99,
 -      99,    99,     4,     7,     7,     4,     7,     4,     4,    99,
 -       3,     6,     6,     3,     6,     3,     7,     6,    99,     6,
 -       3,    65,    99,     4,     4,    99,     4,    99,    99,     4,
 -       6,   409,    81,   411,     3,     6,     3,     3,     6,    99,
 -       4,     4,     4,     8,     4,     4,     4,     4,     3,    99,
 -       6,     4,   412,     5,    99,   430,     4,     8,     8,     8,
 -       4,     4,     7,    99,    99,     5,     4,   423,   277,   254,
 -     416,   418,   100,   102,    99,   102,   568,   580,   100,   100,
 -     100,   100,   583,   589,   328,   587,   591,    99,   573,    99,
 -      99,    99,    99,    99,    99,   571,   576,   574,   321,   577,
 -     100,    99,   293,   325,   579,   613,   610,   616,   608,   435,
 -     597,   303,   296,    99,   611,   614,   559,   601,   678,   694,
 -     568,   571,   568,   571,   312,   706,   574,   713,    -1,   577,
 -      -1,   577,   577,   577,   571,    -1,    -1,    -1,   571,   587,
 -     571,   571,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   597,
++      62,    70,   498,    65,    66,    67,    68,    69,    70,    71,
++      72,    70,    70,   495,    65,    66,    67,    68,    65,   494,
++      65,    65,    14,    65,     5,     7,     7,    10,     9,    15,
++      16,    17,    18,    19,    20,    21,    29,     0,    29,    61,
++      22,    23,    24,    25,    30,    15,    39,    29,   131,    19,
++      41,    42,    43,    44,    45,    12,    38,     7,    40,   107,
++     108,   109,   110,    15,    46,    47,    48,    49,    50,    51,
++      29,    30,    30,    67,    68,    57,    58,     7,    30,     7,
++      32,    33,    64,    35,    36,    37,   134,     7,    29,    11,
++       3,    13,    14,     3,     6,     8,     7,    56,     8,     7,
++      22,    23,    24,    25,    26,    27,    28,    29,     7,   131,
++      80,    81,    82,    83,    55,    77,    78,    79,    59,    60,
++      61,    62,    63,    30,    31,    32,    33,    34,   111,    57,
++      52,    53,    54,    55,   117,   118,     3,   131,   131,     3,
++     131,     8,     6,     3,    66,   131,     6,    69,   131,   131,
++     131,   132,   133,   134,    76,   113,     7,   115,   116,     3,
++       3,   131,    84,    85,     8,     8,    88,    67,    68,     3,
++       3,     3,   131,   131,     8,     8,     8,   104,   105,   131,
++      70,    71,    72,    73,    74,    75,     3,     3,     3,     3,
++     131,     8,     8,     8,     8,     3,     7,     3,     3,     3,
++       8,   683,     8,     8,     8,   701,   681,    61,    62,   131,
 +     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-      129,   130,     3,   131,     4,     3,     3,     8,     3,   318,
-        8,     8,     3,     8,     3,     3,   318,     8,     3,     8,
-        8,     3,     3,     8,   318,     3,     8,     8,   330,     3,
-        8,   333,     3,     8,     8,     4,   330,     4,   340,   333,
-        4,     4,     4,     4,     4,   330,   340,   349,   330,   330,
-      330,     4,     4,   362,     4,   349,   358,   282,   283,     4,
-      362,     4,     8,     3,     8,     4,     4,   362,     3,   362,
-        4,     8,     3,   131,     4,     4,     4,     4,     4,     4,
++     129,   130,     3,     3,   131,    86,    87,     8,     8,   291,
++      89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
++      99,   100,   101,   102,   103,     3,     3,     3,     7,     4,
++       8,     8,     8,     7,     3,     3,   318,     6,     6,     3,
++     318,     7,     6,   444,   445,   446,     3,   318,   330,     8,
++       3,   333,   131,     4,     4,     4,     4,     4,   340,   330,
++       4,     4,   333,   330,     4,   330,   330,   349,   330,   340,
++     282,   283,     8,   362,     4,     4,   358,     4,   349,     4,
++     362,     3,     8,   362,   362,     4,     4,     8,     3,   131,
++       4,     8,     3,   132,     4,     4,     4,     4,     4,     4,
 +     382,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-      132,   132,   132,   132,   132,     4,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,     4,   132,     4,     4,     4,
-        4,     4,     4,     4,   132,   134,     4,     4,     4,     4,
-        4,     4,   132,     4,   132,   132,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,     4,   132,     4,     4,     4,
-      134,   134,     4,     4,   134,     4,   132,     4,   132,   132,
-        4,     4,     4,     4,   134,   134,     4,   134,   134,     8,
-        7,     7,     7,     7,   389,   390,     7,     5,     5,     5,
-        5,     5,     5,     5,     5,     3,     5,     7,   487,   488,
-        7,     7,     7,     5,   131,   487,   488,     5,     7,   131,
-      131,     7,     7,     7,     7,   131,   505,   499,   131,   501,
-        4,     7,     7,   505,     7,     4,     8,   131,     4,     4,
-        3,   505,     6,     3,     6,    65,     3,   131,   131,   131,
-      131,   131,     6,     6,     3,     6,     4,     4,     4,     4,
-        4,     4,     4,   131,     4,     4,     3,     8,   463,     3,
-        6,   131,   131,     6,     3,     6,     4,     4,   106,   131,
-        4,   131,   131,     4,     4,     4,   481,   112,     4,     4,
-        4,     4,   590,   131,     5,     5,     8,   131,   131,     8,
-        8,   131,     7,     4,     4,   131,     4,     4,     7,   291,
-      314,   482,   486,   665,   677,   488,   680,   686,   131,   684,
-      365,   693,   134,   132,   134,   670,   668,   330,   671,   673,
-      676,   358,   362,   674,   710,   708,   114,   711,   132,   132,
-      333,   132,   132,   713,   349,   132,   340,   714,   716,   505,
-      132,   132,   132,   132,   131,   704,   382,   501,   655,   788,
-      131,   131,   700,   131,   131,   804,   816,   823,    -1,    -1,
-      131,    -1,   131,   131,    -1,    -1,   132,    -1,    -1,   131,
-       -1,   131,    -1,    -1,    -1,    -1,   665,    -1,    -1,    -1,
-       -1,    -1,    -1,   665,    -1,   674,   668,    -1,    -1,   671,
-       -1,    -1,   674,    -1,   668,    -1,    -1,    -1,    -1,   674,
-       -1,   674,   684,   668,    -1,    -1,   668,   668,   668,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   700,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,   711,
-       -1,    -1,   714,    -1,   708,    -1,    -1,   711,    -1,    -1,
-      714,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++     132,   132,   132,   132,     4,     4,     4,     4,     4,     4,
++       4,     4,     4,     4,   132,     4,     4,     4,     4,     4,
++       4,     4,     4,   132,     4,     4,   134,     4,     4,     4,
++       4,   132,     4,   132,   132,     4,     4,     4,     4,     4,
++       4,     4,     4,     4,     4,     4,     4,     4,     4,   132,
++       4,     4,   134,   134,   134,   132,     4,   132,     4,   132,
++       4,     4,   134,   134,   134,     4,   134,   389,   390,     4,
++       7,     7,     3,     7,     7,     7,     5,     5,     5,     5,
++       5,     5,     5,     5,   131,   134,     7,     7,     7,     7,
++       5,     8,     5,     5,     5,   487,   488,   131,   131,   487,
++     488,   131,     7,     7,     7,   131,   498,     7,   500,   131,
++       7,     4,     7,   505,     8,     7,   106,   505,     7,     4,
++       4,     4,     3,     5,   505,    65,     6,   131,   131,   131,
++     131,     6,     3,     6,     3,     7,     6,     3,     6,     4,
++       4,   463,     4,     4,     4,     4,     4,     4,     4,     3,
++     131,     6,     3,   131,     6,     3,     6,     4,   131,   481,
++     131,   131,     8,     4,     4,     4,     4,     4,     4,     4,
++     112,     4,     6,     3,   493,     4,   131,     8,     4,   131,
++     131,   131,   131,     8,   131,     8,   131,     4,     4,     7,
++     131,     5,     4,   131,   291,   314,   482,   488,   666,   678,
++     681,   486,   132,   687,   365,   685,   694,   671,   669,   330,
++     672,   674,   677,   714,   362,   358,   675,   131,   134,   712,
++     333,   717,   132,   132,   132,   132,   132,   349,   715,   720,
++     132,   132,   718,   132,   132,   131,   340,   505,   114,   705,
++     131,   131,   382,   131,   131,   131,   701,   500,   656,   794,
++     810,   822,   131,   131,   829,   132,    -1,   131,    -1,    -1,
++      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,   666,    -1,   675,   669,   666,    -1,
++     672,    -1,    -1,   675,    -1,    -1,   675,   675,   669,    -1,
++      -1,    -1,   669,   685,   669,   669,    -1,   669,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   701,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++     712,    -1,    -1,   715,    -1,    -1,   718,    -1,    -1,    -1,
++      -1,   712,    -1,    -1,   715,    -1,    -1,   718,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -     608,    -1,    -1,   611,    -1,    -1,   614,    -1,    -1,    -1,
 -      -1,   608,    -1,    -1,   611,    -1,    -1,   614,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   787,    -1,
-       -1,    -1,    -1,    -1,    -1,   787,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,   804,    -1,    -1,    -1,    -1,
-       -1,    -1,   804
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   677,
 -      -1,   677,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,   694,    -1,   694
++      -1,   793,    -1,    -1,    -1,   793,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   810,    -1,
++      -1,    -1,   810
    };
  
    const unsigned short int
    Dhcp6Parser::yystos_[] =
    {
 -       0,    88,    89,    90,    91,    92,    93,    94,    95,    96,
 -      97,    98,   104,   105,   106,   107,   108,   109,   110,   111,
 -     112,   113,   114,   115,     0,     5,     7,     9,    99,   100,
 -     101,   102,   116,   117,   118,   122,     7,   131,     7,   137,
 -       7,   148,     7,   208,     7,   270,     7,   282,     7,   299,
 -       7,   230,     7,   253,     7,   190,   123,   119,   132,   138,
 -     149,   209,   271,   283,   300,   231,   254,   191,   116,   124,
 -     125,    99,   120,   121,    10,    80,    86,    87,    99,   130,
 -     133,   134,   135,   350,   352,   354,    11,    13,    14,    22,
 -      23,    24,    25,    26,    27,    28,    29,    52,    53,    54,
 -      55,    66,    69,    70,    75,    76,    79,   130,   139,   140,
 -     141,   142,   143,   144,   145,   146,   152,   154,   171,   177,
 -     182,   184,   198,   202,   224,   247,   320,   330,   339,   340,
 -     348,    12,   150,     7,    38,    40,    46,    47,    48,    49,
 -      50,    51,    57,    58,    64,   130,   141,   142,   143,   144,
 -     210,   211,   212,   214,   216,   218,   220,   222,   223,   247,
 -     264,   276,   293,   316,    39,   130,   247,   272,   273,   274,
 -      41,    42,    43,    44,    45,   130,   247,   284,   285,   286,
 -     288,   289,   291,   292,    55,    59,    60,    61,    62,    63,
 -     130,   247,   301,   302,   303,   304,   306,   308,   310,   312,
 -     314,    15,    30,    32,    33,    35,    36,    37,   130,   158,
 -     166,   232,   233,   234,   235,   236,   237,   238,   239,   241,
 -     243,   244,   246,    31,    34,   130,   166,   236,   241,   255,
 -     256,   257,   258,   259,   261,   262,   263,    67,    68,   130,
 -     192,   193,   194,   196,     6,     3,     4,     8,     3,   136,
 -     355,   351,   353,     4,     3,     8,   147,   153,   155,     4,
 -       4,     4,     4,     4,   203,   225,   248,   172,   183,   178,
 -     321,   185,   199,   331,     4,   341,   349,     3,     8,   151,
 -       8,   323,   265,   277,   213,   215,   217,     4,     4,   221,
 -     219,   294,   317,     3,     8,   275,     3,     8,   287,     4,
 -     290,     4,     4,     3,     8,   315,   305,   307,   309,   311,
 -     313,     8,     3,   159,   167,     4,   242,   240,   245,     4,
 -       8,     3,   260,     4,     8,     3,   195,   197,     3,     8,
 -     116,   116,    99,     4,     4,     4,     4,   134,     4,     4,
 -       4,   100,   100,   100,   100,   100,     4,     4,     4,     4,
 -       4,     4,     4,     4,     4,     4,   100,     4,     4,   140,
 -       4,    56,   130,   166,   247,   324,   325,   326,   327,   328,
 -       4,     4,     4,     4,     4,   100,   102,     4,     4,     4,
 -       4,   211,     4,   273,     4,   100,     4,   100,   100,   285,
 -       4,     4,     4,     4,     4,     4,   303,     4,     4,   100,
 -       4,     4,     4,   102,   234,     4,   102,   257,     4,     4,
 -     193,     4,     7,     7,   116,   116,     7,     7,     7,     5,
 +       0,   119,   120,   121,   122,   123,   124,   125,   126,   127,
 +     128,   129,   130,   136,   137,   138,   139,   140,   141,   142,
 +     143,   144,   145,   146,   147,   148,     0,     5,     7,     9,
-      131,   132,   133,   134,   149,   150,   151,   155,     7,   162,
-        7,   168,     7,   179,     7,   245,     7,   308,     7,   320,
-        7,   337,     7,   267,     7,   291,     7,   221,     7,   391,
-      156,   152,   163,   169,   180,   246,   309,   321,   338,   268,
-      292,   222,   392,   149,   159,   160,   131,   153,   154,    10,
-      111,   117,   118,   131,   161,   164,   165,   166,   419,   421,
-      423,    11,    13,    14,    22,    23,    24,    25,    26,    27,
++     131,   132,   133,   134,   149,   150,   151,   155,     7,   164,
++       7,   170,     7,   181,     7,   247,     7,   310,     7,   322,
++       7,   339,     7,   269,     7,   293,     7,   223,     7,   393,
++     156,   152,   165,   171,   182,   248,   311,   323,   340,   270,
++     294,   224,   394,   149,   157,   158,   131,   153,   154,    10,
++     111,   117,   118,   131,   163,   166,   167,   168,   421,   423,
++     425,    11,    13,    14,    22,    23,    24,    25,    26,    27,
 +      28,    29,    52,    53,    54,    55,    66,    69,    76,    84,
-       85,    88,   161,   170,   171,   172,   173,   174,   175,   176,
-      177,   183,   185,   202,   208,   213,   215,   229,   239,   261,
-      285,   358,   368,   380,   381,   389,    12,   181,     7,    38,
++      85,    88,   163,   172,   173,   174,   175,   176,   177,   178,
++     179,   185,   187,   204,   210,   215,   217,   231,   241,   263,
++     287,   360,   370,   382,   383,   391,    12,   183,     7,    38,
 +      40,    46,    47,    48,    49,    50,    51,    57,    58,    64,
-      161,   172,   173,   174,   175,   247,   248,   249,   251,   253,
-      255,   257,   259,   260,   285,   302,   314,   331,   354,    39,
-      161,   285,   310,   311,   312,    41,    42,    43,    44,    45,
-      161,   285,   322,   323,   324,   326,   327,   329,   330,    55,
-       59,    60,    61,    62,    63,   161,   285,   339,   340,   341,
-      342,   344,   346,   348,   350,   352,    15,    30,    32,    33,
-       35,    36,    37,   161,   197,   269,   270,   271,   272,   273,
-      274,   275,   277,   279,   281,   282,   284,    31,    34,   161,
-      197,   273,   279,   293,   294,   295,   296,   297,   299,   300,
-      301,    67,    68,   161,   223,   224,   225,   227,    89,    90,
++     163,   174,   175,   176,   177,   249,   250,   251,   253,   255,
++     257,   259,   261,   262,   287,   304,   316,   333,   356,    39,
++     163,   287,   312,   313,   314,    41,    42,    43,    44,    45,
++     163,   287,   324,   325,   326,   328,   329,   331,   332,    55,
++      59,    60,    61,    62,    63,   163,   287,   341,   342,   343,
++     344,   346,   348,   350,   352,   354,    15,    30,    32,    33,
++      35,    36,    37,   163,   199,   271,   272,   273,   274,   275,
++     276,   277,   279,   281,   283,   284,   286,    31,    34,   163,
++     199,   275,   281,   295,   296,   297,   298,   299,   301,   302,
++     303,    67,    68,   163,   225,   226,   227,   229,    89,    90,
 +      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-      101,   102,   103,   161,   393,   394,   395,   396,   398,   400,
-      401,   403,   404,   405,   408,   410,   411,   412,   413,   414,
-      417,     6,     3,     4,     8,     3,   167,   424,   420,   422,
-        4,     3,     8,   178,   184,   186,     4,     4,     4,     4,
-        4,   240,   262,   286,   203,   214,   209,   359,   216,   230,
-      369,     4,   382,   390,     3,     8,   182,     8,   361,   303,
-      315,   250,   252,   254,     4,     4,   258,   256,   332,   355,
-        3,     8,   313,     3,     8,   325,     4,   328,     4,     4,
-        3,     8,   353,   343,   345,   347,   349,   351,     8,     3,
-      276,   198,     4,   280,   278,   283,     4,     8,     3,   298,
-        4,     8,     3,   226,   228,     3,     8,     4,   397,   399,
-        4,   402,     4,     4,   406,   409,     4,     4,     4,     4,
-      415,   418,     3,     8,   149,   149,   131,     4,     4,     4,
-        4,   165,     4,     4,     4,   132,   132,   132,   132,   132,
++     101,   102,   103,   163,   395,   396,   397,   398,   400,   402,
++     403,   405,   406,   407,   410,   412,   413,   414,   415,   416,
++     419,     6,     3,     4,     8,     3,   169,   426,   422,   424,
++       4,     3,     8,   180,   186,   188,     4,     4,     4,     4,
++       4,   242,   264,   288,   205,   216,   211,   361,   218,   232,
++     371,     4,   384,   392,     3,     8,   184,     8,   363,   305,
++     317,   252,   254,   256,     4,     4,   260,   258,   334,   357,
++       3,     8,   315,     3,     8,   327,     4,   330,     4,     4,
++       3,     8,   355,   345,   347,   349,   351,   353,     8,     3,
++     278,   200,     4,   282,   280,   285,     4,     8,     3,   300,
++       4,     8,     3,   228,   230,     3,     8,     4,   399,   401,
++       4,   404,     4,     4,   408,   411,     4,     4,     4,     4,
++     417,   420,     3,     8,   149,   149,   131,     4,     4,     4,
++       4,   167,     4,     4,     4,   132,   132,   132,   132,   132,
 +       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-      132,     4,     4,   171,     4,    56,   161,   197,   285,   362,
-      363,   364,   365,   366,     4,     4,     4,     4,     4,   132,
-      134,     4,     4,     4,     4,   248,     4,   311,     4,   132,
-        4,   132,   132,   323,     4,     4,     4,     4,     4,     4,
-      341,     4,     4,   132,     4,     4,     4,   134,   271,     4,
-      134,   295,     4,     4,   224,   134,     4,     4,   132,     4,
++     132,     4,     4,   173,     4,    56,   163,   199,   287,   364,
++     365,   366,   367,   368,     4,     4,     4,     4,     4,   132,
++     134,     4,     4,     4,     4,   250,     4,   313,     4,   132,
++       4,   132,   132,   325,     4,     4,     4,     4,     4,     4,
++     343,     4,     4,   132,     4,     4,     4,   134,   273,     4,
++     134,   297,     4,     4,   226,   134,     4,     4,   132,     4,
 +     132,   132,     4,     4,   134,   134,   134,   134,     4,     4,
-      394,     4,     7,     7,   149,   149,     7,     7,     7,     5,
-        5,     5,     5,     5,   157,     5,     5,     5,     7,     7,
-        7,     7,   157,   367,     8,     3,     5,     5,   131,   131,
-      131,   131,   131,     5,     7,   131,   131,   131,   157,   157,
-      157,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-      131,   149,   131,   131,   131,   104,   105,   407,   106,   107,
-      108,   109,   110,   134,   416,   131,   149,   170,   112,   425,
-      426,   427,   181,    15,    16,    17,    18,    19,    20,    21,
-      161,   187,   188,   189,   191,   193,   195,   197,   199,   200,
-      201,   187,     7,   241,   242,   243,     7,   263,   264,   265,
-        7,   287,   288,   289,    61,   131,   204,   205,   206,   207,
-      158,    62,   206,   210,   211,   212,   255,   360,     7,   217,
-      218,   219,    70,    71,    72,    73,    74,    75,   231,   232,
-      233,   234,   235,   236,   237,   238,    15,    80,    81,    82,
-       83,   161,   199,   370,   371,   372,   375,   376,   378,   379,
-       86,    87,   383,   384,   385,   387,   393,     4,   364,     7,
-      304,   305,   306,     7,   316,   317,   318,     7,   333,   334,
-      335,    65,   356,     8,   428,     3,     8,     8,   190,   192,
-      194,   196,     4,     4,     4,     3,     8,     8,   244,     6,
-        3,   266,     6,     3,   290,     6,     3,     3,     6,   159,
-        3,     6,     3,     6,   220,     6,     3,     4,     4,     4,
-        4,     4,     4,     3,     8,   373,   377,     4,     4,     4,
-        3,     8,   386,   388,     3,     8,     8,   131,   307,     6,
-        3,   319,     6,     3,   336,     6,     3,   357,     8,     4,
-      426,     4,     4,     4,     4,   134,   132,   134,   188,   247,
-      243,   269,   265,   293,   289,   205,     6,   211,   255,   223,
-      219,   132,   132,   132,   132,   132,   132,   232,     4,     4,
-      132,   132,   132,   371,     4,     4,   384,   310,   306,   322,
-      318,   339,   335,     4,     5,   131,   131,   131,   131,     8,
-        8,     8,     8,    77,    78,    79,   374,   131,   131,   131,
-        8,     8,     8,   131,     7,   429,   430,   431,     3,     6,
-      113,   115,   116,   161,   197,   432,   433,   434,   435,   437,
-      430,   438,     4,   436,     3,     8,     4,   132,     4,   433,
-        5,   131,     7,   439,   440,   441,     3,     6,   114,   442,
-      443,   440,   444,     3,     8,     4,   443,   131
++     396,     4,     7,     7,   149,   149,     7,     7,     7,     5,
+        5,     5,     5,     5,     5,     5,     5,     7,     7,     7,
 -       7,     5,   126,   329,     8,     3,     5,     5,    99,    99,
 -      99,    99,    99,     5,     7,    99,    99,    99,   126,   126,
 -     126,    99,    99,    99,    99,    99,    99,    99,    99,    99,
 -      99,   116,   116,   139,    81,   356,   357,   358,   150,    16,
 -      17,    18,    19,    20,    21,   130,   156,   157,   158,   160,
 -     162,   164,   166,   168,   169,   170,   156,     7,   204,   205,
 -     206,     7,   226,   227,   228,     7,   249,   250,   251,    61,
 -      99,   173,   174,   175,   176,   124,    62,   175,   179,   180,
 -     181,   218,   322,     7,   186,   187,   188,    99,   200,   201,
 -      71,    72,    73,    74,   130,   158,   168,   332,   333,   334,
 -     335,   337,   338,    77,    78,   342,   343,   344,   346,   121,
 -     127,     4,   326,     7,   266,   267,   268,     7,   278,   279,
 -     280,     7,   295,   296,   297,    65,   318,     8,   359,     3,
 -       8,     8,   161,   163,   165,     4,     4,     4,     3,     8,
 -       8,   207,     6,     3,   229,     6,     3,   252,     6,     3,
 -       3,     6,     6,     3,     6,     3,     6,   189,     6,     3,
 -       4,     3,     8,   336,     4,     4,     4,     3,     8,   345,
 -     347,     3,     8,     8,    99,   128,   129,    99,   269,     6,
 -       3,   281,     6,     3,   298,     6,     3,   319,     8,     4,
 -     357,     4,     4,     4,   102,   100,   102,   157,   210,   206,
 -     232,   228,   255,   251,   174,   180,   218,   192,   188,   100,
 -     201,     4,   100,   100,   100,   333,     4,     4,   343,     6,
 -       3,   272,   268,   284,   280,   301,   297,     4,     5,    99,
 -      99,    99,     8,     8,     8,     8,    99,    99,    99,    99,
 -       8,     8,     8,    99,     7,   360,   361,   362,     3,     6,
 -      82,    84,    85,   130,   166,   363,   364,   365,   366,   368,
 -     361,   369,     4,   367,     3,     8,     4,   100,     4,   364,
 -       5,    99,     7,   370,   371,   372,     3,     6,    83,   373,
 -     374,   371,   375,     3,     8,     4,   374,    99
++       7,     5,   159,   369,     8,     3,     5,     5,   131,   131,
++     131,   131,   131,     5,     7,   131,   131,   131,   159,   159,
++     159,   131,   131,   131,   131,   131,   131,   131,   131,   131,
++     131,   149,   131,   131,   131,   104,   105,   409,   106,   107,
++     108,   109,   110,   134,   418,   131,   149,   172,   112,   427,
++     428,   429,   183,    15,    16,    17,    18,    19,    20,    21,
++     163,   189,   190,   191,   193,   195,   197,   199,   201,   202,
++     203,   189,     7,   243,   244,   245,     7,   265,   266,   267,
++       7,   289,   290,   291,    61,   131,   206,   207,   208,   209,
++     157,    62,   208,   212,   213,   214,   257,   362,     7,   219,
++     220,   221,    70,    71,    72,    73,    74,    75,   233,   234,
++     235,   236,   237,   238,   239,   240,    15,    80,    81,    82,
++      83,   163,   201,   372,   373,   374,   377,   378,   380,   381,
++      86,    87,   385,   386,   387,   389,   395,   160,     4,   366,
++       7,   306,   307,   308,     7,   318,   319,   320,     7,   335,
++     336,   337,    65,   358,     8,   430,     3,     8,     8,   192,
++     194,   196,   198,     4,     4,     4,     3,     8,     8,   246,
++       6,     3,   268,     6,     3,   292,     6,     3,     3,     6,
++       6,     3,     6,     3,     6,   222,     6,     3,     4,     4,
++       4,     4,     4,     4,     3,     8,   375,   379,     4,     4,
++       4,     3,     8,   388,   390,     3,     8,     8,   131,   161,
++     162,   131,   309,     6,     3,   321,     6,     3,   338,     6,
++       3,   359,     8,     4,   428,     4,     4,     4,     4,   134,
++     132,   134,   190,   249,   245,   271,   267,   295,   291,   207,
++     213,   257,   225,   221,   132,   132,   132,   132,   132,   132,
++     234,     4,     4,   132,   132,   132,   373,     4,     4,   386,
++       6,     3,   312,   308,   324,   320,   341,   337,     4,     5,
++     131,   131,   131,   131,     8,     8,     8,     8,    77,    78,
++      79,   376,   131,   131,   131,   131,     8,     8,     8,   131,
++       7,   431,   432,   433,     3,     6,   113,   115,   116,   163,
++     199,   434,   435,   436,   437,   439,   432,   440,     4,   438,
++       3,     8,     4,   132,     4,   435,     5,   131,     7,   441,
++     442,   443,     3,     6,   114,   444,   445,   442,   446,     3,
++       8,     4,   445,   131
    };
  
    const unsigned short int
    Dhcp6Parser::yyr1_[] =
    {
 -       0,   103,   105,   104,   106,   104,   107,   104,   108,   104,
 -     109,   104,   110,   104,   111,   104,   112,   104,   113,   104,
 -     114,   104,   115,   104,   116,   116,   116,   116,   116,   116,
 -     116,   117,   119,   118,   120,   120,   121,   121,   123,   122,
 -     124,   124,   125,   125,   127,   126,   128,   128,   129,   129,
 -     130,   132,   131,   133,   133,   134,   134,   134,   134,   134,
 -     136,   135,   138,   137,   139,   139,   140,   140,   140,   140,
 -     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
 -     140,   140,   140,   140,   140,   140,   140,   140,   141,   142,
 -     143,   144,   145,   147,   146,   149,   148,   151,   150,   153,
 -     152,   155,   154,   156,   156,   157,   157,   157,   157,   157,
 -     157,   157,   157,   157,   159,   158,   161,   160,   163,   162,
 -     165,   164,   167,   166,   168,   169,   170,   172,   171,   173,
 -     173,   174,   174,   175,   176,   178,   177,   179,   179,   180,
 -     180,   181,   183,   182,   185,   184,   186,   186,   187,   187,
 -     189,   188,   191,   190,   192,   192,   192,   193,   193,   195,
 -     194,   197,   196,   199,   198,   200,   200,   201,   203,   202,
 -     204,   204,   205,   205,   207,   206,   209,   208,   210,   210,
 -     211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
 -     211,   211,   211,   211,   211,   211,   211,   213,   212,   215,
 -     214,   217,   216,   219,   218,   221,   220,   222,   223,   225,
 -     224,   226,   226,   227,   227,   229,   228,   231,   230,   232,
 -     232,   233,   233,   234,   234,   234,   234,   234,   234,   234,
 -     234,   235,   236,   237,   238,   240,   239,   242,   241,   243,
 -     245,   244,   246,   248,   247,   249,   249,   250,   250,   252,
 -     251,   254,   253,   255,   255,   256,   256,   257,   257,   257,
 -     257,   257,   257,   258,   260,   259,   261,   262,   263,   265,
 -     264,   266,   266,   267,   267,   269,   268,   271,   270,   272,
 -     272,   273,   273,   273,   275,   274,   277,   276,   278,   278,
 -     279,   279,   281,   280,   283,   282,   284,   284,   285,   285,
 -     285,   285,   285,   285,   285,   287,   286,   288,   290,   289,
 -     291,   292,   294,   293,   295,   295,   296,   296,   298,   297,
 -     300,   299,   301,   301,   302,   302,   303,   303,   303,   303,
 -     303,   303,   303,   303,   305,   304,   307,   306,   309,   308,
 -     311,   310,   313,   312,   315,   314,   317,   316,   319,   318,
 -     321,   320,   322,   322,   323,   218,   324,   324,   325,   325,
 -     326,   326,   326,   326,   327,   329,   328,   331,   330,   332,
 -     332,   333,   333,   333,   333,   333,   333,   333,   334,   336,
 -     335,   337,   338,   339,   341,   340,   342,   342,   343,   343,
 -     345,   344,   347,   346,   349,   348,   351,   350,   353,   352,
 -     355,   354,   356,   356,   357,   359,   358,   360,   360,   362,
 -     361,   363,   363,   364,   364,   364,   364,   364,   365,   367,
 -     366,   369,   368,   370,   370,   372,   371,   373,   373,   375,
 -     374
 +       0,   135,   137,   136,   138,   136,   139,   136,   140,   136,
 +     141,   136,   142,   136,   143,   136,   144,   136,   145,   136,
 +     146,   136,   147,   136,   148,   136,   149,   149,   149,   149,
 +     149,   149,   149,   150,   152,   151,   153,   153,   154,   154,
-      156,   155,   158,   157,   159,   159,   160,   160,   161,   163,
-      162,   164,   164,   165,   165,   165,   165,   165,   167,   166,
-      169,   168,   170,   170,   171,   171,   171,   171,   171,   171,
-      171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-      171,   171,   171,   171,   171,   171,   172,   173,   174,   175,
-      176,   178,   177,   180,   179,   182,   181,   184,   183,   186,
-      185,   187,   187,   188,   188,   188,   188,   188,   188,   188,
-      188,   188,   190,   189,   192,   191,   194,   193,   196,   195,
-      198,   197,   199,   200,   201,   203,   202,   204,   204,   205,
-      205,   206,   207,   209,   208,   210,   210,   211,   211,   212,
-      214,   213,   216,   215,   217,   217,   218,   218,   220,   219,
-      222,   221,   223,   223,   223,   224,   224,   226,   225,   228,
-      227,   230,   229,   231,   231,   232,   232,   232,   232,   232,
-      232,   233,   234,   235,   236,   237,   238,   240,   239,   241,
-      241,   242,   242,   244,   243,   246,   245,   247,   247,   248,
-      248,   248,   248,   248,   248,   248,   248,   248,   248,   248,
-      248,   248,   248,   248,   248,   248,   250,   249,   252,   251,
-      254,   253,   256,   255,   258,   257,   259,   260,   262,   261,
-      263,   263,   264,   264,   266,   265,   268,   267,   269,   269,
-      270,   270,   271,   271,   271,   271,   271,   271,   271,   271,
-      272,   273,   274,   276,   275,   278,   277,   280,   279,   281,
-      283,   282,   284,   286,   285,   287,   287,   288,   288,   290,
-      289,   292,   291,   293,   293,   294,   294,   295,   295,   295,
-      295,   295,   295,   296,   298,   297,   299,   300,   301,   303,
-      302,   304,   304,   305,   305,   307,   306,   309,   308,   310,
-      310,   311,   311,   311,   313,   312,   315,   314,   316,   316,
-      317,   317,   319,   318,   321,   320,   322,   322,   323,   323,
-      323,   323,   323,   323,   323,   325,   324,   326,   328,   327,
-      329,   330,   332,   331,   333,   333,   334,   334,   336,   335,
-      338,   337,   339,   339,   340,   340,   341,   341,   341,   341,
-      341,   341,   341,   341,   343,   342,   345,   344,   347,   346,
-      349,   348,   351,   350,   353,   352,   355,   354,   357,   356,
-      359,   358,   360,   360,   361,   255,   362,   362,   363,   363,
-      364,   364,   364,   364,   365,   367,   366,   369,   368,   370,
-      370,   371,   371,   371,   371,   371,   371,   371,   373,   372,
-      374,   374,   374,   375,   377,   376,   378,   379,   380,   382,
-      381,   383,   383,   384,   384,   386,   385,   388,   387,   390,
-      389,   392,   391,   393,   393,   394,   394,   394,   394,   394,
-      394,   394,   394,   394,   394,   394,   394,   394,   394,   394,
-      394,   395,   397,   396,   399,   398,   400,   402,   401,   403,
-      404,   406,   405,   407,   407,   409,   408,   410,   411,   412,
-      413,   415,   414,   416,   416,   416,   416,   416,   418,   417,
-      420,   419,   422,   421,   424,   423,   425,   425,   426,   428,
-      427,   429,   429,   431,   430,   432,   432,   433,   433,   433,
-      433,   433,   434,   436,   435,   438,   437,   439,   439,   441,
-      440,   442,   442,   444,   443
++     156,   155,   157,   157,   158,   158,   160,   159,   161,   161,
++     162,   162,   163,   165,   164,   166,   166,   167,   167,   167,
++     167,   167,   169,   168,   171,   170,   172,   172,   173,   173,
++     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
++     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
++     174,   175,   176,   177,   178,   180,   179,   182,   181,   184,
++     183,   186,   185,   188,   187,   189,   189,   190,   190,   190,
++     190,   190,   190,   190,   190,   190,   192,   191,   194,   193,
++     196,   195,   198,   197,   200,   199,   201,   202,   203,   205,
++     204,   206,   206,   207,   207,   208,   209,   211,   210,   212,
++     212,   213,   213,   214,   216,   215,   218,   217,   219,   219,
++     220,   220,   222,   221,   224,   223,   225,   225,   225,   226,
++     226,   228,   227,   230,   229,   232,   231,   233,   233,   234,
++     234,   234,   234,   234,   234,   235,   236,   237,   238,   239,
++     240,   242,   241,   243,   243,   244,   244,   246,   245,   248,
++     247,   249,   249,   250,   250,   250,   250,   250,   250,   250,
++     250,   250,   250,   250,   250,   250,   250,   250,   250,   250,
++     252,   251,   254,   253,   256,   255,   258,   257,   260,   259,
++     261,   262,   264,   263,   265,   265,   266,   266,   268,   267,
++     270,   269,   271,   271,   272,   272,   273,   273,   273,   273,
++     273,   273,   273,   273,   274,   275,   276,   278,   277,   280,
++     279,   282,   281,   283,   285,   284,   286,   288,   287,   289,
++     289,   290,   290,   292,   291,   294,   293,   295,   295,   296,
++     296,   297,   297,   297,   297,   297,   297,   298,   300,   299,
++     301,   302,   303,   305,   304,   306,   306,   307,   307,   309,
++     308,   311,   310,   312,   312,   313,   313,   313,   315,   314,
++     317,   316,   318,   318,   319,   319,   321,   320,   323,   322,
++     324,   324,   325,   325,   325,   325,   325,   325,   325,   327,
++     326,   328,   330,   329,   331,   332,   334,   333,   335,   335,
++     336,   336,   338,   337,   340,   339,   341,   341,   342,   342,
++     343,   343,   343,   343,   343,   343,   343,   343,   345,   344,
++     347,   346,   349,   348,   351,   350,   353,   352,   355,   354,
++     357,   356,   359,   358,   361,   360,   362,   362,   363,   257,
++     364,   364,   365,   365,   366,   366,   366,   366,   367,   369,
++     368,   371,   370,   372,   372,   373,   373,   373,   373,   373,
++     373,   373,   375,   374,   376,   376,   376,   377,   379,   378,
++     380,   381,   382,   384,   383,   385,   385,   386,   386,   388,
++     387,   390,   389,   392,   391,   394,   393,   395,   395,   396,
++     396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
++     396,   396,   396,   396,   396,   397,   399,   398,   401,   400,
++     402,   404,   403,   405,   406,   408,   407,   409,   409,   411,
++     410,   412,   413,   414,   415,   417,   416,   418,   418,   418,
++     418,   418,   420,   419,   422,   421,   424,   423,   426,   425,
++     427,   427,   428,   430,   429,   431,   431,   433,   432,   434,
++     434,   435,   435,   435,   435,   435,   436,   438,   437,   440,
++     439,   441,   441,   443,   442,   444,   444,   446,   445
    };
  
    const unsigned char
    {
         0,     2,     0,     3,     0,     3,     0,     3,     0,     3,
         0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
 -       0,     3,     0,     3,     1,     1,     1,     1,     1,     1,
 -       1,     1,     0,     4,     0,     1,     3,     5,     0,     4,
 -       0,     1,     1,     3,     0,     4,     0,     1,     1,     3,
 -       2,     0,     4,     1,     3,     1,     1,     1,     1,     1,
 -       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
 +       0,     3,     0,     3,     0,     3,     1,     1,     1,     1,
 +       1,     1,     1,     1,     0,     4,     0,     1,     3,     5,
-        0,     4,     0,     4,     0,     1,     1,     3,     2,     0,
-        4,     1,     3,     1,     1,     1,     1,     1,     0,     6,
-        0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
++       0,     4,     0,     1,     1,     3,     0,     4,     0,     1,
++       1,     3,     2,     0,     4,     1,     3,     1,     1,     1,
++       1,     1,     0,     6,     0,     4,     1,     3,     1,     1,
         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-        3,     0,     6,     0,     4,     0,     4,     0,     6,     0,
-        6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
-        0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
-        1,     1,     1,     0,     6,     1,     3,     1,     1,     1,
-        0,     4,     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,     3,     3,
 -       3,     3,     3,     0,     6,     0,     4,     0,     4,     0,
 -       6,     0,     6,     1,     3,     1,     1,     1,     1,     1,
 -       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
 -       0,     4,     0,     4,     3,     3,     3,     0,     6,     1,
 -       3,     1,     1,     1,     1,     0,     6,     1,     3,     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,     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,     0,     4,     0,
 -       4,     0,     4,     0,     4,     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,     3,     1,     1,     0,     4,     0,     4,     1,
 -       0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
 -       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
 -       1,     1,     1,     1,     0,     4,     1,     1,     3,     0,
 -       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
 -       3,     1,     1,     1,     0,     4,     0,     6,     0,     1,
++       3,     3,     3,     3,     3,     0,     6,     0,     4,     0,
++       4,     0,     6,     0,     6,     1,     3,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-        0,     4,     0,     4,     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,     3,     1,     0,     4,     0,     4,     0,     4,     1,
-        0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
-        4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-        1,     1,     1,     1,     0,     4,     1,     1,     3,     0,
-        6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
-        3,     1,     1,     1,     0,     4,     0,     6,     0,     1,
++       0,     4,     0,     4,     0,     4,     3,     3,     3,     0,
++       6,     1,     3,     1,     1,     1,     1,     0,     6,     1,
++       3,     1,     1,     1,     0,     6,     0,     6,     0,     1,
         1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
--       1,     1,     1,     1,     1,     0,     4,     3,     0,     4,
++       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,
++       0,     4,     0,     4,     0,     4,     0,     4,     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,     0,     4,     0,     4,     0,     4,
--       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
--       0,     6,     1,     3,     0,     4,     0,     1,     1,     3,
--       1,     1,     1,     1,     1,     0,     4,     0,     6,     1,
 -       3,     1,     1,     1,     1,     1,     1,     1,     3,     0,
 -       4,     3,     3,     3,     0,     6,     1,     3,     1,     1,
 -       0,     4,     0,     4,     0,     6,     0,     4,     0,     4,
 -       0,     6,     1,     3,     1,     0,     6,     1,     3,     0,
 -       4,     1,     3,     1,     1,     1,     1,     1,     3,     0,
 -       4,     0,     6,     1,     3,     0,     4,     1,     3,     0,
 -       4
++       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,     0,     4,
-        1,     1,     1,     3,     0,     4,     3,     3,     3,     0,
-        6,     1,     3,     1,     1,     0,     4,     0,     4,     0,
-        6,     0,     4,     1,     3,     1,     1,     1,     1,     1,
++       1,     1,     3,     0,     6,     0,     1,     1,     3,     0,
++       4,     0,     4,     1,     3,     1,     1,     1,     0,     4,
++       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
++       1,     3,     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,     0,     4,
++       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
++       0,     6,     0,     4,     0,     6,     1,     3,     0,     4,
++       0,     1,     1,     3,     1,     1,     1,     1,     1,     0,
++       4,     0,     6,     1,     3,     1,     1,     1,     1,     1,
++       1,     1,     0,     4,     1,     1,     1,     3,     0,     4,
++       3,     3,     3,     0,     6,     1,     3,     1,     1,     0,
++       4,     0,     4,     0,     6,     0,     4,     1,     3,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     3,     0,     4,     0,     4,     3,     0,     4,     3,
-        3,     0,     4,     1,     1,     0,     4,     3,     3,     3,
-        3,     0,     4,     1,     1,     1,     1,     1,     0,     4,
-        0,     4,     0,     4,     0,     6,     1,     3,     1,     0,
-        6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
-        1,     1,     3,     0,     4,     0,     6,     1,     3,     0,
-        4,     1,     3,     0,     4
++       1,     1,     1,     1,     1,     3,     0,     4,     0,     4,
++       3,     0,     4,     3,     3,     0,     4,     1,     1,     0,
++       4,     3,     3,     3,     3,     0,     4,     1,     1,     1,
++       1,     1,     0,     4,     0,     4,     0,     4,     0,     6,
++       1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
++       3,     1,     1,     1,     1,     1,     3,     0,     4,     0,
++       6,     1,     3,     0,     4,     1,     3,     0,     4
    };
  
  
    "\"ip-addresses\"", "\"prefixes\"", "\"duid\"", "\"hw-address\"",
    "\"hostname\"", "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"",
    "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
 -  "\"server-id\"", "\"identifier\"", "\"htype\"", "\"time\"",
 +  "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
 +  "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
 +  "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"server-id\"",
 +  "\"LLT\"", "\"EN\"", "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"",
    "\"enterprise-id\"", "\"dhcp4o6-port\"", "\"control-socket\"",
 -  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"", "\"Logging\"",
 -  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
 -  "\"severity\"", "\"Dhcp4\"", "\"DhcpDdns\"", "TOPLEVEL_JSON",
 -  "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6",
 -  "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEF",
 -  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "\"constant string\"",
 +  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"",
 +  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
 +  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
 +  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
 +  "\"always-include-fqdn\"", "\"allow-client-update\"",
 +  "\"override-no-update\"", "\"override-client-update\"",
 +  "\"replace-client-name\"", "\"generated-prefix\"", "\"UDP\"", "\"TCP\"",
 +  "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"",
 +  "\"when-not-present\"", "\"Logging\"", "\"loggers\"",
 +  "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
 +  "\"Dhcp4\"", "\"DhcpDdns\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6",
 +  "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6",
 +  "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEF", "SUB_OPTION_DATA",
 +  "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "\"constant string\"",
    "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
    "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
 -  "$@11", "value", "sub_json", "map2", "$@12", "map_content",
 -  "not_empty_map", "list_generic", "$@13", "list_content",
 -  "not_empty_list", "list_strings", "$@14", "list_strings_content",
 -  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@15",
 -  "global_objects", "global_object", "dhcp6_object", "$@16", "sub_dhcp6",
 -  "$@17", "global_params", "global_param", "preferred_lifetime",
 +  "$@11", "$@12", "value", "sub_json", "map2", "$@13", "map_content",
-   "not_empty_map", "list_generic", "$@14", "list2", "$@15", "list_content",
-   "not_empty_list", "unknown_map_entry", "syntax_map", "$@16",
++  "not_empty_map", "list_generic", "$@14", "list_content",
++  "not_empty_list", "list_strings", "$@15", "list_strings_content",
++  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@16",
 +  "global_objects", "global_object", "dhcp6_object", "$@17", "sub_dhcp6",
 +  "$@18", "global_params", "global_param", "preferred_lifetime",
    "valid_lifetime", "renew_timer", "rebind_timer",
 -  "decline_probation_period", "interfaces_config", "$@18",
 -  "sub_interfaces6", "$@19", "interface_config_map", "$@20",
 -  "lease_database", "$@21", "hosts_database", "$@22",
 -  "database_map_params", "database_map_param", "type", "$@23", "user",
 -  "$@24", "password", "$@25", "host", "$@26", "name", "$@27", "persist",
 -  "lfc_interval", "readonly", "mac_sources", "$@28", "mac_sources_list",
 -  "mac_sources_value", "duid_id", "string_id",
 -  "host_reservation_identifiers", "$@29",
 +  "decline_probation_period", "interfaces_config", "$@19",
 +  "sub_interfaces6", "$@20", "interface_config_map", "$@21",
 +  "lease_database", "$@22", "hosts_database", "$@23",
 +  "database_map_params", "database_map_param", "database_type", "$@24",
 +  "user", "$@25", "password", "$@26", "host", "$@27", "name", "$@28",
 +  "persist", "lfc_interval", "readonly", "mac_sources", "$@29",
 +  "mac_sources_list", "mac_sources_value", "duid_id", "string_id",
 +  "host_reservation_identifiers", "$@30",
    "host_reservation_identifiers_list", "host_reservation_identifier",
 -  "hw_address_id", "relay_supplied_options", "$@30", "hooks_libraries",
 -  "$@31", "hooks_libraries_list", "not_empty_hooks_libraries_list",
 -  "hooks_library", "$@32", "sub_hooks_library", "$@33", "hooks_params",
 -  "hooks_param", "library", "$@34", "parameters", "$@35",
 -  "expired_leases_processing", "$@36", "expired_leases_params",
 -  "expired_leases_param", "subnet6_list", "$@37", "subnet6_list_content",
 -  "not_empty_subnet6_list", "subnet6", "$@38", "sub_subnet6", "$@39",
 -  "subnet6_params", "subnet6_param", "subnet", "$@40", "interface", "$@41",
 -  "interface_id", "$@42", "client_class", "$@43", "reservation_mode",
 -  "$@44", "id", "rapid_commit", "option_def_list", "$@45",
 -  "option_def_list_content", "not_empty_option_def_list",
 -  "option_def_entry", "$@46", "sub_option_def", "$@47",
 -  "option_def_params", "not_empty_option_def_params", "option_def_param",
 -  "option_def_name", "code", "option_def_code", "option_def_type",
 -  "option_def_record_types", "$@48", "space", "$@49", "option_def_space",
 -  "option_def_encapsulate", "$@50", "option_def_array", "option_data_list",
 -  "$@51", "option_data_list_content", "not_empty_option_data_list",
 -  "option_data_entry", "$@52", "sub_option_data", "$@53",
 +  "hw_address_id", "relay_supplied_options", "$@31", "hooks_libraries",
 +  "$@32", "hooks_libraries_list", "not_empty_hooks_libraries_list",
 +  "hooks_library", "$@33", "sub_hooks_library", "$@34", "hooks_params",
 +  "hooks_param", "library", "$@35", "parameters", "$@36",
 +  "expired_leases_processing", "$@37", "expired_leases_params",
 +  "expired_leases_param", "reclaim_timer_wait_time",
 +  "flush_reclaimed_timer_wait_time", "hold_reclaimed_time",
 +  "max_reclaim_leases", "max_reclaim_time", "unwarned_reclaim_cycles",
 +  "subnet6_list", "$@38", "subnet6_list_content", "not_empty_subnet6_list",
 +  "subnet6", "$@39", "sub_subnet6", "$@40", "subnet6_params",
 +  "subnet6_param", "subnet", "$@41", "interface", "$@42", "interface_id",
 +  "$@43", "client_class", "$@44", "reservation_mode", "$@45", "id",
 +  "rapid_commit", "option_def_list", "$@46", "option_def_list_content",
 +  "not_empty_option_def_list", "option_def_entry", "$@47",
 +  "sub_option_def", "$@48", "option_def_params",
 +  "not_empty_option_def_params", "option_def_param", "option_def_name",
 +  "code", "option_def_code", "option_def_type", "$@49",
 +  "option_def_record_types", "$@50", "space", "$@51", "option_def_space",
 +  "option_def_encapsulate", "$@52", "option_def_array", "option_data_list",
 +  "$@53", "option_data_list_content", "not_empty_option_data_list",
 +  "option_data_entry", "$@54", "sub_option_data", "$@55",
    "option_data_params", "not_empty_option_data_params",
 -  "option_data_param", "option_data_name", "option_data_data", "$@54",
 +  "option_data_param", "option_data_name", "option_data_data", "$@56",
    "option_data_code", "option_data_space", "option_data_csv_format",
 -  "pools_list", "$@55", "pools_list_content", "not_empty_pools_list",
 -  "pool_list_entry", "$@56", "sub_pool6", "$@57", "pool_params",
 -  "pool_param", "pool_entry", "$@58", "pd_pools_list", "$@59",
 +  "pools_list", "$@57", "pools_list_content", "not_empty_pools_list",
 +  "pool_list_entry", "$@58", "sub_pool6", "$@59", "pool_params",
 +  "pool_param", "pool_entry", "$@60", "pd_pools_list", "$@61",
    "pd_pools_list_content", "not_empty_pd_pools_list", "pd_pool_entry",
 -  "$@60", "sub_pd_pool", "$@61", "pd_pool_params", "pd_pool_param",
 -  "pd_prefix", "$@62", "pd_prefix_len", "excluded_prefix", "$@63",
 -  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@64",
 +  "$@62", "sub_pd_pool", "$@63", "pd_pool_params", "pd_pool_param",
 +  "pd_prefix", "$@64", "pd_prefix_len", "excluded_prefix", "$@65",
 +  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@66",
    "reservations_list", "not_empty_reservations_list", "reservation",
 -  "$@65", "sub_reservation", "$@66", "reservation_params",
 +  "$@67", "sub_reservation", "$@68", "reservation_params",
    "not_empty_reservation_params", "reservation_param", "ip_addresses",
 -  "$@67", "prefixes", "$@68", "duid", "$@69", "hw_address", "$@70",
 -  "hostname", "$@71", "reservation_client_classes", "$@72", "relay",
 -  "$@73", "relay_map", "$@74", "client_classes", "$@75",
 -  "client_classes_list", "$@76", "client_class_params",
 +  "$@69", "prefixes", "$@70", "duid", "$@71", "hw_address", "$@72",
 +  "hostname", "$@73", "reservation_client_classes", "$@74", "relay",
 +  "$@75", "relay_map", "$@76", "client_classes", "$@77",
 +  "client_classes_list", "$@78", "client_class_params",
    "not_empty_client_class_params", "client_class_param",
 -  "client_class_name", "client_class_test", "$@77", "server_id", "$@78",
 -  "server_id_params", "server_id_param", "htype", "identifier", "$@79",
 -  "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@80",
 -  "control_socket_params", "control_socket_param", "socket_type", "$@81",
 -  "socket_name", "$@82", "dhcp_ddns", "$@83", "dhcp4_json_object", "$@84",
 -  "dhcpddns_json_object", "$@85", "logging_object", "$@86",
 -  "logging_params", "logging_param", "loggers", "$@87", "loggers_entries",
 -  "logger_entry", "$@88", "logger_params", "logger_param", "debuglevel",
 -  "severity", "$@89", "output_options_list", "$@90",
 -  "output_options_list_content", "output_entry", "$@91", "output_params",
 -  "output_param", "$@92", YY_NULLPTR
 +  "client_class_name", "client_class_test", "$@79", "server_id", "$@80",
 +  "server_id_params", "server_id_param", "server_id_type", "$@81",
 +  "duid_type", "htype", "identifier", "$@82", "time", "enterprise_id",
 +  "dhcp4o6_port", "control_socket", "$@83", "control_socket_params",
 +  "control_socket_param", "socket_type", "$@84", "socket_name", "$@85",
 +  "dhcp_ddns", "$@86", "sub_dhcp_ddns", "$@87", "dhcp_ddns_params",
 +  "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@88",
 +  "server_ip", "$@89", "server_port", "sender_ip", "$@90", "sender_port",
 +  "max_queue_size", "ncr_protocol", "$@91", "ncr_protocol_value",
 +  "ncr_format", "$@92", "always_include_fqdn", "allow_client_update",
 +  "override_no_update", "override_client_update", "replace_client_name",
 +  "$@93", "replace_client_name_value", "generated_prefix", "$@94",
 +  "dhcp4_json_object", "$@95", "dhcpddns_json_object", "$@96",
 +  "logging_object", "$@97", "logging_params", "logging_param", "loggers",
 +  "$@98", "loggers_entries", "logger_entry", "$@99", "logger_params",
 +  "logger_param", "debuglevel", "severity", "$@100", "output_options_list",
 +  "$@101", "output_options_list_content", "output_entry", "$@102",
 +  "output_params", "output_param", "$@103", YY_NULLPTR
    };
  
  #if PARSER6_DEBUG
    const unsigned short int
    Dhcp6Parser::yyrline_[] =
    {
 -       0,   198,   198,   198,   199,   199,   200,   200,   201,   201,
 -     202,   202,   203,   203,   204,   204,   205,   205,   206,   206,
 -     207,   207,   208,   208,   216,   217,   218,   219,   220,   221,
 -     222,   225,   230,   230,   242,   243,   246,   250,   257,   257,
 -     264,   265,   268,   272,   279,   279,   286,   287,   290,   294,
 -     305,   315,   315,   327,   328,   332,   333,   334,   335,   336,
 -     339,   339,   356,   356,   364,   365,   370,   371,   372,   373,
 -     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
 -     384,   385,   386,   387,   388,   389,   390,   391,   394,   399,
 -     404,   409,   414,   419,   419,   429,   429,   437,   437,   447,
 -     447,   457,   457,   467,   468,   471,   472,   473,   474,   475,
 -     476,   477,   478,   479,   482,   482,   490,   490,   498,   498,
 -     506,   506,   514,   514,   522,   527,   532,   537,   537,   547,
 -     548,   551,   552,   555,   560,   565,   565,   575,   576,   579,
 -     580,   583,   590,   590,   600,   600,   610,   611,   614,   615,
 -     618,   618,   626,   626,   634,   635,   636,   639,   640,   643,
 -     643,   651,   651,   659,   659,   669,   670,   676,   684,   684,
 -     697,   698,   701,   702,   709,   709,   732,   732,   741,   742,
 -     746,   747,   748,   749,   750,   751,   752,   753,   754,   755,
 -     756,   757,   758,   759,   760,   761,   762,   765,   765,   773,
 -     773,   781,   781,   789,   789,   797,   797,   805,   810,   819,
 -     819,   831,   832,   835,   836,   841,   841,   852,   852,   862,
 -     863,   866,   867,   870,   871,   872,   873,   874,   875,   876,
 -     877,   880,   882,   887,   889,   891,   891,   899,   899,   907,
 -     909,   909,   917,   926,   926,   938,   939,   944,   945,   950,
 -     950,   961,   961,   972,   973,   978,   979,   984,   985,   986,
 -     987,   988,   989,   992,   994,   994,  1002,  1004,  1006,  1014,
 -    1014,  1026,  1027,  1030,  1031,  1034,  1034,  1042,  1042,  1050,
 -    1051,  1054,  1055,  1056,  1059,  1059,  1070,  1070,  1082,  1083,
 -    1086,  1087,  1090,  1090,  1098,  1098,  1106,  1107,  1110,  1111,
 -    1112,  1113,  1114,  1115,  1116,  1119,  1119,  1127,  1132,  1132,
 -    1140,  1145,  1153,  1153,  1163,  1164,  1167,  1168,  1171,  1171,
 -    1179,  1179,  1187,  1188,  1191,  1192,  1196,  1197,  1198,  1199,
 -    1200,  1201,  1202,  1203,  1206,  1206,  1216,  1216,  1226,  1226,
 -    1234,  1234,  1242,  1242,  1250,  1250,  1263,  1263,  1273,  1273,
 -    1284,  1284,  1294,  1295,  1298,  1298,  1306,  1307,  1310,  1311,
 -    1314,  1315,  1316,  1317,  1320,  1322,  1322,  1333,  1333,  1343,
 -    1344,  1347,  1348,  1349,  1350,  1351,  1352,  1353,  1356,  1361,
 -    1361,  1369,  1374,  1381,  1388,  1388,  1398,  1399,  1402,  1403,
 -    1406,  1406,  1414,  1414,  1424,  1424,  1436,  1436,  1443,  1443,
 -    1455,  1455,  1468,  1469,  1473,  1477,  1477,  1489,  1490,  1494,
 -    1494,  1502,  1503,  1506,  1507,  1508,  1509,  1510,  1513,  1517,
 -    1517,  1525,  1525,  1535,  1536,  1539,  1539,  1547,  1548,  1551,
 -    1551
 +       0,   213,   213,   213,   214,   214,   215,   215,   216,   216,
 +     217,   217,   218,   218,   219,   219,   220,   220,   221,   221,
 +     222,   222,   223,   223,   224,   224,   232,   233,   234,   235,
 +     236,   237,   238,   241,   246,   246,   258,   259,   262,   266,
-      273,   273,   281,   281,   288,   289,   292,   296,   307,   317,
-      317,   329,   330,   334,   335,   336,   337,   338,   341,   341,
-      358,   358,   366,   367,   372,   373,   374,   375,   376,   377,
-      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
-      388,   389,   390,   391,   392,   393,   396,   401,   406,   411,
-      416,   421,   421,   431,   431,   439,   439,   449,   449,   459,
-      459,   469,   470,   473,   474,   475,   476,   477,   478,   479,
-      480,   481,   484,   484,   492,   492,   500,   500,   508,   508,
-      516,   516,   524,   529,   534,   539,   539,   549,   550,   553,
-      554,   557,   562,   567,   567,   577,   578,   581,   582,   585,
-      590,   590,   600,   600,   610,   611,   614,   615,   618,   618,
-      626,   626,   634,   635,   636,   639,   640,   643,   643,   651,
-      651,   659,   659,   669,   670,   673,   674,   675,   676,   677,
-      678,   681,   686,   691,   696,   701,   706,   714,   714,   727,
-      728,   731,   732,   739,   739,   762,   762,   771,   772,   776,
-      777,   778,   779,   780,   781,   782,   783,   784,   785,   786,
-      787,   788,   789,   790,   791,   792,   795,   795,   803,   803,
-      811,   811,   819,   819,   827,   827,   835,   840,   849,   849,
-      861,   862,   865,   866,   871,   871,   882,   882,   892,   893,
-      896,   897,   900,   901,   902,   903,   904,   905,   906,   907,
-      910,   912,   917,   919,   919,   927,   927,   935,   935,   943,
-      945,   945,   953,   962,   962,   974,   975,   980,   981,   986,
-      986,   997,   997,  1008,  1009,  1014,  1015,  1020,  1021,  1022,
-     1023,  1024,  1025,  1028,  1030,  1030,  1038,  1040,  1042,  1050,
-     1050,  1062,  1063,  1066,  1067,  1070,  1070,  1078,  1078,  1086,
-     1087,  1090,  1091,  1092,  1095,  1095,  1106,  1106,  1118,  1119,
-     1122,  1123,  1126,  1126,  1134,  1134,  1142,  1143,  1146,  1147,
-     1148,  1149,  1150,  1151,  1152,  1155,  1155,  1163,  1168,  1168,
-     1176,  1181,  1189,  1189,  1199,  1200,  1203,  1204,  1207,  1207,
-     1215,  1215,  1223,  1224,  1227,  1228,  1232,  1233,  1234,  1235,
-     1236,  1237,  1238,  1239,  1242,  1242,  1252,  1252,  1262,  1262,
-     1270,  1270,  1278,  1278,  1286,  1286,  1299,  1299,  1309,  1309,
-     1320,  1320,  1330,  1331,  1334,  1334,  1342,  1343,  1346,  1347,
-     1350,  1351,  1352,  1353,  1356,  1358,  1358,  1369,  1369,  1379,
-     1380,  1383,  1384,  1385,  1386,  1387,  1388,  1389,  1392,  1392,
-     1399,  1400,  1401,  1404,  1409,  1409,  1417,  1422,  1429,  1436,
-     1436,  1446,  1447,  1450,  1451,  1454,  1454,  1462,  1462,  1472,
-     1472,  1482,  1482,  1490,  1491,  1494,  1495,  1496,  1497,  1498,
-     1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,  1507,  1508,
-     1509,  1512,  1517,  1517,  1525,  1525,  1533,  1538,  1538,  1546,
-     1551,  1556,  1556,  1564,  1565,  1568,  1568,  1576,  1581,  1586,
-     1591,  1596,  1596,  1604,  1607,  1610,  1613,  1616,  1622,  1622,
-     1632,  1632,  1639,  1639,  1651,  1651,  1664,  1665,  1669,  1673,
-     1673,  1685,  1686,  1690,  1690,  1698,  1699,  1702,  1703,  1704,
-     1705,  1706,  1709,  1713,  1713,  1721,  1721,  1731,  1732,  1735,
-     1735,  1743,  1744,  1747,  1747
++     273,   273,   280,   281,   284,   288,   295,   295,   302,   303,
++     306,   310,   321,   331,   331,   343,   344,   348,   349,   350,
++     351,   352,   355,   355,   372,   372,   380,   381,   386,   387,
++     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
++     398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
++     410,   415,   420,   425,   430,   435,   435,   445,   445,   453,
++     453,   463,   463,   473,   473,   483,   484,   487,   488,   489,
++     490,   491,   492,   493,   494,   495,   498,   498,   506,   506,
++     514,   514,   522,   522,   530,   530,   538,   543,   548,   553,
++     553,   563,   564,   567,   568,   571,   576,   581,   581,   591,
++     592,   595,   596,   599,   606,   606,   616,   616,   626,   627,
++     630,   631,   634,   634,   642,   642,   650,   651,   652,   655,
++     656,   659,   659,   667,   667,   675,   675,   685,   686,   689,
++     690,   691,   692,   693,   694,   697,   702,   707,   712,   717,
++     722,   730,   730,   743,   744,   747,   748,   755,   755,   778,
++     778,   787,   788,   792,   793,   794,   795,   796,   797,   798,
++     799,   800,   801,   802,   803,   804,   805,   806,   807,   808,
++     811,   811,   819,   819,   827,   827,   835,   835,   843,   843,
++     851,   856,   865,   865,   877,   878,   881,   882,   887,   887,
++     898,   898,   908,   909,   912,   913,   916,   917,   918,   919,
++     920,   921,   922,   923,   926,   928,   933,   935,   935,   943,
++     943,   951,   951,   959,   961,   961,   969,   978,   978,   990,
++     991,   996,   997,  1002,  1002,  1013,  1013,  1024,  1025,  1030,
++    1031,  1036,  1037,  1038,  1039,  1040,  1041,  1044,  1046,  1046,
++    1054,  1056,  1058,  1066,  1066,  1078,  1079,  1082,  1083,  1086,
++    1086,  1094,  1094,  1102,  1103,  1106,  1107,  1108,  1111,  1111,
++    1122,  1122,  1134,  1135,  1138,  1139,  1142,  1142,  1150,  1150,
++    1158,  1159,  1162,  1163,  1164,  1165,  1166,  1167,  1168,  1171,
++    1171,  1179,  1184,  1184,  1192,  1197,  1205,  1205,  1215,  1216,
++    1219,  1220,  1223,  1223,  1231,  1231,  1239,  1240,  1243,  1244,
++    1248,  1249,  1250,  1251,  1252,  1253,  1254,  1255,  1258,  1258,
++    1268,  1268,  1278,  1278,  1286,  1286,  1294,  1294,  1302,  1302,
++    1315,  1315,  1325,  1325,  1336,  1336,  1346,  1347,  1350,  1350,
++    1358,  1359,  1362,  1363,  1366,  1367,  1368,  1369,  1372,  1374,
++    1374,  1385,  1385,  1395,  1396,  1399,  1400,  1401,  1402,  1403,
++    1404,  1405,  1408,  1408,  1415,  1416,  1417,  1420,  1425,  1425,
++    1433,  1438,  1445,  1452,  1452,  1462,  1463,  1466,  1467,  1470,
++    1470,  1478,  1478,  1488,  1488,  1498,  1498,  1506,  1507,  1510,
++    1511,  1512,  1513,  1514,  1515,  1516,  1517,  1518,  1519,  1520,
++    1521,  1522,  1523,  1524,  1525,  1528,  1533,  1533,  1541,  1541,
++    1549,  1554,  1554,  1562,  1567,  1572,  1572,  1580,  1581,  1584,
++    1584,  1592,  1597,  1602,  1607,  1612,  1612,  1620,  1623,  1626,
++    1629,  1632,  1638,  1638,  1648,  1648,  1655,  1655,  1667,  1667,
++    1680,  1681,  1685,  1689,  1689,  1701,  1702,  1706,  1706,  1714,
++    1715,  1718,  1719,  1720,  1721,  1722,  1725,  1729,  1729,  1737,
++    1737,  1747,  1748,  1751,  1751,  1759,  1760,  1763,  1763
    };
  
    // Print the state stack on the debug stream.
  
  #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
  } } // isc::dhcp
- #line 4015 "dhcp6_parser.cc" // lalr1.cc:1167
- #line 1755 "dhcp6_parser.yy" // lalr1.cc:1168
 -#line 3533 "dhcp6_parser.cc" // lalr1.cc:1167
 -#line 1559 "dhcp6_parser.yy" // lalr1.cc:1168
++#line 4041 "dhcp6_parser.cc" // lalr1.cc:1167
++#line 1771 "dhcp6_parser.yy" // lalr1.cc:1168
  
  
  void
index e2831259f4b26cf350ac4b2e0103a985d01edb3e,2653ebe498732e0dffc1892e57210a10cb81fe1d..bc68614923dda835306577026e9669f5d37bb434
@@@ -1327,12 -1164,12 +1327,12 @@@ namespace isc { namespace dhcp 
      enum
      {
        yyeof_ = 0,
-       yylast_ = 742,     ///< Last index in yytable_.
-       yynnts_ = 310,  ///< Number of nonterminal symbols.
 -      yylast_ = 638,     ///< Last index in yytable_.
 -      yynnts_ = 273,  ///< Number of nonterminal symbols.
 -      yyfinal_ = 24, ///< Termination state number.
++      yylast_ = 752,     ///< Last index in yytable_.
++      yynnts_ = 312,  ///< Number of nonterminal symbols.
 +      yyfinal_ = 26, ///< Termination state number.
        yyterror_ = 1,
        yyerrcode_ = 256,
 -      yyntokens_ = 103  ///< Number of tokens.
 +      yyntokens_ = 135  ///< Number of tokens.
      };
  
  
    {
        switch (other.type_get ())
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          value.copy< ElementPtr > (other.value);
          break;
  
      (void) v;
        switch (this->type_get ())
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          value.copy< ElementPtr > (v);
          break;
  
      // Type destructor.
      switch (yytype)
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          value.template destroy< ElementPtr > ();
          break;
  
      super_type::move(s);
        switch (this->type_get ())
      {
 -      case 116: // value
 +      case 149: // value
-       case 374: // duid_type
-       case 407: // ncr_protocol_value
-       case 416: // replace_client_name_value
++      case 376: // duid_type
++      case 409: // ncr_protocol_value
++      case 418: // replace_client_name_value
          value.move< ElementPtr > (s.value);
          break;
  
    }
  
  
- #line 14 "dhcp6_parser.yy" // lalr1.cc:377
+ #line 14 "dhcp6_parser.yy" // lalr1.cc:392
  } } // isc::dhcp
- #line 2508 "dhcp6_parser.h" // lalr1.cc:377
 -#line 2135 "dhcp6_parser.h" // lalr1.cc:392
++#line 2508 "dhcp6_parser.h" // lalr1.cc:392
  
  
  
Simple merge
index 16cc495ae1fbd1a902589450c0dfb19a48ca7152,923c06007c1bb4d446644117a63c35ae1e0ee10a..ab578b49ce3c5cc6774894bc67b06efb95c30b7b
@@@ -715,11 -720,12 +715,10 @@@ DhcpConfigParser* createGlobal6DhcpConf
      } else if (config_id.compare("relay-supplied-options") == 0) {
          parser = new RSOOListConfigParser(config_id);
      // control-socket has been converted to SimpleParser.
 -    } else if (config_id.compare("expired-leases-processing") == 0) {
 -        parser = new ExpirationConfigParser();
 +    // expired-leases-processing has been converted to SimpleParser.
-     } else if (config_id.compare("client-classes") == 0) {
-         parser = new ClientClassDefListParser(config_id, globalContext());
+     // client-classes has been converted to SimpleParser.
 -    } else if (config_id.compare("server-id") == 0) {
 -        parser = new DUIDConfigParser();
      // host-reservation-identifiers have been converted to SimpleParser already.
 +    // server-id has been migrated to SimpleParser
      } else {
          isc_throw(DhcpConfigError,
                  "unsupported global configuration parameter: "
@@@ -836,8 -842,8 +835,7 @@@ configureDhcp6Server(Dhcpv6Srv&, isc::d
      // Please do not change this order!
      ParserCollection independent_parsers;
      ParserPtr subnet_parser;
 -    ParserPtr iface_parser;
      ParserPtr leases_parser;
-     ParserPtr client_classes_parser;
  
      // Some of the parsers alter state of the system that can't easily
      // be undone. (Or alter it in a way such that undoing the change
                  continue;
              }
  
 +            if (config_pair.first == "server-id") {
 +                DUIDConfigParser parser;
 +                const CfgDUIDPtr& cfg = CfgMgr::instance().getStagingCfg()->getCfgDUID();
 +                parser.parse(cfg, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "interfaces-config") {
 +                IfacesConfigParser parser(AF_INET6);
 +                CfgIfacePtr cfg_iface = CfgMgr::instance().getStagingCfg()->getCfgIface();
 +                parser.parse(cfg_iface, config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "expired-leases-processing") {
 +                ExpirationConfigParser parser;
 +                parser.parse(config_pair.second);
 +                continue;
 +            }
 +
 +            if (config_pair.first == "hooks-libraries") {
 +                hooks_parser.parse(config_pair.second);
 +                hooks_parser.verifyLibraries();
 +                continue;
 +            }
 +
 +            if (config_pair.first == "dhcp-ddns") {
 +                // Apply defaults if not in short cut
 +                if (!D2ClientConfigParser::isShortCutDisabled(config_pair.second)) {
 +                    D2ClientConfigParser::setAllDefaults(config_pair.second);
 +                }
 +                D2ClientConfigParser parser;
 +                D2ClientConfigPtr cfg = parser.parse(config_pair.second);
 +                CfgMgr::instance().getStagingCfg()->setD2ClientConfig(cfg);
 +                continue;
 +            }
 +
+             if (config_pair.first =="client-classes") {
+                 ClientClassDefListParser parser;
+                 ClientClassDictionaryPtr dictionary =
+                     parser.parse(config_pair.second, AF_INET6);
+                 CfgMgr::instance().getStagingCfg()->setClientClassDictionary(dictionary);
+                 continue;
+             }
              ParserPtr parser(createGlobal6DhcpConfigParser(config_pair.first,
                                                             config_pair.second));
              LOG_DEBUG(dhcp6_logger, DBG_DHCP6_DETAIL, DHCP6_PARSER_CREATED)
                  subnet_parser = parser;
              } else if (config_pair.first == "lease-database") {
                  leases_parser = parser;
-             } else if (config_pair.first == "client-classes") {
-                 client_classes_parser = parser;
 -            } else if (config_pair.first == "hooks-libraries") {
 -                // Executing the commit will alter currently loaded hooks
 -                // libraries. Check if the supplied libraries are valid,
 -                // but defer the commit until after everything else has
 -                // committed.
 -                hooks_parser = parser;
 -                hooks_parser->build(config_pair.second);
 -            } else if (config_pair.first == "interfaces-config") {
 -                // The interface parser is independent from any other parser and
 -                // can be run here before other parsers.
 -                parser->build(config_pair.second);
 -                iface_parser = parser;
              } else {
                  // Those parsers should be started before other
                  // parsers so we can call build straight away.
Simple merge