]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Finished merge of trac5035 (migrate lease expiration config)
authorFrancis Dupont <fdupont@isc.org>
Tue, 10 Jan 2017 22:24:39 +0000 (23:24 +0100)
committerFrancis Dupont <fdupont@isc.org>
Tue, 10 Jan 2017 22:24:39 +0000 (23:24 +0100)
20 files changed:
1  2 
src/bin/dhcp4/dhcp4_lexer.ll
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/location.hh
src/bin/dhcp4/parser_context.cc
src/bin/dhcp4/parser_context.h
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_lexer.ll
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/location.hh
src/bin/dhcp6/parser_context.cc
src/bin/dhcp6/parser_context.h
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

Simple merge
index 3982ab71b79fe8193367d8ff4fcea5330e7143c9,b8cb2aec813df0a82d70a73652bd162a6e71d069..c8d7c9041ea315e68d590490dd2988fcea58fefd
@@@ -253,24 -253,23 +253,24 @@@ namespace isc { namespace dhcp 
    {
        switch (that.type_get ())
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          value.move< ElementPtr > (that.value);
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          value.move< bool > (that.value);
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          value.move< double > (that.value);
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          value.move< int64_t > (that.value);
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          value.move< std::string > (that.value);
          break;
  
      state = that.state;
        switch (that.type_get ())
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          value.copy< ElementPtr > (that.value);
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          value.copy< bool > (that.value);
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          value.copy< double > (that.value);
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          value.copy< int64_t > (that.value);
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          value.copy< std::string > (that.value);
          break;
  
          << yysym.location << ": ";
      switch (yytype)
      {
-             case 100: // "constant string"
 -            case 104: // "constant string"
++            case 106: // "constant string"
  
- #line 192 "dhcp4_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp4_parser.yy" // lalr1.cc:636
++#line 198 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< std::string > (); }
 -#line 352 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 354 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
  
- #line 192 "dhcp4_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp4_parser.yy" // lalr1.cc:636
++#line 198 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< int64_t > (); }
 -#line 359 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 361 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
  
- #line 192 "dhcp4_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp4_parser.yy" // lalr1.cc:636
++#line 198 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< double > (); }
 -#line 366 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 368 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
  
- #line 192 "dhcp4_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp4_parser.yy" // lalr1.cc:636
++#line 198 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< bool > (); }
 -#line 373 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 375 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
-       case 116: // value
 -      case 120: // value
++      case 122: // value
  
- #line 192 "dhcp4_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp4_parser.yy" // lalr1.cc:636
++#line 198 "dhcp4_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< ElementPtr > (); }
 -#line 380 "dhcp4_parser.cc" // lalr1.cc:636
 +#line 382 "dhcp4_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 155: // socket_type
++      case 161: // socket_type
 +
- #line 192 "dhcp4_parser.yy" // lalr1.cc:636
++#line 198 "dhcp4_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 389 "dhcp4_parser.cc" // lalr1.cc:636
          break;
  
  
           when using variants.  */
          switch (yyr1_[yyn])
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          yylhs.value.build< ElementPtr > ();
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          yylhs.value.build< bool > ();
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          yylhs.value.build< double > ();
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          yylhs.value.build< int64_t > ();
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          yylhs.value.build< std::string > ();
          break;
  
            switch (yyn)
              {
    case 2:
- #line 201 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 204 "dhcp4_parser.yy" // lalr1.cc:859
++#line 207 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.NO_KEYWORD; }
 -#line 620 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 630 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 4:
- #line 202 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 205 "dhcp4_parser.yy" // lalr1.cc:859
++#line 208 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.CONFIG; }
 -#line 626 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 636 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 6:
- #line 203 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 206 "dhcp4_parser.yy" // lalr1.cc:859
++#line 209 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.DHCP4; }
 -#line 632 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 642 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 8:
- #line 204 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 207 "dhcp4_parser.yy" // lalr1.cc:859
++#line 210 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 -#line 638 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 648 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 10:
- #line 205 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 208 "dhcp4_parser.yy" // lalr1.cc:859
++#line 211 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.SUBNET4; }
 -#line 644 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 654 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 12:
- #line 206 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 209 "dhcp4_parser.yy" // lalr1.cc:859
++#line 212 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.POOLS; }
 -#line 650 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 660 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 14:
- #line 207 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 210 "dhcp4_parser.yy" // lalr1.cc:859
++#line 213 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.RESERVATIONS; }
 -#line 656 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 666 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 16:
- #line 208 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 211 "dhcp4_parser.yy" // lalr1.cc:859
++#line 214 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.OPTION_DEF; }
 -#line 662 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 672 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 18:
- #line 209 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 212 "dhcp4_parser.yy" // lalr1.cc:859
++#line 215 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.OPTION_DATA; }
 -#line 668 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 678 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 20:
- #line 210 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 213 "dhcp4_parser.yy" // lalr1.cc:859
++#line 216 "dhcp4_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 -#line 674 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 684 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 22:
- #line 218 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 221 "dhcp4_parser.yy" // lalr1.cc:859
++#line 224 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 680 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 690 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 23:
- #line 219 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 222 "dhcp4_parser.yy" // lalr1.cc:859
++#line 225 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 686 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 696 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 24:
- #line 220 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 223 "dhcp4_parser.yy" // lalr1.cc:859
++#line 226 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 692 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 702 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 25:
- #line 221 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 224 "dhcp4_parser.yy" // lalr1.cc:859
++#line 227 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 698 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 708 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 26:
- #line 222 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 225 "dhcp4_parser.yy" // lalr1.cc:859
++#line 228 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 -#line 704 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 714 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 27:
- #line 223 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 226 "dhcp4_parser.yy" // lalr1.cc:859
++#line 229 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 -#line 710 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 720 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 28:
- #line 224 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 227 "dhcp4_parser.yy" // lalr1.cc:859
++#line 230 "dhcp4_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 -#line 716 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 726 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 29:
- #line 227 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 230 "dhcp4_parser.yy" // lalr1.cc:859
++#line 233 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Push back the JSON value on the stack
      ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 30:
- #line 232 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 235 "dhcp4_parser.yy" // lalr1.cc:859
++#line 238 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      break;
  
    case 31:
- #line 237 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 240 "dhcp4_parser.yy" // lalr1.cc:859
++#line 243 "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
      break;
  
    case 34:
- #line 248 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 251 "dhcp4_parser.yy" // lalr1.cc:859
++#line 254 "dhcp4_parser.yy" // lalr1.cc:859
      {
                    // map containing a single entry
                    ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 35:
- #line 252 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 255 "dhcp4_parser.yy" // lalr1.cc:859
++#line 258 "dhcp4_parser.yy" // lalr1.cc:859
      {
                    // map consisting of a shorter map followed by
                    // comma and string:value
      break;
  
    case 36:
- #line 259 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 262 "dhcp4_parser.yy" // lalr1.cc:859
++#line 265 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(l);
      break;
  
    case 37:
- #line 262 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 265 "dhcp4_parser.yy" // lalr1.cc:859
++#line 268 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // list parsing complete. Put any sanity checking here
  }
      break;
  
    case 38:
- #line 267 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 270 "dhcp4_parser.yy" // lalr1.cc:859
++#line 273 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // List parsing about to start
  }
      break;
  
    case 39:
- #line 269 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 272 "dhcp4_parser.yy" // lalr1.cc:859
++#line 275 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // list parsing complete. Put any sanity checking here
      //ctx.stack_.pop_back();
      break;
  
    case 42:
- #line 278 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 281 "dhcp4_parser.yy" // lalr1.cc:859
++#line 284 "dhcp4_parser.yy" // lalr1.cc:859
      {
                    // List consisting of a single element.
                    ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 43:
- #line 282 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 285 "dhcp4_parser.yy" // lalr1.cc:859
++#line 288 "dhcp4_parser.yy" // lalr1.cc:859
      {
                    // List ending with , and a value.
                    ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 44:
- #line 293 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 296 "dhcp4_parser.yy" // lalr1.cc:859
++#line 299 "dhcp4_parser.yy" // lalr1.cc:859
      {
      const std::string& where = ctx.contextName();
      const std::string& keyword = yystack_[1].value.as< std::string > ();
      break;
  
    case 45:
- #line 303 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 306 "dhcp4_parser.yy" // lalr1.cc:859
++#line 309 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      break;
  
    case 46:
- #line 308 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 311 "dhcp4_parser.yy" // lalr1.cc:859
++#line 314 "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
      break;
  
    case 54:
- #line 327 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 330 "dhcp4_parser.yy" // lalr1.cc:859
++#line 333 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      break;
  
    case 55:
- #line 334 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 337 "dhcp4_parser.yy" // lalr1.cc:859
++#line 340 "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
      break;
  
    case 56:
- #line 344 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 347 "dhcp4_parser.yy" // lalr1.cc:859
++#line 350 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the Dhcp4 map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      break;
  
    case 57:
- #line 348 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 351 "dhcp4_parser.yy" // lalr1.cc:859
++#line 354 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
      break;
  
    case 82:
- #line 382 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 385 "dhcp4_parser.yy" // lalr1.cc:859
++#line 388 "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);
      break;
  
    case 83:
- #line 387 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 390 "dhcp4_parser.yy" // lalr1.cc:859
++#line 393 "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);
      break;
  
    case 84:
- #line 392 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 395 "dhcp4_parser.yy" // lalr1.cc:859
++#line 398 "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);
      break;
  
    case 85:
- #line 397 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 400 "dhcp4_parser.yy" // lalr1.cc:859
++#line 403 "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);
      break;
  
    case 86:
- #line 402 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 405 "dhcp4_parser.yy" // lalr1.cc:859
++#line 408 "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);
      break;
  
    case 87:
- #line 407 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 410 "dhcp4_parser.yy" // lalr1.cc:859
++#line 413 "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);
      break;
  
    case 88:
- #line 413 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 416 "dhcp4_parser.yy" // lalr1.cc:859
++#line 419 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces-config", i);
      break;
  
    case 89:
- #line 418 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 421 "dhcp4_parser.yy" // lalr1.cc:859
++#line 424 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 94:
- #line 431 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 434 "dhcp4_parser.yy" // lalr1.cc:859
++#line 437 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // Parse the interfaces-config map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      break;
  
    case 95:
- #line 435 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 438 "dhcp4_parser.yy" // lalr1.cc:859
++#line 441 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
      break;
  
    case 96:
- #line 439 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 442 "dhcp4_parser.yy" // lalr1.cc:859
++#line 445 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces", l);
      break;
  
    case 97:
- #line 444 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 447 "dhcp4_parser.yy" // lalr1.cc:859
++#line 450 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 98:
- #line 449 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 452 "dhcp4_parser.yy" // lalr1.cc:859
++#line 455 "dhcp4_parser.yy" // lalr1.cc:859
      {
 -    ctx.enter(ctx.NO_KEYWORD);
 +    ctx.enter(ctx.DHCP_SOCKET_TYPE);
  }
 -#line 1012 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1022 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 99:
- #line 451 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 454 "dhcp4_parser.yy" // lalr1.cc:859
++#line 457 "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 1022 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1031 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
    case 100:
- #line 456 "dhcp4_parser.yy" // lalr1.cc:859
 -#line 460 "dhcp4_parser.yy" // lalr1.cc:859
++#line 462 "dhcp4_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 +#line 1037 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
 +  case 101:
- #line 457 "dhcp4_parser.yy" // lalr1.cc:859
++#line 463 "dhcp4_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 +#line 1043 "dhcp4_parser.cc" // lalr1.cc:859
 +    break;
 +
 +  case 102:
- #line 460 "dhcp4_parser.yy" // lalr1.cc:859
++#line 466 "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 1033 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1054 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 101:
 -#line 465 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 103:
- #line 465 "dhcp4_parser.yy" // lalr1.cc:859
++#line 471 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
 -#line 1042 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1063 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 102:
 -#line 470 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 104:
- #line 470 "dhcp4_parser.yy" // lalr1.cc:859
++#line 476 "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 1053 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1074 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 103:
 -#line 475 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 105:
- #line 475 "dhcp4_parser.yy" // lalr1.cc:859
++#line 481 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
 -#line 1062 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1083 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 115:
 -#line 495 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 117:
- #line 495 "dhcp4_parser.yy" // lalr1.cc:859
++#line 501 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1070 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1091 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 116:
 -#line 497 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 118:
- #line 497 "dhcp4_parser.yy" // lalr1.cc:859
++#line 503 "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 1080 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1101 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 117:
 -#line 503 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 119:
- #line 503 "dhcp4_parser.yy" // lalr1.cc:859
++#line 509 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1088 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1109 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 118:
 -#line 505 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 120:
- #line 505 "dhcp4_parser.yy" // lalr1.cc:859
++#line 511 "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 1098 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1119 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 119:
 -#line 511 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 121:
- #line 511 "dhcp4_parser.yy" // lalr1.cc:859
++#line 517 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1106 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1127 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 120:
 -#line 513 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 122:
- #line 513 "dhcp4_parser.yy" // lalr1.cc:859
++#line 519 "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 1116 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1137 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 121:
 -#line 519 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 123:
- #line 519 "dhcp4_parser.yy" // lalr1.cc:859
++#line 525 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1124 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1145 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 122:
 -#line 521 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 124:
- #line 521 "dhcp4_parser.yy" // lalr1.cc:859
++#line 527 "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 1134 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1155 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 123:
 -#line 527 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 125:
- #line 527 "dhcp4_parser.yy" // lalr1.cc:859
++#line 533 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1142 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1163 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 124:
 -#line 529 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 126:
- #line 529 "dhcp4_parser.yy" // lalr1.cc:859
++#line 535 "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 1152 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1173 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 125:
 -#line 535 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 127:
- #line 535 "dhcp4_parser.yy" // lalr1.cc:859
++#line 541 "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 1161 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1182 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 126:
 -#line 540 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 128:
- #line 540 "dhcp4_parser.yy" // lalr1.cc:859
++#line 546 "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 1170 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1191 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 127:
 -#line 545 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 129:
- #line 545 "dhcp4_parser.yy" // lalr1.cc:859
++#line 551 "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 1179 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1200 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 128:
 -#line 550 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 130:
- #line 550 "dhcp4_parser.yy" // lalr1.cc:859
++#line 556 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(duid);
  }
 -#line 1188 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1209 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 129:
 -#line 555 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 131:
- #line 555 "dhcp4_parser.yy" // lalr1.cc:859
++#line 561 "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 1199 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1220 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 130:
 -#line 560 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 132:
- #line 560 "dhcp4_parser.yy" // lalr1.cc:859
++#line 566 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
 -#line 1208 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1229 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 137:
 -#line 575 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 139:
- #line 575 "dhcp4_parser.yy" // lalr1.cc:859
++#line 581 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(hwaddr);
  }
 -#line 1217 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1238 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 138:
 -#line 580 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 140:
- #line 580 "dhcp4_parser.yy" // lalr1.cc:859
++#line 586 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(circuit);
  }
 -#line 1226 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1247 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 139:
 -#line 585 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 141:
- #line 585 "dhcp4_parser.yy" // lalr1.cc:859
++#line 591 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(client);
  }
 -#line 1235 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1256 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 140:
 -#line 590 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 142:
- #line 590 "dhcp4_parser.yy" // lalr1.cc:859
++#line 596 "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 1246 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1267 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 141:
 -#line 595 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 143:
- #line 595 "dhcp4_parser.yy" // lalr1.cc:859
++#line 601 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
 -#line 1255 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1276 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 146:
 -#line 608 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 148:
- #line 608 "dhcp4_parser.yy" // lalr1.cc:859
++#line 614 "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 1265 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1286 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 147:
 -#line 612 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 149:
- #line 612 "dhcp4_parser.yy" // lalr1.cc:859
++#line 618 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
 -#line 1273 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1294 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 148:
 -#line 616 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 150:
- #line 616 "dhcp4_parser.yy" // lalr1.cc:859
++#line 622 "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 1283 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1304 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 149:
 -#line 620 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 151:
- #line 620 "dhcp4_parser.yy" // lalr1.cc:859
++#line 626 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
 -#line 1291 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1312 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 155:
 -#line 633 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 157:
- #line 633 "dhcp4_parser.yy" // lalr1.cc:859
++#line 639 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1299 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1320 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 156:
 -#line 635 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 158:
- #line 635 "dhcp4_parser.yy" // lalr1.cc:859
++#line 641 "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 1309 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1330 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 157:
 -#line 641 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 159:
- #line 641 "dhcp4_parser.yy" // lalr1.cc:859
++#line 647 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
 -#line 1317 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1338 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 158:
 -#line 643 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 160:
- #line 643 "dhcp4_parser.yy" // lalr1.cc:859
++#line 649 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
 -#line 1326 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1347 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 159:
 -#line 649 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 161:
- #line 649 "dhcp4_parser.yy" // lalr1.cc:859
++#line 655 "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 1337 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1358 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
 -  case 160:
 -#line 654 "dhcp4_parser.yy" // lalr1.cc:859
 +  case 162:
- #line 654 "dhcp4_parser.yy" // lalr1.cc:859
++#line 660 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
 -#line 1346 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1367 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 165:
- #line 666 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 169:
 -#line 671 "dhcp4_parser.yy" // lalr1.cc:859
++  case 171:
++#line 677 "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 1355 "dhcp4_parser.cc" // lalr1.cc:859
 +#line 1376 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 166:
- #line 674 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 170:
 -#line 676 "dhcp4_parser.yy" // lalr1.cc:859
++  case 172:
++#line 682 "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 1364 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1385 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 171:
 -#line 681 "dhcp4_parser.yy" // lalr1.cc:859
++  case 173:
++#line 687 "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 1373 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1394 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 172:
 -#line 686 "dhcp4_parser.yy" // lalr1.cc:859
++  case 174:
++#line 692 "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 1382 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1403 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 173:
 -#line 691 "dhcp4_parser.yy" // lalr1.cc:859
++  case 175:
++#line 697 "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 1391 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1412 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 174:
 -#line 696 "dhcp4_parser.yy" // lalr1.cc:859
++  case 176:
++#line 702 "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 1400 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1421 "dhcp4_parser.cc" // lalr1.cc:859
+     break;
 -  case 175:
 -#line 704 "dhcp4_parser.yy" // lalr1.cc:859
++  case 177:
++#line 710 "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 1387 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1411 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1432 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 167:
- #line 679 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 176:
 -#line 709 "dhcp4_parser.yy" // lalr1.cc:859
++  case 178:
++#line 715 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1396 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1420 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1441 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 172:
- #line 699 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 181:
 -#line 729 "dhcp4_parser.yy" // lalr1.cc:859
++  case 183:
++#line 735 "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 1406 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1430 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1451 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 173:
- #line 703 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 182:
 -#line 733 "dhcp4_parser.yy" // lalr1.cc:859
++  case 184:
++#line 739 "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 1429 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1453 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1474 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 174:
- #line 722 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 183:
 -#line 752 "dhcp4_parser.yy" // lalr1.cc:859
++  case 185:
++#line 758 "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 1439 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1463 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1484 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 175:
- #line 726 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 184:
 -#line 756 "dhcp4_parser.yy" // lalr1.cc:859
++  case 186:
++#line 762 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1447 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1471 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1492 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 198:
- #line 758 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 207:
 -#line 788 "dhcp4_parser.yy" // lalr1.cc:859
++  case 209:
++#line 794 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1455 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1479 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1500 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 199:
- #line 760 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 208:
 -#line 790 "dhcp4_parser.yy" // lalr1.cc:859
++  case 210:
++#line 796 "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 1465 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1489 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1510 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 200:
- #line 766 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 209:
 -#line 796 "dhcp4_parser.yy" // lalr1.cc:859
++  case 211:
++#line 802 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1473 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1497 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1518 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 201:
- #line 768 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 210:
 -#line 798 "dhcp4_parser.yy" // lalr1.cc:859
++  case 212:
++#line 804 "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 1483 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1507 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1528 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 202:
- #line 774 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 211:
 -#line 804 "dhcp4_parser.yy" // lalr1.cc:859
++  case 213:
++#line 810 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1491 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1515 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1536 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 203:
- #line 776 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 212:
 -#line 806 "dhcp4_parser.yy" // lalr1.cc:859
++  case 214:
++#line 812 "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 1501 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1525 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1546 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 204:
- #line 782 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 213:
 -#line 812 "dhcp4_parser.yy" // lalr1.cc:859
++  case 215:
++#line 818 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1509 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1533 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1554 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 205:
- #line 784 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 214:
 -#line 814 "dhcp4_parser.yy" // lalr1.cc:859
++  case 216:
++#line 820 "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 1519 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1543 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1564 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 206:
- #line 790 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 215:
 -#line 820 "dhcp4_parser.yy" // lalr1.cc:859
++  case 217:
++#line 826 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1527 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1551 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1572 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 207:
- #line 792 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 216:
 -#line 822 "dhcp4_parser.yy" // lalr1.cc:859
++  case 218:
++#line 828 "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 1537 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1561 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1582 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 208:
- #line 798 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 217:
 -#line 828 "dhcp4_parser.yy" // lalr1.cc:859
++  case 219:
++#line 834 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1545 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1569 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1590 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 209:
- #line 800 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 218:
 -#line 830 "dhcp4_parser.yy" // lalr1.cc:859
++  case 220:
++#line 836 "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 1555 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1579 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1600 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 210:
- #line 806 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 219:
 -#line 836 "dhcp4_parser.yy" // lalr1.cc:859
++  case 221:
++#line 842 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.CLIENT_CLASS);
  }
- #line 1563 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1587 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1608 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 211:
- #line 808 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 220:
 -#line 838 "dhcp4_parser.yy" // lalr1.cc:859
++  case 222:
++#line 844 "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 1573 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1597 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1618 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 212:
- #line 814 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 221:
 -#line 844 "dhcp4_parser.yy" // lalr1.cc:859
++  case 223:
++#line 850 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1581 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1605 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1626 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 213:
- #line 816 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 222:
 -#line 846 "dhcp4_parser.yy" // lalr1.cc:859
++  case 224:
++#line 852 "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 1591 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1615 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1636 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 214:
- #line 822 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 223:
 -#line 852 "dhcp4_parser.yy" // lalr1.cc:859
++  case 225:
++#line 858 "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 1600 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1624 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1645 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 215:
- #line 827 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 224:
 -#line 857 "dhcp4_parser.yy" // lalr1.cc:859
++  case 226:
++#line 863 "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 1609 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1633 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1654 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 216:
- #line 836 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 225:
 -#line 866 "dhcp4_parser.yy" // lalr1.cc:859
++  case 227:
++#line 872 "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 1620 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1644 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1665 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 217:
- #line 841 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 226:
 -#line 871 "dhcp4_parser.yy" // lalr1.cc:859
++  case 228:
++#line 877 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1629 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1653 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1674 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 222:
- #line 858 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 231:
 -#line 888 "dhcp4_parser.yy" // lalr1.cc:859
++  case 233:
++#line 894 "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 1639 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1663 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1684 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 223:
- #line 862 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 232:
 -#line 892 "dhcp4_parser.yy" // lalr1.cc:859
++  case 234:
++#line 898 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1647 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1671 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1692 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 224:
- #line 869 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 233:
 -#line 899 "dhcp4_parser.yy" // lalr1.cc:859
++  case 235:
++#line 905 "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 1657 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1681 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1702 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 225:
- #line 873 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 234:
 -#line 903 "dhcp4_parser.yy" // lalr1.cc:859
++  case 236:
++#line 909 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1665 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1689 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1710 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 239:
- #line 899 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 248:
 -#line 929 "dhcp4_parser.yy" // lalr1.cc:859
++  case 250:
++#line 935 "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 1674 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1698 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1719 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 242:
- #line 908 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 251:
 -#line 938 "dhcp4_parser.yy" // lalr1.cc:859
++  case 253:
++#line 944 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1682 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1706 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1727 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 243:
- #line 910 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 252:
 -#line 940 "dhcp4_parser.yy" // lalr1.cc:859
++  case 254:
++#line 946 "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 1692 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1716 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1737 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 244:
- #line 916 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 253:
 -#line 946 "dhcp4_parser.yy" // lalr1.cc:859
++  case 255:
++#line 952 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1700 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1724 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1745 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 245:
- #line 918 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 254:
 -#line 948 "dhcp4_parser.yy" // lalr1.cc:859
++  case 256:
++#line 954 "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 1710 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1734 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1755 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 247:
- #line 926 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 256:
 -#line 956 "dhcp4_parser.yy" // lalr1.cc:859
++  case 258:
++#line 962 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1718 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1742 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1763 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 248:
- #line 928 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 257:
 -#line 958 "dhcp4_parser.yy" // lalr1.cc:859
++  case 259:
++#line 964 "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 1728 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1752 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1773 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 249:
- #line 934 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 258:
 -#line 964 "dhcp4_parser.yy" // lalr1.cc:859
++  case 260:
++#line 970 "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 1737 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1761 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1782 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 250:
- #line 943 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 259:
 -#line 973 "dhcp4_parser.yy" // lalr1.cc:859
++  case 261:
++#line 979 "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 1748 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1772 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1793 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 251:
- #line 948 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 260:
 -#line 978 "dhcp4_parser.yy" // lalr1.cc:859
++  case 262:
++#line 984 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1757 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1781 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1802 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 256:
- #line 967 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 265:
 -#line 997 "dhcp4_parser.yy" // lalr1.cc:859
++  case 267:
++#line 1003 "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 1767 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1791 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1812 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 257:
- #line 971 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 266:
 -#line 1001 "dhcp4_parser.yy" // lalr1.cc:859
++  case 268:
++#line 1007 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1775 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1799 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1820 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 258:
- #line 978 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 267:
 -#line 1008 "dhcp4_parser.yy" // lalr1.cc:859
++  case 269:
++#line 1014 "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 1785 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1809 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1830 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 259:
- #line 982 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 268:
 -#line 1012 "dhcp4_parser.yy" // lalr1.cc:859
++  case 270:
++#line 1018 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1793 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1817 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1838 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 271:
- #line 1011 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 280:
 -#line 1041 "dhcp4_parser.yy" // lalr1.cc:859
++  case 282:
++#line 1047 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1801 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1825 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1846 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 272:
- #line 1013 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 281:
 -#line 1043 "dhcp4_parser.yy" // lalr1.cc:859
++  case 283:
++#line 1049 "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 1811 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1835 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1856 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 275:
- #line 1023 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 284:
 -#line 1053 "dhcp4_parser.yy" // lalr1.cc:859
++  case 286:
++#line 1059 "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 1820 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1844 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1865 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 276:
- #line 1031 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 285:
 -#line 1061 "dhcp4_parser.yy" // lalr1.cc:859
++  case 287:
++#line 1067 "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 1831 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1855 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1876 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 277:
- #line 1036 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 286:
 -#line 1066 "dhcp4_parser.yy" // lalr1.cc:859
++  case 288:
++#line 1072 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1840 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1864 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1885 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 282:
- #line 1051 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 291:
 -#line 1081 "dhcp4_parser.yy" // lalr1.cc:859
++  case 293:
++#line 1087 "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 1850 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1874 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1895 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 283:
- #line 1055 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 292:
 -#line 1085 "dhcp4_parser.yy" // lalr1.cc:859
++  case 294:
++#line 1091 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1858 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1882 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1903 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 284:
- #line 1059 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 293:
 -#line 1089 "dhcp4_parser.yy" // lalr1.cc:859
++  case 295:
++#line 1095 "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 1868 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1892 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1913 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 285:
- #line 1063 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 294:
 -#line 1093 "dhcp4_parser.yy" // lalr1.cc:859
++  case 296:
++#line 1099 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1876 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1900 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1921 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 291:
- #line 1076 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 300:
 -#line 1106 "dhcp4_parser.yy" // lalr1.cc:859
++  case 302:
++#line 1112 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1884 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1908 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 292:
- #line 1078 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 301:
 -#line 1108 "dhcp4_parser.yy" // lalr1.cc:859
++  case 303:
++#line 1114 "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 1894 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1918 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1939 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 293:
- #line 1087 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 302:
 -#line 1117 "dhcp4_parser.yy" // lalr1.cc:859
++  case 304:
++#line 1123 "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 1905 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1950 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 294:
- #line 1092 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 303:
 -#line 1122 "dhcp4_parser.yy" // lalr1.cc:859
++  case 305:
++#line 1128 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1914 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1938 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1959 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 299:
- #line 1105 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 308:
 -#line 1135 "dhcp4_parser.yy" // lalr1.cc:859
++  case 310:
++#line 1141 "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 1924 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1948 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1969 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 300:
- #line 1109 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 309:
 -#line 1139 "dhcp4_parser.yy" // lalr1.cc:859
++  case 311:
++#line 1145 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1932 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1956 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1977 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 301:
- #line 1113 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 310:
 -#line 1143 "dhcp4_parser.yy" // lalr1.cc:859
++  case 312:
++#line 1149 "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 1942 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1966 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1987 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 302:
- #line 1117 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 311:
 -#line 1147 "dhcp4_parser.yy" // lalr1.cc:859
++  case 313:
++#line 1153 "dhcp4_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1950 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1974 "dhcp4_parser.cc" // lalr1.cc:859
++#line 1995 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 319:
- #line 1144 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 328:
 -#line 1174 "dhcp4_parser.yy" // lalr1.cc:859
++  case 330:
++#line 1180 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1958 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1982 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 320:
- #line 1146 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 329:
 -#line 1176 "dhcp4_parser.yy" // lalr1.cc:859
++  case 331:
++#line 1182 "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 1968 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 1992 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 321:
- #line 1152 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 330:
 -#line 1182 "dhcp4_parser.yy" // lalr1.cc:859
++  case 332:
++#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1976 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2000 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2021 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 322:
- #line 1154 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 331:
 -#line 1184 "dhcp4_parser.yy" // lalr1.cc:859
++  case 333:
++#line 1190 "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 1986 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2010 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2031 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 323:
- #line 1160 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 332:
 -#line 1190 "dhcp4_parser.yy" // lalr1.cc:859
++  case 334:
++#line 1196 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1994 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2018 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2039 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 324:
- #line 1162 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 333:
 -#line 1192 "dhcp4_parser.yy" // lalr1.cc:859
++  case 335:
++#line 1198 "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 2004 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2028 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2049 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 325:
- #line 1168 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 334:
 -#line 1198 "dhcp4_parser.yy" // lalr1.cc:859
++  case 336:
++#line 1204 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2012 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2036 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2057 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 326:
- #line 1170 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 335:
 -#line 1200 "dhcp4_parser.yy" // lalr1.cc:859
++  case 337:
++#line 1206 "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 2022 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2046 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2067 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 327:
- #line 1176 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 336:
 -#line 1206 "dhcp4_parser.yy" // lalr1.cc:859
++  case 338:
++#line 1212 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2030 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2054 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2075 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 328:
- #line 1178 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 337:
 -#line 1208 "dhcp4_parser.yy" // lalr1.cc:859
++  case 339:
++#line 1214 "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 2040 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2064 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2085 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 329:
- #line 1184 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 338:
 -#line 1214 "dhcp4_parser.yy" // lalr1.cc:859
++  case 340:
++#line 1220 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2048 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2072 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2093 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 330:
- #line 1186 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 339:
 -#line 1216 "dhcp4_parser.yy" // lalr1.cc:859
++  case 341:
++#line 1222 "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 2058 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2082 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2103 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 331:
- #line 1192 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 340:
 -#line 1222 "dhcp4_parser.yy" // lalr1.cc:859
++  case 342:
++#line 1228 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2066 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2090 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2111 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 332:
- #line 1194 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 341:
 -#line 1224 "dhcp4_parser.yy" // lalr1.cc:859
++  case 343:
++#line 1230 "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 2076 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2100 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2121 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 333:
- #line 1200 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 342:
 -#line 1230 "dhcp4_parser.yy" // lalr1.cc:859
++  case 344:
++#line 1236 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2084 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2108 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2129 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 334:
- #line 1202 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 343:
 -#line 1232 "dhcp4_parser.yy" // lalr1.cc:859
++  case 345:
++#line 1238 "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 2094 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2118 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2139 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 335:
- #line 1209 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 344:
 -#line 1239 "dhcp4_parser.yy" // lalr1.cc:859
++  case 346:
++#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2102 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2126 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2147 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 336:
- #line 1211 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 345:
 -#line 1241 "dhcp4_parser.yy" // lalr1.cc:859
++  case 347:
++#line 1247 "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 2112 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2136 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2157 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 337:
- #line 1217 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 346:
 -#line 1247 "dhcp4_parser.yy" // lalr1.cc:859
++  case 348:
++#line 1253 "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 2123 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2147 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2168 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 338:
- #line 1222 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 347:
 -#line 1252 "dhcp4_parser.yy" // lalr1.cc:859
++  case 349:
++#line 1258 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2132 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2156 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2177 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 339:
- #line 1230 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 348:
 -#line 1260 "dhcp4_parser.yy" // lalr1.cc:859
++  case 350:
++#line 1266 "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 2143 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2167 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2188 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 340:
- #line 1235 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 349:
 -#line 1265 "dhcp4_parser.yy" // lalr1.cc:859
++  case 351:
++#line 1271 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2152 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2176 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2197 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 341:
- #line 1240 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 350:
 -#line 1270 "dhcp4_parser.yy" // lalr1.cc:859
++  case 352:
++#line 1276 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2160 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2184 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2205 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 342:
- #line 1242 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 351:
 -#line 1272 "dhcp4_parser.yy" // lalr1.cc:859
++  case 353:
++#line 1278 "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 2170 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2194 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2215 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 343:
- #line 1251 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 352:
 -#line 1281 "dhcp4_parser.yy" // lalr1.cc:859
++  case 354:
++#line 1287 "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 2181 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2205 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2226 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 344:
- #line 1256 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 353:
 -#line 1286 "dhcp4_parser.yy" // lalr1.cc:859
++  case 355:
++#line 1292 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2190 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2214 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2235 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 347:
- #line 1265 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 356:
 -#line 1295 "dhcp4_parser.yy" // lalr1.cc:859
++  case 358:
++#line 1301 "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 2200 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2224 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2245 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 348:
- #line 1269 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 357:
 -#line 1299 "dhcp4_parser.yy" // lalr1.cc:859
++  case 359:
++#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2208 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2232 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2253 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 361:
- #line 1292 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 370:
 -#line 1322 "dhcp4_parser.yy" // lalr1.cc:859
++  case 372:
++#line 1328 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2216 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2261 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 362:
- #line 1294 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 371:
 -#line 1324 "dhcp4_parser.yy" // lalr1.cc:859
++  case 373:
++#line 1330 "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 2226 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2250 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2271 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 363:
- #line 1303 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 372:
 -#line 1333 "dhcp4_parser.yy" // lalr1.cc:859
++  case 374:
++#line 1339 "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 2237 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2261 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2282 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 364:
- #line 1308 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 373:
 -#line 1338 "dhcp4_parser.yy" // lalr1.cc:859
++  case 375:
++#line 1344 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2246 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2270 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2291 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 374:
- #line 1326 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 383:
 -#line 1356 "dhcp4_parser.yy" // lalr1.cc:859
++  case 385:
++#line 1362 "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 2255 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2279 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2300 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 375:
- #line 1331 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 384:
 -#line 1361 "dhcp4_parser.yy" // lalr1.cc:859
++  case 386:
++#line 1367 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2263 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2287 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2308 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 376:
- #line 1333 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 385:
 -#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
++  case 387:
++#line 1369 "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 2273 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2297 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2318 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 377:
- #line 1339 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 386:
 -#line 1369 "dhcp4_parser.yy" // lalr1.cc:859
++  case 388:
++#line 1375 "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 2282 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2306 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2327 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 378:
- #line 1344 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 387:
 -#line 1374 "dhcp4_parser.yy" // lalr1.cc:859
++  case 389:
++#line 1380 "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 2291 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2315 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2336 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 379:
- #line 1351 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 388:
 -#line 1381 "dhcp4_parser.yy" // lalr1.cc:859
++  case 390:
++#line 1387 "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 2300 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2324 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2345 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 380:
- #line 1358 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 389:
 -#line 1388 "dhcp4_parser.yy" // lalr1.cc:859
++  case 391:
++#line 1394 "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 2311 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2335 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2356 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 381:
- #line 1363 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 390:
 -#line 1393 "dhcp4_parser.yy" // lalr1.cc:859
++  case 392:
++#line 1399 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2320 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2344 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2365 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 386:
- #line 1376 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 395:
 -#line 1406 "dhcp4_parser.yy" // lalr1.cc:859
++  case 397:
++#line 1412 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2328 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2352 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2373 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 387:
- #line 1378 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 396:
 -#line 1408 "dhcp4_parser.yy" // lalr1.cc:859
++  case 398:
++#line 1414 "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 2338 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2362 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2383 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 388:
- #line 1384 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 397:
 -#line 1414 "dhcp4_parser.yy" // lalr1.cc:859
++  case 399:
++#line 1420 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2346 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2370 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2391 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 389:
- #line 1386 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 398:
 -#line 1416 "dhcp4_parser.yy" // lalr1.cc:859
++  case 400:
++#line 1422 "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 2356 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2380 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2401 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 390:
- #line 1394 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 399:
 -#line 1424 "dhcp4_parser.yy" // lalr1.cc:859
++  case 401:
++#line 1430 "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);
  }
- #line 2367 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2391 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2412 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 391:
- #line 1399 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 400:
 -#line 1429 "dhcp4_parser.yy" // lalr1.cc:859
++  case 402:
++#line 1435 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2376 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2400 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2421 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 392:
- #line 1406 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 401:
 -#line 1436 "dhcp4_parser.yy" // lalr1.cc:859
++  case 403:
++#line 1442 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2384 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2408 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2429 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 393:
- #line 1408 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 402:
 -#line 1438 "dhcp4_parser.yy" // lalr1.cc:859
++  case 404:
++#line 1444 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2393 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2417 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2438 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 394:
- #line 1413 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 403:
 -#line 1443 "dhcp4_parser.yy" // lalr1.cc:859
++  case 405:
++#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2401 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2425 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2446 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 395:
- #line 1415 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 404:
 -#line 1445 "dhcp4_parser.yy" // lalr1.cc:859
++  case 406:
++#line 1451 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2410 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2434 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2455 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 396:
- #line 1425 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 405:
 -#line 1455 "dhcp4_parser.yy" // lalr1.cc:859
++  case 407:
++#line 1461 "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 2421 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2445 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2466 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 397:
- #line 1430 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 406:
 -#line 1460 "dhcp4_parser.yy" // lalr1.cc:859
++  case 408:
++#line 1466 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2430 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2454 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2475 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 401:
- #line 1447 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 410:
 -#line 1477 "dhcp4_parser.yy" // lalr1.cc:859
++  case 412:
++#line 1483 "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 2441 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2465 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2486 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 402:
- #line 1452 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 411:
 -#line 1482 "dhcp4_parser.yy" // lalr1.cc:859
++  case 413:
++#line 1488 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2450 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2474 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2495 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 405:
- #line 1464 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 414:
 -#line 1494 "dhcp4_parser.yy" // lalr1.cc:859
++  case 416:
++#line 1500 "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 2460 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2484 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2505 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 406:
- #line 1468 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 415:
 -#line 1498 "dhcp4_parser.yy" // lalr1.cc:859
++  case 417:
++#line 1504 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2468 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2513 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 414:
- #line 1483 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 423:
 -#line 1513 "dhcp4_parser.yy" // lalr1.cc:859
++  case 425:
++#line 1519 "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 2477 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2501 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2522 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 415:
- #line 1487 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 424:
 -#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
++  case 426:
++#line 1523 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2485 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2509 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2530 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 416:
- #line 1489 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 425:
 -#line 1519 "dhcp4_parser.yy" // lalr1.cc:859
++  case 427:
++#line 1525 "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 2495 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2519 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2540 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 417:
- #line 1495 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 426:
 -#line 1525 "dhcp4_parser.yy" // lalr1.cc:859
++  case 428:
++#line 1531 "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 2506 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2530 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2551 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 418:
- #line 1500 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 427:
 -#line 1530 "dhcp4_parser.yy" // lalr1.cc:859
++  case 429:
++#line 1536 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2515 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2539 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2560 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 421:
- #line 1509 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 430:
 -#line 1539 "dhcp4_parser.yy" // lalr1.cc:859
++  case 432:
++#line 1545 "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 2525 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2549 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2570 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 422:
- #line 1513 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 431:
 -#line 1543 "dhcp4_parser.yy" // lalr1.cc:859
++  case 433:
++#line 1549 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2533 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2557 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2578 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 425:
- #line 1521 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 434:
 -#line 1551 "dhcp4_parser.yy" // lalr1.cc:859
++  case 436:
++#line 1557 "dhcp4_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2541 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2565 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2586 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
-   case 426:
- #line 1523 "dhcp4_parser.yy" // lalr1.cc:859
 -  case 435:
 -#line 1553 "dhcp4_parser.yy" // lalr1.cc:859
++  case 437:
++#line 1559 "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 2551 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2575 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2596 "dhcp4_parser.cc" // lalr1.cc:859
      break;
  
  
- #line 2555 "dhcp4_parser.cc" // lalr1.cc:859
 -#line 2579 "dhcp4_parser.cc" // lalr1.cc:859
++#line 2600 "dhcp4_parser.cc" // lalr1.cc:859
              default:
                break;
              }
    const short int
    Dhcp4Parser::yypact_[] =
    {
-      108,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,    37,    20,    25,    40,    64,    66,    73,    79,   110,
-      118,   139,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -     117,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,    39,    22,    52,    59,    66,    81,    90,    96,   111,
 -     131,   147,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++     179,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,    39,    22,    34,    54,    61,    94,   113,   155,   173,
++     209,   218,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,    20,    53,    18,    71,   219,    24,    -3,    93,
-      122,     8,    29,  -411,   153,   160,   204,   228,   236,  -411,
-     -411,  -411,  -411,   240,  -411,    31,  -411,  -411,  -411,  -411,
-     -411,  -411,   244,   245,  -411,  -411,  -411,   248,   249,   254,
 -    -411,  -411,    22,   -58,    18,    70,    20,    19,     4,    98,
 -      17,   102,    45,  -411,    99,    75,   105,   148,   159,  -411,
 -    -411,  -411,  -411,   160,  -411,    42,  -411,  -411,  -411,  -411,
 -    -411,  -411,   184,   203,  -411,  -411,  -411,   237,   238,   248,
--     255,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   256,
-     -411,  -411,  -411,    32,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,    71,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,    22,   -29,    18,    65,   106,    19,    -6,    96,
++      17,    67,   -17,  -411,   170,   175,   192,   199,   224,  -411,
++    -411,  -411,  -411,   226,  -411,    72,  -411,  -411,  -411,  -411,
++    -411,  -411,   227,   228,  -411,  -411,  -411,   230,   231,   232,
++     235,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   237,
++    -411,  -411,  -411,   131,  -411,  -411,  -411,  -411,  -411,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,    35,  -411,
 -    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,    72,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   134,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
--     257,   261,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,    50,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,    88,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++     238,   240,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,   142,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,    54,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,   129,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
--    -411,  -411,  -411,  -411,  -411,   259,   266,  -411,  -411,  -411,
++    -411,   143,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,   241,   245,  -411,  -411,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-      267,  -411,  -411,  -411,   268,  -411,  -411,  -411,   265,   272,
 -     267,  -411,  -411,  -411,   268,  -411,  -411,  -411,   265,   276,
++     248,  -411,  -411,  -411,   249,  -411,  -411,  -411,   257,   266,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,   273,  -411,  -411,  -411,  -411,   270,   276,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,   111,  -411,  -411,
-     -411,  -411,    20,    20,  -411,   176,   277,   278,   279,   280,
-     -411,    18,  -411,   281,   177,   183,   283,   284,   285,   190,
-      191,   192,   193,   286,   291,   292,   293,   294,   295,   296,
-      297,   201,   299,   300,    71,  -411,   301,   302,   219,  -411,
-       76,   303,   304,   305,   306,   307,   308,   309,   213,   212,
-      312,   313,   314,   315,    24,  -411,   316,    -3,  -411,   317,
-      318,   319,   320,   321,   322,   323,   324,   325,  -411,    93,
-      326,   327,   231,   329,   330,   333,   235,  -411,   122,   335,
-      237,  -411,     8,   337,   338,   -25,  -411,  -411,  -411,   339,
-      340,   341,    20,    20,  -411,   342,  -411,  -411,   246,   343,
-      344,  -411,  -411,  -411,  -411,   347,   348,   349,   350,   351,
-      352,   355,   356,  -411,   357,   360,  -411,   353,   220,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,   336,   365,  -411,
-     -411,  -411,   269,   271,   275,   354,   282,   287,   288,  -411,
-     -411,   289,   290,   367,   363,  -411,   298,  -411,   310,   311,
-      353,   328,   331,   332,   334,   345,   346,  -411,   358,   359,
-     -411,   361,   362,   364,  -411,  -411,   366,  -411,  -411,   368,
-       20,  -411,    20,    71,   262,  -411,  -411,   219,  -411,    41,
-       41,   369,   370,   371,   166,    26,   373,   372,   113,   162,
-       53,  -411,  -411,  -411,  -411,  -411,   377,  -411,    76,  -411,
-     -411,  -411,   376,  -411,  -411,  -411,  -411,  -411,   378,   374,
 -    -411,   277,  -411,  -411,  -411,  -411,   272,   279,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -411,  -411,  -411,   142,  -411,  -411,
 -    -411,  -411,    22,    22,  -411,   179,   280,   281,   282,   283,
 -    -411,    18,  -411,   284,   182,   183,   287,   288,   289,   189,
 -     190,   191,   192,   294,   295,   296,   297,   298,   299,   300,
 -     301,   202,   302,   304,    70,  -411,   305,   306,    20,  -411,
 -      26,   307,   308,   309,   310,   311,   312,   313,   213,   212,
 -     316,   317,   318,   319,    19,  -411,   320,     4,  -411,   321,
 -     322,   323,   324,   325,   326,   327,   328,   329,  -411,    98,
 -     330,   333,   233,   335,   336,   337,   235,  -411,    17,   339,
 -     239,  -411,   102,   340,   341,    80,  -411,  -411,  -411,   343,
 -     342,   344,    22,    22,  -411,   345,  -411,  -411,   244,   346,
 -     347,  -411,  -411,  -411,  -411,   350,   351,   352,   353,   354,
 -     357,   356,   360,  -411,   361,   362,  -411,   359,   246,  -411,
 -    -411,  -411,  -411,  -411,  -411,  -411,  -411,   363,   367,  -411,
 -    -411,  -411,   269,   271,   274,   371,   275,   286,   290,  -411,
 -    -411,   291,   292,   375,   365,  -411,   293,  -411,   303,   314,
 -     359,   315,   331,   332,   334,   338,   348,  -411,   349,   355,
 -    -411,   358,   364,   366,  -411,  -411,   368,  -411,  -411,   369,
 -      22,  -411,    22,    70,   370,  -411,  -411,    20,  -411,   144,
 -     144,   374,   376,   377,   216,    30,   378,   120,    15,    92,
 -     -58,  -411,  -411,  -411,   382,  -411,    26,  -411,  -411,  -411,
 -     380,  -411,  -411,  -411,  -411,  -411,   381,   372,  -411,  -411,
++    -411,   267,  -411,  -411,  -411,  -411,   264,   270,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,  -411,   167,  -411,  -411,
++    -411,  -411,    22,    22,  -411,   180,   281,   283,   284,   285,
++    -411,    18,  -411,   286,   182,   183,   289,   290,   291,   193,
++     194,   195,   196,   292,   293,   294,   295,   300,   301,   302,
++     303,   204,   304,   305,    65,  -411,   306,   308,   106,  -411,
++      26,   309,   310,   311,   312,   313,   314,   315,   213,   215,
++     317,   318,   319,   321,    19,  -411,   322,    -6,  -411,   323,
++     324,   325,   326,   327,   328,   329,   330,   333,  -411,    96,
++     334,   335,   233,   337,   338,   339,   236,  -411,    17,   340,
++     239,  -411,    67,   342,   343,   -22,  -411,  -411,  -411,   345,
++     344,   346,    22,    22,  -411,   347,  -411,  -411,   244,   348,
++     349,  -411,  -411,  -411,  -411,   352,   353,   354,   357,   358,
++     359,   360,   361,  -411,   362,   363,  -411,   366,   112,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,  -411,   364,   370,  -411,
++    -411,  -411,   246,   269,   271,   371,   272,   274,   275,  -411,
++    -411,   276,   277,   380,   379,  -411,   282,  -411,   287,   288,
++     366,   296,   297,   298,   299,   316,   320,  -411,   331,   332,
++    -411,   336,   341,   350,  -411,  -411,   351,  -411,  -411,   355,
++      22,  -411,    22,    65,   307,  -411,  -411,   106,  -411,   161,
++     161,   382,   383,   385,   197,    35,   390,    92,    11,    70,
++     -29,  -411,  -411,  -411,  -411,  -411,   394,  -411,    26,  -411,
++    -411,  -411,   392,  -411,  -411,  -411,  -411,  -411,   393,   356,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   123,
-     -411,   158,  -411,  -411,   169,  -411,  -411,  -411,   382,   388,
-      389,  -411,   170,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,   171,  -411,   390,   391,  -411,  -411,   393,   394,
-     -411,  -411,   395,   397,  -411,  -411,  -411,  -411,  -411,  -411,
-      127,  -411,  -411,  -411,  -411,  -411,   141,  -411,   396,   400,
-     -411,   401,   172,  -411,  -411,   402,   403,   404,  -411,  -411,
-     -411,   182,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   206,
-     -411,  -411,  -411,   207,    20,   375,  -411,  -411,   398,   406,
-     -411,  -411,   408,   409,  -411,  -411,   410,  -411,   412,   262,
-     -411,  -411,   413,   415,   416,   379,   380,   381,    41,  -411,
-     -411,    24,  -411,   369,   122,  -411,   370,     8,  -411,   371,
-      166,  -411,    26,  -411,    29,  -411,   373,   384,   372,  -411,
-      417,   385,   386,   387,   113,  -411,   418,   419,   162,  -411,
-     -411,   420,  -411,    -3,  -411,   376,    93,  -411,   378,   421,
-     -411,   422,  -411,   383,   392,   399,  -411,  -411,  -411,  -411,
-      208,  -411,   425,  -411,   427,  -411,  -411,  -411,   209,  -411,
-     -411,  -411,   405,  -411,  -411,  -411,  -411,   407,   411,  -411,
-     -411,   215,  -411,   428,  -411,   426,   423,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -411,  -411,  -411,   169,  -411,   170,
 -    -411,  -411,   193,  -411,  -411,  -411,   387,   388,   394,  -411,
 -     197,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -     200,  -411,   393,   397,  -411,  -411,   395,   399,  -411,  -411,
 -     398,   400,  -411,  -411,  -411,  -411,  -411,  -411,   114,  -411,
 -    -411,  -411,  -411,  -411,   128,  -411,   402,   403,  -411,   401,
 -     405,   406,   407,   408,   410,   201,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,   412,   413,   416,  -411,  -411,  -411,
 -     219,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   220,  -411,
 -    -411,  -411,   221,    22,   373,  -411,  -411,   415,   419,  -411,
 -    -411,   417,   421,  -411,  -411,   418,  -411,   423,   370,  -411,
 -    -411,   424,   425,   426,   379,   383,   384,   144,  -411,  -411,
 -      19,  -411,   374,    17,  -411,   376,   102,  -411,   377,   216,
 -    -411,    30,  -411,    45,  -411,   378,   385,   389,   390,   391,
 -     392,   396,   120,  -411,   427,   404,   409,   411,    15,  -411,
 -     428,   429,    92,  -411,  -411,   433,  -411,     4,  -411,   380,
 -      98,  -411,   381,   430,  -411,   420,  -411,   431,   432,   437,
 -    -411,  -411,  -411,  -411,   222,  -411,   435,  -411,   436,  -411,
 -    -411,  -411,   228,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,   440,  -411,  -411,  -411,  -411,   441,   442,  -411,  -411,
 -     231,  -411,   438,  -411,   443,   434,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   169,
++    -411,   171,  -411,  -411,   190,  -411,  -411,  -411,   397,   402,
++     403,  -411,   191,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,   200,  -411,   381,   405,  -411,  -411,   404,   406,
++    -411,  -411,   408,   409,  -411,  -411,  -411,  -411,  -411,  -411,
++      29,  -411,  -411,  -411,  -411,  -411,    99,  -411,   410,   414,
++    -411,   407,   415,   416,   417,   420,   421,   201,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,   423,   424,   425,  -411,
++    -411,  -411,   202,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++     203,  -411,  -411,  -411,   210,    22,   365,  -411,  -411,   412,
++     427,  -411,  -411,   426,   428,  -411,  -411,   431,  -411,   429,
++     307,  -411,  -411,   430,   432,   436,   367,   368,   369,   161,
++    -411,  -411,    19,  -411,   382,    17,  -411,   383,    67,  -411,
++     385,   197,  -411,    35,  -411,   -17,  -411,   390,   372,   373,
++     374,   375,   376,   377,    92,  -411,   437,   378,   384,   386,
++      11,  -411,   439,   440,    70,  -411,  -411,   442,  -411,    -6,
++    -411,   392,    96,  -411,   393,   441,  -411,   444,  -411,   388,
++     389,   391,  -411,  -411,  -411,  -411,   211,  -411,   438,  -411,
++     443,  -411,  -411,  -411,   212,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,   395,  -411,  -411,  -411,  -411,   396,   398,
++    -411,  -411,   214,  -411,   445,  -411,   399,   447,  -411,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,   188,  -411,    51,   423,  -411,  -411,   433,  -411,  -411,
-     -411,   216,  -411,  -411,  -411,  -411,  -411,   434,   431,   435,
-       51,  -411,   424,  -411,   436,  -411,   437,  -411,  -411,   189,
-     -411,   442,   437,  -411,  -411,   217,  -411,  -411,   438,   442,
-     -411,   439,  -411,  -411
 -     181,  -411,    95,   434,  -411,  -411,   444,  -411,  -411,  -411,
 -     241,  -411,  -411,  -411,  -411,  -411,   445,   414,   446,    95,
 -    -411,   449,  -411,   447,  -411,   448,  -411,  -411,   229,  -411,
 -     386,   448,  -411,  -411,   250,  -411,  -411,   452,   386,  -411,
 -     451,  -411,  -411
++    -411,  -411,   141,  -411,    48,   447,  -411,  -411,   446,  -411,
++    -411,  -411,   220,  -411,  -411,  -411,  -411,  -411,   448,   400,
++     451,    48,  -411,   453,  -411,   411,  -411,   452,  -411,  -411,
++     189,  -411,   401,   452,  -411,  -411,   221,  -411,  -411,   456,
++     401,  -411,   413,  -411,  -411
    };
  
    const unsigned short int
        20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     1,    36,    30,    26,    25,    22,    23,    24,
        29,     3,    27,    28,    45,     5,    56,     7,    94,     9,
-      174,    11,   284,    13,   301,    15,   224,    17,   258,    19,
-      150,    21,    40,    32,     0,     0,     0,     0,     0,   303,
-      226,   260,     0,    42,     0,    41,     0,     0,    33,    54,
-      396,   392,   394,     0,    53,     0,    47,    49,    51,    52,
-       50,    88,     0,     0,   319,   102,   104,     0,     0,     0,
-        0,   166,   216,   250,   131,   343,   142,   161,   363,     0,
-      380,   390,    81,     0,    58,    60,    61,    62,    63,    78,
 -     183,    11,   293,    13,   310,    15,   233,    17,   267,    19,
 -     148,    21,    40,    32,     0,     0,     0,     0,     0,   312,
 -     235,   269,     0,    42,     0,    41,     0,     0,    33,    54,
 -     405,   401,   403,     0,    53,     0,    47,    49,    51,    52,
 -      50,    88,     0,     0,   328,   100,   102,     0,     0,     0,
 -       0,   175,   225,   259,   129,   352,   140,   159,   372,     0,
 -     389,   399,    81,     0,    58,    60,    61,    62,    63,    78,
++     185,    11,   295,    13,   312,    15,   235,    17,   269,    19,
++     150,    21,    40,    32,     0,     0,     0,     0,     0,   314,
++     237,   271,     0,    42,     0,    41,     0,     0,    33,    54,
++     407,   403,   405,     0,    53,     0,    47,    49,    51,    52,
++      50,    88,     0,     0,   330,   102,   104,     0,     0,     0,
++       0,   177,   227,   261,   131,   354,   142,   161,   374,     0,
++     391,   401,    81,     0,    58,    60,    61,    62,    63,    78,
        79,    65,    66,    67,    68,    72,    73,    64,    70,    71,
        80,    69,    74,    75,    76,    77,    96,    98,     0,    90,
-       92,    93,   347,   200,   202,   204,   276,   198,   206,   208,
-        0,     0,   212,   210,   293,   339,   197,   178,   179,   180,
-      192,     0,   176,   183,   194,   195,   196,   184,   185,   188,
-      190,   186,   187,   181,   182,   189,   193,   191,   291,   290,
-      289,     0,   286,   288,   321,   323,   337,   327,   329,   333,
-      331,   335,   325,   318,   314,     0,   304,   305,   315,   316,
-      317,   311,   307,   312,   309,   310,   313,   308,   117,   125,
-        0,   244,   242,   247,     0,   237,   241,   238,     0,   227,
-      228,   230,   240,   231,   232,   233,   246,   234,   235,   236,
-      271,     0,   269,   270,   273,   274,     0,   261,   262,   264,
-      265,   266,   267,   268,   157,   159,   154,     0,   152,   155,
 -      92,    93,   356,   209,   211,   213,   285,   207,   215,   217,
 -       0,     0,   221,   219,   302,   348,   206,   187,   188,   189,
 -     201,     0,   185,   192,   203,   204,   205,   193,   194,   197,
 -     199,   195,   196,   190,   191,   198,   202,   200,   300,   299,
 -     298,     0,   295,   297,   330,   332,   346,   336,   338,   342,
 -     340,   344,   334,   327,   323,     0,   313,   314,   324,   325,
 -     326,   320,   316,   321,   318,   319,   322,   317,   115,   123,
 -       0,   253,   251,   256,     0,   246,   250,   247,     0,   236,
 -     237,   239,   249,   240,   241,   242,   255,   243,   244,   245,
 -     280,     0,   278,   279,   282,   283,     0,   270,   271,   273,
 -     274,   275,   276,   277,   155,   157,   152,     0,   150,   153,
 -     154,    37,     0,     0,    31,     0,     0,     0,     0,     0,
++      92,    93,   358,   211,   213,   215,   287,   209,   217,   219,
++       0,     0,   223,   221,   304,   350,   208,   189,   190,   191,
++     203,     0,   187,   194,   205,   206,   207,   195,   196,   199,
++     201,   197,   198,   192,   193,   200,   204,   202,   302,   301,
++     300,     0,   297,   299,   332,   334,   348,   338,   340,   344,
++     342,   346,   336,   329,   325,     0,   315,   316,   326,   327,
++     328,   322,   318,   323,   320,   321,   324,   319,   117,   125,
++       0,   255,   253,   258,     0,   248,   252,   249,     0,   238,
++     239,   241,   251,   242,   243,   244,   257,   245,   246,   247,
++     282,     0,   280,   281,   284,   285,     0,   272,   273,   275,
++     276,   277,   278,   279,   157,   159,   154,     0,   152,   155,
 +     156,    37,     0,     0,    31,     0,     0,     0,     0,     0,
        44,     0,    46,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,    57,     0,     0,     0,    95,
-      349,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,   175,     0,     0,   285,     0,
-        0,     0,     0,     0,     0,     0,     0,     0,   302,     0,
-        0,     0,     0,     0,     0,     0,     0,   225,     0,     0,
-        0,   259,     0,     0,     0,     0,   151,    43,    34,     0,
 -     358,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,   184,     0,     0,   294,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,   311,     0,
 -       0,     0,     0,     0,     0,     0,     0,   234,     0,     0,
 -       0,   268,     0,     0,     0,     0,   149,    43,    34,     0,
++     360,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++       0,     0,     0,     0,     0,   186,     0,     0,   296,     0,
++       0,     0,     0,     0,     0,     0,     0,     0,   313,     0,
++       0,     0,     0,     0,     0,     0,     0,   236,     0,     0,
++       0,   270,     0,     0,     0,     0,   151,    43,    34,     0,
         0,     0,     0,     0,    48,     0,    86,    87,     0,     0,
         0,    82,    83,    84,    85,     0,     0,     0,     0,     0,
-        0,     0,     0,   379,     0,     0,    59,     0,     0,    91,
-      361,   359,   360,   355,   356,   357,   358,     0,   350,   351,
-      353,   354,     0,     0,     0,     0,     0,     0,     0,   214,
-      215,     0,     0,     0,     0,   177,     0,   287,     0,     0,
-        0,     0,     0,     0,     0,     0,     0,   306,     0,     0,
-      239,     0,     0,     0,   249,   229,     0,   275,   263,     0,
-        0,   153,     0,     0,     0,   393,   395,     0,   320,     0,
-        0,   168,   218,   252,     0,     0,   144,     0,     0,     0,
-        0,    38,    97,   100,   101,    99,     0,   348,     0,   201,
-      203,   205,   278,   199,   207,   209,   213,   211,   295,     0,
-      292,   322,   324,   338,   328,   330,   334,   332,   336,   326,
-      118,   126,   245,   243,   248,   272,   158,   160,    35,     0,
-      401,     0,   398,   400,     0,   119,   121,   123,     0,     0,
 -       0,     0,     0,   388,     0,     0,    59,     0,     0,    91,
 -     370,   368,   369,   364,   365,   366,   367,     0,   359,   360,
 -     362,   363,     0,     0,     0,     0,     0,     0,     0,   223,
 -     224,     0,     0,     0,     0,   186,     0,   296,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,   315,     0,     0,
 -     248,     0,     0,     0,   258,   238,     0,   284,   272,     0,
 -       0,   151,     0,     0,     0,   402,   404,     0,   329,     0,
 -       0,   177,   227,   261,     0,     0,   142,     0,     0,     0,
 -       0,    38,    97,    99,     0,   357,     0,   210,   212,   214,
 -     287,   208,   216,   218,   222,   220,   304,     0,   301,   331,
 -     333,   347,   337,   339,   343,   341,   345,   335,   116,   124,
 -     254,   252,   257,   281,   156,   158,    35,     0,   410,     0,
 -     407,   409,     0,   117,   119,   121,     0,     0,     0,   114,
 -       0,   104,   106,   107,   108,   109,   110,   111,   112,   113,
 -       0,   181,     0,   178,   179,   231,     0,   228,   229,   265,
 -       0,   262,   263,   128,   137,   138,   139,   133,     0,   131,
 -     134,   135,   136,   354,     0,   146,     0,   143,   144,     0,
 -       0,     0,     0,     0,     0,     0,   161,   163,   164,   165,
 -     166,   167,   168,   384,     0,     0,     0,   382,   376,   381,
 -       0,   374,   379,   377,   378,   380,   395,   397,     0,   391,
 -     393,   394,     0,    40,     0,   361,   291,     0,   288,   289,
 -     308,     0,   305,   306,   350,     0,    55,     0,     0,   406,
 -      89,     0,     0,     0,     0,     0,     0,     0,   101,   103,
 -       0,   176,     0,   235,   226,     0,   269,   260,     0,     0,
 -     130,     0,   353,     0,   141,     0,     0,     0,     0,     0,
 -       0,     0,     0,   160,     0,     0,     0,     0,     0,   373,
 -       0,     0,     0,   390,   400,     0,   371,     0,   286,     0,
 -     312,   303,     0,     0,   349,     0,   408,     0,     0,     0,
 -     125,   126,   127,   105,     0,   180,     0,   230,     0,   264,
 -     132,   355,     0,   145,   169,   170,   171,   172,   173,   174,
 -     162,     0,   383,   386,   387,   375,     0,     0,   392,    39,
 -       0,   290,     0,   307,     0,     0,   118,   120,   122,   182,
 -     232,   266,   147,   385,   396,   398,   292,   309,   351,   414,
 -       0,   412,     0,     0,   411,   426,     0,   424,   422,   418,
 -       0,   416,   420,   421,   419,   413,     0,     0,     0,     0,
 -     415,     0,   423,     0,   417,     0,   425,   430,     0,   428,
 -       0,     0,   427,   434,     0,   432,   429,     0,     0,   431,
 -       0,   433,   435
++       0,     0,     0,   390,     0,     0,    59,     0,     0,    91,
++     372,   370,   371,   366,   367,   368,   369,     0,   361,   362,
++     364,   365,     0,     0,     0,     0,     0,     0,     0,   225,
++     226,     0,     0,     0,     0,   188,     0,   298,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,   317,     0,     0,
++     250,     0,     0,     0,   260,   240,     0,   286,   274,     0,
++       0,   153,     0,     0,     0,   404,   406,     0,   331,     0,
++       0,   179,   229,   263,     0,     0,   144,     0,     0,     0,
++       0,    38,    97,   100,   101,    99,     0,   359,     0,   212,
++     214,   216,   289,   210,   218,   220,   224,   222,   306,     0,
++     303,   333,   335,   349,   339,   341,   345,   343,   347,   337,
++     118,   126,   256,   254,   259,   283,   158,   160,    35,     0,
++     412,     0,   409,   411,     0,   119,   121,   123,     0,     0,
 +       0,   116,     0,   106,   108,   109,   110,   111,   112,   113,
-      114,   115,     0,   172,     0,   169,   170,   222,     0,   219,
-      220,   256,     0,   253,   254,   130,   139,   140,   141,   135,
-        0,   133,   136,   137,   138,   345,     0,   148,     0,   145,
-      146,     0,     0,   163,   375,     0,     0,     0,   373,   367,
-      372,     0,   365,   370,   368,   369,   371,   386,   388,     0,
-      382,   384,   385,     0,    40,     0,   352,   282,     0,   279,
-      280,   299,     0,   296,   297,   341,     0,    55,     0,     0,
-      397,    89,     0,     0,     0,     0,     0,     0,     0,   103,
-      105,     0,   167,     0,   226,   217,     0,   260,   251,     0,
-        0,   132,     0,   344,     0,   143,     0,     0,     0,   162,
-        0,     0,     0,     0,     0,   364,     0,     0,     0,   381,
-      391,     0,   362,     0,   277,     0,   303,   294,     0,     0,
-      340,     0,   399,     0,     0,     0,   127,   128,   129,   107,
-        0,   171,     0,   221,     0,   255,   134,   346,     0,   147,
-      165,   164,     0,   374,   377,   378,   366,     0,     0,   383,
-       39,     0,   281,     0,   298,     0,     0,   120,   122,   124,
-      173,   223,   257,   149,   376,   387,   389,   283,   300,   342,
-      405,     0,   403,     0,     0,   402,   417,     0,   415,   413,
-      409,     0,   407,   411,   412,   410,   404,     0,     0,     0,
-        0,   406,     0,   414,     0,   408,     0,   416,   421,     0,
-      419,     0,     0,   418,   425,     0,   423,   420,     0,     0,
-      422,     0,   424,   426
++     114,   115,     0,   183,     0,   180,   181,   233,     0,   230,
++     231,   267,     0,   264,   265,   130,   139,   140,   141,   135,
++       0,   133,   136,   137,   138,   356,     0,   148,     0,   145,
++     146,     0,     0,     0,     0,     0,     0,     0,   163,   165,
++     166,   167,   168,   169,   170,   386,     0,     0,     0,   384,
++     378,   383,     0,   376,   381,   379,   380,   382,   397,   399,
++       0,   393,   395,   396,     0,    40,     0,   363,   293,     0,
++     290,   291,   310,     0,   307,   308,   352,     0,    55,     0,
++       0,   408,    89,     0,     0,     0,     0,     0,     0,     0,
++     103,   105,     0,   178,     0,   237,   228,     0,   271,   262,
++       0,     0,   132,     0,   355,     0,   143,     0,     0,     0,
++       0,     0,     0,     0,     0,   162,     0,     0,     0,     0,
++       0,   375,     0,     0,     0,   392,   402,     0,   373,     0,
++     288,     0,   314,   305,     0,     0,   351,     0,   410,     0,
++       0,     0,   127,   128,   129,   107,     0,   182,     0,   232,
++       0,   266,   134,   357,     0,   147,   171,   172,   173,   174,
++     175,   176,   164,     0,   385,   388,   389,   377,     0,     0,
++     394,    39,     0,   292,     0,   309,     0,     0,   120,   122,
++     124,   184,   234,   268,   149,   387,   398,   400,   294,   311,
++     353,   416,     0,   414,     0,     0,   413,   428,     0,   426,
++     424,   420,     0,   418,   422,   423,   421,   415,     0,     0,
++       0,     0,   417,     0,   425,     0,   419,     0,   427,   432,
++       0,   430,     0,     0,   429,   436,     0,   434,   431,     0,
++       0,   433,     0,   435,   437
    };
  
    const short int
    Dhcp4Parser::yypgoto_[] =
    {
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,     3,  -411,  -411,  -411,  -411,   -57,  -411,  -411,
-       34,  -411,  -104,  -411,   -54,  -411,  -411,  -411,   196,  -411,
-     -411,  -411,  -411,    30,   174,   -56,   -40,   -38,  -411,  -411,
-      -37,  -411,  -411,    33,   173,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,    36,  -119,  -398,  -411,
 -    -411,  -411,     3,  -411,  -411,  -411,  -411,    10,  -411,  -411,
 -      55,  -411,  -106,  -411,   -54,  -411,  -411,  -411,   207,  -411,
 -    -411,  -411,  -411,    38,   186,   -56,   -40,   -38,  -411,  -411,
 -     -37,  -411,  -411,    44,   185,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -411,    46,  -113,  -398,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -411,   -59,  -411,  -410,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -124,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -128,  -411,  -411,  -411,  -122,   149,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -411,  -133,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -411,  -411,  -104,  -411,  -411,  -411,
 -    -101,   187,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -402,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -109,  -411,  -411,  -411,  -103,  -411,
 -     164,  -411,   -52,  -411,  -411,  -411,  -411,   -48,  -411,  -411,
 -    -411,  -411,  -411,   -47,  -411,  -411,  -411,  -105,  -411,  -411,
 -    -411,  -102,  -411,   163,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,  -132,  -411,  -411,  -411,  -125,   196,
 -    -411,  -411,  -411,  -411,  -411,  -411,  -123,  -411,  -411,  -411,
 -    -131,  -411,   194,   -43,  -411,  -256,  -411,  -255,  -411,  -411,
++    -411,  -411,     3,  -411,  -411,  -411,  -411,     5,  -411,  -411,
++      73,  -411,   -93,  -411,   -54,  -411,  -411,  -411,   216,  -411,
++    -411,  -411,  -411,    51,   198,   -56,   -40,   -38,  -411,  -411,
++     -37,  -411,  -411,    49,   187,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,    50,  -111,  -398,  -411,
 +    -411,  -411,  -411,  -411,  -411,  -411,   -59,  -411,  -410,  -411,
-     -411,  -411,  -411,  -411,  -411,  -128,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -133,  -411,  -411,  -411,  -130,   130,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -131,  -411,  -411,  -411,
-     -411,  -113,  -411,  -411,  -411,  -108,   175,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -399,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -111,
-     -411,  -411,  -411,  -107,  -411,   152,  -411,   -52,  -411,  -411,
-     -411,  -411,   -48,  -411,  -411,  -411,  -411,  -411,   -47,  -411,
-     -411,  -411,  -106,  -411,  -411,  -411,  -103,  -411,   149,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -129,
-     -411,  -411,  -411,  -126,   181,  -411,  -411,  -411,  -411,  -411,
-     -411,  -118,  -411,  -411,  -411,  -127,  -411,   180,   -43,  -411,
-     -257,  -411,  -256,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -122,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -124,  -411,  -411,  -411,  -121,   152,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,  -118,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -411,  -411,   -97,  -411,  -411,
++    -411,   -94,   205,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -402,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,   -98,  -411,  -411,  -411,   -95,
++    -411,   178,  -411,   -52,  -411,  -411,  -411,  -411,   -48,  -411,
++    -411,  -411,  -411,  -411,   -47,  -411,  -411,  -411,   -92,  -411,
++    -411,  -411,   -88,  -411,   181,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,  -115,  -411,  -411,  -411,  -110,
++     217,  -411,  -411,  -411,  -411,  -411,  -411,  -116,  -411,  -411,
++    -411,  -112,  -411,   206,   -43,  -411,  -256,  -411,  -255,  -411,
      -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,    42,  -411,
-     -411,  -411,  -411,  -411,  -411,  -101,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -102,  -411,  -411,  -411,  -411,
-     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   -68,
-     -411,  -411,  -411,  -170,  -411,  -411,  -185,  -411,  -411,  -411,
-     -411,  -411,  -411,  -195,  -411,  -411,  -201,  -411
+     -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,    62,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -108,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -110,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
 -    -411,  -411,  -411,  -411,   -64,  -411,  -411,  -411,  -178,  -411,
 -    -411,  -193,  -411,  -411,  -411,  -411,  -411,  -411,  -204,  -411,
 -    -411,  -210,  -411
++    -411,  -411,  -411,  -411,    74,  -411,  -411,  -411,  -411,  -411,
++    -411,   -99,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -101,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
++    -411,  -411,  -411,  -411,  -411,   -49,  -411,  -411,  -411,  -169,
++    -411,  -411,  -183,  -411,  -411,  -411,  -411,  -411,  -411,  -191,
++    -411,  -411,  -197,  -411
    };
  
    const short int
    {
        -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
        20,    21,    63,    31,    32,    53,    67,    68,    33,    52,
-      432,   544,    64,    65,   102,    35,    54,    75,    76,    77,
 -     432,   553,    64,    65,   102,    35,    54,    75,    76,    77,
++     432,   555,    64,    65,   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,
 -     571,   484,   572,   485,   573,   207,   311,   487,   488,   489,
 -     507,   114,   266,   508,   509,   510,   511,   512,   115,   268,
 -     516,   517,   518,   593,    51,    62,   237,   238,   239,   323,
 -     240,   324,   116,   269,   525,   526,   527,   528,   529,   530,
 -     531,   532,   117,   263,   492,   493,   494,   580,    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,   583,    47,    60,   208,   209,
 -     210,   211,   212,   213,   214,   215,   314,   216,   313,   217,
 -     218,   315,   219,   119,   265,   500,   501,   502,   586,    49,
 -      61,   226,   227,   228,   229,   230,   319,   231,   232,   233,
 -     164,   284,   557,   558,   559,   617,    43,    58,   171,   172,
 -     173,   296,   165,   292,   561,   562,   563,   620,    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,   565,   623,   121,   267,   514,
 -     280,   367,   368,   369,   370,   371,   434,   122,   270,   540,
 -     541,   542,   543,   604,   544,   545,   123,   124,   272,   548,
 -     549,   550,   610,   551,   611,   125,   273,    78,   248,    79,
 -     249,    80,   247,   469,   470,   471,   567,   680,   681,   682,
 -     690,   691,   692,   693,   698,   694,   696,   708,   709,   710,
 -     714,   715,   717
 +     277,   435,   112,   257,   113,   258,   482,   483,   206,   310,
-      485,   562,   486,   563,   487,   564,   207,   311,   489,   490,
++     485,   573,   486,   574,   487,   575,   207,   311,   489,   490,
 +     491,   509,   114,   266,   510,   511,   512,   513,   514,   115,
-      268,   518,   519,   520,   584,    51,    62,   237,   238,   239,
-      323,   240,   324,   116,   269,   522,   523,   117,   263,   494,
-      495,   496,   571,    41,    57,   151,   152,   153,   285,   154,
-      281,   155,   282,   156,   283,   157,   286,   158,   287,   159,
-      291,   160,   290,   161,   162,   118,   264,   498,   499,   500,
-      574,    47,    60,   208,   209,   210,   211,   212,   213,   214,
-      215,   314,   216,   313,   217,   218,   315,   219,   119,   265,
-      502,   503,   504,   577,    49,    61,   226,   227,   228,   229,
-      230,   319,   231,   232,   233,   164,   284,   548,   549,   550,
-      603,    43,    58,   171,   172,   173,   296,   165,   292,   552,
-      553,   554,   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,
-      556,   609,   121,   267,   516,   280,   367,   368,   369,   370,
-      371,   436,   122,   270,   531,   532,   533,   534,   590,   535,
-      536,   123,   124,   272,   539,   540,   541,   596,   542,   597,
-      125,   273,    78,   248,    79,   249,    80,   247,   471,   472,
-      473,   558,   661,   662,   663,   671,   672,   673,   674,   679,
-      675,   677,   689,   690,   691,   695,   696,   698
++     268,   518,   519,   520,   595,    51,    62,   237,   238,   239,
++     323,   240,   324,   116,   269,   527,   528,   529,   530,   531,
++     532,   533,   534,   117,   263,   494,   495,   496,   582,    41,
++      57,   151,   152,   153,   285,   154,   281,   155,   282,   156,
++     283,   157,   286,   158,   287,   159,   291,   160,   290,   161,
++     162,   118,   264,   498,   499,   500,   585,    47,    60,   208,
++     209,   210,   211,   212,   213,   214,   215,   314,   216,   313,
++     217,   218,   315,   219,   119,   265,   502,   503,   504,   588,
++      49,    61,   226,   227,   228,   229,   230,   319,   231,   232,
++     233,   164,   284,   559,   560,   561,   619,    43,    58,   171,
++     172,   173,   296,   165,   292,   563,   564,   565,   622,    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,   567,   625,   121,   267,
++     516,   280,   367,   368,   369,   370,   371,   436,   122,   270,
++     542,   543,   544,   545,   606,   546,   547,   123,   124,   272,
++     550,   551,   552,   612,   553,   613,   125,   273,    78,   248,
++      79,   249,    80,   247,   471,   472,   473,   569,   682,   683,
++     684,   692,   693,   694,   695,   700,   696,   698,   710,   711,
++     712,   716,   717,   719
    };
  
    const unsigned short int
    Dhcp4Parser::yytable_[] =
    {
        74,   147,   223,   146,   169,   183,   205,   222,   236,   224,
-      163,   170,   184,   225,   166,    30,   188,   148,   530,   149,
-      150,   484,   484,   365,   366,    23,   515,    24,    69,    25,
-      529,   132,    34,   132,   251,   274,    93,    22,   278,   252,
-      275,    83,    84,   279,   234,   235,   168,    36,   199,   220,
-      200,   201,   221,   294,    87,    88,    89,   297,   295,   133,
-      134,   135,   298,    93,   198,   475,   476,   477,   478,   479,
-      480,    38,   136,    40,   137,   138,   139,   140,   141,   142,
-       42,   199,    81,   143,   144,   143,    44,    82,    83,    84,
-      145,   199,    85,    86,    84,   174,   175,    73,   234,   235,
-       70,    87,    88,    89,    90,    91,    71,    72,    73,    92,
-       93,    84,   174,   175,   325,    93,   199,    46,    73,   326,
-       26,    27,    28,    29,    73,    48,   274,    94,    95,    73,
-      580,   557,    93,   581,   360,   666,   198,   667,   668,    96,
-      478,    73,    97,    98,   582,   198,    50,   583,    99,   100,
-      176,    73,   101,    66,   177,   178,   179,   180,   181,   241,
-      182,   559,   199,   242,   200,   201,   560,   202,   203,   204,
-      484,    73,   278,   568,   568,   588,    73,   561,   569,   570,
-      589,   365,   366,   627,   530,   594,   524,   525,   526,   527,
-      595,   664,   692,    73,   665,   693,   529,    74,     1,     2,
-        3,     4,     5,     6,     7,     8,     9,    10,   243,   598,
-      245,   294,   325,    73,   599,   600,   650,   653,   297,   680,
-      699,   362,    73,   657,   681,   700,   361,   505,   506,   507,
-      508,   126,   127,   363,   433,   434,   244,   364,   147,   245,
-      146,   537,   538,   169,   250,   327,   328,   163,   254,   255,
-      170,   166,   259,   260,   148,   183,   149,   150,   261,   262,
 -     163,   170,   184,   225,   166,    30,   188,   148,   539,   149,
 -     150,   482,   482,   513,   365,   366,   132,    23,    69,    24,
 -     538,    25,   126,   127,    83,    84,   198,   132,   198,    22,
 -     476,    93,    84,   174,   175,   251,    66,    87,    88,    89,
 -     252,   168,   133,   134,   135,   199,    93,   200,   201,    34,
 -     202,   203,   204,    93,   199,   136,    36,   137,   138,   139,
 -     140,   141,   142,    38,   274,   278,   143,   144,   242,   275,
 -     279,    81,   360,   145,    82,    83,    84,   143,    40,    85,
 -      86,   294,   533,   534,   535,   536,   295,    42,    87,    88,
 -      89,    90,    91,    44,    70,   241,    92,    93,    73,   243,
 -      71,    72,   234,   235,    84,   174,   175,   589,    46,    73,
 -     590,    73,    73,    73,    94,    95,    26,    27,    28,    29,
 -      73,   591,   297,   199,   592,    93,    96,   298,    48,    97,
 -     199,   220,   200,   201,   221,   325,    98,   234,   235,    73,
 -     326,    99,   100,   176,    50,   101,   244,   177,   178,   179,
 -     180,   181,   245,   182,   250,   198,   473,   474,   475,   476,
 -     477,   478,   274,   568,    73,   546,   547,   566,   569,   482,
 -     365,   366,   199,   685,   683,   686,   687,   684,   254,   641,
 -     519,   520,   521,   522,   523,   524,   278,    74,   539,    73,
 -     577,   570,    73,   577,   602,   578,    73,   255,   579,   603,
 -     538,     1,     2,     3,     4,     5,     6,     7,     8,     9,
 -      10,   362,   608,   612,   245,   294,   361,   609,   613,   614,
 -     669,   325,   711,   363,   297,   712,   672,   364,   147,   676,
 -     146,   259,   260,   169,   699,   327,   328,   163,    73,   700,
 -     170,   166,   261,   718,   148,   183,   149,   150,   719,   262,
--     271,   288,   184,   223,   205,   289,   188,   308,   222,   309,
-      224,   312,   316,   317,   225,   318,   329,   320,   321,   322,
-      336,   330,   331,   332,   333,   335,   337,   338,   339,   340,
-      345,   341,   342,   343,   344,   346,   347,   348,   349,   350,
-      351,   352,   353,   354,   355,   357,   358,   372,   373,   374,
-      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-      386,   388,   389,   390,   391,   392,   393,   394,   395,   396,
-      398,   399,   400,   401,   402,   415,   416,   403,   404,   406,
-      407,   409,   410,   412,   437,   470,   418,   413,   414,   417,
-      419,   420,   421,   422,   423,   424,   425,   426,   431,   442,
-      488,   488,   427,   428,   429,   481,   481,   430,   438,   439,
-      449,   440,   448,   543,   528,   441,   493,   497,   501,   362,
-      517,   545,   443,   547,   361,   551,   565,   444,   445,   446,
-      447,   363,   566,   567,   573,   364,   572,   576,   450,   575,
-      579,   578,   585,   586,   604,   587,   591,   592,   593,   605,
-      451,   452,   608,   467,   607,   468,   611,   613,   610,   614,
-      615,   632,   637,   638,   453,   645,   640,   646,   454,   686,
-      660,   455,   456,   651,   457,   652,   658,   678,   682,   684,
-      601,   555,   701,   469,   688,   458,   459,   334,   356,   619,
-      474,   359,   626,   629,   628,   411,   492,   631,   460,   461,
-      621,   462,   463,   620,   464,   623,   465,   622,   466,   385,
-      405,   408,   521,   625,   624,   602,   642,   641,   387,   643,
-      546,   617,   616,   647,   618,   630,   633,   634,   635,   397,
-      644,   612,   648,   636,   676,   685,   639,   697,   702,   649,
-        0,     0,     0,     0,     0,   654,     0,   655,     0,   488,
-        0,   656,     0,     0,   481,   147,     0,   146,   223,     0,
-      205,     0,     0,   222,   163,   224,   659,   694,   166,   225,
-      236,   148,   683,   149,   150,     0,   687,     0,     0,   703,
-      528,     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,
 -     224,   312,   316,   317,   225,   503,   504,   505,   506,   318,
 -     321,   320,   322,   329,   330,   331,   332,   333,   335,   336,
 -     337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
 -     347,   348,   349,   350,   351,   352,   354,   353,   355,   357,
 -     358,   372,   373,   374,   375,   376,   377,   378,   379,   380,
 -     381,   382,   383,   384,   386,   388,   389,   390,   391,   392,
 -     393,   394,   395,   396,   398,   415,   416,   399,   400,   401,
 -     402,   403,   404,   406,   409,   410,   407,   412,   418,   413,
 -     433,   414,   417,   419,   420,   421,   422,   423,   424,   425,
 -     486,   486,   426,   427,   431,   479,   479,   428,   429,   430,
 -     436,   435,   447,   437,   537,   438,   440,   362,   439,   441,
 -     446,   491,   361,   495,   499,   515,   554,   556,   560,   363,
 -     442,   574,   575,   364,   443,   444,   445,   448,   576,   581,
 -     582,   584,   585,   588,   587,   596,   595,   449,   594,   597,
 -     598,   599,   600,   465,   601,   466,   605,   606,   450,   452,
 -     607,   618,   619,   621,   622,   665,   624,   625,   627,   628,
 -     629,   651,   656,   657,   664,   453,   454,   564,   455,   659,
 -     552,   679,   456,   670,   671,   451,   677,   615,   697,   701,
 -     703,   467,   457,   458,   705,   707,   720,   468,   334,   459,
 -     356,   472,   460,   359,   633,   640,   490,   643,   461,   650,
 -     462,   642,   463,   464,   411,   713,   637,   616,   635,   634,
 -     636,   385,   405,   639,   638,   408,   630,   661,   631,   662,
 -     644,   632,   660,   387,   645,   646,   647,   648,   555,   663,
 -     655,   649,   658,   397,   626,   695,   704,   716,   721,   652,
 -       0,     0,     0,     0,   653,     0,   654,     0,   486,   702,
 -       0,     0,     0,   479,   147,     0,   146,   223,     0,   205,
 -       0,     0,   222,   163,   224,   666,   667,   166,   225,   236,
 -     148,   668,   149,   150,   673,   674,   675,   678,     0,     0,
 -       0,   706,     0,     0,   537,   722,     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,     0,     0,     0,     0,     0,     0,
++     163,   170,   184,   225,   166,    30,   188,   148,   541,   149,
++     150,   484,   484,   515,   365,   366,   132,    23,    69,    24,
++     540,    25,   591,    93,   198,   592,    83,    84,   478,    22,
++     198,    34,   132,   168,    84,   174,   175,   234,   235,    87,
++      88,    89,   234,   235,   133,   134,   135,   199,    93,   200,
++     201,    36,   202,   203,   204,    93,   199,   136,    38,   137,
++     138,   139,   140,   141,   142,   251,    81,    66,   143,   144,
++     252,    82,    83,    84,   360,   145,    85,    86,   199,    73,
++     535,   536,   537,   538,   143,    87,    88,    89,    90,    91,
++      73,    40,   593,    92,    93,   594,    70,   199,   220,   200,
++     201,   221,    71,    72,    84,   174,   175,    73,   126,   127,
++      42,    94,    95,    73,    73,    73,   433,   434,    26,    27,
++      28,    29,    73,    96,   274,    93,    97,   278,   687,   275,
++     688,   689,   279,    98,   685,   294,   297,   686,    99,   100,
++     295,   298,   101,   176,    73,   548,   549,   177,   178,   179,
++     180,   181,    44,   182,   521,   522,   523,   524,   525,   526,
++     325,    73,   274,    73,   570,   326,   241,   568,   242,   571,
++      46,   484,   365,   366,   198,   475,   476,   477,   478,   479,
++     480,   643,   713,   278,   579,   714,   243,    74,   572,   580,
++     541,   199,    73,   579,   604,   610,   614,   244,   581,   605,
++     611,   615,   540,   245,   294,   325,    48,   297,   616,   671,
++     674,   362,   678,   701,   720,    50,   361,   245,   702,   721,
++     250,   254,   255,   363,   259,   260,   261,   364,   147,   262,
++     146,   271,   288,   169,   289,   327,   328,   163,   309,   308,
++     170,   166,   312,   316,   148,   183,   149,   150,   505,   506,
++     507,   508,   184,   223,   205,   317,   188,    73,   222,   318,
++     224,   320,   321,   322,   225,     1,     2,     3,     4,     5,
++       6,     7,     8,     9,    10,   330,   329,   331,   332,   333,
++     335,   336,   337,   338,   339,   340,   345,   346,   347,   348,
++     341,   342,   343,   344,   349,   350,   351,   352,   354,   355,
++     357,   353,   358,   372,   373,   374,   375,   376,   377,   378,
++     379,   381,   382,   383,   380,   384,   386,   388,   389,   390,
++     391,   392,   393,   394,   395,   415,   416,   396,   398,   399,
++     400,   401,   402,   403,   406,   404,   409,   410,   407,   412,
++     418,   413,   439,   414,   417,   419,   420,   421,   422,   423,
++     488,   488,   424,   425,   426,   481,   481,   427,   428,   429,
++     430,   431,   437,   438,   539,   440,   442,   441,   443,   362,
++     444,   445,   446,   447,   361,   448,   449,   583,   450,   493,
++     497,   363,   501,   451,   452,   364,   470,   517,   556,   558,
++     562,   576,   454,   455,   456,   457,   577,   578,   584,   587,
++     586,   598,   590,   467,   589,   468,   596,   597,   620,   599,
++     600,   601,   458,   566,   602,   603,   459,   607,   608,   609,
++     621,   624,   623,   627,   629,   554,   630,   460,   461,   626,
++     631,   653,   462,   658,   659,   666,   672,   463,   661,   667,
++     699,   673,   703,   679,   681,   705,   464,   465,   707,   709,
++     722,   466,   617,   453,   469,   359,   474,   334,   635,   642,
++     492,   618,   356,   645,   644,   633,   632,   411,   634,   646,
++     647,   648,   649,   650,   651,   654,   652,   637,   636,   639,
++     638,   655,   715,   656,   668,   669,   405,   670,   641,   385,
++     640,   675,   676,   408,   677,   680,   663,   704,   665,   662,
++     664,   657,   557,   660,   387,   397,   697,   708,   706,   724,
++     488,   628,   718,   723,     0,   481,   147,     0,   146,   223,
++       0,   205,     0,     0,   222,   163,   224,     0,     0,   166,
++     225,   236,   148,     0,   149,   150,     0,     0,     0,     0,
++       0,     0,     0,     0,     0,     0,   539,     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,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,   670,     0,     0,     0,     0,   669,
 -       0,     0,     0,   689,     0,     0,     0,     0,   688,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,   670,     0,     0,     0,     0,   669
 -     689,     0,     0,     0,     0,   688
++       0,     0,     0,     0,     0,   691,     0,     0,     0,     0,
++     690,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++       0,     0,   691,     0,     0,     0,     0,   690
    };
  
    const short int
    {
        54,    57,    61,    57,    58,    59,    60,    61,    62,    61,
        57,    58,    59,    61,    57,    12,    59,    57,   428,    57,
-       57,   419,   420,   280,   280,     5,   425,     7,    10,     9,
-      428,     7,     7,     7,     3,     3,    39,     0,     3,     8,
-        8,    17,    18,     8,    69,    70,    49,     7,    40,    41,
-       42,    43,    44,     3,    30,    31,    32,     3,     8,    35,
-       36,    37,     8,    39,    23,    24,    25,    26,    27,    28,
-       29,     7,    48,     7,    50,    51,    52,    53,    54,    55,
-        7,    40,    11,    59,    60,    59,     7,    16,    17,    18,
-       66,    40,    21,    22,    18,    19,    20,   100,    69,    70,
-       82,    30,    31,    32,    33,    34,    88,    89,   100,    38,
-       39,    18,    19,    20,     3,    39,    40,     7,   100,     8,
-      100,   101,   102,   103,   100,     7,     3,    56,    57,   100,
-        3,     8,    39,     6,    58,    84,    23,    86,    87,    68,
-       27,   100,    71,    72,     3,    23,     7,     6,    77,    78,
-       57,   100,    81,   100,    61,    62,    63,    64,    65,     6,
-       67,     3,    40,     3,    42,    43,     8,    45,    46,    47,
-      568,   100,     3,     3,     3,     3,   100,     8,     8,     8,
-        8,   438,   438,   582,   594,     3,    73,    74,    75,    76,
-        8,     3,     3,   100,     6,     6,   594,   251,    90,    91,
-       92,    93,    94,    95,    96,    97,    98,    99,     4,     3,
-        3,     3,     3,   100,     8,     8,     8,     8,     3,     3,
-        3,   280,   100,     8,     8,     8,   280,    61,    62,    63,
-       64,    12,    13,   280,    14,    15,     8,   280,   294,     3,
-      294,    79,    80,   297,     4,   242,   243,   294,     4,     4,
-      297,   294,     4,     4,   294,   309,   294,   294,     4,     4,
-        4,     4,   309,   322,   318,     4,   309,     8,   322,     3,
-      322,     4,     4,     8,   322,     3,   100,     4,     8,     3,
-      103,     4,     4,     4,     4,     4,   103,     4,     4,     4,
-        4,   101,   101,   101,   101,     4,     4,     4,     4,     4,
-        4,     4,   101,     4,     4,     4,     4,     4,     4,     4,
-        4,     4,     4,     4,   101,   103,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-        4,     4,   101,     4,     4,   332,   333,     4,   103,     4,
-      103,     4,     4,     4,     8,    83,   100,     7,     7,     7,
-        7,     7,     5,     5,     5,     5,     5,     5,     5,     5,
-      419,   420,     7,     7,     7,   419,   420,     7,     3,   100,
-        7,   100,     5,   430,   428,   100,     7,     7,     7,   438,
-        7,     4,   100,     7,   438,     7,     4,   100,   100,   100,
-      100,   438,     4,     4,     3,   438,     6,     3,   100,     6,
-        3,     6,     6,     3,     6,     4,     4,     4,     4,     3,
-      100,   100,     3,   410,     6,   412,     4,     4,     8,     4,
-        4,     4,     4,     4,   390,     4,     6,     5,   100,     5,
-        7,   100,   100,     8,   100,     8,     8,     4,     4,     4,
-      544,    67,     4,   413,     7,   100,   100,   251,   274,   568,
-      417,   278,   580,   586,   584,   325,   420,   588,   100,   100,
-      573,   100,   100,   571,   100,   576,   100,   574,   100,   294,
-      318,   322,   100,   579,   577,   100,   605,   603,   297,   606,
-      438,   101,   103,   100,   103,   101,   101,   101,   101,   309,
-      608,   559,   100,   594,   664,   680,   598,   692,   699,   100,
-       -1,    -1,    -1,    -1,    -1,   100,    -1,   100,    -1,   568,
-       -1,   100,    -1,    -1,   568,   571,    -1,   571,   577,    -1,
-      574,    -1,    -1,   577,   571,   577,   100,    85,   571,   577,
-      584,   571,   101,   571,   571,    -1,   100,    -1,    -1,   100,
-      594,    -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,
+       57,   419,   420,   425,   280,   280,     7,     5,    10,     7,
 -     428,     9,    12,    13,    15,    16,    21,     7,    21,     0,
 -      25,    37,    16,    17,    18,     3,   104,    28,    29,    30,
 -       8,    47,    33,    34,    35,    38,    37,    40,    41,     7,
 -      43,    44,    45,    37,    38,    46,     7,    48,    49,    50,
 -      51,    52,    53,     7,     3,     3,    57,    58,     3,     8,
 -       8,    11,    56,    64,    14,    15,    16,    57,     7,    19,
 -      20,     3,    77,    78,    79,    80,     8,     7,    28,    29,
 -      30,    31,    32,     7,    86,     6,    36,    37,   104,     4,
 -      92,    93,    67,    68,    16,    17,    18,     3,     7,   104,
 -       6,   104,   104,   104,    54,    55,   104,   105,   106,   107,
 -     104,     3,     3,    38,     6,    37,    66,     8,     7,    69,
 -      38,    39,    40,    41,    42,     3,    76,    67,    68,   104,
 -       8,    81,    82,    55,     7,    85,     8,    59,    60,    61,
 -      62,    63,     3,    65,     4,    21,    22,    23,    24,    25,
 -      26,    27,     3,     3,   104,    83,    84,     8,     8,   577,
 -     436,   436,    38,    88,     3,    90,    91,     6,     4,   591,
 -      70,    71,    72,    73,    74,    75,     3,   251,   608,   104,
 -       3,     8,   104,     3,     3,     8,   104,     4,     8,     8,
 -     608,    94,    95,    96,    97,    98,    99,   100,   101,   102,
 -     103,   280,     3,     3,     3,     3,   280,     8,     8,     8,
 -       8,     3,     3,   280,     3,     6,     8,   280,   294,     8,
 -     294,     4,     4,   297,     3,   242,   243,   294,   104,     8,
 -     297,   294,     4,     3,   294,   309,   294,   294,     8,     4,
 -       4,     4,   309,   322,   318,     4,   309,     8,   322,     3,
 -     322,     4,     4,     8,   322,    59,    60,    61,    62,     3,
 -       8,     4,     3,   104,     4,     4,     4,     4,     4,   107,
 -     107,     4,     4,     4,   105,   105,   105,   105,     4,     4,
 -       4,     4,     4,     4,     4,     4,     4,   105,     4,     4,
 -       4,     4,     4,     4,     4,     4,     4,     4,   105,   107,
 -       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
 -       4,     4,     4,     4,     4,   332,   333,     4,   105,     4,
 -       4,     4,   107,     4,     4,     4,   107,     4,   104,     7,
 -     104,     7,     7,     7,     7,     5,     5,     5,     5,     5,
 -     419,   420,     5,     7,     5,   419,   420,     7,     7,     7,
 -       3,     8,     7,   104,   428,   104,     5,   436,   104,   104,
 -       5,     7,   436,     7,     7,     7,     4,     7,     7,   436,
 -     104,     4,     4,   436,   104,   104,   104,   104,     4,     6,
 -       3,     6,     3,     3,     6,     4,     3,   104,     6,     4,
 -       4,     4,     4,   410,     4,   412,     4,     4,   104,   104,
 -       4,     6,     3,     6,     3,     5,     8,     4,     4,     4,
 -       4,     4,     4,     4,     4,   104,   104,    65,   104,     6,
 -     430,     7,   104,     8,     8,   390,     8,   553,     4,     4,
 -       4,   413,   104,   104,     5,     7,     4,    87,   251,   104,
 -     274,   417,   104,   278,   577,   589,   420,   595,   104,   602,
 -     104,   593,   104,   104,   325,    89,   585,   104,   582,   580,
 -     583,   294,   318,   588,   586,   322,   107,   619,   105,   620,
 -     105,   107,   617,   297,   105,   105,   105,   105,   436,   622,
 -     608,   105,   612,   309,   568,   683,   699,   711,   718,   105,
 -      -1,    -1,    -1,    -1,   105,    -1,   105,    -1,   577,   105,
 -      -1,    -1,    -1,   577,   580,    -1,   580,   586,    -1,   583,
 -      -1,    -1,   586,   580,   586,   104,   104,   580,   586,   593,
 -     580,   104,   580,   580,   104,   104,   104,   104,    -1,    -1,
 -      -1,   104,    -1,    -1,   608,   104,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,   617,    -1,    -1,   620,    -1,    -1,    -1,
 -     617,    -1,    -1,   620,    -1,    -1,    -1,   620,    -1,    -1,
++     428,     9,     3,    39,    23,     6,    17,    18,    27,     0,
++      23,     7,     7,    49,    18,    19,    20,    69,    70,    30,
++      31,    32,    69,    70,    35,    36,    37,    40,    39,    42,
++      43,     7,    45,    46,    47,    39,    40,    48,     7,    50,
++      51,    52,    53,    54,    55,     3,    11,   106,    59,    60,
++       8,    16,    17,    18,    58,    66,    21,    22,    40,   106,
++      79,    80,    81,    82,    59,    30,    31,    32,    33,    34,
++     106,     7,     3,    38,    39,     6,    88,    40,    41,    42,
++      43,    44,    94,    95,    18,    19,    20,   106,    12,    13,
++       7,    56,    57,   106,   106,   106,    14,    15,   106,   107,
++     108,   109,   106,    68,     3,    39,    71,     3,    90,     8,
++      92,    93,     8,    78,     3,     3,     3,     6,    83,    84,
++       8,     8,    87,    57,   106,    85,    86,    61,    62,    63,
++      64,    65,     7,    67,    72,    73,    74,    75,    76,    77,
++       3,   106,     3,   106,     3,     8,     6,     8,     3,     8,
++       7,   579,   438,   438,    23,    24,    25,    26,    27,    28,
++      29,   593,     3,     3,     3,     6,     4,   251,     8,     8,
++     610,    40,   106,     3,     3,     3,     3,     8,     8,     8,
++       8,     8,   610,     3,     3,     3,     7,     3,     8,     8,
++       8,   280,     8,     3,     3,     7,   280,     3,     8,     8,
++       4,     4,     4,   280,     4,     4,     4,   280,   294,     4,
++     294,     4,     4,   297,     4,   242,   243,   294,     3,     8,
++     297,   294,     4,     4,   294,   309,   294,   294,    61,    62,
++      63,    64,   309,   322,   318,     8,   309,   106,   322,     3,
++     322,     4,     8,     3,   322,    96,    97,    98,    99,   100,
++     101,   102,   103,   104,   105,     4,   106,     4,     4,     4,
++       4,   109,   109,     4,     4,     4,     4,     4,     4,     4,
++     107,   107,   107,   107,     4,     4,     4,     4,     4,     4,
++       4,   107,     4,     4,     4,     4,     4,     4,     4,     4,
++     107,     4,     4,     4,   109,     4,     4,     4,     4,     4,
++       4,     4,     4,     4,     4,   332,   333,     4,     4,     4,
++     107,     4,     4,     4,     4,   109,     4,     4,   109,     4,
++     106,     7,   106,     7,     7,     7,     7,     5,     5,     5,
++     419,   420,     5,     5,     5,   419,   420,     7,     7,     7,
++       7,     5,     8,     3,   428,   106,     5,   106,   106,   438,
++     106,   106,   106,   106,   438,     5,     7,     6,   106,     7,
++       7,   438,     7,   106,   106,   438,    89,     7,     4,     7,
++       7,     4,   106,   106,   106,   106,     4,     4,     3,     3,
++       6,     4,     3,   410,     6,   412,     6,     3,     6,     4,
++       4,     4,   106,    67,     4,     4,   106,     4,     4,     4,
++       3,     3,     6,     4,     4,   430,     4,   106,   106,     8,
++       4,     4,   106,     4,     4,     4,     8,   106,     6,     5,
++       4,     8,     4,     8,     7,     4,   106,   106,     5,     7,
++       4,   106,   555,   390,   413,   278,   417,   251,   579,   591,
++     420,   106,   274,   597,   595,   107,   109,   325,   109,   107,
++     107,   107,   107,   107,   107,   107,   604,   584,   582,   587,
++     585,   107,    91,   107,   106,   106,   318,   106,   590,   294,
++     588,   106,   106,   322,   106,   106,   621,   107,   624,   619,
++     622,   610,   438,   614,   297,   309,   685,   106,   701,   106,
++     579,   570,   713,   720,    -1,   579,   582,    -1,   582,   588,
++      -1,   585,    -1,    -1,   588,   582,   588,    -1,    -1,   582,
++     588,   595,   582,    -1,   582,   582,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,   610,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,   619,    -1,    -1,   622,    -1,
++      -1,    -1,   619,    -1,    -1,   622,    -1,    -1,    -1,   622,
        -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,   663,    -1,    -1,    -1,    -1,   663,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,   680,    -1,    -1,    -1,    -1,   680
 -      -1,    -1,    -1,   682,    -1,    -1,    -1,    -1,   682,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -     699,    -1,    -1,    -1,    -1,   699
++      -1,    -1,    -1,    -1,    -1,   684,    -1,    -1,    -1,    -1,
++     684,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
++      -1,    -1,   701,    -1,    -1,    -1,    -1,   701
    };
  
    const unsigned short int
    Dhcp4Parser::yystos_[] =
    {
-        0,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-       99,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-      114,   115,     0,     5,     7,     9,   100,   101,   102,   103,
-      116,   117,   118,   122,     7,   129,     7,   135,     7,   149,
-        7,   207,     7,   275,     7,   287,     7,   235,     7,   258,
-        7,   189,   123,   119,   130,   136,   150,   208,   276,   288,
-      236,   259,   190,   116,   126,   127,   100,   120,   121,    10,
-       82,    88,    89,   100,   128,   131,   132,   133,   346,   348,
-      350,    11,    16,    17,    18,    21,    22,    30,    31,    32,
-       33,    34,    38,    39,    56,    57,    68,    71,    72,    77,
-       78,    81,   128,   137,   138,   139,   140,   141,   142,   143,
-      144,   145,   156,   158,   176,   183,   197,   201,   229,   252,
-      292,   316,   326,   335,   336,   344,    12,    13,   147,   148,
-      151,   153,     7,    35,    36,    37,    48,    50,    51,    52,
-       53,    54,    55,    59,    60,    66,   128,   139,   140,   141,
-      144,   209,   210,   211,   213,   215,   217,   219,   221,   223,
-      225,   227,   228,   252,   269,   281,   292,   312,    49,   128,
-      252,   277,   278,   279,    19,    20,    57,    61,    62,    63,
-       64,    65,    67,   128,   252,   289,   290,   291,   292,   294,
-      296,   298,   300,   302,   304,   306,   308,   310,    23,    40,
-       42,    43,    45,    46,    47,   128,   162,   170,   237,   238,
-      239,   240,   241,   242,   243,   244,   246,   248,   249,   251,
-       41,    44,   128,   170,   241,   246,   260,   261,   262,   263,
-      264,   266,   267,   268,    69,    70,   128,   191,   192,   193,
-      195,     6,     3,     4,     8,     3,   134,   351,   347,   349,
-        4,     3,     8,   146,     4,     4,   293,   157,   159,     4,
-        4,     4,     4,   202,   230,   253,   177,   317,   184,   198,
-      327,     4,   337,   345,     3,     8,   152,   154,     3,     8,
-      319,   214,   216,   218,   270,   212,   220,   222,     4,     4,
-      226,   224,   282,   313,     3,     8,   280,     3,     8,   295,
-      297,   311,   301,   303,   307,   305,   309,   299,     8,     3,
-      163,   171,     4,   247,   245,   250,     4,     8,     3,   265,
-        4,     8,     3,   194,   196,     3,     8,   116,   116,   100,
-        4,     4,     4,     4,   132,     4,   103,   103,     4,     4,
-        4,   101,   101,   101,   101,     4,     4,     4,     4,     4,
-        4,     4,     4,   101,     4,     4,   138,     4,     4,   148,
-       58,   128,   170,   252,   292,   294,   296,   320,   321,   322,
-      323,   324,     4,     4,     4,     4,     4,     4,     4,   101,
-      103,     4,     4,     4,     4,   210,     4,   278,     4,     4,
-        4,     4,     4,     4,     4,     4,     4,   291,     4,     4,
-      101,     4,     4,     4,   103,   239,     4,   103,   262,     4,
-        4,   192,     4,     7,     7,   116,   116,     7,   100,     7,
 -       0,    94,    95,    96,    97,    98,    99,   100,   101,   102,
 -     103,   109,   110,   111,   112,   113,   114,   115,   116,   117,
 -     118,   119,     0,     5,     7,     9,   104,   105,   106,   107,
 -     120,   121,   122,   126,     7,   133,     7,   139,     7,   153,
 -       7,   216,     7,   284,     7,   296,     7,   244,     7,   267,
 -       7,   192,   127,   123,   134,   140,   154,   217,   285,   297,
 -     245,   268,   193,   120,   130,   131,   104,   124,   125,    10,
 -      86,    92,    93,   104,   132,   135,   136,   137,   355,   357,
 -     359,    11,    14,    15,    16,    19,    20,    28,    29,    30,
 -      31,    32,    36,    37,    54,    55,    66,    69,    76,    81,
 -      82,    85,   132,   141,   142,   143,   144,   145,   146,   147,
 -     148,   149,   159,   161,   179,   186,   200,   210,   238,   261,
 -     301,   325,   335,   344,   345,   353,    12,    13,   151,   152,
 -     155,   157,     7,    33,    34,    35,    46,    48,    49,    50,
 -      51,    52,    53,    57,    58,    64,   132,   143,   144,   145,
 -     148,   218,   219,   220,   222,   224,   226,   228,   230,   232,
 -     234,   236,   237,   261,   278,   290,   301,   321,    47,   132,
 -     261,   286,   287,   288,    17,    18,    55,    59,    60,    61,
 -      62,    63,    65,   132,   261,   298,   299,   300,   301,   303,
 -     305,   307,   309,   311,   313,   315,   317,   319,    21,    38,
 -      40,    41,    43,    44,    45,   132,   165,   173,   246,   247,
 -     248,   249,   250,   251,   252,   253,   255,   257,   258,   260,
 -      39,    42,   132,   173,   250,   255,   269,   270,   271,   272,
 -     273,   275,   276,   277,    67,    68,   132,   194,   195,   196,
 -     198,     6,     3,     4,     8,     3,   138,   360,   356,   358,
 -       4,     3,     8,   150,     4,     4,   302,   160,   162,     4,
 -       4,     4,     4,   211,   239,   262,   180,   326,   187,   201,
 -     336,     4,   346,   354,     3,     8,   156,   158,     3,     8,
 -     328,   223,   225,   227,   279,   221,   229,   231,     4,     4,
 -     235,   233,   291,   322,     3,     8,   289,     3,     8,   304,
 -     306,   320,   310,   312,   316,   314,   318,   308,     8,     3,
 -     166,   174,     4,   256,   254,   259,     4,     8,     3,   274,
 -       4,     8,     3,   197,   199,     3,     8,   120,   120,   104,
 -       4,     4,     4,     4,   136,     4,   107,   107,     4,     4,
 -       4,   105,   105,   105,   105,     4,     4,     4,     4,     4,
 -       4,     4,     4,   105,     4,     4,   142,     4,     4,   152,
 -      56,   132,   173,   261,   301,   303,   305,   329,   330,   331,
 -     332,   333,     4,     4,     4,     4,     4,     4,     4,   105,
 -     107,     4,     4,     4,     4,   219,     4,   287,     4,     4,
 -       4,     4,     4,     4,     4,     4,     4,   300,     4,     4,
 -     105,     4,     4,     4,   107,   248,     4,   107,   271,     4,
 -       4,   195,     4,     7,     7,   120,   120,     7,   104,     7,
++       0,    96,    97,    98,    99,   100,   101,   102,   103,   104,
++     105,   111,   112,   113,   114,   115,   116,   117,   118,   119,
++     120,   121,     0,     5,     7,     9,   106,   107,   108,   109,
++     122,   123,   124,   128,     7,   135,     7,   141,     7,   155,
++       7,   219,     7,   287,     7,   299,     7,   247,     7,   270,
++       7,   195,   129,   125,   136,   142,   156,   220,   288,   300,
++     248,   271,   196,   122,   132,   133,   106,   126,   127,    10,
++      88,    94,    95,   106,   134,   137,   138,   139,   358,   360,
++     362,    11,    16,    17,    18,    21,    22,    30,    31,    32,
++      33,    34,    38,    39,    56,    57,    68,    71,    78,    83,
++      84,    87,   134,   143,   144,   145,   146,   147,   148,   149,
++     150,   151,   162,   164,   182,   189,   203,   213,   241,   264,
++     304,   328,   338,   347,   348,   356,    12,    13,   153,   154,
++     157,   159,     7,    35,    36,    37,    48,    50,    51,    52,
++      53,    54,    55,    59,    60,    66,   134,   145,   146,   147,
++     150,   221,   222,   223,   225,   227,   229,   231,   233,   235,
++     237,   239,   240,   264,   281,   293,   304,   324,    49,   134,
++     264,   289,   290,   291,    19,    20,    57,    61,    62,    63,
++      64,    65,    67,   134,   264,   301,   302,   303,   304,   306,
++     308,   310,   312,   314,   316,   318,   320,   322,    23,    40,
++      42,    43,    45,    46,    47,   134,   168,   176,   249,   250,
++     251,   252,   253,   254,   255,   256,   258,   260,   261,   263,
++      41,    44,   134,   176,   253,   258,   272,   273,   274,   275,
++     276,   278,   279,   280,    69,    70,   134,   197,   198,   199,
++     201,     6,     3,     4,     8,     3,   140,   363,   359,   361,
++       4,     3,     8,   152,     4,     4,   305,   163,   165,     4,
++       4,     4,     4,   214,   242,   265,   183,   329,   190,   204,
++     339,     4,   349,   357,     3,     8,   158,   160,     3,     8,
++     331,   226,   228,   230,   282,   224,   232,   234,     4,     4,
++     238,   236,   294,   325,     3,     8,   292,     3,     8,   307,
++     309,   323,   313,   315,   319,   317,   321,   311,     8,     3,
++     169,   177,     4,   259,   257,   262,     4,     8,     3,   277,
++       4,     8,     3,   200,   202,     3,     8,   122,   122,   106,
++       4,     4,     4,     4,   138,     4,   109,   109,     4,     4,
++       4,   107,   107,   107,   107,     4,     4,     4,     4,     4,
++       4,     4,     4,   107,     4,     4,   144,     4,     4,   154,
++      58,   134,   176,   264,   304,   306,   308,   332,   333,   334,
++     335,   336,     4,     4,     4,     4,     4,     4,     4,   107,
++     109,     4,     4,     4,     4,   222,     4,   290,     4,     4,
++       4,     4,     4,     4,     4,     4,     4,   303,     4,     4,
++     107,     4,     4,     4,   109,   251,     4,   109,   274,     4,
++       4,   198,     4,     7,     7,   122,   122,     7,   106,     7,
         7,     5,     5,     5,     5,     5,     5,     7,     7,     7,
-        7,     5,   124,    14,    15,   155,   325,     8,     3,   100,
-      100,   100,     5,   100,   100,   100,   100,   100,     5,     7,
-      100,   100,   100,   124,   100,   100,   100,   100,   100,   100,
-      100,   100,   100,   100,   100,   100,   100,   116,   116,   137,
-       83,   352,   353,   354,   147,    24,    25,    26,    27,    28,
-       29,   128,   160,   161,   162,   164,   166,   168,   170,   172,
-      173,   174,   160,     7,   203,   204,   205,     7,   231,   232,
-      233,     7,   254,   255,   256,    61,    62,    63,    64,   175,
-      178,   179,   180,   181,   182,   223,   318,     7,   185,   186,
-      187,   100,   199,   200,    73,    74,    75,    76,   128,   162,
-      172,   328,   329,   330,   331,   333,   334,    79,    80,   338,
-      339,   340,   342,   121,   125,     4,   322,     7,   271,   272,
-      273,     7,   283,   284,   285,    67,   314,     8,   355,     3,
-        8,     8,   165,   167,   169,     4,     4,     4,     3,     8,
-        8,   206,     6,     3,   234,     6,     3,   257,     6,     3,
-        3,     6,     3,     6,   188,     6,     3,     4,     3,     8,
-      332,     4,     4,     4,     3,     8,   341,   343,     3,     8,
-        8,   126,   100,   274,     6,     3,   286,     6,     3,   315,
-        8,     4,   353,     4,     4,     4,   103,   101,   103,   161,
-      209,   205,   237,   233,   260,   256,   179,   223,   191,   187,
-      101,   200,     4,   101,   101,   101,   329,     4,     4,   339,
-        6,   277,   273,   289,   285,     4,     5,   100,   100,   100,
-        8,     8,     8,     8,   100,   100,   100,     8,     8,   100,
-        7,   356,   357,   358,     3,     6,    84,    86,    87,   128,
-      170,   359,   360,   361,   362,   364,   357,   365,     4,   363,
-        3,     8,     4,   101,     4,   360,     5,   100,     7,   366,
-      367,   368,     3,     6,    85,   369,   370,   367,   371,     3,
-        8,     4,   370,   100
 -       7,     5,   128,   104,   334,     8,     3,   104,   104,   104,
 -       5,   104,   104,   104,   104,   104,     5,     7,   104,   104,
 -     104,   128,   104,   104,   104,   104,   104,   104,   104,   104,
 -     104,   104,   104,   104,   104,   120,   120,   141,    87,   361,
 -     362,   363,   151,    22,    23,    24,    25,    26,    27,   132,
 -     163,   164,   165,   167,   169,   171,   173,   175,   176,   177,
 -     163,     7,   212,   213,   214,     7,   240,   241,   242,     7,
 -     263,   264,   265,    59,    60,    61,    62,   178,   181,   182,
 -     183,   184,   185,   232,   327,     7,   188,   189,   190,    70,
 -      71,    72,    73,    74,    75,   202,   203,   204,   205,   206,
 -     207,   208,   209,    77,    78,    79,    80,   132,   165,   175,
 -     337,   338,   339,   340,   342,   343,    83,    84,   347,   348,
 -     349,   351,   125,   129,     4,   331,     7,   280,   281,   282,
 -       7,   292,   293,   294,    65,   323,     8,   364,     3,     8,
 -       8,   168,   170,   172,     4,     4,     4,     3,     8,     8,
 -     215,     6,     3,   243,     6,     3,   266,     6,     3,     3,
 -       6,     3,     6,   191,     6,     3,     4,     4,     4,     4,
 -       4,     4,     3,     8,   341,     4,     4,     4,     3,     8,
 -     350,   352,     3,     8,     8,   130,   104,   283,     6,     3,
 -     295,     6,     3,   324,     8,     4,   362,     4,     4,     4,
 -     107,   105,   107,   164,   218,   214,   246,   242,   269,   265,
 -     182,   232,   194,   190,   105,   105,   105,   105,   105,   105,
 -     203,     4,   105,   105,   105,   338,     4,     4,   348,     6,
 -     286,   282,   298,   294,     4,     5,   104,   104,   104,     8,
 -       8,     8,     8,   104,   104,   104,     8,     8,   104,     7,
 -     365,   366,   367,     3,     6,    88,    90,    91,   132,   173,
 -     368,   369,   370,   371,   373,   366,   374,     4,   372,     3,
 -       8,     4,   105,     4,   369,     5,   104,     7,   375,   376,
 -     377,     3,     6,    89,   378,   379,   376,   380,     3,     8,
 -       4,   379,   104
++       7,     5,   130,    14,    15,   161,   337,     8,     3,   106,
++     106,   106,     5,   106,   106,   106,   106,   106,     5,     7,
++     106,   106,   106,   130,   106,   106,   106,   106,   106,   106,
++     106,   106,   106,   106,   106,   106,   106,   122,   122,   143,
++      89,   364,   365,   366,   153,    24,    25,    26,    27,    28,
++      29,   134,   166,   167,   168,   170,   172,   174,   176,   178,
++     179,   180,   166,     7,   215,   216,   217,     7,   243,   244,
++     245,     7,   266,   267,   268,    61,    62,    63,    64,   181,
++     184,   185,   186,   187,   188,   235,   330,     7,   191,   192,
++     193,    72,    73,    74,    75,    76,    77,   205,   206,   207,
++     208,   209,   210,   211,   212,    79,    80,    81,    82,   134,
++     168,   178,   340,   341,   342,   343,   345,   346,    85,    86,
++     350,   351,   352,   354,   127,   131,     4,   334,     7,   283,
++     284,   285,     7,   295,   296,   297,    67,   326,     8,   367,
++       3,     8,     8,   171,   173,   175,     4,     4,     4,     3,
++       8,     8,   218,     6,     3,   246,     6,     3,   269,     6,
++       3,     3,     6,     3,     6,   194,     6,     3,     4,     4,
++       4,     4,     4,     4,     3,     8,   344,     4,     4,     4,
++       3,     8,   353,   355,     3,     8,     8,   132,   106,   286,
++       6,     3,   298,     6,     3,   327,     8,     4,   365,     4,
++       4,     4,   109,   107,   109,   167,   221,   217,   249,   245,
++     272,   268,   185,   235,   197,   193,   107,   107,   107,   107,
++     107,   107,   206,     4,   107,   107,   107,   341,     4,     4,
++     351,     6,   289,   285,   301,   297,     4,     5,   106,   106,
++     106,     8,     8,     8,     8,   106,   106,   106,     8,     8,
++     106,     7,   368,   369,   370,     3,     6,    90,    92,    93,
++     134,   176,   371,   372,   373,   374,   376,   369,   377,     4,
++     375,     3,     8,     4,   107,     4,   372,     5,   106,     7,
++     378,   379,   380,     3,     6,    91,   381,   382,   379,   383,
++       3,     8,     4,   382,   106
    };
  
    const unsigned short int
    Dhcp4Parser::yyr1_[] =
    {
-        0,   104,   106,   105,   107,   105,   108,   105,   109,   105,
-      110,   105,   111,   105,   112,   105,   113,   105,   114,   105,
-      115,   105,   116,   116,   116,   116,   116,   116,   116,   117,
-      119,   118,   120,   120,   121,   121,   123,   122,   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,
-      155,   155,   157,   156,   159,   158,   160,   160,   161,   161,
-      161,   161,   161,   161,   161,   161,   161,   163,   162,   165,
-      164,   167,   166,   169,   168,   171,   170,   172,   173,   174,
-      175,   177,   176,   178,   178,   179,   179,   179,   179,   180,
-      181,   182,   184,   183,   185,   185,   186,   186,   188,   187,
-      190,   189,   191,   191,   191,   192,   192,   194,   193,   196,
-      195,   198,   197,   199,   199,   200,   202,   201,   203,   203,
-      204,   204,   206,   205,   208,   207,   209,   209,   210,   210,
-      210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-      210,   210,   210,   210,   210,   210,   210,   210,   212,   211,
-      214,   213,   216,   215,   218,   217,   220,   219,   222,   221,
-      224,   223,   226,   225,   227,   228,   230,   229,   231,   231,
-      232,   232,   234,   233,   236,   235,   237,   237,   238,   238,
-      239,   239,   239,   239,   239,   239,   239,   239,   240,   241,
-      242,   243,   245,   244,   247,   246,   248,   250,   249,   251,
-      253,   252,   254,   254,   255,   255,   257,   256,   259,   258,
-      260,   260,   261,   261,   262,   262,   262,   262,   262,   262,
-      263,   265,   264,   266,   267,   268,   270,   269,   271,   271,
-      272,   272,   274,   273,   276,   275,   277,   277,   278,   278,
-      278,   280,   279,   282,   281,   283,   283,   284,   284,   286,
-      285,   288,   287,   289,   289,   290,   290,   291,   291,   291,
-      291,   291,   291,   291,   291,   291,   291,   291,   291,   293,
-      292,   295,   294,   297,   296,   299,   298,   301,   300,   303,
-      302,   305,   304,   307,   306,   309,   308,   311,   310,   313,
-      312,   315,   314,   317,   316,   318,   318,   319,   223,   320,
-      320,   321,   321,   322,   322,   322,   322,   322,   322,   322,
-      323,   325,   324,   327,   326,   328,   328,   329,   329,   329,
-      329,   329,   329,   329,   330,   332,   331,   333,   334,   335,
-      337,   336,   338,   338,   339,   339,   341,   340,   343,   342,
-      345,   344,   347,   346,   349,   348,   351,   350,   352,   352,
-      353,   355,   354,   356,   356,   358,   357,   359,   359,   360,
-      360,   360,   360,   360,   361,   363,   362,   365,   364,   366,
-      366,   368,   367,   369,   369,   371,   370
 -       0,   108,   110,   109,   111,   109,   112,   109,   113,   109,
 -     114,   109,   115,   109,   116,   109,   117,   109,   118,   109,
 -     119,   109,   120,   120,   120,   120,   120,   120,   120,   121,
 -     123,   122,   124,   124,   125,   125,   127,   126,   129,   128,
 -     130,   130,   131,   131,   132,   134,   133,   135,   135,   136,
 -     136,   136,   136,   136,   138,   137,   140,   139,   141,   141,
 -     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
 -     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
 -     142,   142,   143,   144,   145,   146,   147,   148,   150,   149,
 -     151,   151,   152,   152,   154,   153,   156,   155,   158,   157,
 -     160,   159,   162,   161,   163,   163,   164,   164,   164,   164,
 -     164,   164,   164,   164,   164,   166,   165,   168,   167,   170,
 -     169,   172,   171,   174,   173,   175,   176,   177,   178,   180,
 -     179,   181,   181,   182,   182,   182,   182,   183,   184,   185,
 -     187,   186,   188,   188,   189,   189,   191,   190,   193,   192,
 -     194,   194,   194,   195,   195,   197,   196,   199,   198,   201,
 -     200,   202,   202,   203,   203,   203,   203,   203,   203,   204,
 -     205,   206,   207,   208,   209,   211,   210,   212,   212,   213,
 -     213,   215,   214,   217,   216,   218,   218,   219,   219,   219,
 -     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
 -     219,   219,   219,   219,   219,   219,   219,   221,   220,   223,
 -     222,   225,   224,   227,   226,   229,   228,   231,   230,   233,
 -     232,   235,   234,   236,   237,   239,   238,   240,   240,   241,
 -     241,   243,   242,   245,   244,   246,   246,   247,   247,   248,
 -     248,   248,   248,   248,   248,   248,   248,   249,   250,   251,
 -     252,   254,   253,   256,   255,   257,   259,   258,   260,   262,
 -     261,   263,   263,   264,   264,   266,   265,   268,   267,   269,
 -     269,   270,   270,   271,   271,   271,   271,   271,   271,   272,
 -     274,   273,   275,   276,   277,   279,   278,   280,   280,   281,
 -     281,   283,   282,   285,   284,   286,   286,   287,   287,   287,
 -     289,   288,   291,   290,   292,   292,   293,   293,   295,   294,
 -     297,   296,   298,   298,   299,   299,   300,   300,   300,   300,
 -     300,   300,   300,   300,   300,   300,   300,   300,   302,   301,
 -     304,   303,   306,   305,   308,   307,   310,   309,   312,   311,
 -     314,   313,   316,   315,   318,   317,   320,   319,   322,   321,
 -     324,   323,   326,   325,   327,   327,   328,   232,   329,   329,
 -     330,   330,   331,   331,   331,   331,   331,   331,   331,   332,
 -     334,   333,   336,   335,   337,   337,   338,   338,   338,   338,
 -     338,   338,   338,   339,   341,   340,   342,   343,   344,   346,
 -     345,   347,   347,   348,   348,   350,   349,   352,   351,   354,
 -     353,   356,   355,   358,   357,   360,   359,   361,   361,   362,
 -     364,   363,   365,   365,   367,   366,   368,   368,   369,   369,
 -     369,   369,   369,   370,   372,   371,   374,   373,   375,   375,
 -     377,   376,   378,   378,   380,   379
++       0,   110,   112,   111,   113,   111,   114,   111,   115,   111,
++     116,   111,   117,   111,   118,   111,   119,   111,   120,   111,
++     121,   111,   122,   122,   122,   122,   122,   122,   122,   123,
++     125,   124,   126,   126,   127,   127,   129,   128,   131,   130,
++     132,   132,   133,   133,   134,   136,   135,   137,   137,   138,
++     138,   138,   138,   138,   140,   139,   142,   141,   143,   143,
++     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
++     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
++     144,   144,   145,   146,   147,   148,   149,   150,   152,   151,
++     153,   153,   154,   154,   156,   155,   158,   157,   160,   159,
++     161,   161,   163,   162,   165,   164,   166,   166,   167,   167,
++     167,   167,   167,   167,   167,   167,   167,   169,   168,   171,
++     170,   173,   172,   175,   174,   177,   176,   178,   179,   180,
++     181,   183,   182,   184,   184,   185,   185,   185,   185,   186,
++     187,   188,   190,   189,   191,   191,   192,   192,   194,   193,
++     196,   195,   197,   197,   197,   198,   198,   200,   199,   202,
++     201,   204,   203,   205,   205,   206,   206,   206,   206,   206,
++     206,   207,   208,   209,   210,   211,   212,   214,   213,   215,
++     215,   216,   216,   218,   217,   220,   219,   221,   221,   222,
++     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
++     222,   222,   222,   222,   222,   222,   222,   222,   222,   224,
++     223,   226,   225,   228,   227,   230,   229,   232,   231,   234,
++     233,   236,   235,   238,   237,   239,   240,   242,   241,   243,
++     243,   244,   244,   246,   245,   248,   247,   249,   249,   250,
++     250,   251,   251,   251,   251,   251,   251,   251,   251,   252,
++     253,   254,   255,   257,   256,   259,   258,   260,   262,   261,
++     263,   265,   264,   266,   266,   267,   267,   269,   268,   271,
++     270,   272,   272,   273,   273,   274,   274,   274,   274,   274,
++     274,   275,   277,   276,   278,   279,   280,   282,   281,   283,
++     283,   284,   284,   286,   285,   288,   287,   289,   289,   290,
++     290,   290,   292,   291,   294,   293,   295,   295,   296,   296,
++     298,   297,   300,   299,   301,   301,   302,   302,   303,   303,
++     303,   303,   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,   323,   322,
++     325,   324,   327,   326,   329,   328,   330,   330,   331,   235,
++     332,   332,   333,   333,   334,   334,   334,   334,   334,   334,
++     334,   335,   337,   336,   339,   338,   340,   340,   341,   341,
++     341,   341,   341,   341,   341,   342,   344,   343,   345,   346,
++     347,   349,   348,   350,   350,   351,   351,   353,   352,   355,
++     354,   357,   356,   359,   358,   361,   360,   363,   362,   364,
++     364,   365,   367,   366,   368,   368,   370,   369,   371,   371,
++     372,   372,   372,   372,   372,   373,   375,   374,   377,   376,
++     378,   378,   380,   379,   381,   381,   383,   382
    };
  
    const unsigned char
         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,
 -       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,     0,     6,     0,     6,     1,     3,     1,     1,
         1,     1,     1,     1,     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,
 +       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,
-        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,
++       4,     0,     6,     1,     3,     1,     1,     1,     1,     1,
++       1,     3,     3,     3,     3,     3,     3,     0,     6,     0,
++       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
         4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-        6,     0,     4,     0,     6,     1,     3,     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,
-        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
 -       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,
++       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,     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
++       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
    };
  
  
    const unsigned short int
    Dhcp4Parser::yyrline_[] =
    {
-        0,   201,   201,   201,   202,   202,   203,   203,   204,   204,
-      205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
-      210,   210,   218,   219,   220,   221,   222,   223,   224,   227,
-      232,   232,   244,   245,   248,   252,   259,   259,   267,   267,
-      274,   275,   278,   282,   293,   303,   303,   315,   316,   320,
-      321,   322,   323,   324,   327,   327,   344,   344,   352,   353,
-      358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
-      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
-      378,   379,   382,   387,   392,   397,   402,   407,   413,   413,
-      423,   424,   427,   428,   431,   431,   439,   439,   449,   449,
-      456,   457,   460,   460,   470,   470,   480,   481,   484,   485,
-      486,   487,   488,   489,   490,   491,   492,   495,   495,   503,
-      503,   511,   511,   519,   519,   527,   527,   535,   540,   545,
-      550,   555,   555,   565,   566,   569,   570,   571,   572,   575,
-      580,   585,   590,   590,   600,   601,   604,   605,   608,   608,
-      616,   616,   624,   625,   626,   629,   630,   633,   633,   641,
-      641,   649,   649,   659,   660,   666,   674,   674,   687,   688,
-      691,   692,   699,   699,   722,   722,   731,   732,   736,   737,
-      738,   739,   740,   741,   742,   743,   744,   745,   746,   747,
-      748,   749,   750,   751,   752,   753,   754,   755,   758,   758,
-      766,   766,   774,   774,   782,   782,   790,   790,   798,   798,
-      806,   806,   814,   814,   822,   827,   836,   836,   848,   849,
-      852,   853,   858,   858,   869,   869,   879,   880,   883,   884,
-      887,   888,   889,   890,   891,   892,   893,   894,   897,   899,
-      904,   906,   908,   908,   916,   916,   924,   926,   926,   934,
-      943,   943,   955,   956,   961,   962,   967,   967,   978,   978,
-      989,   990,   995,   996,  1001,  1002,  1003,  1004,  1005,  1006,
-     1009,  1011,  1011,  1019,  1021,  1023,  1031,  1031,  1043,  1044,
-     1047,  1048,  1051,  1051,  1059,  1059,  1067,  1068,  1071,  1072,
-     1073,  1076,  1076,  1087,  1087,  1097,  1098,  1101,  1102,  1105,
-     1105,  1113,  1113,  1121,  1122,  1125,  1126,  1130,  1131,  1132,
-     1133,  1134,  1135,  1136,  1137,  1138,  1139,  1140,  1141,  1144,
-     1144,  1152,  1152,  1160,  1160,  1168,  1168,  1176,  1176,  1184,
-     1184,  1192,  1192,  1200,  1200,  1209,  1209,  1217,  1217,  1230,
-     1230,  1240,  1240,  1251,  1251,  1261,  1262,  1265,  1265,  1273,
-     1274,  1277,  1278,  1281,  1282,  1283,  1284,  1285,  1286,  1287,
-     1290,  1292,  1292,  1303,  1303,  1313,  1314,  1317,  1318,  1319,
-     1320,  1321,  1322,  1323,  1326,  1331,  1331,  1339,  1344,  1351,
-     1358,  1358,  1368,  1369,  1372,  1373,  1376,  1376,  1384,  1384,
-     1394,  1394,  1406,  1406,  1413,  1413,  1425,  1425,  1438,  1439,
-     1443,  1447,  1447,  1459,  1460,  1464,  1464,  1472,  1473,  1476,
-     1477,  1478,  1479,  1480,  1483,  1487,  1487,  1495,  1495,  1505,
-     1506,  1509,  1509,  1517,  1518,  1521,  1521
 -       0,   204,   204,   204,   205,   205,   206,   206,   207,   207,
 -     208,   208,   209,   209,   210,   210,   211,   211,   212,   212,
 -     213,   213,   221,   222,   223,   224,   225,   226,   227,   230,
 -     235,   235,   247,   248,   251,   255,   262,   262,   270,   270,
 -     277,   278,   281,   285,   296,   306,   306,   318,   319,   323,
 -     324,   325,   326,   327,   330,   330,   347,   347,   355,   356,
 -     361,   362,   363,   364,   365,   366,   367,   368,   369,   370,
 -     371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
 -     381,   382,   385,   390,   395,   400,   405,   410,   416,   416,
 -     426,   427,   430,   431,   434,   434,   442,   442,   452,   452,
 -     460,   460,   470,   470,   480,   481,   484,   485,   486,   487,
 -     488,   489,   490,   491,   492,   495,   495,   503,   503,   511,
 -     511,   519,   519,   527,   527,   535,   540,   545,   550,   555,
 -     555,   565,   566,   569,   570,   571,   572,   575,   580,   585,
 -     590,   590,   600,   601,   604,   605,   608,   608,   616,   616,
 -     624,   625,   626,   629,   630,   633,   633,   641,   641,   649,
 -     649,   659,   660,   663,   664,   665,   666,   667,   668,   671,
 -     676,   681,   686,   691,   696,   704,   704,   717,   718,   721,
 -     722,   729,   729,   752,   752,   761,   762,   766,   767,   768,
 -     769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
 -     779,   780,   781,   782,   783,   784,   785,   788,   788,   796,
 -     796,   804,   804,   812,   812,   820,   820,   828,   828,   836,
 -     836,   844,   844,   852,   857,   866,   866,   878,   879,   882,
 -     883,   888,   888,   899,   899,   909,   910,   913,   914,   917,
 -     918,   919,   920,   921,   922,   923,   924,   927,   929,   934,
 -     936,   938,   938,   946,   946,   954,   956,   956,   964,   973,
 -     973,   985,   986,   991,   992,   997,   997,  1008,  1008,  1019,
 -    1020,  1025,  1026,  1031,  1032,  1033,  1034,  1035,  1036,  1039,
 -    1041,  1041,  1049,  1051,  1053,  1061,  1061,  1073,  1074,  1077,
 -    1078,  1081,  1081,  1089,  1089,  1097,  1098,  1101,  1102,  1103,
 -    1106,  1106,  1117,  1117,  1127,  1128,  1131,  1132,  1135,  1135,
 -    1143,  1143,  1151,  1152,  1155,  1156,  1160,  1161,  1162,  1163,
 -    1164,  1165,  1166,  1167,  1168,  1169,  1170,  1171,  1174,  1174,
 -    1182,  1182,  1190,  1190,  1198,  1198,  1206,  1206,  1214,  1214,
 -    1222,  1222,  1230,  1230,  1239,  1239,  1247,  1247,  1260,  1260,
 -    1270,  1270,  1281,  1281,  1291,  1292,  1295,  1295,  1303,  1304,
 -    1307,  1308,  1311,  1312,  1313,  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,   207,   207,   207,   208,   208,   209,   209,   210,   210,
++     211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
++     216,   216,   224,   225,   226,   227,   228,   229,   230,   233,
++     238,   238,   250,   251,   254,   258,   265,   265,   273,   273,
++     280,   281,   284,   288,   299,   309,   309,   321,   322,   326,
++     327,   328,   329,   330,   333,   333,   350,   350,   358,   359,
++     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
++     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
++     384,   385,   388,   393,   398,   403,   408,   413,   419,   419,
++     429,   430,   433,   434,   437,   437,   445,   445,   455,   455,
++     462,   463,   466,   466,   476,   476,   486,   487,   490,   491,
++     492,   493,   494,   495,   496,   497,   498,   501,   501,   509,
++     509,   517,   517,   525,   525,   533,   533,   541,   546,   551,
++     556,   561,   561,   571,   572,   575,   576,   577,   578,   581,
++     586,   591,   596,   596,   606,   607,   610,   611,   614,   614,
++     622,   622,   630,   631,   632,   635,   636,   639,   639,   647,
++     647,   655,   655,   665,   666,   669,   670,   671,   672,   673,
++     674,   677,   682,   687,   692,   697,   702,   710,   710,   723,
++     724,   727,   728,   735,   735,   758,   758,   767,   768,   772,
++     773,   774,   775,   776,   777,   778,   779,   780,   781,   782,
++     783,   784,   785,   786,   787,   788,   789,   790,   791,   794,
++     794,   802,   802,   810,   810,   818,   818,   826,   826,   834,
++     834,   842,   842,   850,   850,   858,   863,   872,   872,   884,
++     885,   888,   889,   894,   894,   905,   905,   915,   916,   919,
++     920,   923,   924,   925,   926,   927,   928,   929,   930,   933,
++     935,   940,   942,   944,   944,   952,   952,   960,   962,   962,
++     970,   979,   979,   991,   992,   997,   998,  1003,  1003,  1014,
++    1014,  1025,  1026,  1031,  1032,  1037,  1038,  1039,  1040,  1041,
++    1042,  1045,  1047,  1047,  1055,  1057,  1059,  1067,  1067,  1079,
++    1080,  1083,  1084,  1087,  1087,  1095,  1095,  1103,  1104,  1107,
++    1108,  1109,  1112,  1112,  1123,  1123,  1133,  1134,  1137,  1138,
++    1141,  1141,  1149,  1149,  1157,  1158,  1161,  1162,  1166,  1167,
++    1168,  1169,  1170,  1171,  1172,  1173,  1174,  1175,  1176,  1177,
++    1180,  1180,  1188,  1188,  1196,  1196,  1204,  1204,  1212,  1212,
++    1220,  1220,  1228,  1228,  1236,  1236,  1245,  1245,  1253,  1253,
++    1266,  1266,  1276,  1276,  1287,  1287,  1297,  1298,  1301,  1301,
++    1309,  1310,  1313,  1314,  1317,  1318,  1319,  1320,  1321,  1322,
++    1323,  1326,  1328,  1328,  1339,  1339,  1349,  1350,  1353,  1354,
++    1355,  1356,  1357,  1358,  1359,  1362,  1367,  1367,  1375,  1380,
++    1387,  1394,  1394,  1404,  1405,  1408,  1409,  1412,  1412,  1420,
++    1420,  1430,  1430,  1442,  1442,  1449,  1449,  1461,  1461,  1474,
++    1475,  1479,  1483,  1483,  1495,  1496,  1500,  1500,  1508,  1509,
++    1512,  1513,  1514,  1515,  1516,  1519,  1523,  1523,  1531,  1531,
++    1541,  1542,  1545,  1545,  1553,  1554,  1557,  1557
    };
  
    // Print the state stack on the debug stream.
  
  #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
  } } // isc::dhcp
- #line 3517 "dhcp4_parser.cc" // lalr1.cc:1167
- #line 1529 "dhcp4_parser.yy" // lalr1.cc:1168
 -#line 3561 "dhcp4_parser.cc" // lalr1.cc:1167
 -#line 1559 "dhcp4_parser.yy" // lalr1.cc:1168
++#line 3583 "dhcp4_parser.cc" // lalr1.cc:1167
++#line 1565 "dhcp4_parser.yy" // lalr1.cc:1168
  
  
  void
index 5889598d1e7acdfd03a7d48c0b08dfb164132cc4,5f4a702913364b7465663c86239aa57210925641..999a3e8a04c14a22da362fbfbbe0cb1dd9db4e1e
@@@ -40,7 -40,7 +40,7 @@@
  #ifndef YY_PARSER4_DHCP4_PARSER_H_INCLUDED
  # define YY_PARSER4_DHCP4_PARSER_H_INCLUDED
  // //                    "%code requires" blocks.
--#line 17 "dhcp4_parser.yy" // lalr1.cc:377
++#line 17 "dhcp4_parser.yy" // lalr1.cc:392
  
  #include <string>
  #include <cc/data.h>
@@@ -52,7 -52,7 +52,7 @@@ using namespace isc::dhcp
  using namespace isc::data;
  using namespace std;
  
--#line 56 "dhcp4_parser.h" // lalr1.cc:377
++#line 56 "dhcp4_parser.h" // lalr1.cc:392
  
  # include <cassert>
  # include <cstdlib> // std::abort
  # endif /* ! defined YYDEBUG */
  #endif  /* ! defined PARSER4_DEBUG */
  
--#line 14 "dhcp4_parser.yy" // lalr1.cc:377
++#line 14 "dhcp4_parser.yy" // lalr1.cc:392
  namespace isc { namespace dhcp {
--#line 141 "dhcp4_parser.h" // lalr1.cc:377
++#line 141 "dhcp4_parser.h" // lalr1.cc:392
  
  
  
          TOKEN_INTERFACES_CONFIG = 266,
          TOKEN_INTERFACES = 267,
          TOKEN_DHCP_SOCKET_TYPE = 268,
 -        TOKEN_ECHO_CLIENT_ID = 269,
 -        TOKEN_MATCH_CLIENT_ID = 270,
 -        TOKEN_NEXT_SERVER = 271,
 -        TOKEN_SERVER_HOSTNAME = 272,
 -        TOKEN_BOOT_FILE_NAME = 273,
 -        TOKEN_LEASE_DATABASE = 274,
 -        TOKEN_HOSTS_DATABASE = 275,
 -        TOKEN_TYPE = 276,
 -        TOKEN_USER = 277,
 -        TOKEN_PASSWORD = 278,
 -        TOKEN_HOST = 279,
 -        TOKEN_PERSIST = 280,
 -        TOKEN_LFC_INTERVAL = 281,
 -        TOKEN_READONLY = 282,
 -        TOKEN_VALID_LIFETIME = 283,
 -        TOKEN_RENEW_TIMER = 284,
 -        TOKEN_REBIND_TIMER = 285,
 -        TOKEN_DECLINE_PROBATION_PERIOD = 286,
 -        TOKEN_SUBNET4 = 287,
 -        TOKEN_SUBNET_4O6_INTERFACE = 288,
 -        TOKEN_SUBNET_4O6_INTERFACE_ID = 289,
 -        TOKEN_SUBNET_4O6_SUBNET = 290,
 -        TOKEN_OPTION_DEF = 291,
 -        TOKEN_OPTION_DATA = 292,
 -        TOKEN_NAME = 293,
 -        TOKEN_DATA = 294,
 -        TOKEN_CODE = 295,
 -        TOKEN_SPACE = 296,
 -        TOKEN_CSV_FORMAT = 297,
 -        TOKEN_RECORD_TYPES = 298,
 -        TOKEN_ENCAPSULATE = 299,
 -        TOKEN_ARRAY = 300,
 -        TOKEN_POOLS = 301,
 -        TOKEN_POOL = 302,
 -        TOKEN_SUBNET = 303,
 -        TOKEN_INTERFACE = 304,
 -        TOKEN_INTERFACE_ID = 305,
 -        TOKEN_ID = 306,
 -        TOKEN_RAPID_COMMIT = 307,
 -        TOKEN_RESERVATION_MODE = 308,
 -        TOKEN_HOST_RESERVATION_IDENTIFIERS = 309,
 -        TOKEN_CLIENT_CLASSES = 310,
 -        TOKEN_TEST = 311,
 -        TOKEN_CLIENT_CLASS = 312,
 -        TOKEN_RESERVATIONS = 313,
 -        TOKEN_DUID = 314,
 -        TOKEN_HW_ADDRESS = 315,
 -        TOKEN_CIRCUIT_ID = 316,
 -        TOKEN_CLIENT_ID = 317,
 -        TOKEN_HOSTNAME = 318,
 -        TOKEN_RELAY = 319,
 -        TOKEN_IP_ADDRESS = 320,
 -        TOKEN_HOOKS_LIBRARIES = 321,
 -        TOKEN_LIBRARY = 322,
 -        TOKEN_PARAMETERS = 323,
 -        TOKEN_EXPIRED_LEASES_PROCESSING = 324,
 -        TOKEN_RECLAIM_TIMER_WAIT_TIME = 325,
 -        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 326,
 -        TOKEN_HOLD_RECLAIMED_TIME = 327,
 -        TOKEN_MAX_RECLAIM_LEASES = 328,
 -        TOKEN_MAX_RECLAIM_TIME = 329,
 -        TOKEN_UNWARNED_RECLAIM_CYCLES = 330,
 -        TOKEN_SERVER_ID = 331,
 -        TOKEN_IDENTIFIER = 332,
 -        TOKEN_HTYPE = 333,
 -        TOKEN_TIME = 334,
 -        TOKEN_ENTERPRISE_ID = 335,
 -        TOKEN_DHCP4O6_PORT = 336,
 -        TOKEN_CONTROL_SOCKET = 337,
 -        TOKEN_SOCKET_TYPE = 338,
 -        TOKEN_SOCKET_NAME = 339,
 -        TOKEN_DHCP_DDNS = 340,
 -        TOKEN_LOGGING = 341,
 -        TOKEN_LOGGERS = 342,
 -        TOKEN_OUTPUT_OPTIONS = 343,
 -        TOKEN_OUTPUT = 344,
 -        TOKEN_DEBUGLEVEL = 345,
 -        TOKEN_SEVERITY = 346,
 -        TOKEN_DHCP6 = 347,
 -        TOKEN_DHCPDDNS = 348,
 -        TOKEN_TOPLEVEL_JSON = 349,
 -        TOKEN_TOPLEVEL_DHCP4 = 350,
 -        TOKEN_SUB_DHCP4 = 351,
 -        TOKEN_SUB_INTERFACES4 = 352,
 -        TOKEN_SUB_SUBNET4 = 353,
 -        TOKEN_SUB_POOL4 = 354,
 -        TOKEN_SUB_RESERVATION = 355,
 -        TOKEN_SUB_OPTION_DEF = 356,
 -        TOKEN_SUB_OPTION_DATA = 357,
 -        TOKEN_SUB_HOOKS_LIBRARY = 358,
 -        TOKEN_STRING = 359,
 -        TOKEN_INTEGER = 360,
 -        TOKEN_FLOAT = 361,
 -        TOKEN_BOOLEAN = 362
 +        TOKEN_RAW = 269,
 +        TOKEN_UDP = 270,
 +        TOKEN_ECHO_CLIENT_ID = 271,
 +        TOKEN_MATCH_CLIENT_ID = 272,
 +        TOKEN_NEXT_SERVER = 273,
 +        TOKEN_SERVER_HOSTNAME = 274,
 +        TOKEN_BOOT_FILE_NAME = 275,
 +        TOKEN_LEASE_DATABASE = 276,
 +        TOKEN_HOSTS_DATABASE = 277,
 +        TOKEN_TYPE = 278,
 +        TOKEN_USER = 279,
 +        TOKEN_PASSWORD = 280,
 +        TOKEN_HOST = 281,
 +        TOKEN_PERSIST = 282,
 +        TOKEN_LFC_INTERVAL = 283,
 +        TOKEN_READONLY = 284,
 +        TOKEN_VALID_LIFETIME = 285,
 +        TOKEN_RENEW_TIMER = 286,
 +        TOKEN_REBIND_TIMER = 287,
 +        TOKEN_DECLINE_PROBATION_PERIOD = 288,
 +        TOKEN_SUBNET4 = 289,
 +        TOKEN_SUBNET_4O6_INTERFACE = 290,
 +        TOKEN_SUBNET_4O6_INTERFACE_ID = 291,
 +        TOKEN_SUBNET_4O6_SUBNET = 292,
 +        TOKEN_OPTION_DEF = 293,
 +        TOKEN_OPTION_DATA = 294,
 +        TOKEN_NAME = 295,
 +        TOKEN_DATA = 296,
 +        TOKEN_CODE = 297,
 +        TOKEN_SPACE = 298,
 +        TOKEN_CSV_FORMAT = 299,
 +        TOKEN_RECORD_TYPES = 300,
 +        TOKEN_ENCAPSULATE = 301,
 +        TOKEN_ARRAY = 302,
 +        TOKEN_POOLS = 303,
 +        TOKEN_POOL = 304,
 +        TOKEN_SUBNET = 305,
 +        TOKEN_INTERFACE = 306,
 +        TOKEN_INTERFACE_ID = 307,
 +        TOKEN_ID = 308,
 +        TOKEN_RAPID_COMMIT = 309,
 +        TOKEN_RESERVATION_MODE = 310,
 +        TOKEN_HOST_RESERVATION_IDENTIFIERS = 311,
 +        TOKEN_CLIENT_CLASSES = 312,
 +        TOKEN_TEST = 313,
 +        TOKEN_CLIENT_CLASS = 314,
 +        TOKEN_RESERVATIONS = 315,
 +        TOKEN_DUID = 316,
 +        TOKEN_HW_ADDRESS = 317,
 +        TOKEN_CIRCUIT_ID = 318,
 +        TOKEN_CLIENT_ID = 319,
 +        TOKEN_HOSTNAME = 320,
 +        TOKEN_RELAY = 321,
 +        TOKEN_IP_ADDRESS = 322,
 +        TOKEN_HOOKS_LIBRARIES = 323,
 +        TOKEN_LIBRARY = 324,
 +        TOKEN_PARAMETERS = 325,
 +        TOKEN_EXPIRED_LEASES_PROCESSING = 326,
-         TOKEN_SERVER_ID = 327,
-         TOKEN_IDENTIFIER = 328,
-         TOKEN_HTYPE = 329,
-         TOKEN_TIME = 330,
-         TOKEN_ENTERPRISE_ID = 331,
-         TOKEN_DHCP4O6_PORT = 332,
-         TOKEN_CONTROL_SOCKET = 333,
-         TOKEN_SOCKET_TYPE = 334,
-         TOKEN_SOCKET_NAME = 335,
-         TOKEN_DHCP_DDNS = 336,
-         TOKEN_LOGGING = 337,
-         TOKEN_LOGGERS = 338,
-         TOKEN_OUTPUT_OPTIONS = 339,
-         TOKEN_OUTPUT = 340,
-         TOKEN_DEBUGLEVEL = 341,
-         TOKEN_SEVERITY = 342,
-         TOKEN_DHCP6 = 343,
-         TOKEN_DHCPDDNS = 344,
-         TOKEN_TOPLEVEL_JSON = 345,
-         TOKEN_TOPLEVEL_DHCP4 = 346,
-         TOKEN_SUB_DHCP4 = 347,
-         TOKEN_SUB_INTERFACES4 = 348,
-         TOKEN_SUB_SUBNET4 = 349,
-         TOKEN_SUB_POOL4 = 350,
-         TOKEN_SUB_RESERVATION = 351,
-         TOKEN_SUB_OPTION_DEF = 352,
-         TOKEN_SUB_OPTION_DATA = 353,
-         TOKEN_SUB_HOOKS_LIBRARY = 354,
-         TOKEN_STRING = 355,
-         TOKEN_INTEGER = 356,
-         TOKEN_FLOAT = 357,
-         TOKEN_BOOLEAN = 358
++        TOKEN_RECLAIM_TIMER_WAIT_TIME = 327,
++        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 328,
++        TOKEN_HOLD_RECLAIMED_TIME = 329,
++        TOKEN_MAX_RECLAIM_LEASES = 330,
++        TOKEN_MAX_RECLAIM_TIME = 331,
++        TOKEN_UNWARNED_RECLAIM_CYCLES = 332,
++        TOKEN_SERVER_ID = 333,
++        TOKEN_IDENTIFIER = 334,
++        TOKEN_HTYPE = 335,
++        TOKEN_TIME = 336,
++        TOKEN_ENTERPRISE_ID = 337,
++        TOKEN_DHCP4O6_PORT = 338,
++        TOKEN_CONTROL_SOCKET = 339,
++        TOKEN_SOCKET_TYPE = 340,
++        TOKEN_SOCKET_NAME = 341,
++        TOKEN_DHCP_DDNS = 342,
++        TOKEN_LOGGING = 343,
++        TOKEN_LOGGERS = 344,
++        TOKEN_OUTPUT_OPTIONS = 345,
++        TOKEN_OUTPUT = 346,
++        TOKEN_DEBUGLEVEL = 347,
++        TOKEN_SEVERITY = 348,
++        TOKEN_DHCP6 = 349,
++        TOKEN_DHCPDDNS = 350,
++        TOKEN_TOPLEVEL_JSON = 351,
++        TOKEN_TOPLEVEL_DHCP4 = 352,
++        TOKEN_SUB_DHCP4 = 353,
++        TOKEN_SUB_INTERFACES4 = 354,
++        TOKEN_SUB_SUBNET4 = 355,
++        TOKEN_SUB_POOL4 = 356,
++        TOKEN_SUB_RESERVATION = 357,
++        TOKEN_SUB_OPTION_DEF = 358,
++        TOKEN_SUB_OPTION_DATA = 359,
++        TOKEN_SUB_HOOKS_LIBRARY = 360,
++        TOKEN_STRING = 361,
++        TOKEN_INTEGER = 362,
++        TOKEN_FLOAT = 363,
++        TOKEN_BOOLEAN = 364
        };
      };
  
      enum
      {
        yyeof_ = 0,
-       yylast_ = 626,     ///< Last index in yytable_.
-       yynnts_ = 268,  ///< Number of nonterminal symbols.
 -      yylast_ = 645,     ///< Last index in yytable_.
 -      yynnts_ = 273,  ///< Number of nonterminal symbols.
++      yylast_ = 647,     ///< Last index in yytable_.
++      yynnts_ = 274,  ///< Number of nonterminal symbols.
        yyfinal_ = 22, ///< Termination state number.
        yyterror_ = 1,
        yyerrcode_ = 256,
-       yyntokens_ = 104  ///< Number of tokens.
 -      yyntokens_ = 108  ///< Number of tokens.
++      yyntokens_ = 110  ///< Number of tokens.
      };
  
  
        65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
        75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
        85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-       95,    96,    97,    98,    99,   100,   101,   102,   103
+       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
 -     105,   106,   107
++     105,   106,   107,   108,   109
      };
-     const unsigned int user_token_number_max_ = 358;
 -    const unsigned int user_token_number_max_ = 362;
++    const unsigned int user_token_number_max_ = 364;
      const token_number_type undef_token_ = 2;
  
      if (static_cast<int>(t) <= yyeof_)
    {
        switch (other.type_get ())
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          value.copy< ElementPtr > (other.value);
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          value.copy< bool > (other.value);
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          value.copy< double > (other.value);
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          value.copy< int64_t > (other.value);
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          value.copy< std::string > (other.value);
          break;
  
      (void) v;
        switch (this->type_get ())
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          value.copy< ElementPtr > (v);
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          value.copy< bool > (v);
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          value.copy< double > (v);
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          value.copy< int64_t > (v);
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          value.copy< std::string > (v);
          break;
  
      // Type destructor.
      switch (yytype)
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          value.template destroy< ElementPtr > ();
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          value.template destroy< bool > ();
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          value.template destroy< double > ();
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          value.template destroy< int64_t > ();
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          value.template destroy< std::string > ();
          break;
  
      super_type::move(s);
        switch (this->type_get ())
      {
-       case 116: // value
-       case 155: // socket_type
 -      case 120: // value
++      case 122: // value
++      case 161: // socket_type
          value.move< ElementPtr > (s.value);
          break;
  
-       case 103: // "boolean"
 -      case 107: // "boolean"
++      case 109: // "boolean"
          value.move< bool > (s.value);
          break;
  
-       case 102: // "floating point"
 -      case 106: // "floating point"
++      case 108: // "floating point"
          value.move< double > (s.value);
          break;
  
-       case 101: // "integer"
 -      case 105: // "integer"
++      case 107: // "integer"
          value.move< int64_t > (s.value);
          break;
  
-       case 100: // "constant string"
 -      case 104: // "constant string"
++      case 106: // "constant string"
          value.move< std::string > (s.value);
          break;
  
       325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
       335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
       345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-      355,   356,   357,   358
 -     355,   356,   357,   358,   359,   360,   361,   362
++     355,   356,   357,   358,   359,   360,   361,   362,   363,   364
      };
      return static_cast<token_type> (yytoken_number_[type]);
    }
    }
  
  
--#line 14 "dhcp4_parser.yy" // lalr1.cc:377
++#line 14 "dhcp4_parser.yy" // lalr1.cc:392
  } } // isc::dhcp
- #line 2151 "dhcp4_parser.h" // lalr1.cc:377
 -#line 2191 "dhcp4_parser.h" // lalr1.cc:377
++#line 2218 "dhcp4_parser.h" // lalr1.cc:392
  
  
  
Simple merge
index e6d388f85775bc6481d608062e0ce46ca41537dc,48ea993b12397861521f14ed94a92168488d877f..c710f0b67435cd0880665eea67074a229fef37e1
@@@ -649,14 -645,12 +648,20 @@@ configureDhcp4Server(Dhcpv4Srv&, isc::d
                  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;
+             }
 +            // Legacy DhcpConfigParser stuff below
              ParserPtr parser(createGlobalDhcp4ConfigParser(config_pair.first,
                                                             config_pair.second));
              LOG_DEBUG(dhcp4_logger, DBG_DHCP4_DETAIL, DHCP4_PARSER_CREATED)
index bb3c4d01b44b844c9e2c4f67565cff5f5a3b6c66,0cafc188f30c862858e3c776cf1e4f56c0888f1f..c0ff059934faf1fc325c7fa9b3519d0ec9ce88ae
@@@ -1,4 -1,4 +1,3 @@@
- // Generated 201701062338
 -// Generated 201701070534
  // A Bison parser, made by GNU Bison 3.0.4.
  
  // Locations for Bison parsers in C++
@@@ -41,9 -41,9 +40,9 @@@
  
  # include "position.hh"
  
--#line 14 "dhcp4_parser.yy" // location.cc:296
++#line 14 "dhcp4_parser.yy" // location.cc:337
  namespace isc { namespace dhcp {
--#line 46 "location.hh" // location.cc:296
++#line 46 "location.hh" // location.cc:337
    /// Abstract a location.
    class location
    {
      return ostr;
    }
  
--#line 14 "dhcp4_parser.yy" // location.cc:296
++#line 14 "dhcp4_parser.yy" // location.cc:337
  } } // isc::dhcp
--#line 192 "location.hh" // location.cc:296
++#line 192 "location.hh" // location.cc:337
  #endif // !YY_PARSER4_LOCATION_HH_INCLUDED
Simple merge
Simple merge
index 00b1293986d6ba381992182d39763d3b55707da2,8a684ceb57d257a1aba03123fab15cb89dc7a07c..bd7cbb6bb5555c7eb597ec5d78feb609d0ee5532
@@@ -1,4 -1,4 +1,3 @@@
- // Generated 201701062338
 -// Generated 201701070534
  // A Bison parser, made by GNU Bison 3.0.4.
  
  // Positions for Bison parsers in C++
@@@ -51,9 -51,9 +50,9 @@@
  #  endif
  # endif
  
--#line 14 "dhcp4_parser.yy" // location.cc:296
++#line 14 "dhcp4_parser.yy" // location.cc:337
  namespace isc { namespace dhcp {
--#line 56 "position.hh" // location.cc:296
++#line 56 "position.hh" // location.cc:337
    /// Abstract a position.
    class position
    {
      return ostr << pos.line << '.' << pos.column;
    }
  
--#line 14 "dhcp4_parser.yy" // location.cc:296
++#line 14 "dhcp4_parser.yy" // location.cc:337
  } } // isc::dhcp
--#line 180 "position.hh" // location.cc:296
++#line 180 "position.hh" // location.cc:337
  #endif // !YY_PARSER4_POSITION_HH_INCLUDED
index 9747a45c2c21c86edf43b08953ff9d4ee42c083f,42e511d30111b98f5e1f40c623dd92a1e69dbd0e..fc7eb975ebc645d74f5103a5f07638e749a937ff
@@@ -1,4 -1,4 +1,3 @@@
- // Generated 201701062338
 -// Generated 201701070534
  // A Bison parser, made by GNU Bison 3.0.4.
  
  // Stack handling for Bison parsers in C++
@@@ -41,9 -41,9 +40,9 @@@
  
  # include <vector>
  
--#line 14 "dhcp4_parser.yy" // stack.hh:132
++#line 14 "dhcp4_parser.yy" // stack.hh:151
  namespace isc { namespace dhcp {
--#line 46 "stack.hh" // stack.hh:132
++#line 46 "stack.hh" // stack.hh:151
    template <class T, class S = std::vector<T> >
    class stack
    {
      unsigned int range_;
    };
  
--#line 14 "dhcp4_parser.yy" // stack.hh:132
++#line 14 "dhcp4_parser.yy" // stack.hh:151
  } } // isc::dhcp
--#line 156 "stack.hh" // stack.hh:132
++#line 156 "stack.hh" // stack.hh:151
  
  #endif // !YY_PARSER4_STACK_HH_INCLUDED
Simple merge
index 59b6629395616f3e78dd7cc7a4818c056cb5dac0,034a40dafab67e9fcbe2faaa6b09d2f744492a3f..15a89469f5635230ae65b0c1938958dd18b03c5a
@@@ -253,24 -253,23 +253,24 @@@ namespace isc { namespace dhcp 
    {
        switch (that.type_get ())
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          value.move< ElementPtr > (that.value);
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          value.move< bool > (that.value);
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          value.move< double > (that.value);
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          value.move< int64_t > (that.value);
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          value.move< std::string > (that.value);
          break;
  
      state = that.state;
        switch (that.type_get ())
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          value.copy< ElementPtr > (that.value);
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          value.copy< bool > (that.value);
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          value.copy< double > (that.value);
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          value.copy< int64_t > (that.value);
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          value.copy< std::string > (that.value);
          break;
  
          << yysym.location << ": ";
      switch (yytype)
      {
-             case 102: // "constant string"
 -            case 105: // "constant string"
++            case 108: // "constant string"
  
- #line 193 "dhcp6_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp6_parser.yy" // lalr1.cc:636
++#line 199 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< std::string > (); }
 -#line 352 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 354 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
  
- #line 193 "dhcp6_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp6_parser.yy" // lalr1.cc:636
++#line 199 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< int64_t > (); }
 -#line 359 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 361 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
  
- #line 193 "dhcp6_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp6_parser.yy" // lalr1.cc:636
++#line 199 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< double > (); }
 -#line 366 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 368 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
  
- #line 193 "dhcp6_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp6_parser.yy" // lalr1.cc:636
++#line 199 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< bool > (); }
 -#line 373 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 375 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
-       case 119: // value
 -      case 122: // value
++      case 125: // value
  
- #line 193 "dhcp6_parser.yy" // lalr1.cc:636
 -#line 195 "dhcp6_parser.yy" // lalr1.cc:636
++#line 199 "dhcp6_parser.yy" // lalr1.cc:636
          { yyoutput << yysym.value.template as< ElementPtr > (); }
 -#line 380 "dhcp6_parser.cc" // lalr1.cc:636
 +#line 382 "dhcp6_parser.cc" // lalr1.cc:636
 +        break;
 +
-       case 338: // duid_type
++      case 350: // duid_type
 +
- #line 193 "dhcp6_parser.yy" // lalr1.cc:636
++#line 199 "dhcp6_parser.yy" // lalr1.cc:636
 +        { yyoutput << yysym.value.template as< ElementPtr > (); }
 +#line 389 "dhcp6_parser.cc" // lalr1.cc:636
          break;
  
  
           when using variants.  */
          switch (yyr1_[yyn])
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          yylhs.value.build< ElementPtr > ();
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          yylhs.value.build< bool > ();
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          yylhs.value.build< double > ();
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          yylhs.value.build< int64_t > ();
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          yylhs.value.build< std::string > ();
          break;
  
            switch (yyn)
              {
    case 2:
- #line 202 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 204 "dhcp6_parser.yy" // lalr1.cc:859
++#line 208 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.NO_KEYWORD; }
 -#line 620 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 630 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 4:
- #line 203 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 205 "dhcp6_parser.yy" // lalr1.cc:859
++#line 209 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.CONFIG; }
 -#line 626 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 636 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 6:
- #line 204 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 206 "dhcp6_parser.yy" // lalr1.cc:859
++#line 210 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.DHCP6; }
 -#line 632 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 642 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 8:
- #line 205 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 207 "dhcp6_parser.yy" // lalr1.cc:859
++#line 211 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 -#line 638 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 648 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 10:
- #line 206 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 208 "dhcp6_parser.yy" // lalr1.cc:859
++#line 212 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.SUBNET6; }
 -#line 644 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 654 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 12:
- #line 207 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 209 "dhcp6_parser.yy" // lalr1.cc:859
++#line 213 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.POOLS; }
 -#line 650 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 660 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 14:
- #line 208 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 210 "dhcp6_parser.yy" // lalr1.cc:859
++#line 214 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.PD_POOLS; }
 -#line 656 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 666 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 16:
- #line 209 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 211 "dhcp6_parser.yy" // lalr1.cc:859
++#line 215 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.RESERVATIONS; }
 -#line 662 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 672 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 18:
- #line 210 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 212 "dhcp6_parser.yy" // lalr1.cc:859
++#line 216 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.OPTION_DEF; }
 -#line 668 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 678 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 20:
- #line 211 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 213 "dhcp6_parser.yy" // lalr1.cc:859
++#line 217 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.OPTION_DATA; }
 -#line 674 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 684 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 22:
- #line 212 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 214 "dhcp6_parser.yy" // lalr1.cc:859
++#line 218 "dhcp6_parser.yy" // lalr1.cc:859
      { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 -#line 680 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 690 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 24:
- #line 220 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 222 "dhcp6_parser.yy" // lalr1.cc:859
++#line 226 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 686 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 696 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 25:
- #line 221 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 223 "dhcp6_parser.yy" // lalr1.cc:859
++#line 227 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 692 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 702 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 26:
- #line 222 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 224 "dhcp6_parser.yy" // lalr1.cc:859
++#line 228 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 698 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 708 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 27:
- #line 223 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 225 "dhcp6_parser.yy" // lalr1.cc:859
++#line 229 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 -#line 704 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 714 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 28:
- #line 224 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 226 "dhcp6_parser.yy" // lalr1.cc:859
++#line 230 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 -#line 710 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 720 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 29:
- #line 225 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 227 "dhcp6_parser.yy" // lalr1.cc:859
++#line 231 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 -#line 716 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 726 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 30:
- #line 226 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 228 "dhcp6_parser.yy" // lalr1.cc:859
++#line 232 "dhcp6_parser.yy" // lalr1.cc:859
      { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 -#line 722 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 732 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 31:
- #line 229 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 231 "dhcp6_parser.yy" // lalr1.cc:859
++#line 235 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Push back the JSON value on the stack
      ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 32:
- #line 234 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 236 "dhcp6_parser.yy" // lalr1.cc:859
++#line 240 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      break;
  
    case 33:
- #line 239 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 241 "dhcp6_parser.yy" // lalr1.cc:859
++#line 245 "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
      break;
  
    case 36:
- #line 250 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 252 "dhcp6_parser.yy" // lalr1.cc:859
++#line 256 "dhcp6_parser.yy" // lalr1.cc:859
      {
                    // map containing a single entry
                    ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 37:
- #line 254 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 256 "dhcp6_parser.yy" // lalr1.cc:859
++#line 260 "dhcp6_parser.yy" // lalr1.cc:859
      {
                    // map consisting of a shorter map followed by
                    // comma and string:value
      break;
  
    case 38:
- #line 261 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 263 "dhcp6_parser.yy" // lalr1.cc:859
++#line 267 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.push_back(l);
      break;
  
    case 39:
- #line 264 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 266 "dhcp6_parser.yy" // lalr1.cc:859
++#line 270 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // list parsing complete. Put any sanity checking here
  }
      break;
  
    case 40:
- #line 269 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 271 "dhcp6_parser.yy" // lalr1.cc:859
++#line 275 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // List parsing about to start
  }
      break;
  
    case 41:
- #line 271 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 273 "dhcp6_parser.yy" // lalr1.cc:859
++#line 277 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // list parsing complete. Put any sanity checking here
      //ctx.stack_.pop_back();
      break;
  
    case 44:
- #line 280 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 282 "dhcp6_parser.yy" // lalr1.cc:859
++#line 286 "dhcp6_parser.yy" // lalr1.cc:859
      {
                    // List consisting of a single element.
                    ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 45:
- #line 284 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 286 "dhcp6_parser.yy" // lalr1.cc:859
++#line 290 "dhcp6_parser.yy" // lalr1.cc:859
      {
                    // List ending with , and a value.
                    ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
      break;
  
    case 46:
- #line 295 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 297 "dhcp6_parser.yy" // lalr1.cc:859
++#line 301 "dhcp6_parser.yy" // lalr1.cc:859
      {
      const std::string& where = ctx.contextName();
      const std::string& keyword = yystack_[1].value.as< std::string > ();
      break;
  
    case 47:
- #line 305 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 307 "dhcp6_parser.yy" // lalr1.cc:859
++#line 311 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      break;
  
    case 48:
- #line 310 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 312 "dhcp6_parser.yy" // lalr1.cc:859
++#line 316 "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
      break;
  
    case 56:
- #line 329 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 331 "dhcp6_parser.yy" // lalr1.cc:859
++#line 335 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // This code is executed when we're about to start parsing
      // the content of the map
      break;
  
    case 57:
- #line 336 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 338 "dhcp6_parser.yy" // lalr1.cc:859
++#line 342 "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
      break;
  
    case 58:
- #line 346 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 348 "dhcp6_parser.yy" // lalr1.cc:859
++#line 352 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the Dhcp6 map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      break;
  
    case 59:
- #line 350 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 352 "dhcp6_parser.yy" // lalr1.cc:859
++#line 356 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
      break;
  
    case 84:
- #line 384 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 386 "dhcp6_parser.yy" // lalr1.cc:859
++#line 390 "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);
      break;
  
    case 85:
- #line 389 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 391 "dhcp6_parser.yy" // lalr1.cc:859
++#line 395 "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);
      break;
  
    case 86:
- #line 394 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 396 "dhcp6_parser.yy" // lalr1.cc:859
++#line 400 "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);
      break;
  
    case 87:
- #line 399 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 401 "dhcp6_parser.yy" // lalr1.cc:859
++#line 405 "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);
      break;
  
    case 88:
- #line 404 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 406 "dhcp6_parser.yy" // lalr1.cc:859
++#line 410 "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);
      break;
  
    case 89:
- #line 409 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 411 "dhcp6_parser.yy" // lalr1.cc:859
++#line 415 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces-config", i);
      break;
  
    case 90:
- #line 414 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 416 "dhcp6_parser.yy" // lalr1.cc:859
++#line 420 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 91:
- #line 419 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 421 "dhcp6_parser.yy" // lalr1.cc:859
++#line 425 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the interfaces-config map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      break;
  
    case 92:
- #line 423 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 425 "dhcp6_parser.yy" // lalr1.cc:859
++#line 429 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
      break;
  
    case 93:
- #line 427 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 429 "dhcp6_parser.yy" // lalr1.cc:859
++#line 433 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("interfaces", l);
      break;
  
    case 94:
- #line 432 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 434 "dhcp6_parser.yy" // lalr1.cc:859
++#line 438 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 95:
- #line 437 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 439 "dhcp6_parser.yy" // lalr1.cc:859
++#line 443 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("lease-database", i);
      break;
  
    case 96:
- #line 442 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 444 "dhcp6_parser.yy" // lalr1.cc:859
++#line 448 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 97:
- #line 447 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 449 "dhcp6_parser.yy" // lalr1.cc:859
++#line 453 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hosts-database", i);
      break;
  
    case 98:
- #line 452 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 454 "dhcp6_parser.yy" // lalr1.cc:859
++#line 458 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 110:
- #line 472 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 474 "dhcp6_parser.yy" // lalr1.cc:859
++#line 478 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 111:
- #line 474 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 476 "dhcp6_parser.yy" // lalr1.cc:859
++#line 480 "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);
      break;
  
    case 112:
- #line 480 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 482 "dhcp6_parser.yy" // lalr1.cc:859
++#line 486 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 113:
- #line 482 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 484 "dhcp6_parser.yy" // lalr1.cc:859
++#line 488 "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);
      break;
  
    case 114:
- #line 488 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 490 "dhcp6_parser.yy" // lalr1.cc:859
++#line 494 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 115:
- #line 490 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 492 "dhcp6_parser.yy" // lalr1.cc:859
++#line 496 "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);
      break;
  
    case 116:
- #line 496 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 498 "dhcp6_parser.yy" // lalr1.cc:859
++#line 502 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 117:
- #line 498 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 500 "dhcp6_parser.yy" // lalr1.cc:859
++#line 504 "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);
      break;
  
    case 118:
- #line 504 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 506 "dhcp6_parser.yy" // lalr1.cc:859
++#line 510 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 119:
- #line 506 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 508 "dhcp6_parser.yy" // lalr1.cc:859
++#line 512 "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);
      break;
  
    case 120:
- #line 512 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 514 "dhcp6_parser.yy" // lalr1.cc:859
++#line 518 "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);
      break;
  
    case 121:
- #line 517 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 519 "dhcp6_parser.yy" // lalr1.cc:859
++#line 523 "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);
      break;
  
    case 122:
- #line 522 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 524 "dhcp6_parser.yy" // lalr1.cc:859
++#line 528 "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);
      break;
  
    case 123:
- #line 527 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 529 "dhcp6_parser.yy" // lalr1.cc:859
++#line 533 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("mac-sources", l);
      break;
  
    case 124:
- #line 532 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 534 "dhcp6_parser.yy" // lalr1.cc:859
++#line 538 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 129:
- #line 545 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 547 "dhcp6_parser.yy" // lalr1.cc:859
++#line 551 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(duid);
      break;
  
    case 130:
- #line 550 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 552 "dhcp6_parser.yy" // lalr1.cc:859
++#line 556 "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);
      break;
  
    case 131:
- #line 555 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 557 "dhcp6_parser.yy" // lalr1.cc:859
++#line 561 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("host-reservation-identifiers", l);
      break;
  
    case 132:
- #line 560 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 562 "dhcp6_parser.yy" // lalr1.cc:859
++#line 566 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 137:
- #line 573 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 575 "dhcp6_parser.yy" // lalr1.cc:859
++#line 579 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(hwaddr);
      break;
  
    case 138:
- #line 578 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 580 "dhcp6_parser.yy" // lalr1.cc:859
++#line 584 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("relay-supplied-options", l);
      break;
  
    case 139:
- #line 583 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 585 "dhcp6_parser.yy" // lalr1.cc:859
++#line 589 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 140:
- #line 588 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 590 "dhcp6_parser.yy" // lalr1.cc:859
++#line 594 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->set("hooks-libraries", l);
      break;
  
    case 141:
- #line 593 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 595 "dhcp6_parser.yy" // lalr1.cc:859
++#line 599 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
      break;
  
    case 146:
- #line 606 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 608 "dhcp6_parser.yy" // lalr1.cc:859
++#line 612 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      break;
  
    case 147:
- #line 610 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 612 "dhcp6_parser.yy" // lalr1.cc:859
++#line 616 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
      break;
  
    case 148:
- #line 614 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 616 "dhcp6_parser.yy" // lalr1.cc:859
++#line 620 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // Parse the hooks-libraries list entry map
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      break;
  
    case 149:
- #line 618 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 620 "dhcp6_parser.yy" // lalr1.cc:859
++#line 624 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
      break;
  
    case 155:
- #line 631 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 633 "dhcp6_parser.yy" // lalr1.cc:859
++#line 637 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 156:
- #line 633 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 635 "dhcp6_parser.yy" // lalr1.cc:859
++#line 639 "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);
      break;
  
    case 157:
- #line 639 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 641 "dhcp6_parser.yy" // lalr1.cc:859
++#line 645 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
      break;
  
    case 158:
- #line 641 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 643 "dhcp6_parser.yy" // lalr1.cc:859
++#line 647 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
      break;
  
    case 159:
- #line 647 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 649 "dhcp6_parser.yy" // lalr1.cc:859
++#line 653 "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 1347 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 1357 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
    case 160:
- #line 652 "dhcp6_parser.yy" // lalr1.cc:859
 -#line 654 "dhcp6_parser.yy" // lalr1.cc:859
++#line 658 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
 -#line 1356 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 1366 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 163:
- #line 664 "dhcp6_parser.yy" // lalr1.cc:859
+   case 169:
 -#line 671 "dhcp6_parser.yy" // lalr1.cc:859
++#line 675 "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("reclaim-timer-wait-time", value);
  }
 -#line 1365 "dhcp6_parser.cc" // lalr1.cc:859
 +#line 1375 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 164:
- #line 672 "dhcp6_parser.yy" // lalr1.cc:859
+   case 170:
 -#line 676 "dhcp6_parser.yy" // lalr1.cc:859
++#line 680 "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 1374 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1384 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
+   case 171:
 -#line 681 "dhcp6_parser.yy" // lalr1.cc:859
++#line 685 "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 1383 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1393 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
+   case 172:
 -#line 686 "dhcp6_parser.yy" // lalr1.cc:859
++#line 690 "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 1392 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1402 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
+   case 173:
 -#line 691 "dhcp6_parser.yy" // lalr1.cc:859
++#line 695 "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 1401 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1411 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
+   case 174:
 -#line 696 "dhcp6_parser.yy" // lalr1.cc:859
++#line 700 "dhcp6_parser.yy" // lalr1.cc:859
+     {
+     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
+ }
 -#line 1410 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1420 "dhcp6_parser.cc" // lalr1.cc:859
+     break;
+   case 175:
 -#line 704 "dhcp6_parser.yy" // lalr1.cc:859
++#line 708 "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 1386 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1421 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1431 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 165:
- #line 677 "dhcp6_parser.yy" // lalr1.cc:859
+   case 176:
 -#line 709 "dhcp6_parser.yy" // lalr1.cc:859
++#line 713 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1395 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1430 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1440 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 170:
- #line 697 "dhcp6_parser.yy" // lalr1.cc:859
+   case 181:
 -#line 729 "dhcp6_parser.yy" // lalr1.cc:859
++#line 733 "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 1405 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1440 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1450 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 171:
- #line 701 "dhcp6_parser.yy" // lalr1.cc:859
+   case 182:
 -#line 733 "dhcp6_parser.yy" // lalr1.cc:859
++#line 737 "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 1428 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1463 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1473 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 172:
- #line 720 "dhcp6_parser.yy" // lalr1.cc:859
+   case 183:
 -#line 752 "dhcp6_parser.yy" // lalr1.cc:859
++#line 756 "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 1438 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1473 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1483 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 173:
- #line 724 "dhcp6_parser.yy" // lalr1.cc:859
+   case 184:
 -#line 756 "dhcp6_parser.yy" // lalr1.cc:859
++#line 760 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1446 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1481 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1491 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 193:
- #line 753 "dhcp6_parser.yy" // lalr1.cc:859
+   case 204:
 -#line 785 "dhcp6_parser.yy" // lalr1.cc:859
++#line 789 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1454 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1489 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1499 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 194:
- #line 755 "dhcp6_parser.yy" // lalr1.cc:859
+   case 205:
 -#line 787 "dhcp6_parser.yy" // lalr1.cc:859
++#line 791 "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 1464 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1499 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1509 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 195:
- #line 761 "dhcp6_parser.yy" // lalr1.cc:859
+   case 206:
 -#line 793 "dhcp6_parser.yy" // lalr1.cc:859
++#line 797 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1472 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1507 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1517 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 196:
- #line 763 "dhcp6_parser.yy" // lalr1.cc:859
+   case 207:
 -#line 795 "dhcp6_parser.yy" // lalr1.cc:859
++#line 799 "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 1482 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1517 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1527 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 197:
- #line 769 "dhcp6_parser.yy" // lalr1.cc:859
+   case 208:
 -#line 801 "dhcp6_parser.yy" // lalr1.cc:859
++#line 805 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1490 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1525 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1535 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 198:
- #line 771 "dhcp6_parser.yy" // lalr1.cc:859
+   case 209:
 -#line 803 "dhcp6_parser.yy" // lalr1.cc:859
++#line 807 "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 1500 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1535 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1545 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 199:
- #line 777 "dhcp6_parser.yy" // lalr1.cc:859
+   case 210:
 -#line 809 "dhcp6_parser.yy" // lalr1.cc:859
++#line 813 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.CLIENT_CLASS);
  }
- #line 1508 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1543 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1553 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 200:
- #line 779 "dhcp6_parser.yy" // lalr1.cc:859
+   case 211:
 -#line 811 "dhcp6_parser.yy" // lalr1.cc:859
++#line 815 "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 1518 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1553 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1563 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 201:
- #line 785 "dhcp6_parser.yy" // lalr1.cc:859
+   case 212:
 -#line 817 "dhcp6_parser.yy" // lalr1.cc:859
++#line 821 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1526 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1561 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1571 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 202:
- #line 787 "dhcp6_parser.yy" // lalr1.cc:859
+   case 213:
 -#line 819 "dhcp6_parser.yy" // lalr1.cc:859
++#line 823 "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 1536 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1571 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1581 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 203:
- #line 793 "dhcp6_parser.yy" // lalr1.cc:859
+   case 214:
 -#line 825 "dhcp6_parser.yy" // lalr1.cc:859
++#line 829 "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 1545 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1580 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1590 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 204:
- #line 798 "dhcp6_parser.yy" // lalr1.cc:859
+   case 215:
 -#line 830 "dhcp6_parser.yy" // lalr1.cc:859
++#line 834 "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 1554 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1589 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1599 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 205:
- #line 807 "dhcp6_parser.yy" // lalr1.cc:859
+   case 216:
 -#line 839 "dhcp6_parser.yy" // lalr1.cc:859
++#line 843 "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 1565 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1600 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1610 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 206:
- #line 812 "dhcp6_parser.yy" // lalr1.cc:859
+   case 217:
 -#line 844 "dhcp6_parser.yy" // lalr1.cc:859
++#line 848 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1574 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1609 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1619 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 211:
- #line 829 "dhcp6_parser.yy" // lalr1.cc:859
+   case 222:
 -#line 861 "dhcp6_parser.yy" // lalr1.cc:859
++#line 865 "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 1584 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1619 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1629 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 212:
- #line 833 "dhcp6_parser.yy" // lalr1.cc:859
+   case 223:
 -#line 865 "dhcp6_parser.yy" // lalr1.cc:859
++#line 869 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1592 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1627 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1637 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 213:
- #line 840 "dhcp6_parser.yy" // lalr1.cc:859
+   case 224:
 -#line 872 "dhcp6_parser.yy" // lalr1.cc:859
++#line 876 "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 1602 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1637 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1647 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 214:
- #line 844 "dhcp6_parser.yy" // lalr1.cc:859
+   case 225:
 -#line 876 "dhcp6_parser.yy" // lalr1.cc:859
++#line 880 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1610 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1645 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1655 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 228:
- #line 870 "dhcp6_parser.yy" // lalr1.cc:859
+   case 239:
 -#line 902 "dhcp6_parser.yy" // lalr1.cc:859
++#line 906 "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 1619 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1654 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1664 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 230:
- #line 877 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 242:
 -#line 911 "dhcp6_parser.yy" // lalr1.cc:859
++  case 241:
++#line 913 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1627 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1662 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1672 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 231:
- #line 879 "dhcp6_parser.yy" // lalr1.cc:859
++  case 242:
++#line 915 "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 1637 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1682 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 232:
- #line 885 "dhcp6_parser.yy" // lalr1.cc:859
+   case 243:
 -#line 913 "dhcp6_parser.yy" // lalr1.cc:859
++#line 921 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.NO_KEYWORD);
 +}
- #line 1645 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1690 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 233:
- #line 887 "dhcp6_parser.yy" // lalr1.cc:859
++  case 244:
++#line 923 "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 1655 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1672 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1700 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 234:
- #line 893 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 244:
 -#line 919 "dhcp6_parser.yy" // lalr1.cc:859
++  case 245:
++#line 929 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1663 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1680 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1708 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 235:
- #line 895 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 245:
 -#line 921 "dhcp6_parser.yy" // lalr1.cc:859
++  case 246:
++#line 931 "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 1673 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1690 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1718 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 237:
- #line 903 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 247:
 -#line 929 "dhcp6_parser.yy" // lalr1.cc:859
++  case 248:
++#line 939 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1681 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1698 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1726 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 238:
- #line 905 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 248:
 -#line 931 "dhcp6_parser.yy" // lalr1.cc:859
++  case 249:
++#line 941 "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 1691 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1708 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1736 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 239:
- #line 911 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 249:
 -#line 937 "dhcp6_parser.yy" // lalr1.cc:859
++  case 250:
++#line 947 "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 1700 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1717 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1745 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 240:
- #line 920 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 250:
 -#line 946 "dhcp6_parser.yy" // lalr1.cc:859
++  case 251:
++#line 956 "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 1711 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1728 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1756 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 241:
- #line 925 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 251:
 -#line 951 "dhcp6_parser.yy" // lalr1.cc:859
++  case 252:
++#line 961 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1720 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1737 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1765 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 246:
- #line 944 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 256:
 -#line 970 "dhcp6_parser.yy" // lalr1.cc:859
++  case 257:
++#line 980 "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 1730 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1747 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1775 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 247:
- #line 948 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 257:
 -#line 974 "dhcp6_parser.yy" // lalr1.cc:859
++  case 258:
++#line 984 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1738 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1755 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1783 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 248:
- #line 955 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 258:
 -#line 981 "dhcp6_parser.yy" // lalr1.cc:859
++  case 259:
++#line 991 "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 1748 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1765 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1793 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 249:
- #line 959 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 259:
 -#line 985 "dhcp6_parser.yy" // lalr1.cc:859
++  case 260:
++#line 995 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1756 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1801 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 261:
- #line 988 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 271:
 -#line 1014 "dhcp6_parser.yy" // lalr1.cc:859
++  case 272:
++#line 1024 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1764 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1781 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1809 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 262:
- #line 990 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 272:
 -#line 1016 "dhcp6_parser.yy" // lalr1.cc:859
++  case 273:
++#line 1026 "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 1774 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1791 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1819 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 265:
- #line 1000 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 275:
 -#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
++  case 276:
++#line 1036 "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 1783 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1800 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1828 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 266:
- #line 1008 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 276:
 -#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
++  case 277:
++#line 1044 "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 1794 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1839 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 267:
- #line 1013 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 277:
 -#line 1039 "dhcp6_parser.yy" // lalr1.cc:859
++  case 278:
++#line 1049 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1803 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1820 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1848 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 272:
- #line 1028 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 282:
 -#line 1054 "dhcp6_parser.yy" // lalr1.cc:859
++  case 283:
++#line 1064 "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 1813 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1830 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1858 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 273:
- #line 1032 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 283:
 -#line 1058 "dhcp6_parser.yy" // lalr1.cc:859
++  case 284:
++#line 1068 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1821 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1838 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1866 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 274:
- #line 1036 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 284:
 -#line 1062 "dhcp6_parser.yy" // lalr1.cc:859
++  case 285:
++#line 1072 "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 1831 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1848 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1876 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 275:
- #line 1040 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 285:
 -#line 1066 "dhcp6_parser.yy" // lalr1.cc:859
++  case 286:
++#line 1076 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1839 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1856 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1884 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 281:
- #line 1053 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 291:
 -#line 1079 "dhcp6_parser.yy" // lalr1.cc:859
++  case 292:
++#line 1089 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1847 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1864 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1892 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 282:
- #line 1055 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 292:
 -#line 1081 "dhcp6_parser.yy" // lalr1.cc:859
++  case 293:
++#line 1091 "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 1857 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1874 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1902 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 283:
- #line 1064 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 293:
 -#line 1090 "dhcp6_parser.yy" // lalr1.cc:859
++  case 294:
++#line 1100 "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 1868 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1885 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1913 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 284:
- #line 1069 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 294:
 -#line 1095 "dhcp6_parser.yy" // lalr1.cc:859
++  case 295:
++#line 1105 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1877 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1894 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1922 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 289:
- #line 1084 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 299:
 -#line 1110 "dhcp6_parser.yy" // lalr1.cc:859
++  case 300:
++#line 1120 "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 1887 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1904 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1932 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 290:
- #line 1088 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 300:
 -#line 1114 "dhcp6_parser.yy" // lalr1.cc:859
++  case 301:
++#line 1124 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 1895 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1912 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1940 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 291:
- #line 1092 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 301:
 -#line 1118 "dhcp6_parser.yy" // lalr1.cc:859
++  case 302:
++#line 1128 "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 1905 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1922 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1950 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 292:
- #line 1096 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 302:
 -#line 1122 "dhcp6_parser.yy" // lalr1.cc:859
++  case 303:
++#line 1132 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 1913 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1930 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1958 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 302:
- #line 1113 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 312:
 -#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
++  case 313:
++#line 1149 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1921 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1938 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1966 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 303:
- #line 1115 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 313:
 -#line 1141 "dhcp6_parser.yy" // lalr1.cc:859
++  case 314:
++#line 1151 "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 1931 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1976 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 304:
- #line 1121 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 314:
 -#line 1147 "dhcp6_parser.yy" // lalr1.cc:859
++  case 315:
++#line 1157 "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 1940 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1985 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 305:
- #line 1126 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 315:
 -#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
++  case 316:
++#line 1162 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 1948 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1965 "dhcp6_parser.cc" // lalr1.cc:859
++#line 1993 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 306:
- #line 1128 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 316:
 -#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
++  case 317:
++#line 1164 "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 1958 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1975 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2003 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 307:
- #line 1134 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 317:
 -#line 1160 "dhcp6_parser.yy" // lalr1.cc:859
++  case 318:
++#line 1170 "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 1967 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1984 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2012 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 308:
- #line 1139 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 318:
 -#line 1165 "dhcp6_parser.yy" // lalr1.cc:859
++  case 319:
++#line 1175 "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 1976 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 1993 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2021 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 309:
- #line 1147 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 319:
 -#line 1173 "dhcp6_parser.yy" // lalr1.cc:859
++  case 320:
++#line 1183 "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 1987 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2004 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2032 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 310:
- #line 1152 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 320:
 -#line 1178 "dhcp6_parser.yy" // lalr1.cc:859
++  case 321:
++#line 1188 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 1996 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2013 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2041 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 315:
- #line 1165 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 325:
 -#line 1191 "dhcp6_parser.yy" // lalr1.cc:859
++  case 326:
++#line 1201 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
      ctx.stack_.back()->add(m);
      ctx.stack_.push_back(m);
  }
- #line 2006 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2023 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2051 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 316:
- #line 1169 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 326:
 -#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
++  case 327:
++#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2014 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2031 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2059 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 317:
- #line 1173 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 327:
 -#line 1199 "dhcp6_parser.yy" // lalr1.cc:859
++  case 328:
++#line 1209 "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 2024 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2041 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2069 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 318:
- #line 1177 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 328:
 -#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
++  case 329:
++#line 1213 "dhcp6_parser.yy" // lalr1.cc:859
      {
      // parsing completed
  }
- #line 2032 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2049 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 331:
- #line 1200 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 341:
 -#line 1226 "dhcp6_parser.yy" // lalr1.cc:859
++  case 342:
++#line 1236 "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 2043 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2060 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2088 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 332:
- #line 1205 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 342:
 -#line 1231 "dhcp6_parser.yy" // lalr1.cc:859
++  case 343:
++#line 1241 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2052 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2069 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2097 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 333:
- #line 1210 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 343:
 -#line 1236 "dhcp6_parser.yy" // lalr1.cc:859
++  case 344:
++#line 1246 "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 2063 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2080 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2108 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 334:
- #line 1215 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 344:
 -#line 1241 "dhcp6_parser.yy" // lalr1.cc:859
++  case 345:
++#line 1251 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2072 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2089 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2117 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 335:
- #line 1220 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 345:
 -#line 1246 "dhcp6_parser.yy" // lalr1.cc:859
++  case 346:
++#line 1256 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2080 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2097 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2125 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 336:
- #line 1222 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 346:
 -#line 1248 "dhcp6_parser.yy" // lalr1.cc:859
++  case 347:
++#line 1258 "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 2090 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2107 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2135 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 337:
- #line 1228 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 347:
 -#line 1254 "dhcp6_parser.yy" // lalr1.cc:859
++  case 348:
++#line 1264 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2098 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2115 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2143 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 338:
- #line 1230 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 348:
 -#line 1256 "dhcp6_parser.yy" // lalr1.cc:859
++  case 349:
++#line 1266 "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 2108 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2125 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2153 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 339:
- #line 1236 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 349:
 -#line 1262 "dhcp6_parser.yy" // lalr1.cc:859
++  case 350:
++#line 1272 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2116 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2133 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2161 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 340:
- #line 1238 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 350:
 -#line 1264 "dhcp6_parser.yy" // lalr1.cc:859
++  case 351:
++#line 1274 "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 2126 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2143 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2171 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 341:
- #line 1244 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 351:
 -#line 1270 "dhcp6_parser.yy" // lalr1.cc:859
++  case 352:
++#line 1280 "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 2137 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2154 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2182 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 342:
- #line 1249 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 352:
 -#line 1275 "dhcp6_parser.yy" // lalr1.cc:859
++  case 353:
++#line 1285 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2146 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2163 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2191 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 343:
- #line 1257 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 353:
 -#line 1283 "dhcp6_parser.yy" // lalr1.cc:859
++  case 354:
++#line 1293 "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 2157 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2174 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2202 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 344:
- #line 1262 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 354:
 -#line 1288 "dhcp6_parser.yy" // lalr1.cc:859
++  case 355:
++#line 1298 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2166 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2183 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2211 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 345:
- #line 1267 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 355:
 -#line 1293 "dhcp6_parser.yy" // lalr1.cc:859
++  case 356:
++#line 1303 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2174 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2191 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2219 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 346:
- #line 1269 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 356:
 -#line 1295 "dhcp6_parser.yy" // lalr1.cc:859
++  case 357:
++#line 1305 "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 2184 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2201 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2229 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 347:
- #line 1278 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 357:
 -#line 1304 "dhcp6_parser.yy" // lalr1.cc:859
++  case 358:
++#line 1314 "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 2195 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2212 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2240 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 348:
- #line 1283 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 358:
 -#line 1309 "dhcp6_parser.yy" // lalr1.cc:859
++  case 359:
++#line 1319 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2204 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2221 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2249 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 351:
- #line 1292 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 361:
 -#line 1318 "dhcp6_parser.yy" // lalr1.cc:859
++  case 362:
++#line 1328 "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 2214 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2231 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2259 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 352:
- #line 1296 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 362:
 -#line 1322 "dhcp6_parser.yy" // lalr1.cc:859
++  case 363:
++#line 1332 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2222 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2239 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2267 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 362:
- #line 1316 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 372:
 -#line 1342 "dhcp6_parser.yy" // lalr1.cc:859
++  case 373:
++#line 1352 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2230 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2247 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2275 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 363:
- #line 1318 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 373:
 -#line 1344 "dhcp6_parser.yy" // lalr1.cc:859
++  case 374:
++#line 1354 "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 2240 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2257 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2285 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 364:
- #line 1327 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 374:
 -#line 1353 "dhcp6_parser.yy" // lalr1.cc:859
++  case 375:
++#line 1363 "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 2251 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2268 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2296 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 365:
- #line 1332 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 375:
 -#line 1358 "dhcp6_parser.yy" // lalr1.cc:859
++  case 376:
++#line 1368 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2260 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2277 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2305 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 375:
- #line 1350 "dhcp6_parser.yy" // lalr1.cc:859
++  case 386:
++#line 1386 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.enter(ctx.DUID_TYPE);
 +}
- #line 2268 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2313 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 376:
- #line 1352 "dhcp6_parser.yy" // lalr1.cc:859
++  case 387:
++#line 1388 "dhcp6_parser.yy" // lalr1.cc:859
 +    {
 +    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
 +    ctx.leave();
 +}
- #line 2277 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2322 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 377:
- #line 1357 "dhcp6_parser.yy" // lalr1.cc:859
++  case 388:
++#line 1393 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
- #line 2283 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2328 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 378:
- #line 1358 "dhcp6_parser.yy" // lalr1.cc:859
++  case 389:
++#line 1394 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
- #line 2289 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2334 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 379:
- #line 1359 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 385:
 -#line 1376 "dhcp6_parser.yy" // lalr1.cc:859
++  case 390:
++#line 1395 "dhcp6_parser.yy" // lalr1.cc:859
 +    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
- #line 2295 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2340 "dhcp6_parser.cc" // lalr1.cc:859
 +    break;
 +
-   case 380:
- #line 1362 "dhcp6_parser.yy" // lalr1.cc:859
++  case 391:
++#line 1398 "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 2304 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2286 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2349 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 381:
- #line 1367 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 386:
 -#line 1381 "dhcp6_parser.yy" // lalr1.cc:859
++  case 392:
++#line 1403 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2312 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2294 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2357 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 382:
- #line 1369 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 387:
 -#line 1383 "dhcp6_parser.yy" // lalr1.cc:859
++  case 393:
++#line 1405 "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 2322 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2304 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2367 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 383:
- #line 1375 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 388:
 -#line 1389 "dhcp6_parser.yy" // lalr1.cc:859
++  case 394:
++#line 1411 "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 2331 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2313 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2376 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 384:
- #line 1380 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 389:
 -#line 1394 "dhcp6_parser.yy" // lalr1.cc:859
++  case 395:
++#line 1416 "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 2340 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2322 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2385 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 385:
- #line 1387 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 390:
 -#line 1401 "dhcp6_parser.yy" // lalr1.cc:859
++  case 396:
++#line 1423 "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 2349 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2331 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2394 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 386:
- #line 1394 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 391:
 -#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
++  case 397:
++#line 1430 "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 2360 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2342 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2405 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 387:
- #line 1399 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 392:
 -#line 1413 "dhcp6_parser.yy" // lalr1.cc:859
++  case 398:
++#line 1435 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2369 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2351 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2414 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 392:
- #line 1412 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 397:
 -#line 1426 "dhcp6_parser.yy" // lalr1.cc:859
++  case 403:
++#line 1448 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2377 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2359 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2422 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 393:
- #line 1414 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 398:
 -#line 1428 "dhcp6_parser.yy" // lalr1.cc:859
++  case 404:
++#line 1450 "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 2387 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2369 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2432 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 394:
- #line 1420 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 399:
 -#line 1434 "dhcp6_parser.yy" // lalr1.cc:859
++  case 405:
++#line 1456 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2395 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2377 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2440 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 395:
- #line 1422 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 400:
 -#line 1436 "dhcp6_parser.yy" // lalr1.cc:859
++  case 406:
++#line 1458 "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 2405 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2387 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2450 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 396:
- #line 1430 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 401:
 -#line 1444 "dhcp6_parser.yy" // lalr1.cc:859
++  case 407:
++#line 1466 "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);
  }
- #line 2416 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2398 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2461 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 397:
- #line 1435 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 402:
 -#line 1449 "dhcp6_parser.yy" // lalr1.cc:859
++  case 408:
++#line 1471 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2425 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2407 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2470 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 398:
- #line 1442 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 403:
 -#line 1456 "dhcp6_parser.yy" // lalr1.cc:859
++  case 409:
++#line 1478 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2433 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2415 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2478 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 399:
- #line 1444 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 404:
 -#line 1458 "dhcp6_parser.yy" // lalr1.cc:859
++  case 410:
++#line 1480 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2442 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2424 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2487 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 400:
- #line 1449 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 405:
 -#line 1463 "dhcp6_parser.yy" // lalr1.cc:859
++  case 411:
++#line 1485 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2450 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2432 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2495 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 401:
- #line 1451 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 406:
 -#line 1465 "dhcp6_parser.yy" // lalr1.cc:859
++  case 412:
++#line 1487 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
      ctx.leave();
  }
- #line 2459 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2441 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2504 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 402:
- #line 1461 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 407:
 -#line 1475 "dhcp6_parser.yy" // lalr1.cc:859
++  case 413:
++#line 1497 "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 2470 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2452 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2515 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 403:
- #line 1466 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 408:
 -#line 1480 "dhcp6_parser.yy" // lalr1.cc:859
++  case 414:
++#line 1502 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2479 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2461 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2524 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 407:
- #line 1483 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 412:
 -#line 1497 "dhcp6_parser.yy" // lalr1.cc:859
++  case 418:
++#line 1519 "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 2490 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2472 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2535 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 408:
- #line 1488 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 413:
 -#line 1502 "dhcp6_parser.yy" // lalr1.cc:859
++  case 419:
++#line 1524 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2499 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2481 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2544 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 411:
- #line 1500 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 416:
 -#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
++  case 422:
++#line 1536 "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 2509 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2491 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2554 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 412:
- #line 1504 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 417:
 -#line 1518 "dhcp6_parser.yy" // lalr1.cc:859
++  case 423:
++#line 1540 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2517 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2499 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2562 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 420:
- #line 1519 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 425:
 -#line 1533 "dhcp6_parser.yy" // lalr1.cc:859
++  case 431:
++#line 1555 "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 2526 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2508 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2571 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 421:
- #line 1523 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 426:
 -#line 1537 "dhcp6_parser.yy" // lalr1.cc:859
++  case 432:
++#line 1559 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2534 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2516 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2579 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 422:
- #line 1525 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 427:
 -#line 1539 "dhcp6_parser.yy" // lalr1.cc:859
++  case 433:
++#line 1561 "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 2544 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2526 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2589 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 423:
- #line 1531 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 428:
 -#line 1545 "dhcp6_parser.yy" // lalr1.cc:859
++  case 434:
++#line 1567 "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 2555 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2537 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2600 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 424:
- #line 1536 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 429:
 -#line 1550 "dhcp6_parser.yy" // lalr1.cc:859
++  case 435:
++#line 1572 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
      ctx.leave();
  }
- #line 2564 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2546 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2609 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 427:
- #line 1545 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 432:
 -#line 1559 "dhcp6_parser.yy" // lalr1.cc:859
++  case 438:
++#line 1581 "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 2574 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2556 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2619 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 428:
- #line 1549 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 433:
 -#line 1563 "dhcp6_parser.yy" // lalr1.cc:859
++  case 439:
++#line 1585 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.stack_.pop_back();
  }
- #line 2582 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2564 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2627 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 431:
- #line 1557 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 436:
 -#line 1571 "dhcp6_parser.yy" // lalr1.cc:859
++  case 442:
++#line 1593 "dhcp6_parser.yy" // lalr1.cc:859
      {
      ctx.enter(ctx.NO_KEYWORD);
  }
- #line 2590 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2572 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2635 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
-   case 432:
- #line 1559 "dhcp6_parser.yy" // lalr1.cc:859
 -  case 437:
 -#line 1573 "dhcp6_parser.yy" // lalr1.cc:859
++  case 443:
++#line 1595 "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 2600 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2582 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2645 "dhcp6_parser.cc" // lalr1.cc:859
      break;
  
  
- #line 2604 "dhcp6_parser.cc" // lalr1.cc:859
 -#line 2586 "dhcp6_parser.cc" // lalr1.cc:859
++#line 2649 "dhcp6_parser.cc" // lalr1.cc:859
              default:
                break;
              }
    const short int
    Dhcp6Parser::yypact_[] =
    {
-       89,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,    31,    21,    22,    57,    66,    92,   121,   134,
-      154,   203,   207,   216,  -427,  -427,  -427,  -427,  -427,  -427,
 -     183,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,    35,    22,    52,    63,    93,   103,   119,   134,
 -     158,   177,   186,   188,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,    22,   -53,    16,    70,
 -      65,    15,    28,    62,    27,   127,    81,   -34,  -428,   141,
 -     215,   176,   225,   231,  -428,  -428,  -428,  -428,   232,  -428,
 -      33,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   233,
 -     235,   236,   237,   238,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,   240,  -428,  -428,  -428,    77,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,   239,  -428,  -428,  -428,  -428,  -428,  -428,   246,
 -     247,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -     137,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,   140,  -428,  -428,
 -    -428,   254,  -428,   255,   257,  -428,  -428,   146,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,   256,   262,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,   264,  -428,  -428,  -428,   265,  -428,  -428,
 -    -428,   258,   267,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,   268,  -428,  -428,  -428,  -428,   263,
 -     270,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -     150,  -428,  -428,  -428,  -428,    22,    22,  -428,   170,   284,
 -     285,   286,   287,  -428,    16,  -428,   288,   289,   290,   189,
 -     190,   192,   193,   194,   293,   297,   298,   299,   300,   301,
 -     302,   303,   304,   305,   206,   306,   307,    70,  -428,   309,
 -    -428,    45,   310,   311,   312,   313,   314,   213,   216,   316,
 -     317,   318,   319,    15,  -428,   321,    28,  -428,   322,   223,
 -     323,   226,   227,    62,  -428,   324,   326,   327,   330,   331,
 -     332,  -428,    27,   333,   336,   241,   337,   338,   339,   242,
 -    -428,   127,   340,   243,  -428,    81,   341,   342,   -25,  -428,
 -    -428,  -428,   344,   347,   348,    22,    22,  -428,   349,   350,
 -     351,  -428,  -428,  -428,  -428,  -428,   356,   357,   358,   359,
 -     360,   361,   362,   363,   365,   366,  -428,   367,   368,  -428,
 -     360,  -428,  -428,  -428,  -428,   370,   346,  -428,  -428,  -428,
 -     364,   371,   274,   275,   276,  -428,  -428,   277,   278,   379,
 -     380,  -428,   281,  -428,   283,  -428,   291,  -428,  -428,  -428,
 -     360,   360,   360,   292,   294,   295,  -428,   296,   308,  -428,
 -     315,   320,   325,  -428,  -428,   328,  -428,  -428,   329,    22,
 -    -428,    22,    70,   334,  -428,  -428,    65,    30,    30,   382,
 -     383,   384,   -29,  -428,  -428,     7,    21,   385,   128,    39,
 -      90,   -53,  -428,   389,  -428,    45,   387,   388,  -428,  -428,
 -    -428,  -428,  -428,   391,   343,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,   153,  -428,   163,  -428,  -428,   394,  -428,
 -    -428,  -428,   399,   400,   401,  -428,   169,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,   173,  -428,   403,   404,
 -    -428,  -428,   405,   407,  -428,  -428,   409,   413,  -428,  -428,
 -    -428,   131,  -428,  -428,  -428,    22,  -428,  -428,   191,  -428,
 -    -428,  -428,   205,  -428,   411,   415,  -428,   402,   418,   419,
 -     420,   422,   423,   179,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,   424,   425,   427,  -428,  -428,  -428,   180,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,   201,  -428,  -428,  -428,
 -     202,   335,  -428,  -428,   426,   416,  -428,  -428,   429,   433,
 -    -428,  -428,   431,   435,  -428,  -428,   434,  -428,   437,   334,
 -    -428,  -428,   439,   440,   441,   345,   352,   353,    30,  -428,
 -    -428,    15,  -428,   382,   127,  -428,   383,    81,  -428,   384,
 -     -29,  -428,   442,     7,  -428,    21,  -428,   -34,  -428,   385,
 -     354,   369,   372,   373,   374,   375,   128,  -428,   443,   376,
 -     377,   378,    39,  -428,   445,   446,    90,  -428,  -428,  -428,
 -      28,  -428,   387,    62,  -428,   388,    27,  -428,   391,   447,
 -    -428,   449,  -428,   381,   386,   390,  -428,  -428,  -428,  -428,
 -     204,  -428,   438,  -428,   444,  -428,  -428,  -428,  -428,  -428,
 -     211,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   392,
 -    -428,  -428,  -428,  -428,   393,   395,  -428,   212,  -428,   214,
 -    -428,   448,  -428,   396,   432,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -     222,  -428,   101,   432,  -428,  -428,   451,  -428,  -428,  -428,
 -     218,  -428,  -428,  -428,  -428,  -428,   453,   397,   455,   101,
 -    -428,   457,  -428,   406,  -428,   456,  -428,  -428,   224,  -428,
 -     398,   456,  -428,  -428,   221,  -428,  -428,   460,   398,  -428,
 -     410,  -428,  -428
++     107,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,    29,    21,    32,    56,    58,    60,    67,    71,
++      73,    83,   103,   108,  -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,    21,    72,    11,    64,
-      164,    12,    -7,    38,    43,   117,   125,    29,  -427,   223,
-      221,   228,   227,   230,  -427,  -427,  -427,  -427,   232,  -427,
-       30,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   234,
-      239,   242,   245,   246,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -427,   253,  -427,  -427,  -427,    48,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,    21,   -56,    12,    59,
++      42,    11,    -8,    95,    93,    61,    72,    50,  -427,   117,
++     124,   129,   134,   148,  -427,  -427,  -427,  -427,   153,  -427,
++      45,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   196,
++     198,   237,   245,   246,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,  -427,   265,  -427,  -427,  -427,    47,  -427,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,   250,  -427,  -427,  -427,  -427,  -427,  -427,   256,
-      259,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-      119,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -427,  -427,  -427,  -427,   136,  -427,  -427,
-     -427,   260,  -427,   261,   263,  -427,  -427,   167,  -427,  -427,
++    -427,  -427,   217,  -427,  -427,  -427,  -427,  -427,  -427,   266,
++     267,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++      63,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,   118,  -427,  -427,
++    -427,   268,  -427,   270,   272,  -427,  -427,   138,  -427,  -427,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,   262,   265,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,   267,  -427,  -427,  -427,   268,  -427,  -427,
-      266,   273,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,   274,  -427,  -427,  -427,  -427,   269,   276,
-     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   169,
-     -427,  -427,  -427,  -427,    21,    21,  -427,   178,   277,   278,
-      279,   280,  -427,    11,  -427,   281,   282,   283,   166,   185,
-      186,   187,   192,   287,   288,   289,   290,   292,   293,   294,
-      295,   296,   297,   202,   298,   299,    64,  -427,   300,  -427,
-       10,   302,   303,   304,   305,   306,   211,   206,   308,   309,
-      311,   312,    12,  -427,   313,    -7,  -427,   314,   219,   315,
-      220,   222,    38,  -427,   316,   317,   320,   322,   323,   324,
-     -427,    43,   325,   326,   229,   327,   329,   330,   231,  -427,
-      117,   331,   235,  -427,   125,   335,   337,   -13,  -427,  -427,
-     -427,   338,   336,   339,    21,    21,  -427,   340,   341,   342,
-     -427,  -427,  -427,  -427,  -427,   345,   348,   349,   350,   351,
-      352,   355,   356,   357,   358,  -427,   359,   360,  -427,   351,
-     -427,  -427,  -427,  -427,   354,   365,  -427,  -427,  -427,   366,
-      367,   243,   271,   272,  -427,  -427,   275,   284,   370,   371,
-     -427,   285,  -427,   286,  -427,   291,  -427,  -427,  -427,   351,
-      351,   351,   301,   307,   310,  -427,   318,   319,  -427,   321,
-      328,   332,  -427,  -427,   333,  -427,  -427,   334,    21,  -427,
-       21,    64,   343,  -427,  -427,   164,    27,    27,   372,   373,
-      374,   -34,  -427,  -427,    23,    58,   375,   344,    34,    40,
-       72,  -427,   379,  -427,    10,   378,   382,  -427,  -427,  -427,
-     -427,  -427,   383,   353,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,   250,   274,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,   275,  -427,  -427,  -427,   276,  -427,  -427,
++     273,   279,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,   280,  -427,  -427,  -427,  -427,   277,   283,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   156,
++    -427,  -427,  -427,  -427,    21,    21,  -427,   170,   284,   285,
++     286,   287,  -427,    12,  -427,   288,   289,   290,   174,   187,
++     192,   193,   194,   291,   293,   294,   295,   296,   300,   301,
++     302,   303,   304,   200,   306,   307,    59,  -427,   308,  -427,
++       8,   309,   310,   311,   312,   313,   209,   176,   315,   316,
++     317,   318,    11,  -427,   319,    -8,  -427,   320,   216,   322,
++     218,   219,    95,  -427,   325,   326,   327,   328,   329,   330,
++    -427,    93,   331,   332,   231,   335,   337,   338,   234,  -427,
++      61,   339,   235,  -427,    72,   340,   343,    82,  -427,  -427,
++    -427,   344,   342,   346,    21,    21,  -427,   347,   348,   349,
++    -427,  -427,  -427,  -427,  -427,   345,   352,   355,   356,   357,
++     358,   359,   360,   361,   364,  -427,   365,   366,  -427,   357,
++    -427,  -427,  -427,  -427,   367,   363,  -427,  -427,  -427,   362,
++     369,   269,   271,   278,  -427,  -427,   281,   282,   373,   374,
++    -427,   292,  -427,   297,  -427,   298,  -427,  -427,  -427,   357,
++     357,   357,   299,   314,   321,  -427,   323,   324,  -427,   333,
++     334,   336,  -427,  -427,   341,  -427,  -427,   350,    21,  -427,
++      21,    59,   305,  -427,  -427,    42,    26,    26,   375,   376,
++     378,   -29,  -427,  -427,   123,    20,   380,   146,    80,   181,
++     -56,  -427,   384,  -427,     8,   385,   386,  -427,  -427,  -427,
++    -427,  -427,   387,   351,  -427,  -427,  -427,  -427,  -427,  -427,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,   188,  -427,   189,  -427,  -427,   384,  -427,  -427,
-     -427,  -427,   387,   390,   391,  -427,   190,  -427,  -427,  -427,
-     -427,  -427,  -427,  -427,  -427,  -427,   191,  -427,   392,   393,
-     -427,  -427,   394,   396,  -427,  -427,   395,   399,  -427,  -427,
-     -427,    68,  -427,  -427,  -427,    21,  -427,  -427,   132,  -427,
-     -427,  -427,   145,  -427,   398,   402,  -427,   403,   197,  -427,
-     -427,  -427,   404,   406,   410,  -427,  -427,   198,  -427,  -427,
-     -427,  -427,  -427,  -427,  -427,  -427,   199,  -427,  -427,  -427,
-      200,   346,  -427,  -427,   400,   412,  -427,  -427,   411,   413,
-     -427,  -427,   416,   421,  -427,  -427,   389,  -427,   415,   343,
-     -427,  -427,   422,   424,   425,   427,   258,   241,   347,    27,
-     -427,  -427,    12,  -427,   372,   117,  -427,   373,   125,  -427,
-      374,   -34,  -427,   419,    23,  -427,    58,  -427,    29,  -427,
-      375,   361,   344,  -427,   428,   429,   362,   363,   364,    34,
-     -427,   433,   434,    40,  -427,  -427,  -427,    -7,  -427,   378,
-       38,  -427,   382,    43,  -427,   383,   435,  -427,   436,  -427,
-      368,   369,   376,   377,  -427,  -427,  -427,  -427,   201,  -427,
-      432,  -427,   437,  -427,  -427,  -427,  -427,  -427,   208,  -427,
-     -427,  -427,   168,   380,  -427,  -427,  -427,  -427,   381,   385,
-     -427,   209,  -427,   210,  -427,   439,  -427,   386,   442,  -427,
++    -427,  -427,   163,  -427,   171,  -427,  -427,   372,  -427,  -427,
++    -427,  -427,   392,   393,   394,  -427,   175,  -427,  -427,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,   178,  -427,   395,   388,
++    -427,  -427,   396,   400,  -427,  -427,   398,   405,  -427,  -427,
++    -427,    86,  -427,  -427,  -427,    21,  -427,  -427,   162,  -427,
++    -427,  -427,   233,  -427,   403,   407,  -427,   408,   410,   411,
++     413,   414,   415,   188,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,   416,   417,   419,  -427,  -427,   189,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,   190,  -427,  -427,
++    -427,   191,   353,  -427,  -427,   418,   422,  -427,  -427,   420,
++     424,  -427,  -427,   427,   425,  -427,  -427,   391,  -427,   426,
++     305,  -427,  -427,   430,   431,   432,   433,   354,   368,   370,
++      26,  -427,  -427,    11,  -427,   375,    61,  -427,   376,    72,
++    -427,   378,   -29,  -427,   434,   123,  -427,    20,  -427,    50,
++    -427,   380,   371,   377,   379,   381,   382,   383,   146,  -427,
++     435,   439,   389,   390,   397,    80,  -427,   441,   442,   181,
++    -427,  -427,  -427,    -8,  -427,   385,    95,  -427,   386,    93,
++    -427,   387,   443,  -427,   445,  -427,   399,   401,   402,   404,
++    -427,  -427,  -427,  -427,   220,  -427,   440,  -427,   444,  -427,
++    -427,  -427,  -427,  -427,   221,  -427,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,   186,   406,  -427,  -427,  -427,  -427,   409,
++     412,  -427,   223,  -427,   224,  -427,   446,  -427,   421,   448,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   157,
-     -427,    77,   442,  -427,  -427,   438,  -427,  -427,  -427,   217,
-     -427,  -427,  -427,  -427,  -427,   440,   388,   446,    77,  -427,
-      448,  -427,   397,  -427,   444,  -427,  -427,   225,  -427,   407,
-      444,  -427,  -427,   218,  -427,  -427,   450,   407,  -427,   401,
-     -427,  -427
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++     240,  -427,    79,   448,  -427,  -427,   447,  -427,  -427,  -427,
++     230,  -427,  -427,  -427,  -427,  -427,   449,   423,   452,    79,
++    -427,   454,  -427,   428,  -427,   450,  -427,  -427,   254,  -427,
++     429,   450,  -427,  -427,   232,  -427,  -427,   456,   429,  -427,
++     436,  -427,  -427
    };
  
    const unsigned short int
        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,
-       91,     9,   172,    11,   274,    13,   291,    15,   317,    17,
-      213,    19,   248,    21,   148,    23,    42,    34,     0,     0,
-        0,     0,     0,     0,   319,   215,   250,     0,    44,     0,
-       43,     0,     0,    35,    56,   402,   398,   400,     0,    55,
 -      91,     9,   183,    11,   284,    13,   301,    15,   327,    17,
 -     224,    19,   258,    21,   148,    23,    42,    34,     0,     0,
 -       0,     0,     0,     0,   329,   226,   260,     0,    44,     0,
 -      43,     0,     0,    35,    56,   407,   403,   405,     0,    55,
++      91,     9,   183,    11,   285,    13,   302,    15,   328,    17,
++     224,    19,   259,    21,   148,    23,    42,    34,     0,     0,
++       0,     0,     0,     0,   330,   226,   261,     0,    44,     0,
++      43,     0,     0,    35,    56,   413,   409,   411,     0,    55,
         0,    49,    51,    53,    54,    52,    89,    95,    97,     0,
-        0,     0,     0,     0,   164,   205,   240,   123,   138,   131,
-      347,   140,   159,   364,     0,   386,   396,    83,     0,    60,
 -       0,     0,     0,     0,   175,   216,   250,   123,   138,   131,
 -     357,   140,   159,   374,     0,   391,   401,    83,     0,    60,
++       0,     0,     0,     0,   175,   216,   251,   123,   138,   131,
++     358,   140,   159,   375,     0,   397,   407,    83,     0,    60,
        62,    63,    64,    65,    66,    68,    69,    70,    71,    73,
        72,    77,    78,    67,    75,    76,    74,    79,    80,    81,
-       82,    93,     0,   351,   266,   283,   193,   195,   197,     0,
-        0,   201,   199,   309,   343,   192,   176,   177,   178,   179,
-        0,   174,   183,   184,   185,   188,   190,   186,   187,   180,
-      181,   182,   189,   191,   281,   280,   279,     0,   276,   278,
-      302,     0,   305,     0,     0,   301,   298,     0,   293,   295,
-      296,   299,   300,   297,   341,   331,   333,   335,   337,   339,
-      330,   329,     0,   320,   321,   325,   326,   323,   327,   328,
-      324,   230,   118,     0,   234,   232,   237,     0,   226,   227,
-        0,   216,   217,   219,   229,   220,   221,   222,   236,   223,
-      224,   225,   261,     0,   259,   260,   263,   264,     0,   251,
-      252,   254,   255,   256,   257,   258,   155,   157,   152,     0,
 -      82,    93,     0,   361,   276,   293,   204,   206,   208,     0,
 -       0,   212,   210,   319,   353,   203,   187,   188,   189,   190,
++      82,    93,     0,   362,   277,   294,   204,   206,   208,     0,
++       0,   212,   210,   320,   354,   203,   187,   188,   189,   190,
+        0,   185,   194,   195,   196,   199,   201,   197,   198,   191,
 -     192,   193,   200,   202,   291,   290,   289,     0,   286,   288,
 -     312,     0,   315,     0,     0,   311,   308,     0,   303,   305,
 -     306,   309,   310,   307,   351,   341,   343,   345,   347,   349,
 -     340,   339,     0,   330,   331,   335,   336,   333,   337,   338,
 -     334,   110,   118,     0,   244,   242,   247,     0,   237,   241,
 -     238,     0,   227,   228,   230,   240,   231,   232,   233,   246,
 -     234,   235,   236,   271,     0,   269,   270,   273,   274,     0,
 -     261,   262,   264,   265,   266,   267,   268,   155,   157,   152,
 -       0,   150,   153,   154,    39,     0,     0,    33,     0,     0,
 -       0,     0,     0,    46,     0,    48,     0,     0,     0,     0,
++     192,   193,   200,   202,   292,   291,   290,     0,   287,   289,
++     313,     0,   316,     0,     0,   312,   309,     0,   304,   306,
++     307,   310,   311,   308,   352,   342,   344,   346,   348,   350,
++     341,   340,     0,   331,   332,   336,   337,   334,   338,   339,
++     335,   241,   118,     0,   245,   243,   248,     0,   237,   238,
++       0,   227,   228,   230,   240,   231,   232,   233,   247,   234,
++     235,   236,   272,     0,   270,   271,   274,   275,     0,   262,
++     263,   265,   266,   267,   268,   269,   155,   157,   152,     0,
 +     150,   153,   154,    39,     0,     0,    33,     0,     0,     0,
 +       0,     0,    46,     0,    48,     0,     0,     0,     0,     0,
         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,     0,     0,    59,     0,
 -      92,   363,     0,     0,     0,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,   184,     0,     0,   285,     0,     0,
 -       0,     0,     0,     0,   302,     0,     0,     0,     0,     0,
 -       0,   328,     0,     0,     0,     0,     0,     0,     0,     0,
 -     225,     0,     0,     0,   259,     0,     0,     0,     0,   149,
 -      45,    36,     0,     0,     0,     0,     0,    50,     0,     0,
 -       0,    84,    85,    86,    87,    88,     0,     0,     0,     0,
 -       0,     0,     0,     0,     0,     0,   390,     0,     0,    61,
 -       0,   372,   370,   371,   369,     0,   364,   365,   367,   368,
 -       0,     0,     0,     0,     0,   214,   215,     0,     0,     0,
 -       0,   186,     0,   287,     0,   314,     0,   317,   318,   304,
 -       0,     0,     0,     0,     0,     0,   332,     0,     0,   239,
 -       0,     0,     0,   249,   229,     0,   275,   263,     0,     0,
 -     151,     0,     0,     0,   404,   406,     0,     0,     0,   177,
 -     218,   252,     0,    40,   139,     0,     0,   142,     0,     0,
 -       0,     0,    94,     0,   362,     0,   278,   295,   205,   207,
 -     209,   213,   211,   321,     0,   292,   313,   316,   352,   342,
 -     344,   346,   348,   350,   111,   119,   245,   243,   248,   272,
 -     156,   158,    37,     0,   412,     0,   409,   411,     0,   112,
 +       0,     0,     0,     0,     0,     0,     0,    59,     0,    92,
-      353,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,   173,     0,     0,   275,     0,     0,     0,
-        0,     0,     0,   292,     0,     0,     0,     0,     0,     0,
-      318,     0,     0,     0,     0,     0,     0,     0,     0,   214,
-        0,     0,     0,   249,     0,     0,     0,     0,   149,    45,
++     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
++       0,     0,     0,   184,     0,     0,   286,     0,     0,     0,
++       0,     0,     0,   303,     0,     0,     0,     0,     0,     0,
++     329,     0,     0,     0,     0,     0,     0,     0,     0,   225,
++       0,     0,     0,   260,     0,     0,     0,     0,   149,    45,
 +      36,     0,     0,     0,     0,     0,    50,     0,     0,     0,
 +      84,    85,    86,    87,    88,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,   385,     0,     0,    61,     0,
-      362,   360,   361,   359,     0,   354,   355,   357,   358,     0,
-        0,     0,     0,     0,   203,   204,     0,     0,     0,     0,
-      175,     0,   277,     0,   304,     0,   307,   308,   294,     0,
-        0,     0,     0,     0,     0,   322,     0,     0,   228,     0,
-        0,     0,   239,   218,     0,   265,   253,     0,     0,   151,
-        0,     0,     0,   399,   401,     0,     0,     0,   166,   207,
-      242,     0,    40,   139,     0,     0,   142,     0,     0,     0,
-        0,    94,     0,   352,     0,   268,   285,   194,   196,   198,
-      202,   200,   311,     0,   282,   303,   306,   342,   332,   334,
-      336,   338,   340,   231,   119,   235,   233,   238,   262,   156,
-      158,    37,     0,   407,     0,   404,   406,     0,   110,   112,
++       0,     0,     0,     0,     0,   396,     0,     0,    61,     0,
++     373,   371,   372,   370,     0,   365,   366,   368,   369,     0,
++       0,     0,     0,     0,   214,   215,     0,     0,     0,     0,
++     186,     0,   288,     0,   315,     0,   318,   319,   305,     0,
++       0,     0,     0,     0,     0,   333,     0,     0,   239,     0,
++       0,     0,   250,   229,     0,   276,   264,     0,     0,   151,
++       0,     0,     0,   410,   412,     0,     0,     0,   177,   218,
++     253,     0,    40,   139,     0,     0,   142,     0,     0,     0,
++       0,    94,     0,   363,     0,   279,   296,   205,   207,   209,
++     213,   211,   322,     0,   293,   314,   317,   353,   343,   345,
++     347,   349,   351,   242,   119,   246,   244,   249,   273,   156,
++     158,    37,     0,   418,     0,   415,   417,     0,   110,   112,
       114,   116,     0,     0,     0,   109,     0,    99,   101,   102,
-      103,   104,   105,   106,   107,   108,     0,   170,     0,   167,
-      168,   211,     0,   208,   209,   246,     0,   243,   244,   129,
+      103,   104,   105,   106,   107,   108,     0,   181,     0,   178,
 -     179,   222,     0,   219,   220,   256,     0,   253,   254,   129,
++     179,   222,     0,   219,   220,   257,     0,   254,   255,   129,
       130,     0,   125,   127,   128,    42,   137,   135,     0,   133,
-      136,   349,     0,   146,     0,   143,   144,     0,     0,   161,
-      375,   381,     0,     0,     0,   374,   373,     0,   366,   368,
-      371,   369,   370,   372,   392,   394,     0,   388,   390,   391,
-        0,     0,   356,   272,     0,   269,   270,   289,     0,   286,
-      287,   315,     0,   312,   313,   345,     0,    57,     0,     0,
-      403,    90,     0,     0,     0,     0,     0,     0,     0,     0,
-       96,    98,     0,   165,     0,   215,   206,     0,   250,   241,
-        0,     0,   124,     0,     0,   132,     0,   348,     0,   141,
-        0,     0,     0,   160,     0,     0,     0,     0,     0,     0,
-      365,     0,     0,     0,   387,   397,   363,     0,   267,     0,
-        0,   284,     0,   319,   310,     0,     0,   344,     0,   405,
-        0,     0,     0,     0,   120,   121,   122,   100,     0,   169,
-        0,   210,     0,   245,   126,    41,   134,   350,     0,   145,
-      163,   162,     0,     0,   380,   383,   384,   367,     0,     0,
-      389,     0,   271,     0,   288,     0,   314,     0,     0,   111,
-      113,   115,   117,   171,   212,   247,   147,   377,   378,   379,
-      376,   382,   393,   395,   273,   290,   316,   346,   411,     0,
-      409,     0,     0,   408,   423,     0,   421,   419,   415,     0,
-      413,   417,   418,   416,   410,     0,     0,     0,     0,   412,
-        0,   420,     0,   414,     0,   422,   427,     0,   425,     0,
-        0,   424,   431,     0,   429,   426,     0,     0,   428,     0,
-      430,   432
 -     136,   359,     0,   146,     0,   143,   144,     0,     0,     0,
++     136,   360,     0,   146,     0,   143,   144,     0,     0,     0,
+        0,     0,     0,     0,   161,   163,   164,   165,   166,   167,
 -     168,   386,     0,     0,     0,   384,   378,   383,     0,   376,
 -     381,   379,   380,   382,   397,   399,     0,   393,   395,   396,
 -       0,     0,   366,   282,     0,   279,   280,   299,     0,   296,
 -     297,   325,     0,   322,   323,   355,     0,    57,     0,     0,
 -     408,    90,     0,     0,     0,     0,     0,     0,     0,    96,
 -      98,     0,   176,     0,   226,   217,     0,   260,   251,     0,
 -       0,   124,     0,     0,   132,     0,   358,     0,   141,     0,
 -       0,     0,     0,     0,     0,     0,     0,   160,     0,     0,
 -       0,     0,     0,   375,     0,     0,     0,   392,   402,   373,
 -       0,   277,     0,     0,   294,     0,   329,   320,     0,     0,
 -     354,     0,   410,     0,     0,     0,   120,   121,   122,   100,
 -       0,   180,     0,   221,     0,   255,   126,    41,   134,   360,
 -       0,   145,   169,   170,   171,   172,   173,   174,   162,     0,
 -     385,   388,   389,   377,     0,     0,   394,     0,   281,     0,
 -     298,     0,   324,     0,     0,   113,   115,   117,   182,   223,
 -     257,   147,   387,   398,   400,   283,   300,   326,   356,   416,
 -       0,   414,     0,     0,   413,   428,     0,   426,   424,   420,
 -       0,   418,   422,   423,   421,   415,     0,     0,     0,     0,
 -     417,     0,   425,     0,   419,     0,   427,   432,     0,   430,
 -       0,     0,   429,   436,     0,   434,   431,     0,     0,   433,
 -       0,   435,   437
++     168,   386,   392,     0,     0,     0,   385,   384,     0,   377,
++     379,   382,   380,   381,   383,   403,   405,     0,   399,   401,
++     402,     0,     0,   367,   283,     0,   280,   281,   300,     0,
++     297,   298,   326,     0,   323,   324,   356,     0,    57,     0,
++       0,   414,    90,     0,     0,     0,     0,     0,     0,     0,
++       0,    96,    98,     0,   176,     0,   226,   217,     0,   261,
++     252,     0,     0,   124,     0,     0,   132,     0,   359,     0,
++     141,     0,     0,     0,     0,     0,     0,     0,     0,   160,
++       0,     0,     0,     0,     0,     0,   376,     0,     0,     0,
++     398,   408,   374,     0,   278,     0,     0,   295,     0,   330,
++     321,     0,     0,   355,     0,   416,     0,     0,     0,     0,
++     120,   121,   122,   100,     0,   180,     0,   221,     0,   256,
++     126,    41,   134,   361,     0,   145,   169,   170,   171,   172,
++     173,   174,   162,     0,     0,   391,   394,   395,   378,     0,
++       0,   400,     0,   282,     0,   299,     0,   325,     0,     0,
++     111,   113,   115,   117,   182,   223,   258,   147,   388,   389,
++     390,   387,   393,   404,   406,   284,   301,   327,   357,   422,
++       0,   420,     0,     0,   419,   434,     0,   432,   430,   426,
++       0,   424,   428,   429,   427,   421,     0,     0,     0,     0,
++     423,     0,   431,     0,   425,     0,   433,   438,     0,   436,
++       0,     0,   435,   442,     0,   440,   437,     0,     0,   439,
++       0,   441,   443
    };
  
    const short int
    Dhcp6Parser::yypgoto_[] =
    {
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,     3,  -428,  -428,  -428,  -428,    34,  -428,
 -    -428,  -222,  -428,   -39,  -428,   -58,  -428,  -428,  -428,   217,
 -    -428,  -428,  -428,  -428,    55,   195,   -41,   -38,   -37,   -36,
 -    -428,  -428,  -428,  -428,  -428,    53,  -428,  -428,  -428,  -428,
 -    -428,    50,  -108,  -399,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,   -65,  -428,  -427,  -428,  -428,  -428,  -428,  -428,  -117,
 -    -415,  -428,  -428,  -428,  -428,  -119,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -123,  -428,  -428,  -428,  -120,   157,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -118,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,   -94,  -428,  -428,
 -    -428,   -91,   199,  -428,  -428,  -428,  -428,  -428,  -428,  -405,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   -93,
 -    -428,  -428,  -428,   -90,  -428,   175,  -428,   -51,  -428,  -428,
 -    -428,  -428,   -49,  -428,  -428,  -428,  -428,  -428,   -50,  -428,
 -    -428,  -428,   -87,  -428,  -428,  -428,   -88,  -428,   181,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -115,
 -    -428,  -428,  -428,  -116,   209,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -113,  -428,  -428,  -428,  -114,   207,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -112,  -428,
 -    -428,  -428,  -109,  -428,   196,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,    79,  -428,  -428,
 -    -428,  -428,  -428,  -428,   -85,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,   -98,  -428,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   -48,  -428,
 -    -428,  -428,  -174,  -428,  -428,  -185,  -428,  -428,  -428,  -428,
 -    -428,  -428,  -196,  -428,  -428,  -200,  -428
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,     3,  -427,  -427,  -427,  -427,    13,  -427,
-     -427,  -222,  -427,   -48,  -427,   -58,  -427,  -427,  -427,   205,
-     -427,  -427,  -427,  -427,    44,   180,   -41,   -38,   -37,   -36,
-     -427,  -427,  -427,  -427,  -427,    45,  -427,  -427,  -427,  -427,
-     -427,    42,  -108,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,   -65,  -427,  -426,  -427,  -427,  -427,  -427,  -427,  -119,
-     -406,  -427,  -427,  -427,  -427,  -121,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -122,  -427,  -427,  -427,  -116,   142,  -427,
-     -427,  -427,  -427,  -427,  -427,  -427,  -118,  -427,  -427,  -427,
-     -427,  -101,  -427,  -427,  -427,   -97,   184,  -427,  -427,  -427,
-     -427,  -427,  -427,  -415,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -100,  -427,  -427,  -427,   -95,  -427,   161,
-     -427,   -51,  -427,  -427,  -427,  -427,  -427,   -49,  -427,  -427,
-     -427,  -427,  -427,   -50,  -427,  -427,  -427,   -96,  -427,  -427,
-     -427,   -93,  -427,   162,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -427,  -120,  -427,  -427,  -427,  -117,   212,
-     -427,  -427,  -427,  -427,  -427,  -427,  -115,  -427,  -427,  -427,
-     -114,   193,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -123,  -427,  -427,  -427,  -113,  -427,   183,
++    -427,  -427,  -427,     3,  -427,  -427,  -427,  -427,    33,  -427,
++    -427,  -214,  -427,   -67,  -427,   -58,  -427,  -427,  -427,   211,
++    -427,  -427,  -427,  -427,    51,   195,   -41,   -38,   -37,   -36,
++    -427,  -427,  -427,  -427,  -427,    52,  -427,  -427,  -427,  -427,
++    -427,    49,  -112,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++    -427,   -65,  -427,  -426,  -427,  -427,  -427,  -427,  -427,  -123,
++    -405,  -427,  -427,  -427,  -427,  -125,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,  -129,  -427,  -427,  -427,  -126,   147,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,  -133,  -427,  -427,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -109,  -427,  -427,
++    -427,  -105,   197,  -427,  -427,  -427,  -427,  -427,  -427,  -415,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -106,
++    -427,  -427,  -427,  -107,  -427,   164,  -427,   -51,  -427,  -427,
++    -427,  -427,  -427,   -49,  -427,  -427,  -427,  -427,  -427,   -50,
++    -427,  -427,  -427,  -108,  -427,  -427,  -427,  -104,  -427,   169,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
++    -138,  -427,  -427,  -427,  -128,   199,  -427,  -427,  -427,  -427,
++    -427,  -427,  -132,  -427,  -427,  -427,  -124,   201,  -427,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -134,
++    -427,  -427,  -427,  -121,  -427,   202,  -427,  -427,  -427,  -427,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,    67,  -427,  -427,  -427,  -427,  -427,  -427,   -94,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,    66,  -427,
++    -427,  -427,  -427,  -427,  -427,  -114,  -427,  -427,  -427,  -427,
++    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -115,  -427,
 +    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -105,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     -427,  -427,  -427,  -427,  -427,  -427,   -57,  -427,  -427,  -427,
-     -176,  -427,  -427,  -190,  -427,  -427,  -427,  -427,  -427,  -427,
-     -201,  -427,  -427,  -207,  -427
++    -427,  -427,   -59,  -427,  -427,  -427,  -198,  -427,  -427,  -203,
++    -427,  -427,  -427,  -427,  -427,  -427,  -213,  -427,  -427,  -219,
++    -427
    };
  
    const short int
    {
        -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
        21,    22,    23,    68,    33,    34,    57,    72,    73,    35,
 -      56,   424,   505,    69,    70,   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,   572,   480,   573,   481,
 -     574,   210,   314,   483,   484,   485,   118,   267,   501,   502,
 -     503,   504,   119,   269,   508,   509,   510,   120,   268,   121,
 -     271,   514,   515,   516,   597,    55,    67,   240,   241,   242,
 -     326,   243,   327,   122,   272,   523,   524,   525,   526,   527,
 -     528,   529,   530,   123,   264,   488,   489,   490,   581,    43,
 -      61,   150,   151,   152,   284,   153,   285,   154,   286,   155,
 -     290,   156,   289,   157,   158,   124,   265,   492,   493,   494,
 -     584,    51,    65,   211,   212,   213,   214,   215,   216,   217,
 -     218,   317,   219,   316,   220,   221,   318,   222,   125,   266,
 -     496,   497,   498,   587,    53,    66,   229,   230,   231,   232,
 -     233,   322,   234,   235,   236,   160,   282,   554,   555,   556,
 -     620,    45,    62,   167,   168,   169,   295,   161,   283,   558,
 -     559,   560,   623,    47,    63,   177,   178,   179,   298,   180,
 -     181,   300,   182,   183,   162,   291,   562,   563,   564,   626,
 -      49,    64,   192,   193,   194,   195,   306,   196,   307,   197,
 -     308,   198,   309,   199,   310,   200,   305,   163,   292,   566,
 -     629,   126,   270,   512,   281,   365,   366,   367,   368,   369,
 -     433,   127,   273,   538,   539,   540,   541,   608,   542,   543,
 -     128,   129,   275,   546,   547,   548,   614,   549,   615,   130,
 -     276,    83,   251,    84,   252,    85,   250,   465,   466,   467,
 -     568,   690,   691,   692,   700,   701,   702,   703,   708,   704,
 -     706,   718,   719,   720,   724,   725,   727
 +      56,   423,   505,    69,    70,   107,    37,    58,    80,    81,
 +      82,   248,    39,    59,   108,   109,   110,   111,   112,   113,
 +     114,   115,   255,    41,    60,   132,   278,   116,   256,   117,
-      257,   476,   477,   478,   562,   479,   563,   480,   564,   481,
-      565,   209,   313,   483,   484,   485,   118,   266,   501,   502,
++     257,   476,   477,   478,   573,   479,   574,   480,   575,   481,
++     576,   209,   313,   483,   484,   485,   118,   266,   501,   502,
 +     503,   504,   119,   268,   508,   509,   510,   120,   267,   121,
-      270,   514,   515,   516,   588,    55,    67,   239,   240,   241,
-      325,   242,   326,   122,   271,   518,   519,   123,   263,   488,
-      489,   490,   572,    43,    61,   150,   151,   152,   283,   153,
-      284,   154,   285,   155,   289,   156,   288,   157,   158,   124,
-      264,   492,   493,   494,   575,    51,    65,   210,   211,   212,
-      213,   214,   215,   216,   312,   217,   316,   218,   315,   219,
-      220,   317,   221,   125,   265,   496,   497,   498,   578,    53,
-       66,   228,   229,   230,   231,   232,   321,   233,   234,   235,
-      160,   281,   544,   545,   546,   607,    45,    62,   167,   168,
-      169,   294,   161,   282,   548,   549,   550,   610,    47,    63,
-      177,   178,   179,   297,   180,   181,   299,   182,   183,   162,
-      290,   552,   553,   554,   613,    49,    64,   192,   193,   194,
-      195,   305,   196,   306,   197,   307,   198,   308,   199,   309,
-      200,   304,   163,   291,   556,   616,   126,   269,   512,   280,
-      364,   365,   366,   367,   368,   432,   127,   272,   527,   528,
-      529,   594,   670,   530,   531,   595,   532,   533,   128,   129,
-      274,   536,   537,   538,   601,   539,   602,   130,   275,    83,
-      250,    84,   251,    85,   249,   464,   465,   466,   558,   679,
-      680,   681,   689,   690,   691,   692,   697,   693,   695,   707,
-      708,   709,   713,   714,   716
++     270,   514,   515,   516,   599,    55,    67,   239,   240,   241,
++     325,   242,   326,   122,   271,   523,   524,   525,   526,   527,
++     528,   529,   530,   123,   263,   488,   489,   490,   583,    43,
++      61,   150,   151,   152,   283,   153,   284,   154,   285,   155,
++     289,   156,   288,   157,   158,   124,   264,   492,   493,   494,
++     586,    51,    65,   210,   211,   212,   213,   214,   215,   216,
++     312,   217,   316,   218,   315,   219,   220,   317,   221,   125,
++     265,   496,   497,   498,   589,    53,    66,   228,   229,   230,
++     231,   232,   321,   233,   234,   235,   160,   281,   555,   556,
++     557,   623,    45,    62,   167,   168,   169,   294,   161,   282,
++     559,   560,   561,   626,    47,    63,   177,   178,   179,   297,
++     180,   181,   299,   182,   183,   162,   290,   563,   564,   565,
++     629,    49,    64,   192,   193,   194,   195,   305,   196,   306,
++     197,   307,   198,   308,   199,   309,   200,   304,   163,   291,
++     567,   632,   126,   269,   512,   280,   364,   365,   366,   367,
++     368,   432,   127,   272,   538,   539,   540,   610,   691,   541,
++     542,   611,   543,   544,   128,   129,   274,   547,   548,   549,
++     617,   550,   618,   130,   275,    83,   250,    84,   251,    85,
++     249,   464,   465,   466,   569,   700,   701,   702,   710,   711,
++     712,   713,   718,   714,   716,   728,   729,   730,   734,   735,
++     737
    };
  
    const unsigned short int
    Dhcp6Parser::yytable_[] =
    {
-       79,   225,   526,   145,   165,   175,   190,   208,   224,   238,
-      511,   159,   166,   176,   191,   226,    32,   227,   507,   133,
-      146,    74,    96,   147,   148,   149,    25,   499,    26,    36,
-       27,    24,   164,   253,    89,    90,    91,    92,   254,    96,
-      202,    96,   468,   469,   470,   471,   472,   473,   474,   520,
-      134,   276,   135,   472,   236,   237,   277,   202,   136,   137,
-      138,   139,   140,   141,    38,   133,   360,    96,   500,   142,
-      143,   581,    96,    40,   582,    86,   144,    87,    88,   170,
-      171,   172,   173,   174,   499,   506,    89,    90,    91,    92,
-       93,    94,    95,    96,    75,    78,   236,   237,   184,    42,
-       76,    77,   185,   186,   187,   188,   189,   202,   521,   522,
-      523,   524,    78,    78,    78,   142,    97,    98,    99,   100,
-      534,   535,   292,    28,    29,    30,    31,   293,    44,    78,
-      101,    78,   201,   102,   103,   584,    78,   431,   585,   295,
-       78,    46,   104,   105,   296,    78,   106,   202,   586,   203,
-      204,   587,   205,   206,   207,   202,   222,   203,   204,   223,
-      682,    48,   684,   683,   685,   686,    78,   447,   448,   449,
-      302,   637,   327,   526,    71,   303,   131,   328,   507,    78,
-        1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-       11,   276,   559,   569,   569,    79,   557,   560,   570,   571,
-      592,   599,   603,   247,   292,   593,   600,   604,   605,   663,
-       50,   327,   295,   302,    52,   362,   666,   674,   675,    78,
-      698,   717,   361,    54,   244,   699,   718,    78,   710,   243,
-      363,   711,   245,   247,   145,   246,   252,   165,   258,   667,
-      668,   669,   159,   259,   175,   166,   260,   329,   330,   261,
-      262,   146,   176,   190,   147,   148,   149,   273,   279,   225,
-      286,   191,   208,   287,   298,   300,   224,   301,   311,   340,
-      310,   314,   318,   226,   319,   227,   320,   323,   322,   324,
-      331,   332,   333,   334,   335,   337,   338,   339,   341,   342,
-      343,   345,   346,   347,   348,   344,   349,   350,   351,   352,
-      353,   354,   356,   357,   359,   355,   369,   370,   371,   372,
-      373,   375,   376,   377,   374,   378,   379,   381,   383,   385,
-      389,   390,   384,   386,   391,   387,   392,   393,   394,   396,
-      397,   399,   398,   400,   401,   404,   402,   413,   414,   407,
-      405,   408,   410,   411,   625,   437,   412,   415,   416,   417,
-      418,   482,   482,   419,   420,   421,   422,   424,   475,   475,
-      425,   426,   433,   624,   427,   428,   429,   430,   434,   362,
-      525,   435,   436,   438,   439,   442,   361,   440,   443,   487,
-      491,   495,   513,   541,   363,   543,   441,   444,   445,   547,
-      551,   566,   561,   446,   567,   568,   574,   617,   573,   577,
-      576,   579,   580,   450,   589,   590,   608,   591,   596,   451,
-      597,   460,   452,   461,   598,   609,   612,   611,   555,   618,
-      453,   454,   614,   455,   615,   635,   620,   463,   621,   622,
-      456,   623,   642,   643,   457,   458,   459,   648,   649,   657,
-      664,   658,   696,   540,   700,   665,   517,   676,   606,   678,
-      702,   706,   626,   704,   719,   462,   358,   583,   336,   486,
-      467,   627,   634,   636,   640,   644,   645,   646,   639,   409,
-      659,   660,   638,   629,   641,   628,   380,   631,   661,   662,
-      630,   403,   671,   672,   633,   632,   406,   673,   677,   652,
-      651,   701,   656,   712,   395,   388,   653,   654,   650,   705,
-      655,   542,   619,   721,   482,   647,   694,   382,   703,   715,
-      720,   475,     0,   225,   145,     0,     0,   208,     0,     0,
-      224,     0,   159,     0,     0,     0,     0,   226,     0,   227,
-      238,   146,     0,     0,   147,   148,   149,     0,     0,     0,
-        0,   525,     0,     0,     0,     0,     0,     0,     0,   165,
-        0,     0,   175,     0,     0,   190,     0,   166,     0,     0,
-      176,     0,     0,   191,     0,     0,     0,     0,     0,     0,
 -      79,   226,   537,   145,   165,   175,   190,   208,   225,   239,
 -     507,   159,   166,   176,   191,   227,    32,   228,   478,   478,
 -     146,   511,   133,   147,   148,   149,    74,    25,   133,    26,
 -     536,    27,   499,   237,   238,    24,   254,    89,    90,    91,
 -      92,   255,   237,   238,    96,   201,   469,   470,   471,   472,
 -     473,   474,    71,   134,   201,   135,    96,    96,   472,    36,
 -     202,   136,   137,   138,   139,   140,   141,   164,   499,   506,
 -      38,    78,   142,   143,    96,   202,   500,   131,   142,   144,
 -     277,    86,   184,    87,    88,   278,   185,   186,   187,   188,
 -     189,    96,    89,    90,    91,    92,    93,    94,    95,    96,
 -      40,   361,    75,   170,   171,   172,   173,   174,    76,    77,
 -      42,   202,   223,   203,   204,   224,   531,   532,   533,   534,
 -      78,    78,    97,    98,    99,   100,    44,    28,    29,    30,
 -      31,   202,    78,    78,   590,    78,   101,   591,   432,   102,
 -     293,    46,   201,   296,    78,   294,   103,   244,   297,   303,
 -      78,   104,   105,   328,   304,   106,   277,   202,   329,   203,
 -     204,   567,   205,   206,   207,    48,   569,    78,   448,   449,
 -     450,   570,   578,   544,   545,    78,   578,   579,   507,   478,
 -     246,   580,   606,   612,    50,   537,    78,   607,   613,   695,
 -     649,   696,   697,    52,   593,    54,    79,   594,   517,   518,
 -     519,   520,   521,   522,   616,   248,    78,   293,   595,   617,
 -     618,   596,   678,   536,   328,   296,   363,   303,   245,   681,
 -     685,   709,   686,   362,   728,   693,   710,   721,   694,   729,
 -     722,   364,    78,   247,   248,   145,   253,   259,   165,   260,
 -     261,   262,   263,   159,   274,   175,   166,   280,   330,   331,
 -     287,   288,   146,   176,   190,   147,   148,   149,   299,   301,
 -     226,   302,   191,   208,   311,   312,   320,   225,   315,   319,
 -     321,   324,   323,   325,   227,   332,   228,     1,     2,     3,
 -       4,     5,     6,     7,     8,     9,    10,    11,   333,   334,
 -     335,   336,   338,   339,   340,   341,   342,   346,   343,   344,
 -     345,   347,   348,   349,   350,   351,   352,   353,   354,   355,
 -     357,   358,   356,   360,   370,   371,   372,   373,   374,   375,
 -     377,   378,   379,   380,   376,   382,   384,   386,   390,   385,
 -     391,   392,   387,   388,   393,   394,   395,   397,   414,   415,
 -     398,   400,   401,   402,   405,   408,   409,   399,   411,   435,
 -     403,   406,   482,   482,   412,   413,   416,   417,   418,   475,
 -     475,   419,   420,   421,   422,   423,   425,   426,   427,   436,
 -     363,   535,   428,   429,   430,   431,   437,   362,   434,   438,
 -     439,   440,   441,   442,   443,   364,   445,   444,   446,   487,
 -     491,   495,   513,   551,   553,   557,   447,   451,   561,   452,
 -     453,   454,   571,   575,   576,   577,   600,   583,   565,   582,
 -     586,   585,   461,   455,   462,   588,   589,   598,   599,   622,
 -     456,   464,   601,   602,   603,   457,   604,   605,   609,   610,
 -     458,   611,   621,   459,   460,   624,   625,   627,   628,   689,
 -     619,   631,   630,   633,   634,   635,   679,   659,   647,   664,
 -     665,   673,   680,   636,   674,   707,   687,   711,   637,   713,
 -     652,   638,   715,   717,   730,   550,   592,   463,   486,   468,
 -     639,   337,   359,   646,   648,   653,   651,   650,   654,   655,
 -     656,   657,   660,   661,   662,   410,   675,   723,   658,   641,
 -     640,   676,   381,   643,   642,   677,   404,   682,   683,   644,
 -     684,   688,   645,   712,   667,   383,   407,   668,   396,   669,
 -     389,   716,   670,   482,   552,   732,   672,   671,   666,   705,
 -     475,   632,   226,   145,   714,   726,   208,   663,   731,   225,
 -       0,   159,     0,     0,     0,     0,   227,     0,   228,   239,
 -     146,     0,     0,   147,   148,   149,     0,     0,     0,     0,
 -       0,     0,     0,     0,   535,     0,     0,     0,     0,     0,
 -       0,     0,   165,     0,     0,   175,     0,     0,   190,     0,
 -     166,     0,     0,   176,     0,     0,   191,     0,     0,     0,
++      79,   225,   537,   145,   165,   175,   190,   208,   224,   238,
++     511,   159,   166,   176,   191,   226,    32,   227,   133,   507,
++     146,    96,    74,   147,   148,   149,    25,   133,    26,    24,
++      27,   164,   499,    89,    90,    91,    92,    96,   202,    36,
++      96,   468,   469,   470,   471,   472,   473,   474,   253,   134,
++     276,   135,    71,   254,   131,   277,   202,   136,   137,   138,
++     139,   140,   141,    38,   360,    40,   292,    42,   142,   143,
++      86,   293,    87,    88,    44,   144,   201,   142,    46,   500,
++      48,    89,    90,    91,    92,    93,    94,    95,    96,   592,
++      50,   202,   593,   203,   204,   531,   205,   206,   207,   472,
++      78,    75,   202,   222,   203,   204,   223,    76,    77,   202,
++      52,    97,    98,    99,   100,    54,    78,   236,   237,    78,
++      78,   295,    96,   243,    96,   101,   296,   244,   102,    28,
++      29,    30,    31,   245,    78,   103,   170,   171,   172,   173,
++     174,   302,   246,   104,   105,   431,   303,   106,   184,   236,
++     237,   247,   185,   186,   187,   188,   189,   252,    78,   327,
++     532,   533,   534,   535,   328,   595,   276,    78,   596,    78,
++     705,   568,   706,   707,   570,   447,   448,   449,   580,   571,
++      78,   580,   653,   581,   499,   506,   582,    78,    78,   537,
++     507,   608,   615,   619,   247,    79,   609,   616,   620,   621,
++     258,    78,   259,    78,     1,     2,     3,     4,     5,     6,
++       7,     8,     9,    10,    11,   362,   517,   518,   519,   520,
++     521,   522,   361,   292,   327,   279,   295,   302,   684,   687,
++     363,   695,   696,   719,   145,   738,   597,   165,   720,   598,
++     739,   260,   159,   703,   175,   166,   704,   329,   330,   261,
++     262,   146,   176,   190,   147,   148,   149,   731,   310,   225,
++     732,   191,   208,   688,   689,   690,   224,   545,   546,   273,
++     286,   287,   298,   226,   300,   227,   301,   311,   331,   314,
++     318,   319,   320,   340,   322,   323,   324,   375,   332,   333,
++     334,   335,   337,   338,   339,   345,   341,   346,   347,   348,
++     349,   342,   343,   344,   350,   351,   352,   353,   354,   355,
++     356,   357,   359,   369,   370,   371,   372,   373,   374,   376,
++     377,   378,   379,   381,   383,   384,   385,   386,   387,   389,
++     390,   391,   392,   393,   394,   396,   397,   413,   414,   399,
++     398,   400,   401,   404,   407,   402,   405,   408,   410,   411,
++     418,   482,   482,   412,   415,   416,   417,   419,   475,   475,
++     420,   421,   422,   424,   425,   426,   434,   435,   427,   362,
++     536,   428,   429,   430,   436,   433,   361,   437,   442,   438,
++     572,   443,   487,   491,   363,   495,   439,   513,   552,   440,
++     441,   585,   554,   558,   562,   463,   577,   578,   579,   633,
++     444,   584,   587,   588,   590,   445,   446,   450,   591,   600,
++     601,   460,   602,   461,   603,   604,   566,   605,   606,   607,
++     612,   613,   451,   614,   624,   625,   627,   628,   631,   452,
++     634,   453,   454,   630,   636,   637,   638,   639,   594,   663,
++     651,   455,   456,   664,   457,   669,   670,   678,   685,   458,
++     679,   717,   686,   721,   697,   699,   723,   727,   459,   725,
++     740,   622,   462,   551,   336,   640,   486,   467,   643,   650,
++     652,   358,   655,   654,   409,   662,   645,   641,   644,   646,
++     656,   642,   647,   649,   403,   648,   657,   673,   658,   380,
++     659,   660,   661,   406,   382,   672,   675,   677,   665,   666,
++     553,   668,   674,   388,   671,   715,   667,   680,   676,   681,
++     682,   635,   683,   395,   692,   482,   724,   693,   736,   741,
++     694,   733,   475,     0,   225,   145,     0,     0,   208,   698,
++       0,   224,   722,   159,     0,     0,   726,     0,   226,     0,
++     227,   238,   146,     0,   742,   147,   148,   149,     0,     0,
++       0,     0,     0,     0,     0,     0,     0,   536,     0,     0,
++       0,     0,     0,     0,     0,   165,     0,     0,   175,     0,
++       0,   190,     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,   699,     0,     0,
 -       0,     0,     0,     0,   698,     0,     0,     0,     0,     0,
 -       0,     0,     0,     0,   699,     0,     0,     0,     0,     0,
 -       0,   698
 +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,     0,     0,     0,   688,     0,     0,     0,
-        0,     0,     0,   687,     0,     0,     0,     0,     0,     0,
-        0,     0,     0,   688,     0,     0,     0,     0,     0,     0,
-      687
++       0,     0,     0,     0,     0,     0,     0,   709,     0,     0,
++       0,     0,     0,     0,   708,     0,     0,     0,     0,     0,
++       0,     0,     0,     0,   709,     0,     0,     0,     0,     0,
++       0,   708
    };
  
    const short int
    Dhcp6Parser::yycheck_[] =
    {
 -      58,    66,   429,    61,    62,    63,    64,    65,    66,    67,
 -     425,    61,    62,    63,    64,    66,    13,    66,   417,   418,
 -      61,   426,     7,    61,    61,    61,    10,     5,     7,     7,
 -     429,     9,    61,    67,    68,     0,     3,    22,    23,    24,
 -      25,     8,    67,    68,    29,    15,    16,    17,    18,    19,
 -      20,    21,   105,    38,    15,    40,    29,    29,    19,     7,
 -      30,    46,    47,    48,    49,    50,    51,    39,    61,    62,
 -       7,   105,    57,    58,    29,    30,   105,    12,    57,    64,
 -       3,    11,    55,    13,    14,     8,    59,    60,    61,    62,
 -      63,    29,    22,    23,    24,    25,    26,    27,    28,    29,
 -       7,    56,    86,    41,    42,    43,    44,    45,    92,    93,
 -       7,    30,    31,    32,    33,    34,    77,    78,    79,    80,
 -     105,   105,    52,    53,    54,    55,     7,   105,   106,   107,
 -     108,    30,   105,   105,     3,   105,    66,     6,   360,    69,
 -       3,     7,    15,     3,   105,     8,    76,     6,     8,     3,
 -     105,    81,    82,     3,     8,    85,     3,    30,     8,    32,
 -      33,     8,    35,    36,    37,     7,     3,   105,   390,   391,
 -     392,     8,     3,    83,    84,   105,     3,     8,   593,   578,
 -       4,     8,     3,     3,     7,   612,   105,     8,     8,    88,
 -     595,    90,    91,     7,     3,     7,   254,     6,    70,    71,
 -      72,    73,    74,    75,     3,     3,   105,     3,     3,     8,
 -       8,     6,     8,   612,     3,     3,   281,     3,     3,     8,
 -       8,     3,     8,   281,     3,     3,     8,     3,     6,     8,
 -       6,   281,   105,     8,     3,   293,     4,     4,   296,     4,
 -       4,     4,     4,   293,     4,   303,   296,     8,   245,   246,
 -       4,     4,   293,   303,   312,   293,   293,   293,     4,     4,
 -     325,     4,   312,   321,     8,     3,     8,   325,     4,     4,
 -       3,     8,     4,     3,   325,   105,   325,    94,    95,    96,
 -      97,    98,    99,   100,   101,   102,   103,   104,     4,     4,
 -       4,     4,     4,     4,     4,   106,   106,     4,   106,   106,
 -     106,     4,     4,     4,     4,     4,     4,     4,     4,     4,
 -       4,     4,   106,     4,     4,     4,     4,     4,     4,   106,
 -       4,     4,     4,     4,   108,     4,     4,     4,     4,   106,
 -       4,     4,   106,   106,     4,     4,     4,     4,   335,   336,
 -       4,     4,     4,     4,     4,     4,     4,   106,     4,     3,
 -     108,   108,   417,   418,     7,     7,     7,     7,     7,   417,
 -     418,     5,     5,     5,     5,     5,     5,     5,     5,     5,
 -     435,   429,     7,     7,     7,     7,     5,   435,     8,   105,
 -     105,   105,   105,   105,     5,   435,   105,     7,   105,     7,
 -       7,     7,     7,     4,     7,     7,   105,   105,     7,   105,
 -     105,   105,     8,     4,     4,     4,     4,     3,    65,     6,
 -       3,     6,   409,   105,   411,     6,     3,     6,     3,     3,
 -     105,    87,     4,     4,     4,   105,     4,     4,     4,     4,
 -     105,     4,     6,   105,   105,     6,     3,     6,     3,     7,
 -     105,     4,     8,     4,     4,     4,     8,     4,     6,     4,
 -       4,     4,     8,   108,     5,     4,     8,     4,   106,     4,
 -     106,   108,     5,     7,     4,   431,   505,   412,   418,   416,
 -     578,   254,   277,   590,   593,   106,   599,   597,   106,   106,
 -     106,   106,   106,   106,   106,   328,   105,    89,   606,   583,
 -     581,   105,   293,   586,   584,   105,   321,   105,   105,   587,
 -     105,   105,   589,   106,   620,   296,   325,   622,   312,   623,
 -     303,   105,   625,   578,   435,   105,   628,   626,   616,   693,
 -     578,   569,   587,   581,   709,   721,   584,   612,   728,   587,
 -      -1,   581,    -1,    -1,    -1,    -1,   587,    -1,   587,   597,
 -     581,    -1,    -1,   581,   581,   581,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,   612,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,   620,    -1,    -1,   623,    -1,    -1,   626,    -1,
 -     620,    -1,    -1,   623,    -1,    -1,   626,    -1,    -1,    -1,
 +      58,    66,   428,    61,    62,    63,    64,    65,    66,    67,
-      425,    61,    62,    63,    64,    66,    13,    66,   424,     7,
-       61,    10,    29,    61,    61,    61,     5,    61,     7,     7,
-        9,     0,    39,     3,    22,    23,    24,    25,     8,    29,
-       30,    29,    15,    16,    17,    18,    19,    20,    21,    15,
-       38,     3,    40,    19,    67,    68,     8,    30,    46,    47,
-       48,    49,    50,    51,     7,     7,    56,    29,   102,    57,
-       58,     3,    29,     7,     6,    11,    64,    13,    14,    41,
-       42,    43,    44,    45,    61,    62,    22,    23,    24,    25,
-       26,    27,    28,    29,    83,   102,    67,    68,    55,     7,
-       89,    90,    59,    60,    61,    62,    63,    30,    74,    75,
-       76,    77,   102,   102,   102,    57,    52,    53,    54,    55,
-       80,    81,     3,   102,   103,   104,   105,     8,     7,   102,
-       66,   102,    15,    69,    70,     3,   102,   359,     6,     3,
-      102,     7,    78,    79,     8,   102,    82,    30,     3,    32,
-       33,     6,    35,    36,    37,    30,    31,    32,    33,    34,
-        3,     7,    85,     6,    87,    88,   102,   389,   390,   391,
-        3,   586,     3,   599,   102,     8,    12,     8,   584,   102,
-       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-      101,     3,     3,     3,     3,   253,     8,     8,     8,     8,
-        3,     3,     3,     3,     3,     8,     8,     8,     8,     8,
-        7,     3,     3,     3,     7,   280,     8,     8,     8,   102,
-        3,     3,   280,     7,     3,     8,     8,   102,     3,     6,
-      280,     6,     4,     3,   292,     8,     4,   295,     4,    71,
-       72,    73,   292,     4,   302,   295,     4,   244,   245,     4,
-        4,   292,   302,   311,   292,   292,   292,     4,     8,   324,
-        4,   311,   320,     4,     4,     4,   324,     4,     3,   103,
-        8,     4,     4,   324,     8,   324,     3,     8,     4,     3,
-      102,     4,     4,     4,     4,     4,     4,     4,   103,   103,
-      103,     4,     4,     4,     4,   103,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,   103,     4,     4,     4,     4,
-        4,   105,     4,     4,   103,     4,     4,     4,     4,     4,
-        4,     4,   103,   103,     4,   103,     4,     4,     4,     4,
-        4,     4,   103,     4,     4,     4,   105,   334,   335,     4,
-      105,     4,     4,     7,   103,   102,     7,     7,     7,     7,
-        5,   416,   417,     5,     5,     5,     5,     5,   416,   417,
-        5,     5,     8,   105,     7,     7,     7,     7,     3,   434,
-      428,     5,     5,   102,   102,     5,   434,   102,     7,     7,
-        7,     7,     7,     4,   434,     7,   102,   102,   102,     7,
-        7,     4,     8,   102,     4,     4,     3,     8,     6,     3,
-        6,     6,     3,   102,     6,     3,     6,     4,     4,   102,
-        4,   408,   102,   410,     4,     3,     3,     6,    65,     4,
-      102,   102,     6,   102,     3,     6,     4,    84,     4,     4,
-      102,     4,     4,     4,   102,   102,   102,     4,     4,     4,
-        8,     5,     4,   430,     4,     8,   102,     8,   102,     7,
-        4,     7,   105,     5,     4,   411,   276,   505,   253,   417,
-      415,   569,   581,   584,   103,   103,   103,   103,   590,   327,
-      102,   102,   588,   574,   592,   572,   292,   577,   102,   102,
-      575,   320,   102,   102,   580,   578,   324,   102,   102,   609,
-      607,   103,   615,    86,   311,   302,   610,   612,   603,   102,
-      613,   434,   559,   102,   569,   599,   682,   295,   698,   710,
-      717,   569,    -1,   578,   572,    -1,    -1,   575,    -1,    -1,
-      578,    -1,   572,    -1,    -1,    -1,    -1,   578,    -1,   578,
-      588,   572,    -1,    -1,   572,   572,   572,    -1,    -1,    -1,
-       -1,   599,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   607,
-       -1,    -1,   610,    -1,    -1,   613,    -1,   607,    -1,    -1,
-      610,    -1,    -1,   613,    -1,    -1,    -1,    -1,    -1,    -1,
++     425,    61,    62,    63,    64,    66,    13,    66,     7,   424,
++      61,    29,    10,    61,    61,    61,     5,     7,     7,     0,
++       9,    39,    61,    22,    23,    24,    25,    29,    30,     7,
++      29,    15,    16,    17,    18,    19,    20,    21,     3,    38,
++       3,    40,   108,     8,    12,     8,    30,    46,    47,    48,
++      49,    50,    51,     7,    56,     7,     3,     7,    57,    58,
++      11,     8,    13,    14,     7,    64,    15,    57,     7,   108,
++       7,    22,    23,    24,    25,    26,    27,    28,    29,     3,
++       7,    30,     6,    32,    33,    15,    35,    36,    37,    19,
++     108,    89,    30,    31,    32,    33,    34,    95,    96,    30,
++       7,    52,    53,    54,    55,     7,   108,    67,    68,   108,
++     108,     3,    29,     6,    29,    66,     8,     3,    69,   108,
++     109,   110,   111,     4,   108,    76,    41,    42,    43,    44,
++      45,     3,     8,    84,    85,   359,     8,    88,    55,    67,
++      68,     3,    59,    60,    61,    62,    63,     4,   108,     3,
++      80,    81,    82,    83,     8,     3,     3,   108,     6,   108,
++      91,     8,    93,    94,     3,   389,   390,   391,     3,     8,
++     108,     3,   597,     8,    61,    62,     8,   108,   108,   615,
++     595,     3,     3,     3,     3,   253,     8,     8,     8,     8,
++       4,   108,     4,   108,    97,    98,    99,   100,   101,   102,
++     103,   104,   105,   106,   107,   280,    70,    71,    72,    73,
++      74,    75,   280,     3,     3,     8,     3,     3,     8,     8,
++     280,     8,     8,     3,   292,     3,     3,   295,     8,     6,
++       8,     4,   292,     3,   302,   295,     6,   244,   245,     4,
++       4,   292,   302,   311,   292,   292,   292,     3,     8,   324,
++       6,   311,   320,    77,    78,    79,   324,    86,    87,     4,
++       4,     4,     4,   324,     4,   324,     4,     3,   108,     4,
++       4,     8,     3,   109,     4,     8,     3,   111,     4,     4,
++       4,     4,     4,     4,     4,     4,   109,     4,     4,     4,
++       4,   109,   109,   109,     4,     4,     4,     4,     4,   109,
++       4,     4,     4,     4,     4,     4,     4,     4,   109,     4,
++       4,     4,     4,     4,     4,   109,     4,   109,   109,     4,
++       4,     4,     4,     4,     4,     4,     4,   334,   335,     4,
++     109,     4,     4,     4,     4,   111,   111,     4,     4,     7,
++       5,   416,   417,     7,     7,     7,     7,     5,   416,   417,
++       5,     5,     5,     5,     5,     5,     3,     5,     7,   434,
++     428,     7,     7,     7,     5,     8,   434,   108,     5,   108,
++       8,     7,     7,     7,   434,     7,   108,     7,     4,   108,
++     108,     3,     7,     7,     7,    90,     4,     4,     4,     8,
++     108,     6,     6,     3,     6,   108,   108,   108,     3,     6,
++       3,   408,     4,   410,     4,     4,    65,     4,     4,     4,
++       4,     4,   108,     4,     6,     3,     6,     3,     3,   108,
++       4,   108,   108,     6,     4,     4,     4,     4,   505,     4,
++       6,   108,   108,     4,   108,     4,     4,     4,     8,   108,
++       5,     4,     8,     4,     8,     7,     4,     7,   108,     5,
++       4,   108,   411,   430,   253,   111,   417,   415,   580,   592,
++     595,   276,   601,   599,   327,   608,   585,   109,   583,   586,
++     109,   111,   588,   591,   320,   589,   109,   625,   109,   292,
++     109,   109,   109,   324,   295,   623,   628,   631,   109,   109,
++     434,   615,   626,   302,   619,   703,   109,   108,   629,   108,
++     108,   570,   108,   311,   108,   580,   719,   108,   731,   738,
++     108,    92,   580,    -1,   589,   583,    -1,    -1,   586,   108,
++      -1,   589,   109,   583,    -1,    -1,   108,    -1,   589,    -1,
++     589,   599,   583,    -1,   108,   583,   583,   583,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,   615,    -1,    -1,
++      -1,    -1,    -1,    -1,    -1,   623,    -1,    -1,   626,    -1,
++      -1,   629,    -1,   623,    -1,    -1,   626,    -1,    -1,   629,
 +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,    -1,    -1,    -1,   681,    -1,    -1,    -1,
-       -1,    -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,
-       -1,    -1,    -1,   698,    -1,    -1,    -1,    -1,    -1,    -1,
-      698
+       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,    -1,    -1,    -1,   692,    -1,    -1,
 -      -1,    -1,    -1,    -1,   692,    -1,    -1,    -1,    -1,    -1,
 -      -1,    -1,    -1,    -1,   709,    -1,    -1,    -1,    -1,    -1,
 -      -1,   709
++      -1,    -1,    -1,    -1,    -1,    -1,    -1,   702,    -1,    -1,
++      -1,    -1,    -1,    -1,   702,    -1,    -1,    -1,    -1,    -1,
++      -1,    -1,    -1,    -1,   719,    -1,    -1,    -1,    -1,    -1,
++      -1,   719
    };
  
    const unsigned short int
    Dhcp6Parser::yystos_[] =
    {
-        0,    91,    92,    93,    94,    95,    96,    97,    98,    99,
-      100,   101,   107,   108,   109,   110,   111,   112,   113,   114,
-      115,   116,   117,   118,     0,     5,     7,     9,   102,   103,
-      104,   105,   119,   120,   121,   125,     7,   132,     7,   138,
-        7,   149,     7,   209,     7,   272,     7,   284,     7,   301,
-        7,   231,     7,   255,     7,   191,   126,   122,   133,   139,
-      150,   210,   273,   285,   302,   232,   256,   192,   119,   129,
-      130,   102,   123,   124,    10,    83,    89,    90,   102,   131,
-      134,   135,   136,   355,   357,   359,    11,    13,    14,    22,
 -       0,    94,    95,    96,    97,    98,    99,   100,   101,   102,
 -     103,   104,   110,   111,   112,   113,   114,   115,   116,   117,
 -     118,   119,   120,   121,     0,     5,     7,     9,   105,   106,
 -     107,   108,   122,   123,   124,   128,     7,   135,     7,   141,
 -       7,   152,     7,   218,     7,   280,     7,   292,     7,   309,
 -       7,   240,     7,   263,     7,   194,   129,   125,   136,   142,
 -     153,   219,   281,   293,   310,   241,   264,   195,   122,   132,
 -     133,   105,   126,   127,    10,    86,    92,    93,   105,   134,
 -     137,   138,   139,   360,   362,   364,    11,    13,    14,    22,
++       0,    97,    98,    99,   100,   101,   102,   103,   104,   105,
++     106,   107,   113,   114,   115,   116,   117,   118,   119,   120,
++     121,   122,   123,   124,     0,     5,     7,     9,   108,   109,
++     110,   111,   125,   126,   127,   131,     7,   138,     7,   144,
++       7,   155,     7,   221,     7,   284,     7,   296,     7,   313,
++       7,   243,     7,   267,     7,   197,   132,   128,   139,   145,
++     156,   222,   285,   297,   314,   244,   268,   198,   125,   135,
++     136,   108,   129,   130,    10,    89,    95,    96,   108,   137,
++     140,   141,   142,   367,   369,   371,    11,    13,    14,    22,
        23,    24,    25,    26,    27,    28,    29,    52,    53,    54,
-       55,    66,    69,    70,    78,    79,    82,   131,   140,   141,
-      142,   143,   144,   145,   146,   147,   153,   155,   172,   178,
-      183,   185,   199,   203,   225,   249,   322,   332,   344,   345,
-      353,    12,   151,     7,    38,    40,    46,    47,    48,    49,
-       50,    51,    57,    58,    64,   131,   142,   143,   144,   145,
-      211,   212,   213,   215,   217,   219,   221,   223,   224,   249,
-      266,   278,   295,   318,    39,   131,   249,   274,   275,   276,
-       41,    42,    43,    44,    45,   131,   249,   286,   287,   288,
-      290,   291,   293,   294,    55,    59,    60,    61,    62,    63,
-      131,   249,   303,   304,   305,   306,   308,   310,   312,   314,
-      316,    15,    30,    32,    33,    35,    36,    37,   131,   167,
-      233,   234,   235,   236,   237,   238,   239,   241,   243,   245,
-      246,   248,    31,    34,   131,   167,   237,   243,   257,   258,
-      259,   260,   261,   263,   264,   265,    67,    68,   131,   193,
-      194,   195,   197,     6,     3,     4,     8,     3,   137,   360,
-      356,   358,     4,     3,     8,   148,   154,   156,     4,     4,
-        4,     4,     4,   204,   226,   250,   173,   184,   179,   323,
-      186,   200,   333,     4,   346,   354,     3,     8,   152,     8,
-      325,   267,   279,   214,   216,   218,     4,     4,   222,   220,
-      296,   319,     3,     8,   277,     3,     8,   289,     4,   292,
-        4,     4,     3,     8,   317,   307,   309,   311,   313,   315,
-        8,     3,   240,   168,     4,   244,   242,   247,     4,     8,
-        3,   262,     4,     8,     3,   196,   198,     3,     8,   119,
-      119,   102,     4,     4,     4,     4,   135,     4,     4,     4,
-      103,   103,   103,   103,   103,     4,     4,     4,     4,     4,
-        4,     4,     4,     4,     4,   103,     4,     4,   141,     4,
-       56,   131,   167,   249,   326,   327,   328,   329,   330,     4,
-        4,     4,     4,     4,   103,   105,     4,     4,     4,     4,
-      212,     4,   275,     4,   103,     4,   103,   103,   287,     4,
-        4,     4,     4,     4,     4,   305,     4,     4,   103,     4,
-        4,     4,   105,   235,     4,   105,   259,     4,     4,   194,
-        4,     7,     7,   119,   119,     7,     7,     7,     5,     5,
-        5,     5,     5,   127,     5,     5,     5,     7,     7,     7,
-        7,   127,   331,     8,     3,     5,     5,   102,   102,   102,
-      102,   102,     5,     7,   102,   102,   102,   127,   127,   127,
-      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
-      119,   119,   140,    84,   361,   362,   363,   151,    15,    16,
-       17,    18,    19,    20,    21,   131,   157,   158,   159,   161,
-      163,   165,   167,   169,   170,   171,   157,     7,   205,   206,
-      207,     7,   227,   228,   229,     7,   251,   252,   253,    61,
-      102,   174,   175,   176,   177,   128,    62,   176,   180,   181,
-      182,   219,   324,     7,   187,   188,   189,   102,   201,   202,
-       15,    74,    75,    76,    77,   131,   169,   334,   335,   336,
-      339,   340,   342,   343,    80,    81,   347,   348,   349,   351,
-      124,     4,   328,     7,   268,   269,   270,     7,   280,   281,
-      282,     7,   297,   298,   299,    65,   320,     8,   364,     3,
-        8,     8,   160,   162,   164,   166,     4,     4,     4,     3,
-        8,     8,   208,     6,     3,   230,     6,     3,   254,     6,
-        3,     3,     6,   129,     3,     6,     3,     6,   190,     6,
-        3,     4,     3,     8,   337,   341,     4,     4,     4,     3,
-        8,   350,   352,     3,     8,     8,   102,   271,     6,     3,
-      283,     6,     3,   300,     6,     3,   321,     8,     4,   362,
-        4,     4,     4,     4,   105,   103,   105,   158,   211,   207,
-      233,   229,   257,   253,   175,     6,   181,   219,   193,   189,
-      103,   202,     4,     4,   103,   103,   103,   335,     4,     4,
-      348,   274,   270,   286,   282,   303,   299,     4,     5,   102,
-      102,   102,   102,     8,     8,     8,     8,    71,    72,    73,
-      338,   102,   102,   102,     8,     8,     8,   102,     7,   365,
-      366,   367,     3,     6,    85,    87,    88,   131,   167,   368,
-      369,   370,   371,   373,   366,   374,     4,   372,     3,     8,
-        4,   103,     4,   369,     5,   102,     7,   375,   376,   377,
-        3,     6,    86,   378,   379,   376,   380,     3,     8,     4,
-      379,   102
 -      55,    66,    69,    76,    81,    82,    85,   134,   143,   144,
 -     145,   146,   147,   148,   149,   150,   156,   158,   175,   181,
 -     186,   188,   202,   212,   234,   257,   330,   340,   349,   350,
 -     358,    12,   154,     7,    38,    40,    46,    47,    48,    49,
 -      50,    51,    57,    58,    64,   134,   145,   146,   147,   148,
 -     220,   221,   222,   224,   226,   228,   230,   232,   233,   257,
 -     274,   286,   303,   326,    39,   134,   257,   282,   283,   284,
 -      41,    42,    43,    44,    45,   134,   257,   294,   295,   296,
 -     298,   299,   301,   302,    55,    59,    60,    61,    62,    63,
 -     134,   257,   311,   312,   313,   314,   316,   318,   320,   322,
 -     324,    15,    30,    32,    33,    35,    36,    37,   134,   162,
 -     170,   242,   243,   244,   245,   246,   247,   248,   249,   251,
 -     253,   254,   256,    31,    34,   134,   170,   246,   251,   265,
 -     266,   267,   268,   269,   271,   272,   273,    67,    68,   134,
 -     196,   197,   198,   200,     6,     3,     4,     8,     3,   140,
 -     365,   361,   363,     4,     3,     8,   151,   157,   159,     4,
 -       4,     4,     4,     4,   213,   235,   258,   176,   187,   182,
 -     331,   189,   203,   341,     4,   351,   359,     3,     8,   155,
 -       8,   333,   275,   287,   223,   225,   227,     4,     4,   231,
 -     229,   304,   327,     3,     8,   285,     3,     8,   297,     4,
 -     300,     4,     4,     3,     8,   325,   315,   317,   319,   321,
 -     323,     8,     3,   163,   171,     4,   252,   250,   255,     4,
 -       8,     3,   270,     4,     8,     3,   199,   201,     3,     8,
 -     122,   122,   105,     4,     4,     4,     4,   138,     4,     4,
 -       4,   106,   106,   106,   106,   106,     4,     4,     4,     4,
 -       4,     4,     4,     4,     4,     4,   106,     4,     4,   144,
 -       4,    56,   134,   170,   257,   334,   335,   336,   337,   338,
 -       4,     4,     4,     4,     4,   106,   108,     4,     4,     4,
 -       4,   221,     4,   283,     4,   106,     4,   106,   106,   295,
 -       4,     4,     4,     4,     4,     4,   313,     4,     4,   106,
 -       4,     4,     4,   108,   244,     4,   108,   267,     4,     4,
 -     197,     4,     7,     7,   122,   122,     7,     7,     7,     5,
 -       5,     5,     5,     5,   130,     5,     5,     5,     7,     7,
 -       7,     7,   130,   339,     8,     3,     5,     5,   105,   105,
 -     105,   105,   105,     5,     7,   105,   105,   105,   130,   130,
 -     130,   105,   105,   105,   105,   105,   105,   105,   105,   105,
 -     105,   122,   122,   143,    87,   366,   367,   368,   154,    16,
 -      17,    18,    19,    20,    21,   134,   160,   161,   162,   164,
 -     166,   168,   170,   172,   173,   174,   160,     7,   214,   215,
 -     216,     7,   236,   237,   238,     7,   259,   260,   261,    61,
 -     105,   177,   178,   179,   180,   131,    62,   179,   183,   184,
 -     185,   228,   332,     7,   190,   191,   192,    70,    71,    72,
 -      73,    74,    75,   204,   205,   206,   207,   208,   209,   210,
 -     211,    77,    78,    79,    80,   134,   162,   172,   342,   343,
 -     344,   345,   347,   348,    83,    84,   352,   353,   354,   356,
 -     127,     4,   336,     7,   276,   277,   278,     7,   288,   289,
 -     290,     7,   305,   306,   307,    65,   328,     8,   369,     3,
 -       8,     8,   165,   167,   169,     4,     4,     4,     3,     8,
 -       8,   217,     6,     3,   239,     6,     3,   262,     6,     3,
 -       3,     6,   132,     3,     6,     3,     6,   193,     6,     3,
 -       4,     4,     4,     4,     4,     4,     3,     8,   346,     4,
 -       4,     4,     3,     8,   355,   357,     3,     8,     8,   105,
 -     279,     6,     3,   291,     6,     3,   308,     6,     3,   329,
 -       8,     4,   367,     4,     4,     4,   108,   106,   108,   161,
 -     220,   216,   242,   238,   265,   261,   178,     6,   184,   228,
 -     196,   192,   106,   106,   106,   106,   106,   106,   205,     4,
 -     106,   106,   106,   343,     4,     4,   353,   282,   278,   294,
 -     290,   311,   307,     4,     5,   105,   105,   105,     8,     8,
 -       8,     8,   105,   105,   105,     8,     8,     8,   105,     7,
 -     370,   371,   372,     3,     6,    88,    90,    91,   134,   170,
 -     373,   374,   375,   376,   378,   371,   379,     4,   377,     3,
 -       8,     4,   106,     4,   374,     5,   105,     7,   380,   381,
 -     382,     3,     6,    89,   383,   384,   381,   385,     3,     8,
 -       4,   384,   105
++      55,    66,    69,    76,    84,    85,    88,   137,   146,   147,
++     148,   149,   150,   151,   152,   153,   159,   161,   178,   184,
++     189,   191,   205,   215,   237,   261,   334,   344,   356,   357,
++     365,    12,   157,     7,    38,    40,    46,    47,    48,    49,
++      50,    51,    57,    58,    64,   137,   148,   149,   150,   151,
++     223,   224,   225,   227,   229,   231,   233,   235,   236,   261,
++     278,   290,   307,   330,    39,   137,   261,   286,   287,   288,
++      41,    42,    43,    44,    45,   137,   261,   298,   299,   300,
++     302,   303,   305,   306,    55,    59,    60,    61,    62,    63,
++     137,   261,   315,   316,   317,   318,   320,   322,   324,   326,
++     328,    15,    30,    32,    33,    35,    36,    37,   137,   173,
++     245,   246,   247,   248,   249,   250,   251,   253,   255,   257,
++     258,   260,    31,    34,   137,   173,   249,   255,   269,   270,
++     271,   272,   273,   275,   276,   277,    67,    68,   137,   199,
++     200,   201,   203,     6,     3,     4,     8,     3,   143,   372,
++     368,   370,     4,     3,     8,   154,   160,   162,     4,     4,
++       4,     4,     4,   216,   238,   262,   179,   190,   185,   335,
++     192,   206,   345,     4,   358,   366,     3,     8,   158,     8,
++     337,   279,   291,   226,   228,   230,     4,     4,   234,   232,
++     308,   331,     3,     8,   289,     3,     8,   301,     4,   304,
++       4,     4,     3,     8,   329,   319,   321,   323,   325,   327,
++       8,     3,   252,   174,     4,   256,   254,   259,     4,     8,
++       3,   274,     4,     8,     3,   202,   204,     3,     8,   125,
++     125,   108,     4,     4,     4,     4,   141,     4,     4,     4,
++     109,   109,   109,   109,   109,     4,     4,     4,     4,     4,
++       4,     4,     4,     4,     4,   109,     4,     4,   147,     4,
++      56,   137,   173,   261,   338,   339,   340,   341,   342,     4,
++       4,     4,     4,     4,   109,   111,     4,     4,     4,     4,
++     224,     4,   287,     4,   109,     4,   109,   109,   299,     4,
++       4,     4,     4,     4,     4,   317,     4,     4,   109,     4,
++       4,     4,   111,   247,     4,   111,   271,     4,     4,   200,
++       4,     7,     7,   125,   125,     7,     7,     7,     5,     5,
++       5,     5,     5,   133,     5,     5,     5,     7,     7,     7,
++       7,   133,   343,     8,     3,     5,     5,   108,   108,   108,
++     108,   108,     5,     7,   108,   108,   108,   133,   133,   133,
++     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
++     125,   125,   146,    90,   373,   374,   375,   157,    15,    16,
++      17,    18,    19,    20,    21,   137,   163,   164,   165,   167,
++     169,   171,   173,   175,   176,   177,   163,     7,   217,   218,
++     219,     7,   239,   240,   241,     7,   263,   264,   265,    61,
++     108,   180,   181,   182,   183,   134,    62,   182,   186,   187,
++     188,   231,   336,     7,   193,   194,   195,    70,    71,    72,
++      73,    74,    75,   207,   208,   209,   210,   211,   212,   213,
++     214,    15,    80,    81,    82,    83,   137,   175,   346,   347,
++     348,   351,   352,   354,   355,    86,    87,   359,   360,   361,
++     363,   130,     4,   340,     7,   280,   281,   282,     7,   292,
++     293,   294,     7,   309,   310,   311,    65,   332,     8,   376,
++       3,     8,     8,   166,   168,   170,   172,     4,     4,     4,
++       3,     8,     8,   220,     6,     3,   242,     6,     3,   266,
++       6,     3,     3,     6,   135,     3,     6,     3,     6,   196,
++       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
++     349,   353,     4,     4,     4,     3,     8,   362,   364,     3,
++       8,     8,   108,   283,     6,     3,   295,     6,     3,   312,
++       6,     3,   333,     8,     4,   374,     4,     4,     4,     4,
++     111,   109,   111,   164,   223,   219,   245,   241,   269,   265,
++     181,     6,   187,   231,   199,   195,   109,   109,   109,   109,
++     109,   109,   208,     4,     4,   109,   109,   109,   347,     4,
++       4,   360,   286,   282,   298,   294,   315,   311,     4,     5,
++     108,   108,   108,   108,     8,     8,     8,     8,    77,    78,
++      79,   350,   108,   108,   108,     8,     8,     8,   108,     7,
++     377,   378,   379,     3,     6,    91,    93,    94,   137,   173,
++     380,   381,   382,   383,   385,   378,   386,     4,   384,     3,
++       8,     4,   109,     4,   381,     5,   108,     7,   387,   388,
++     389,     3,     6,    92,   390,   391,   388,   392,     3,     8,
++       4,   391,   108
    };
  
    const unsigned short int
    Dhcp6Parser::yyr1_[] =
    {
-        0,   106,   108,   107,   109,   107,   110,   107,   111,   107,
-      112,   107,   113,   107,   114,   107,   115,   107,   116,   107,
-      117,   107,   118,   107,   119,   119,   119,   119,   119,   119,
-      119,   120,   122,   121,   123,   123,   124,   124,   126,   125,
-      128,   127,   129,   129,   130,   130,   131,   133,   132,   134,
-      134,   135,   135,   135,   135,   135,   137,   136,   139,   138,
-      140,   140,   141,   141,   141,   141,   141,   141,   141,   141,
-      141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
-      141,   141,   141,   141,   142,   143,   144,   145,   146,   148,
-      147,   150,   149,   152,   151,   154,   153,   156,   155,   157,
-      157,   158,   158,   158,   158,   158,   158,   158,   158,   158,
-      160,   159,   162,   161,   164,   163,   166,   165,   168,   167,
-      169,   170,   171,   173,   172,   174,   174,   175,   175,   176,
-      177,   179,   178,   180,   180,   181,   181,   182,   184,   183,
-      186,   185,   187,   187,   188,   188,   190,   189,   192,   191,
-      193,   193,   193,   194,   194,   196,   195,   198,   197,   200,
-      199,   201,   201,   202,   204,   203,   205,   205,   206,   206,
-      208,   207,   210,   209,   211,   211,   212,   212,   212,   212,
-      212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
-      212,   212,   212,   214,   213,   216,   215,   218,   217,   220,
-      219,   222,   221,   223,   224,   226,   225,   227,   227,   228,
-      228,   230,   229,   232,   231,   233,   233,   234,   234,   235,
-      235,   235,   235,   235,   235,   235,   235,   236,   237,   238,
-      240,   239,   242,   241,   244,   243,   245,   247,   246,   248,
-      250,   249,   251,   251,   252,   252,   254,   253,   256,   255,
-      257,   257,   258,   258,   259,   259,   259,   259,   259,   259,
-      260,   262,   261,   263,   264,   265,   267,   266,   268,   268,
-      269,   269,   271,   270,   273,   272,   274,   274,   275,   275,
-      275,   277,   276,   279,   278,   280,   280,   281,   281,   283,
-      282,   285,   284,   286,   286,   287,   287,   287,   287,   287,
-      287,   287,   289,   288,   290,   292,   291,   293,   294,   296,
-      295,   297,   297,   298,   298,   300,   299,   302,   301,   303,
-      303,   304,   304,   305,   305,   305,   305,   305,   305,   305,
-      305,   307,   306,   309,   308,   311,   310,   313,   312,   315,
-      314,   317,   316,   319,   318,   321,   320,   323,   322,   324,
-      324,   325,   219,   326,   326,   327,   327,   328,   328,   328,
-      328,   329,   331,   330,   333,   332,   334,   334,   335,   335,
-      335,   335,   335,   335,   335,   337,   336,   338,   338,   338,
-      339,   341,   340,   342,   343,   344,   346,   345,   347,   347,
-      348,   348,   350,   349,   352,   351,   354,   353,   356,   355,
-      358,   357,   360,   359,   361,   361,   362,   364,   363,   365,
-      365,   367,   366,   368,   368,   369,   369,   369,   369,   369,
-      370,   372,   371,   374,   373,   375,   375,   377,   376,   378,
-      378,   380,   379
 -       0,   109,   111,   110,   112,   110,   113,   110,   114,   110,
 -     115,   110,   116,   110,   117,   110,   118,   110,   119,   110,
 -     120,   110,   121,   110,   122,   122,   122,   122,   122,   122,
 -     122,   123,   125,   124,   126,   126,   127,   127,   129,   128,
 -     131,   130,   132,   132,   133,   133,   134,   136,   135,   137,
 -     137,   138,   138,   138,   138,   138,   140,   139,   142,   141,
 -     143,   143,   144,   144,   144,   144,   144,   144,   144,   144,
 -     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
 -     144,   144,   144,   144,   145,   146,   147,   148,   149,   151,
 -     150,   153,   152,   155,   154,   157,   156,   159,   158,   160,
 -     160,   161,   161,   161,   161,   161,   161,   161,   161,   161,
 -     163,   162,   165,   164,   167,   166,   169,   168,   171,   170,
 -     172,   173,   174,   176,   175,   177,   177,   178,   178,   179,
 -     180,   182,   181,   183,   183,   184,   184,   185,   187,   186,
 -     189,   188,   190,   190,   191,   191,   193,   192,   195,   194,
 -     196,   196,   196,   197,   197,   199,   198,   201,   200,   203,
 -     202,   204,   204,   205,   205,   205,   205,   205,   205,   206,
 -     207,   208,   209,   210,   211,   213,   212,   214,   214,   215,
 -     215,   217,   216,   219,   218,   220,   220,   221,   221,   221,
 -     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
 -     221,   221,   221,   221,   223,   222,   225,   224,   227,   226,
 -     229,   228,   231,   230,   232,   233,   235,   234,   236,   236,
 -     237,   237,   239,   238,   241,   240,   242,   242,   243,   243,
 -     244,   244,   244,   244,   244,   244,   244,   244,   245,   246,
 -     247,   248,   250,   249,   252,   251,   253,   255,   254,   256,
 -     258,   257,   259,   259,   260,   260,   262,   261,   264,   263,
 -     265,   265,   266,   266,   267,   267,   267,   267,   267,   267,
 -     268,   270,   269,   271,   272,   273,   275,   274,   276,   276,
 -     277,   277,   279,   278,   281,   280,   282,   282,   283,   283,
 -     283,   285,   284,   287,   286,   288,   288,   289,   289,   291,
 -     290,   293,   292,   294,   294,   295,   295,   295,   295,   295,
 -     295,   295,   297,   296,   298,   300,   299,   301,   302,   304,
 -     303,   305,   305,   306,   306,   308,   307,   310,   309,   311,
 -     311,   312,   312,   313,   313,   313,   313,   313,   313,   313,
 -     313,   315,   314,   317,   316,   319,   318,   321,   320,   323,
 -     322,   325,   324,   327,   326,   329,   328,   331,   330,   332,
 -     332,   333,   228,   334,   334,   335,   335,   336,   336,   336,
 -     336,   337,   339,   338,   341,   340,   342,   342,   343,   343,
 -     343,   343,   343,   343,   343,   344,   346,   345,   347,   348,
 -     349,   351,   350,   352,   352,   353,   353,   355,   354,   357,
 -     356,   359,   358,   361,   360,   363,   362,   365,   364,   366,
 -     366,   367,   369,   368,   370,   370,   372,   371,   373,   373,
 -     374,   374,   374,   374,   374,   375,   377,   376,   379,   378,
 -     380,   380,   382,   381,   383,   383,   385,   384
++       0,   112,   114,   113,   115,   113,   116,   113,   117,   113,
++     118,   113,   119,   113,   120,   113,   121,   113,   122,   113,
++     123,   113,   124,   113,   125,   125,   125,   125,   125,   125,
++     125,   126,   128,   127,   129,   129,   130,   130,   132,   131,
++     134,   133,   135,   135,   136,   136,   137,   139,   138,   140,
++     140,   141,   141,   141,   141,   141,   143,   142,   145,   144,
++     146,   146,   147,   147,   147,   147,   147,   147,   147,   147,
++     147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
++     147,   147,   147,   147,   148,   149,   150,   151,   152,   154,
++     153,   156,   155,   158,   157,   160,   159,   162,   161,   163,
++     163,   164,   164,   164,   164,   164,   164,   164,   164,   164,
++     166,   165,   168,   167,   170,   169,   172,   171,   174,   173,
++     175,   176,   177,   179,   178,   180,   180,   181,   181,   182,
++     183,   185,   184,   186,   186,   187,   187,   188,   190,   189,
++     192,   191,   193,   193,   194,   194,   196,   195,   198,   197,
++     199,   199,   199,   200,   200,   202,   201,   204,   203,   206,
++     205,   207,   207,   208,   208,   208,   208,   208,   208,   209,
++     210,   211,   212,   213,   214,   216,   215,   217,   217,   218,
++     218,   220,   219,   222,   221,   223,   223,   224,   224,   224,
++     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
++     224,   224,   224,   224,   226,   225,   228,   227,   230,   229,
++     232,   231,   234,   233,   235,   236,   238,   237,   239,   239,
++     240,   240,   242,   241,   244,   243,   245,   245,   246,   246,
++     247,   247,   247,   247,   247,   247,   247,   247,   248,   249,
++     250,   252,   251,   254,   253,   256,   255,   257,   259,   258,
++     260,   262,   261,   263,   263,   264,   264,   266,   265,   268,
++     267,   269,   269,   270,   270,   271,   271,   271,   271,   271,
++     271,   272,   274,   273,   275,   276,   277,   279,   278,   280,
++     280,   281,   281,   283,   282,   285,   284,   286,   286,   287,
++     287,   287,   289,   288,   291,   290,   292,   292,   293,   293,
++     295,   294,   297,   296,   298,   298,   299,   299,   299,   299,
++     299,   299,   299,   301,   300,   302,   304,   303,   305,   306,
++     308,   307,   309,   309,   310,   310,   312,   311,   314,   313,
++     315,   315,   316,   316,   317,   317,   317,   317,   317,   317,
++     317,   317,   319,   318,   321,   320,   323,   322,   325,   324,
++     327,   326,   329,   328,   331,   330,   333,   332,   335,   334,
++     336,   336,   337,   231,   338,   338,   339,   339,   340,   340,
++     340,   340,   341,   343,   342,   345,   344,   346,   346,   347,
++     347,   347,   347,   347,   347,   347,   349,   348,   350,   350,
++     350,   351,   353,   352,   354,   355,   356,   358,   357,   359,
++     359,   360,   360,   362,   361,   364,   363,   366,   365,   368,
++     367,   370,   369,   372,   371,   373,   373,   374,   376,   375,
++     377,   377,   379,   378,   380,   380,   381,   381,   381,   381,
++     381,   382,   384,   383,   386,   385,   387,   387,   389,   388,
++     390,   390,   392,   391
    };
  
    const unsigned char
         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,     3,     0,     6,     0,     1,     1,     3,
-        0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
+        6,     1,     3,     1,     1,     1,     1,     1,     1,     3,
+        3,     3,     3,     3,     3,     0,     6,     0,     1,     1,
+        3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-        1,     1,     1,     0,     4,     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,
+        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,
++       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,     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,     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,     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,
-        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,     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,     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,     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\"", "\"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\"", "\"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", "list2", "$@14", "list_content",
+   "\"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\"",
 -  "\"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\"", "\"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", "list2", "$@14", "list_content",
++  "\"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\"",
++  "\"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", "list2", "$@14", "list_content",
    "not_empty_list", "unknown_map_entry", "syntax_map", "$@15",
    "global_objects", "global_object", "dhcp6_object", "$@16", "sub_dhcp6",
    "$@17", "global_params", "global_param", "preferred_lifetime",
    "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", "$@48",
+   "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", "$@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",
++  "code", "option_def_code", "option_def_type", "$@48",
 +  "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",
    "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", "$@55",
    "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", "$@56", "pools_list_content", "not_empty_pools_list",
 +  "pool_list_entry", "$@57", "sub_pool6", "$@58", "pool_params",
 +  "pool_param", "pool_entry", "$@59", "pd_pools_list", "$@60",
    "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",
 +  "$@61", "sub_pd_pool", "$@62", "pd_pool_params", "pd_pool_param",
 +  "pd_prefix", "$@63", "pd_prefix_len", "excluded_prefix", "$@64",
 +  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@65",
    "reservations_list", "not_empty_reservations_list", "reservation",
 -  "$@65", "sub_reservation", "$@66", "reservation_params",
 +  "$@66", "sub_reservation", "$@67", "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",
 +  "$@68", "prefixes", "$@69", "duid", "$@70", "hw_address", "$@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", "$@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", "$@78", "server_id", "$@79",
 +  "server_id_params", "server_id_param", "server_id_type", "$@80",
 +  "duid_type", "htype", "identifier", "$@81", "time", "enterprise_id",
 +  "dhcp4o6_port", "control_socket", "$@82", "control_socket_params",
 +  "control_socket_param", "socket_type", "$@83", "socket_name", "$@84",
 +  "dhcp_ddns", "$@85", "dhcp4_json_object", "$@86", "dhcpddns_json_object",
 +  "$@87", "logging_object", "$@88", "logging_params", "logging_param",
 +  "loggers", "$@89", "loggers_entries", "logger_entry", "$@90",
 +  "logger_params", "logger_param", "debuglevel", "severity", "$@91",
 +  "output_options_list", "$@92", "output_options_list_content",
 +  "output_entry", "$@93", "output_params", "output_param", "$@94", YY_NULLPTR
    };
  
  #if PARSER6_DEBUG
    const unsigned short int
    Dhcp6Parser::yyrline_[] =
    {
-        0,   202,   202,   202,   203,   203,   204,   204,   205,   205,
-      206,   206,   207,   207,   208,   208,   209,   209,   210,   210,
-      211,   211,   212,   212,   220,   221,   222,   223,   224,   225,
-      226,   229,   234,   234,   246,   247,   250,   254,   261,   261,
-      269,   269,   276,   277,   280,   284,   295,   305,   305,   317,
-      318,   322,   323,   324,   325,   326,   329,   329,   346,   346,
-      354,   355,   360,   361,   362,   363,   364,   365,   366,   367,
-      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
-      378,   379,   380,   381,   384,   389,   394,   399,   404,   409,
-      409,   419,   419,   427,   427,   437,   437,   447,   447,   457,
-      458,   461,   462,   463,   464,   465,   466,   467,   468,   469,
-      472,   472,   480,   480,   488,   488,   496,   496,   504,   504,
-      512,   517,   522,   527,   527,   537,   538,   541,   542,   545,
-      550,   555,   555,   565,   566,   569,   570,   573,   578,   578,
-      588,   588,   598,   599,   602,   603,   606,   606,   614,   614,
-      622,   623,   624,   627,   628,   631,   631,   639,   639,   647,
-      647,   657,   658,   664,   672,   672,   685,   686,   689,   690,
-      697,   697,   720,   720,   729,   730,   734,   735,   736,   737,
-      738,   739,   740,   741,   742,   743,   744,   745,   746,   747,
-      748,   749,   750,   753,   753,   761,   761,   769,   769,   777,
-      777,   785,   785,   793,   798,   807,   807,   819,   820,   823,
-      824,   829,   829,   840,   840,   850,   851,   854,   855,   858,
-      859,   860,   861,   862,   863,   864,   865,   868,   870,   875,
-      877,   877,   885,   885,   893,   893,   901,   903,   903,   911,
-      920,   920,   932,   933,   938,   939,   944,   944,   955,   955,
-      966,   967,   972,   973,   978,   979,   980,   981,   982,   983,
-      986,   988,   988,   996,   998,  1000,  1008,  1008,  1020,  1021,
-     1024,  1025,  1028,  1028,  1036,  1036,  1044,  1045,  1048,  1049,
-     1050,  1053,  1053,  1064,  1064,  1076,  1077,  1080,  1081,  1084,
-     1084,  1092,  1092,  1100,  1101,  1104,  1105,  1106,  1107,  1108,
-     1109,  1110,  1113,  1113,  1121,  1126,  1126,  1134,  1139,  1147,
-     1147,  1157,  1158,  1161,  1162,  1165,  1165,  1173,  1173,  1181,
-     1182,  1185,  1186,  1190,  1191,  1192,  1193,  1194,  1195,  1196,
-     1197,  1200,  1200,  1210,  1210,  1220,  1220,  1228,  1228,  1236,
-     1236,  1244,  1244,  1257,  1257,  1267,  1267,  1278,  1278,  1288,
-     1289,  1292,  1292,  1300,  1301,  1304,  1305,  1308,  1309,  1310,
-     1311,  1314,  1316,  1316,  1327,  1327,  1337,  1338,  1341,  1342,
-     1343,  1344,  1345,  1346,  1347,  1350,  1350,  1357,  1358,  1359,
-     1362,  1367,  1367,  1375,  1380,  1387,  1394,  1394,  1404,  1405,
-     1408,  1409,  1412,  1412,  1420,  1420,  1430,  1430,  1442,  1442,
-     1449,  1449,  1461,  1461,  1474,  1475,  1479,  1483,  1483,  1495,
-     1496,  1500,  1500,  1508,  1509,  1512,  1513,  1514,  1515,  1516,
-     1519,  1523,  1523,  1531,  1531,  1541,  1542,  1545,  1545,  1553,
-     1554,  1557,  1557
 -       0,   204,   204,   204,   205,   205,   206,   206,   207,   207,
 -     208,   208,   209,   209,   210,   210,   211,   211,   212,   212,
 -     213,   213,   214,   214,   222,   223,   224,   225,   226,   227,
 -     228,   231,   236,   236,   248,   249,   252,   256,   263,   263,
 -     271,   271,   278,   279,   282,   286,   297,   307,   307,   319,
 -     320,   324,   325,   326,   327,   328,   331,   331,   348,   348,
 -     356,   357,   362,   363,   364,   365,   366,   367,   368,   369,
 -     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
 -     380,   381,   382,   383,   386,   391,   396,   401,   406,   411,
 -     411,   421,   421,   429,   429,   439,   439,   449,   449,   459,
 -     460,   463,   464,   465,   466,   467,   468,   469,   470,   471,
 -     474,   474,   482,   482,   490,   490,   498,   498,   506,   506,
 -     514,   519,   524,   529,   529,   539,   540,   543,   544,   547,
 -     552,   557,   557,   567,   568,   571,   572,   575,   580,   580,
 -     590,   590,   600,   601,   604,   605,   608,   608,   616,   616,
 -     624,   625,   626,   629,   630,   633,   633,   641,   641,   649,
 -     649,   659,   660,   663,   664,   665,   666,   667,   668,   671,
 -     676,   681,   686,   691,   696,   704,   704,   717,   718,   721,
 -     722,   729,   729,   752,   752,   761,   762,   766,   767,   768,
 -     769,   770,   771,   772,   773,   774,   775,   776,   777,   778,
 -     779,   780,   781,   782,   785,   785,   793,   793,   801,   801,
 -     809,   809,   817,   817,   825,   830,   839,   839,   851,   852,
 -     855,   856,   861,   861,   872,   872,   882,   883,   886,   887,
 -     890,   891,   892,   893,   894,   895,   896,   897,   900,   902,
 -     907,   909,   911,   911,   919,   919,   927,   929,   929,   937,
 -     946,   946,   958,   959,   964,   965,   970,   970,   981,   981,
 -     992,   993,   998,   999,  1004,  1005,  1006,  1007,  1008,  1009,
 -    1012,  1014,  1014,  1022,  1024,  1026,  1034,  1034,  1046,  1047,
 -    1050,  1051,  1054,  1054,  1062,  1062,  1070,  1071,  1074,  1075,
 -    1076,  1079,  1079,  1090,  1090,  1102,  1103,  1106,  1107,  1110,
 -    1110,  1118,  1118,  1126,  1127,  1130,  1131,  1132,  1133,  1134,
 -    1135,  1136,  1139,  1139,  1147,  1152,  1152,  1160,  1165,  1173,
 -    1173,  1183,  1184,  1187,  1188,  1191,  1191,  1199,  1199,  1207,
 -    1208,  1211,  1212,  1216,  1217,  1218,  1219,  1220,  1221,  1222,
 -    1223,  1226,  1226,  1236,  1236,  1246,  1246,  1254,  1254,  1262,
 -    1262,  1270,  1270,  1283,  1283,  1293,  1293,  1304,  1304,  1314,
 -    1315,  1318,  1318,  1326,  1327,  1330,  1331,  1334,  1335,  1336,
 -    1337,  1340,  1342,  1342,  1353,  1353,  1363,  1364,  1367,  1368,
 -    1369,  1370,  1371,  1372,  1373,  1376,  1381,  1381,  1389,  1394,
 -    1401,  1408,  1408,  1418,  1419,  1422,  1423,  1426,  1426,  1434,
 -    1434,  1444,  1444,  1456,  1456,  1463,  1463,  1475,  1475,  1488,
 -    1489,  1493,  1497,  1497,  1509,  1510,  1514,  1514,  1522,  1523,
 -    1526,  1527,  1528,  1529,  1530,  1533,  1537,  1537,  1545,  1545,
 -    1555,  1556,  1559,  1559,  1567,  1568,  1571,  1571
++       0,   208,   208,   208,   209,   209,   210,   210,   211,   211,
++     212,   212,   213,   213,   214,   214,   215,   215,   216,   216,
++     217,   217,   218,   218,   226,   227,   228,   229,   230,   231,
++     232,   235,   240,   240,   252,   253,   256,   260,   267,   267,
++     275,   275,   282,   283,   286,   290,   301,   311,   311,   323,
++     324,   328,   329,   330,   331,   332,   335,   335,   352,   352,
++     360,   361,   366,   367,   368,   369,   370,   371,   372,   373,
++     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
++     384,   385,   386,   387,   390,   395,   400,   405,   410,   415,
++     415,   425,   425,   433,   433,   443,   443,   453,   453,   463,
++     464,   467,   468,   469,   470,   471,   472,   473,   474,   475,
++     478,   478,   486,   486,   494,   494,   502,   502,   510,   510,
++     518,   523,   528,   533,   533,   543,   544,   547,   548,   551,
++     556,   561,   561,   571,   572,   575,   576,   579,   584,   584,
++     594,   594,   604,   605,   608,   609,   612,   612,   620,   620,
++     628,   629,   630,   633,   634,   637,   637,   645,   645,   653,
++     653,   663,   664,   667,   668,   669,   670,   671,   672,   675,
++     680,   685,   690,   695,   700,   708,   708,   721,   722,   725,
++     726,   733,   733,   756,   756,   765,   766,   770,   771,   772,
++     773,   774,   775,   776,   777,   778,   779,   780,   781,   782,
++     783,   784,   785,   786,   789,   789,   797,   797,   805,   805,
++     813,   813,   821,   821,   829,   834,   843,   843,   855,   856,
++     859,   860,   865,   865,   876,   876,   886,   887,   890,   891,
++     894,   895,   896,   897,   898,   899,   900,   901,   904,   906,
++     911,   913,   913,   921,   921,   929,   929,   937,   939,   939,
++     947,   956,   956,   968,   969,   974,   975,   980,   980,   991,
++     991,  1002,  1003,  1008,  1009,  1014,  1015,  1016,  1017,  1018,
++    1019,  1022,  1024,  1024,  1032,  1034,  1036,  1044,  1044,  1056,
++    1057,  1060,  1061,  1064,  1064,  1072,  1072,  1080,  1081,  1084,
++    1085,  1086,  1089,  1089,  1100,  1100,  1112,  1113,  1116,  1117,
++    1120,  1120,  1128,  1128,  1136,  1137,  1140,  1141,  1142,  1143,
++    1144,  1145,  1146,  1149,  1149,  1157,  1162,  1162,  1170,  1175,
++    1183,  1183,  1193,  1194,  1197,  1198,  1201,  1201,  1209,  1209,
++    1217,  1218,  1221,  1222,  1226,  1227,  1228,  1229,  1230,  1231,
++    1232,  1233,  1236,  1236,  1246,  1246,  1256,  1256,  1264,  1264,
++    1272,  1272,  1280,  1280,  1293,  1293,  1303,  1303,  1314,  1314,
++    1324,  1325,  1328,  1328,  1336,  1337,  1340,  1341,  1344,  1345,
++    1346,  1347,  1350,  1352,  1352,  1363,  1363,  1373,  1374,  1377,
++    1378,  1379,  1380,  1381,  1382,  1383,  1386,  1386,  1393,  1394,
++    1395,  1398,  1403,  1403,  1411,  1416,  1423,  1430,  1430,  1440,
++    1441,  1444,  1445,  1448,  1448,  1456,  1456,  1466,  1466,  1478,
++    1478,  1485,  1485,  1497,  1497,  1510,  1511,  1515,  1519,  1519,
++    1531,  1532,  1536,  1536,  1544,  1545,  1548,  1549,  1550,  1551,
++    1552,  1555,  1559,  1559,  1567,  1567,  1577,  1578,  1581,  1581,
++    1589,  1590,  1593,  1593
    };
  
    // Print the state stack on the debug stream.
  
  #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
  } } // isc::dhcp
- #line 3583 "dhcp6_parser.cc" // lalr1.cc:1167
- #line 1565 "dhcp6_parser.yy" // lalr1.cc:1168
 -#line 3575 "dhcp6_parser.cc" // lalr1.cc:1167
 -#line 1579 "dhcp6_parser.yy" // lalr1.cc:1168
++#line 3648 "dhcp6_parser.cc" // lalr1.cc:1167
++#line 1601 "dhcp6_parser.yy" // lalr1.cc:1168
  
  
  void
index ed70fd647a9044cd128f32dfc40dd6bf7c65c35c,b8b1bc1e9293cdfadb2634d2b33184bab86e3e71..cc9ba3d57ec0f3c4657396668acc864a7f085d1d
@@@ -40,7 -40,7 +40,7 @@@
  #ifndef YY_PARSER6_DHCP6_PARSER_H_INCLUDED
  # define YY_PARSER6_DHCP6_PARSER_H_INCLUDED
  // //                    "%code requires" blocks.
--#line 17 "dhcp6_parser.yy" // lalr1.cc:377
++#line 17 "dhcp6_parser.yy" // lalr1.cc:392
  
  #include <string>
  #include <cc/data.h>
@@@ -52,7 -52,7 +52,7 @@@ using namespace isc::dhcp
  using namespace isc::data;
  using namespace std;
  
--#line 56 "dhcp6_parser.h" // lalr1.cc:377
++#line 56 "dhcp6_parser.h" // lalr1.cc:392
  
  # include <cassert>
  # include <cstdlib> // std::abort
  # endif /* ! defined YYDEBUG */
  #endif  /* ! defined PARSER6_DEBUG */
  
--#line 14 "dhcp6_parser.yy" // lalr1.cc:377
++#line 14 "dhcp6_parser.yy" // lalr1.cc:392
  namespace isc { namespace dhcp {
--#line 141 "dhcp6_parser.h" // lalr1.cc:377
++#line 141 "dhcp6_parser.h" // lalr1.cc:392
  
  
  
          TOKEN_LIBRARY = 322,
          TOKEN_PARAMETERS = 323,
          TOKEN_EXPIRED_LEASES_PROCESSING = 324,
-         TOKEN_SERVER_ID = 325,
-         TOKEN_LLT = 326,
-         TOKEN_EN = 327,
-         TOKEN_LL = 328,
-         TOKEN_IDENTIFIER = 329,
-         TOKEN_HTYPE = 330,
-         TOKEN_TIME = 331,
-         TOKEN_ENTERPRISE_ID = 332,
-         TOKEN_DHCP4O6_PORT = 333,
-         TOKEN_CONTROL_SOCKET = 334,
-         TOKEN_SOCKET_TYPE = 335,
-         TOKEN_SOCKET_NAME = 336,
-         TOKEN_DHCP_DDNS = 337,
-         TOKEN_LOGGING = 338,
-         TOKEN_LOGGERS = 339,
-         TOKEN_OUTPUT_OPTIONS = 340,
-         TOKEN_OUTPUT = 341,
-         TOKEN_DEBUGLEVEL = 342,
-         TOKEN_SEVERITY = 343,
-         TOKEN_DHCP4 = 344,
-         TOKEN_DHCPDDNS = 345,
-         TOKEN_TOPLEVEL_JSON = 346,
-         TOKEN_TOPLEVEL_DHCP6 = 347,
-         TOKEN_SUB_DHCP6 = 348,
-         TOKEN_SUB_INTERFACES6 = 349,
-         TOKEN_SUB_SUBNET6 = 350,
-         TOKEN_SUB_POOL6 = 351,
-         TOKEN_SUB_PD_POOL = 352,
-         TOKEN_SUB_RESERVATION = 353,
-         TOKEN_SUB_OPTION_DEF = 354,
-         TOKEN_SUB_OPTION_DATA = 355,
-         TOKEN_SUB_HOOKS_LIBRARY = 356,
-         TOKEN_STRING = 357,
-         TOKEN_INTEGER = 358,
-         TOKEN_FLOAT = 359,
-         TOKEN_BOOLEAN = 360
+         TOKEN_RECLAIM_TIMER_WAIT_TIME = 325,
+         TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 326,
+         TOKEN_HOLD_RECLAIMED_TIME = 327,
+         TOKEN_MAX_RECLAIM_LEASES = 328,
+         TOKEN_MAX_RECLAIM_TIME = 329,
+         TOKEN_UNWARNED_RECLAIM_CYCLES = 330,
+         TOKEN_SERVER_ID = 331,
 -        TOKEN_IDENTIFIER = 332,
 -        TOKEN_HTYPE = 333,
 -        TOKEN_TIME = 334,
 -        TOKEN_ENTERPRISE_ID = 335,
 -        TOKEN_DHCP4O6_PORT = 336,
 -        TOKEN_CONTROL_SOCKET = 337,
 -        TOKEN_SOCKET_TYPE = 338,
 -        TOKEN_SOCKET_NAME = 339,
 -        TOKEN_DHCP_DDNS = 340,
 -        TOKEN_LOGGING = 341,
 -        TOKEN_LOGGERS = 342,
 -        TOKEN_OUTPUT_OPTIONS = 343,
 -        TOKEN_OUTPUT = 344,
 -        TOKEN_DEBUGLEVEL = 345,
 -        TOKEN_SEVERITY = 346,
 -        TOKEN_DHCP4 = 347,
 -        TOKEN_DHCPDDNS = 348,
 -        TOKEN_TOPLEVEL_JSON = 349,
 -        TOKEN_TOPLEVEL_DHCP6 = 350,
 -        TOKEN_SUB_DHCP6 = 351,
 -        TOKEN_SUB_INTERFACES6 = 352,
 -        TOKEN_SUB_SUBNET6 = 353,
 -        TOKEN_SUB_POOL6 = 354,
 -        TOKEN_SUB_PD_POOL = 355,
 -        TOKEN_SUB_RESERVATION = 356,
 -        TOKEN_SUB_OPTION_DEF = 357,
 -        TOKEN_SUB_OPTION_DATA = 358,
 -        TOKEN_SUB_HOOKS_LIBRARY = 359,
 -        TOKEN_STRING = 360,
 -        TOKEN_INTEGER = 361,
 -        TOKEN_FLOAT = 362,
 -        TOKEN_BOOLEAN = 363
++        TOKEN_LLT = 332,
++        TOKEN_EN = 333,
++        TOKEN_LL = 334,
++        TOKEN_IDENTIFIER = 335,
++        TOKEN_HTYPE = 336,
++        TOKEN_TIME = 337,
++        TOKEN_ENTERPRISE_ID = 338,
++        TOKEN_DHCP4O6_PORT = 339,
++        TOKEN_CONTROL_SOCKET = 340,
++        TOKEN_SOCKET_TYPE = 341,
++        TOKEN_SOCKET_NAME = 342,
++        TOKEN_DHCP_DDNS = 343,
++        TOKEN_LOGGING = 344,
++        TOKEN_LOGGERS = 345,
++        TOKEN_OUTPUT_OPTIONS = 346,
++        TOKEN_OUTPUT = 347,
++        TOKEN_DEBUGLEVEL = 348,
++        TOKEN_SEVERITY = 349,
++        TOKEN_DHCP4 = 350,
++        TOKEN_DHCPDDNS = 351,
++        TOKEN_TOPLEVEL_JSON = 352,
++        TOKEN_TOPLEVEL_DHCP6 = 353,
++        TOKEN_SUB_DHCP6 = 354,
++        TOKEN_SUB_INTERFACES6 = 355,
++        TOKEN_SUB_SUBNET6 = 356,
++        TOKEN_SUB_POOL6 = 357,
++        TOKEN_SUB_PD_POOL = 358,
++        TOKEN_SUB_RESERVATION = 359,
++        TOKEN_SUB_OPTION_DEF = 360,
++        TOKEN_SUB_OPTION_DATA = 361,
++        TOKEN_SUB_HOOKS_LIBRARY = 362,
++        TOKEN_STRING = 363,
++        TOKEN_INTEGER = 364,
++        TOKEN_FLOAT = 365,
++        TOKEN_BOOLEAN = 366
        };
      };
  
      enum
      {
        yyeof_ = 0,
-       yylast_ = 640,     ///< Last index in yytable_.
-       yynnts_ = 275,  ///< Number of nonterminal symbols.
 -      yylast_ = 651,     ///< Last index in yytable_.
 -      yynnts_ = 277,  ///< Number of nonterminal symbols.
++      yylast_ = 661,     ///< Last index in yytable_.
++      yynnts_ = 281,  ///< Number of nonterminal symbols.
        yyfinal_ = 24, ///< Termination state number.
        yyterror_ = 1,
        yyerrcode_ = 256,
-       yyntokens_ = 106  ///< Number of tokens.
 -      yyntokens_ = 109  ///< Number of tokens.
++      yyntokens_ = 112  ///< Number of tokens.
      };
  
  
        75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
        85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
        95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-      105
 -     105,   106,   107,   108
++     105,   106,   107,   108,   109,   110,   111
      };
-     const unsigned int user_token_number_max_ = 360;
 -    const unsigned int user_token_number_max_ = 363;
++    const unsigned int user_token_number_max_ = 366;
      const token_number_type undef_token_ = 2;
  
      if (static_cast<int>(t) <= yyeof_)
    {
        switch (other.type_get ())
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          value.copy< ElementPtr > (other.value);
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          value.copy< bool > (other.value);
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          value.copy< double > (other.value);
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          value.copy< int64_t > (other.value);
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          value.copy< std::string > (other.value);
          break;
  
      (void) v;
        switch (this->type_get ())
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          value.copy< ElementPtr > (v);
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          value.copy< bool > (v);
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          value.copy< double > (v);
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          value.copy< int64_t > (v);
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          value.copy< std::string > (v);
          break;
  
      // Type destructor.
      switch (yytype)
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          value.template destroy< ElementPtr > ();
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          value.template destroy< bool > ();
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          value.template destroy< double > ();
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          value.template destroy< int64_t > ();
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          value.template destroy< std::string > ();
          break;
  
      super_type::move(s);
        switch (this->type_get ())
      {
-       case 119: // value
-       case 338: // duid_type
 -      case 122: // value
++      case 125: // value
++      case 350: // duid_type
          value.move< ElementPtr > (s.value);
          break;
  
-       case 105: // "boolean"
 -      case 108: // "boolean"
++      case 111: // "boolean"
          value.move< bool > (s.value);
          break;
  
-       case 104: // "floating point"
 -      case 107: // "floating point"
++      case 110: // "floating point"
          value.move< double > (s.value);
          break;
  
-       case 103: // "integer"
 -      case 106: // "integer"
++      case 109: // "integer"
          value.move< int64_t > (s.value);
          break;
  
-       case 102: // "constant string"
 -      case 105: // "constant string"
++      case 108: // "constant string"
          value.move< std::string > (s.value);
          break;
  
       325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
       335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
       345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-      355,   356,   357,   358,   359,   360
 -     355,   356,   357,   358,   359,   360,   361,   362,   363
++     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
++     365,   366
      };
      return static_cast<token_type> (yytoken_number_[type]);
    }
    }
  
  
--#line 14 "dhcp6_parser.yy" // lalr1.cc:377
++#line 14 "dhcp6_parser.yy" // lalr1.cc:392
  } } // isc::dhcp
- #line 2174 "dhcp6_parser.h" // lalr1.cc:377
 -#line 2202 "dhcp6_parser.h" // lalr1.cc:377
++#line 2241 "dhcp6_parser.h" // lalr1.cc:392
  
  
  
index 32548f43ae74d3e23e42737ab8fcfb0af2fa8b4c,ab975a7b68b1ce8ff7e99f2590e4f2eeb88d0efc..03d3b3893ec25907dd375ae527cffecaf56bcae8
@@@ -119,11 -119,14 +119,17 @@@ using namespace std
    PARAMETERS "parameters"
  
    EXPIRED_LEASES_PROCESSING "expired-leases-processing"
+   RECLAIM_TIMER_WAIT_TIME "reclaim-timer-wait-time"
+   FLUSH_RECLAIMED_TIMER_WAIT_TIME "flush-reclaimed-timer-wait-time"
+   HOLD_RECLAIMED_TIME "hold-reclaimed-time"
+   MAX_RECLAIM_LEASES "max-reclaim-leases"
+   MAX_RECLAIM_TIME "max-reclaim-time"
+   UNWARNED_RECLAIM_CYCLES "unwarned-reclaim-cycles"
  
    SERVER_ID "server-id"
 +  LLT "LLT"
 +  EN "EN"
 +  LL "LL"
    IDENTIFIER "identifier"
    HTYPE "htype"
    TIME "time"
index 22f846cfc9a73c9e4b147c9ca20d79e158ba86d8,c713fa62a5d48b2b1993c214ad0a028c519a1aac..68af31fd3744e213a5294df8654a89ce017e6765
@@@ -717,12 -720,12 +717,11 @@@ 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());
 -    } 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: "
@@@ -925,20 -924,12 +924,26 @@@ configureDhcp6Server(Dhcpv6Srv&, isc::d
                  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;
+             }
              ParserPtr parser(createGlobal6DhcpConfigParser(config_pair.first,
                                                             config_pair.second));
              LOG_DEBUG(dhcp6_logger, DBG_DHCP6_DETAIL, DHCP6_PARSER_CREATED)
index 6a149b33cbd4829097dbc54aab65fba11d4f6160,8d4524f6c42df73d71bdbac7fe6de4aed7b3908f..807e79140e67b32a711c256322b24da04df11922
@@@ -1,4 -1,4 +1,3 @@@
- // Generated 201701070039
 -// Generated 201701070534
  // A Bison parser, made by GNU Bison 3.0.4.
  
  // Locations for Bison parsers in C++
@@@ -41,9 -41,9 +40,9 @@@
  
  # include "position.hh"
  
--#line 14 "dhcp6_parser.yy" // location.cc:296
++#line 14 "dhcp6_parser.yy" // location.cc:337
  namespace isc { namespace dhcp {
--#line 46 "location.hh" // location.cc:296
++#line 46 "location.hh" // location.cc:337
    /// Abstract a location.
    class location
    {
      return ostr;
    }
  
--#line 14 "dhcp6_parser.yy" // location.cc:296
++#line 14 "dhcp6_parser.yy" // location.cc:337
  } } // isc::dhcp
--#line 192 "location.hh" // location.cc:296
++#line 192 "location.hh" // location.cc:337
  #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index 8b1687711f04ebf68ad84228eaa2e6804e35e5de,68b9c34faf910e8e11914a13164313833e822dc4..96ac1203d68e56fd95470b24a8ba0afa5553ad27
@@@ -145,10 -145,10 +145,12 @@@ Parser6Context::contextName(
          return ("option-data");
      case CLIENT_CLASSES:
          return ("client-classes");
+     case EXPIRED_LEASES_PROCESSING:
+         return ("expired-leases-processing");
      case SERVER_ID:
          return ("server-id");
 +    case DUID_TYPE:
 +        return ("duid-type");
      case CONTROL_SOCKET:
          return ("control-socket");
      case POOLS:
Simple merge
index dded956d62aae4cf2d247bf977dc4f08f840316f,47b56b967ab12196e2ba3c89bc8976c428ef56b2..72cefa7be1517b433f6b9e109431bb8903331f70
@@@ -1,4 -1,4 +1,3 @@@
- // Generated 201701070039
 -// Generated 201701070534
  // A Bison parser, made by GNU Bison 3.0.4.
  
  // Positions for Bison parsers in C++
@@@ -51,9 -51,9 +50,9 @@@
  #  endif
  # endif
  
--#line 14 "dhcp6_parser.yy" // location.cc:296
++#line 14 "dhcp6_parser.yy" // location.cc:337
  namespace isc { namespace dhcp {
--#line 56 "position.hh" // location.cc:296
++#line 56 "position.hh" // location.cc:337
    /// Abstract a position.
    class position
    {
      return ostr << pos.line << '.' << pos.column;
    }
  
--#line 14 "dhcp6_parser.yy" // location.cc:296
++#line 14 "dhcp6_parser.yy" // location.cc:337
  } } // isc::dhcp
--#line 180 "position.hh" // location.cc:296
++#line 180 "position.hh" // location.cc:337
  #endif // !YY_PARSER6_POSITION_HH_INCLUDED
index 5ffb6ac3a46e380a338005f430ade7173a45c2b9,42a3aa2bbdebb32a82807c9548a593a9bafed4ed..7083440b9793d9667f1c7cc15d8ebca9631296aa
@@@ -1,4 -1,4 +1,3 @@@
- // Generated 201701070039
 -// Generated 201701070534
  // A Bison parser, made by GNU Bison 3.0.4.
  
  // Stack handling for Bison parsers in C++
@@@ -41,9 -41,9 +40,9 @@@
  
  # include <vector>
  
--#line 14 "dhcp6_parser.yy" // stack.hh:132
++#line 14 "dhcp6_parser.yy" // stack.hh:151
  namespace isc { namespace dhcp {
--#line 46 "stack.hh" // stack.hh:132
++#line 46 "stack.hh" // stack.hh:151
    template <class T, class S = std::vector<T> >
    class stack
    {
      unsigned int range_;
    };
  
--#line 14 "dhcp6_parser.yy" // stack.hh:132
++#line 14 "dhcp6_parser.yy" // stack.hh:151
  } } // isc::dhcp
--#line 156 "stack.hh" // stack.hh:132
++#line 156 "stack.hh" // stack.hh:151
  
  #endif // !YY_PARSER6_STACK_HH_INCLUDED