diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index f96e7d90f9..6f8a829690 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -1670,10 +1670,9 @@ case 15: YY_RULE_SETUP #line 199 "dhcp4_lexer.ll" { - std::cout << "RAW regexp" << std::endl; switch(driver.ctx_) { - case isc::dhcp::Parser4Context::INTERFACES_CONFIG: - return isc::dhcp::Dhcp4Parser::make_DHCP_SOCKET_TYPE_RAW(driver.loc_); + case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: + return isc::dhcp::Dhcp4Parser::make_RAW(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("raw", driver.loc_); } @@ -1683,10 +1682,9 @@ case 16: YY_RULE_SETUP #line 209 "dhcp4_lexer.ll" { - std::cout << "RAW regexp" << std::endl; switch(driver.ctx_) { - case isc::dhcp::Parser4Context::INTERFACES_CONFIG: - return isc::dhcp::Dhcp4Parser::make_DHCP_SOCKET_TYPE_UDP(driver.loc_); + case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: + return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_); } diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 695b453046..c98ed651d3 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -1,4 +1,4 @@ -/* Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC") +/* Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC") This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this @@ -197,20 +197,18 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } \"raw\" { - std::cout << "RAW regexp" << std::endl; switch(driver.ctx_) { - case isc::dhcp::Parser4Context::INTERFACES_CONFIG: - return isc::dhcp::Dhcp4Parser::make_DHCP_SOCKET_TYPE_RAW(driver.loc_); + case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: + return isc::dhcp::Dhcp4Parser::make_RAW(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("raw", driver.loc_); } } \"udp\" { - std::cout << "RAW regexp" << std::endl; switch(driver.ctx_) { - case isc::dhcp::Parser4Context::INTERFACES_CONFIG: - return isc::dhcp::Dhcp4Parser::make_DHCP_SOCKET_TYPE_UDP(driver.loc_); + case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE: + return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_); } diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index aee62b9600..3982ab71b7 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -254,6 +254,7 @@ namespace isc { namespace dhcp { switch (that.type_get ()) { case 116: // value + case 155: // socket_type value.move< ElementPtr > (that.value); break; @@ -289,6 +290,7 @@ namespace isc { namespace dhcp { switch (that.type_get ()) { case 116: // value + case 155: // socket_type value.copy< ElementPtr > (that.value); break; @@ -346,37 +348,44 @@ namespace isc { namespace dhcp { { case 100: // "constant string" -#line 191 "dhcp4_parser.yy" // lalr1.cc:636 +#line 192 "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" -#line 191 "dhcp4_parser.yy" // lalr1.cc:636 +#line 192 "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" -#line 191 "dhcp4_parser.yy" // lalr1.cc:636 +#line 192 "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" -#line 191 "dhcp4_parser.yy" // lalr1.cc:636 +#line 192 "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 -#line 191 "dhcp4_parser.yy" // lalr1.cc:636 +#line 192 "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 + +#line 192 "dhcp4_parser.yy" // lalr1.cc:636 + { yyoutput << yysym.value.template as< ElementPtr > (); } +#line 389 "dhcp4_parser.cc" // lalr1.cc:636 break; @@ -577,6 +586,7 @@ namespace isc { namespace dhcp { switch (yyr1_[yyn]) { case 116: // value + case 155: // socket_type yylhs.value.build< ElementPtr > (); break; @@ -614,242 +624,242 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: -#line 200 "dhcp4_parser.yy" // lalr1.cc:859 +#line 201 "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 201 "dhcp4_parser.yy" // lalr1.cc:859 +#line 202 "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 202 "dhcp4_parser.yy" // lalr1.cc:859 +#line 203 "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 203 "dhcp4_parser.yy" // lalr1.cc:859 +#line 204 "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 204 "dhcp4_parser.yy" // lalr1.cc:859 +#line 205 "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 205 "dhcp4_parser.yy" // lalr1.cc:859 +#line 206 "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 206 "dhcp4_parser.yy" // lalr1.cc:859 +#line 207 "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 207 "dhcp4_parser.yy" // lalr1.cc:859 +#line 208 "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 208 "dhcp4_parser.yy" // lalr1.cc:859 +#line 209 "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 209 "dhcp4_parser.yy" // lalr1.cc:859 +#line 210 "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 217 "dhcp4_parser.yy" // lalr1.cc:859 +#line 218 "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 218 "dhcp4_parser.yy" // lalr1.cc:859 +#line 219 "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 219 "dhcp4_parser.yy" // lalr1.cc:859 +#line 220 "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 220 "dhcp4_parser.yy" // lalr1.cc:859 +#line 221 "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 221 "dhcp4_parser.yy" // lalr1.cc:859 +#line 222 "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 222 "dhcp4_parser.yy" // lalr1.cc:859 +#line 223 "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 223 "dhcp4_parser.yy" // lalr1.cc:859 +#line 224 "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 226 "dhcp4_parser.yy" // lalr1.cc:859 +#line 227 "dhcp4_parser.yy" // lalr1.cc:859 { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ()); } -#line 725 "dhcp4_parser.cc" // lalr1.cc:859 +#line 735 "dhcp4_parser.cc" // lalr1.cc:859 break; case 30: -#line 231 "dhcp4_parser.yy" // lalr1.cc:859 +#line 232 "dhcp4_parser.yy" // lalr1.cc:859 { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 736 "dhcp4_parser.cc" // lalr1.cc:859 +#line 746 "dhcp4_parser.cc" // lalr1.cc:859 break; case 31: -#line 236 "dhcp4_parser.yy" // lalr1.cc:859 +#line 237 "dhcp4_parser.yy" // lalr1.cc:859 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 746 "dhcp4_parser.cc" // lalr1.cc:859 +#line 756 "dhcp4_parser.cc" // lalr1.cc:859 break; case 34: -#line 247 "dhcp4_parser.yy" // lalr1.cc:859 +#line 248 "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 > ()); } -#line 755 "dhcp4_parser.cc" // lalr1.cc:859 - break; - - case 35: -#line 251 "dhcp4_parser.yy" // lalr1.cc:859 - { - // map consisting of a shorter map followed by - // comma and string:value - ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); - } #line 765 "dhcp4_parser.cc" // lalr1.cc:859 break; + case 35: +#line 252 "dhcp4_parser.yy" // lalr1.cc:859 + { + // map consisting of a shorter map followed by + // comma and string:value + ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ()); + } +#line 775 "dhcp4_parser.cc" // lalr1.cc:859 + break; + case 36: -#line 258 "dhcp4_parser.yy" // lalr1.cc:859 +#line 259 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 774 "dhcp4_parser.cc" // lalr1.cc:859 +#line 784 "dhcp4_parser.cc" // lalr1.cc:859 break; case 37: -#line 261 "dhcp4_parser.yy" // lalr1.cc:859 +#line 262 "dhcp4_parser.yy" // lalr1.cc:859 { // list parsing complete. Put any sanity checking here } -#line 782 "dhcp4_parser.cc" // lalr1.cc:859 +#line 792 "dhcp4_parser.cc" // lalr1.cc:859 break; case 38: -#line 266 "dhcp4_parser.yy" // lalr1.cc:859 +#line 267 "dhcp4_parser.yy" // lalr1.cc:859 { // List parsing about to start } -#line 790 "dhcp4_parser.cc" // lalr1.cc:859 +#line 800 "dhcp4_parser.cc" // lalr1.cc:859 break; case 39: -#line 268 "dhcp4_parser.yy" // lalr1.cc:859 +#line 269 "dhcp4_parser.yy" // lalr1.cc:859 { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 799 "dhcp4_parser.cc" // lalr1.cc:859 +#line 809 "dhcp4_parser.cc" // lalr1.cc:859 break; case 42: -#line 277 "dhcp4_parser.yy" // lalr1.cc:859 +#line 278 "dhcp4_parser.yy" // lalr1.cc:859 { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 808 "dhcp4_parser.cc" // lalr1.cc:859 +#line 818 "dhcp4_parser.cc" // lalr1.cc:859 break; case 43: -#line 281 "dhcp4_parser.yy" // lalr1.cc:859 +#line 282 "dhcp4_parser.yy" // lalr1.cc:859 { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ()); } -#line 817 "dhcp4_parser.cc" // lalr1.cc:859 +#line 827 "dhcp4_parser.cc" // lalr1.cc:859 break; case 44: -#line 292 "dhcp4_parser.yy" // lalr1.cc:859 +#line 293 "dhcp4_parser.yy" // lalr1.cc:859 { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as< std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 828 "dhcp4_parser.cc" // lalr1.cc:859 +#line 838 "dhcp4_parser.cc" // lalr1.cc:859 break; case 45: -#line 302 "dhcp4_parser.yy" // lalr1.cc:859 +#line 303 "dhcp4_parser.yy" // lalr1.cc:859 { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 839 "dhcp4_parser.cc" // lalr1.cc:859 +#line 849 "dhcp4_parser.cc" // lalr1.cc:859 break; case 46: -#line 307 "dhcp4_parser.yy" // lalr1.cc:859 +#line 308 "dhcp4_parser.yy" // lalr1.cc:859 { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 849 "dhcp4_parser.cc" // lalr1.cc:859 +#line 859 "dhcp4_parser.cc" // lalr1.cc:859 break; case 54: -#line 326 "dhcp4_parser.yy" // lalr1.cc:859 +#line 327 "dhcp4_parser.yy" // lalr1.cc:859 { // This code is executed when we're about to start parsing // the content of the map @@ -858,11 +868,11 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP4); } -#line 862 "dhcp4_parser.cc" // lalr1.cc:859 +#line 872 "dhcp4_parser.cc" // lalr1.cc:859 break; case 55: -#line 333 "dhcp4_parser.yy" // lalr1.cc:859 +#line 334 "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 @@ -870,522 +880,533 @@ namespace isc { namespace dhcp { ctx.stack_.pop_back(); ctx.leave(); } -#line 874 "dhcp4_parser.cc" // lalr1.cc:859 +#line 884 "dhcp4_parser.cc" // lalr1.cc:859 break; case 56: -#line 343 "dhcp4_parser.yy" // lalr1.cc:859 +#line 344 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 884 "dhcp4_parser.cc" // lalr1.cc:859 +#line 894 "dhcp4_parser.cc" // lalr1.cc:859 break; case 57: -#line 347 "dhcp4_parser.yy" // lalr1.cc:859 +#line 348 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 892 "dhcp4_parser.cc" // lalr1.cc:859 +#line 902 "dhcp4_parser.cc" // lalr1.cc:859 break; case 82: -#line 381 "dhcp4_parser.yy" // lalr1.cc:859 +#line 382 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 901 "dhcp4_parser.cc" // lalr1.cc:859 +#line 911 "dhcp4_parser.cc" // lalr1.cc:859 break; case 83: -#line 386 "dhcp4_parser.yy" // lalr1.cc:859 +#line 387 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 910 "dhcp4_parser.cc" // lalr1.cc:859 +#line 920 "dhcp4_parser.cc" // lalr1.cc:859 break; case 84: -#line 391 "dhcp4_parser.yy" // lalr1.cc:859 +#line 392 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 919 "dhcp4_parser.cc" // lalr1.cc:859 +#line 929 "dhcp4_parser.cc" // lalr1.cc:859 break; case 85: -#line 396 "dhcp4_parser.yy" // lalr1.cc:859 +#line 397 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 928 "dhcp4_parser.cc" // lalr1.cc:859 +#line 938 "dhcp4_parser.cc" // lalr1.cc:859 break; case 86: -#line 401 "dhcp4_parser.yy" // lalr1.cc:859 +#line 402 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("echo-client-id", echo); } -#line 937 "dhcp4_parser.cc" // lalr1.cc:859 +#line 947 "dhcp4_parser.cc" // lalr1.cc:859 break; case 87: -#line 406 "dhcp4_parser.yy" // lalr1.cc:859 +#line 407 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("match-client-id", match); } -#line 946 "dhcp4_parser.cc" // lalr1.cc:859 +#line 956 "dhcp4_parser.cc" // lalr1.cc:859 break; case 88: -#line 412 "dhcp4_parser.yy" // lalr1.cc:859 +#line 413 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces-config", i); ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 957 "dhcp4_parser.cc" // lalr1.cc:859 +#line 967 "dhcp4_parser.cc" // lalr1.cc:859 break; case 89: -#line 417 "dhcp4_parser.yy" // lalr1.cc:859 +#line 418 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 966 "dhcp4_parser.cc" // lalr1.cc:859 +#line 976 "dhcp4_parser.cc" // lalr1.cc:859 break; case 94: -#line 430 "dhcp4_parser.yy" // lalr1.cc:859 +#line 431 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 976 "dhcp4_parser.cc" // lalr1.cc:859 +#line 986 "dhcp4_parser.cc" // lalr1.cc:859 break; case 95: -#line 434 "dhcp4_parser.yy" // lalr1.cc:859 +#line 435 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 984 "dhcp4_parser.cc" // lalr1.cc:859 +#line 994 "dhcp4_parser.cc" // lalr1.cc:859 break; case 96: -#line 438 "dhcp4_parser.yy" // lalr1.cc:859 +#line 439 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interfaces", l); ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 995 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1005 "dhcp4_parser.cc" // lalr1.cc:859 break; case 97: -#line 443 "dhcp4_parser.yy" // lalr1.cc:859 +#line 444 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1004 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1014 "dhcp4_parser.cc" // lalr1.cc:859 break; - case 100: -#line 452 "dhcp4_parser.yy" // lalr1.cc:859 + case 98: +#line 449 "dhcp4_parser.yy" // lalr1.cc:859 { - ElementPtr type(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("dhcp-socket-type", type); -} -#line 1013 "dhcp4_parser.cc" // lalr1.cc:859 - break; - - case 101: -#line 457 "dhcp4_parser.yy" // lalr1.cc:859 - { - ElementPtr type(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("dhcp-socket-type", type); + ctx.enter(ctx.DHCP_SOCKET_TYPE); } #line 1022 "dhcp4_parser.cc" // lalr1.cc:859 break; + case 99: +#line 451 "dhcp4_parser.yy" // lalr1.cc:859 + { + ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ()); + ctx.leave(); +} +#line 1031 "dhcp4_parser.cc" // lalr1.cc:859 + break; + + case 100: +#line 456 "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 + { 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 462 "dhcp4_parser.yy" // lalr1.cc:859 +#line 460 "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 103: -#line 467 "dhcp4_parser.yy" // lalr1.cc:859 +#line 465 "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 104: -#line 472 "dhcp4_parser.yy" // lalr1.cc:859 +#line 470 "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 105: -#line 477 "dhcp4_parser.yy" // lalr1.cc:859 +#line 475 "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 117: -#line 497 "dhcp4_parser.yy" // lalr1.cc:859 +#line 495 "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 118: -#line 499 "dhcp4_parser.yy" // lalr1.cc:859 +#line 497 "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 119: -#line 505 "dhcp4_parser.yy" // lalr1.cc:859 +#line 503 "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 120: -#line 507 "dhcp4_parser.yy" // lalr1.cc:859 +#line 505 "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 121: -#line 513 "dhcp4_parser.yy" // lalr1.cc:859 +#line 511 "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 122: -#line 515 "dhcp4_parser.yy" // lalr1.cc:859 +#line 513 "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 123: -#line 521 "dhcp4_parser.yy" // lalr1.cc:859 +#line 519 "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 124: -#line 523 "dhcp4_parser.yy" // lalr1.cc:859 +#line 521 "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 125: -#line 529 "dhcp4_parser.yy" // lalr1.cc:859 +#line 527 "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 126: -#line 531 "dhcp4_parser.yy" // lalr1.cc:859 +#line 529 "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 127: -#line 537 "dhcp4_parser.yy" // lalr1.cc:859 +#line 535 "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 128: -#line 542 "dhcp4_parser.yy" // lalr1.cc:859 +#line 540 "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 129: -#line 547 "dhcp4_parser.yy" // lalr1.cc:859 +#line 545 "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 130: -#line 552 "dhcp4_parser.yy" // lalr1.cc:859 +#line 550 "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 131: -#line 557 "dhcp4_parser.yy" // lalr1.cc:859 +#line 555 "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 132: -#line 562 "dhcp4_parser.yy" // lalr1.cc:859 +#line 560 "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 139: -#line 577 "dhcp4_parser.yy" // lalr1.cc:859 +#line 575 "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 140: -#line 582 "dhcp4_parser.yy" // lalr1.cc:859 +#line 580 "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 141: -#line 587 "dhcp4_parser.yy" // lalr1.cc:859 +#line 585 "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 142: -#line 592 "dhcp4_parser.yy" // lalr1.cc:859 +#line 590 "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 143: -#line 597 "dhcp4_parser.yy" // lalr1.cc:859 +#line 595 "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 148: -#line 610 "dhcp4_parser.yy" // lalr1.cc:859 +#line 608 "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 149: -#line 614 "dhcp4_parser.yy" // lalr1.cc:859 +#line 612 "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 150: -#line 618 "dhcp4_parser.yy" // lalr1.cc:859 +#line 616 "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 151: -#line 622 "dhcp4_parser.yy" // lalr1.cc:859 +#line 620 "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 157: -#line 635 "dhcp4_parser.yy" // lalr1.cc:859 +#line 633 "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 158: -#line 637 "dhcp4_parser.yy" // lalr1.cc:859 +#line 635 "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 159: -#line 643 "dhcp4_parser.yy" // lalr1.cc:859 +#line 641 "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 160: -#line 645 "dhcp4_parser.yy" // lalr1.cc:859 +#line 643 "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 161: -#line 651 "dhcp4_parser.yy" // lalr1.cc:859 +#line 649 "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); } -#line 1337 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1358 "dhcp4_parser.cc" // lalr1.cc:859 break; case 162: -#line 656 "dhcp4_parser.yy" // lalr1.cc:859 +#line 654 "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 668 "dhcp4_parser.yy" // lalr1.cc:859 +#line 666 "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); } -#line 1355 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1376 "dhcp4_parser.cc" // lalr1.cc:859 break; case 166: -#line 676 "dhcp4_parser.yy" // lalr1.cc:859 +#line 674 "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 1366 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1387 "dhcp4_parser.cc" // lalr1.cc:859 break; case 167: -#line 681 "dhcp4_parser.yy" // lalr1.cc:859 +#line 679 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1375 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1396 "dhcp4_parser.cc" // lalr1.cc:859 break; case 172: -#line 701 "dhcp4_parser.yy" // lalr1.cc:859 +#line 699 "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 1385 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1406 "dhcp4_parser.cc" // lalr1.cc:859 break; case 173: -#line 705 "dhcp4_parser.yy" // lalr1.cc:859 +#line 703 "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. @@ -1404,1133 +1425,1133 @@ namespace isc { namespace dhcp { // } ctx.stack_.pop_back(); } -#line 1408 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1429 "dhcp4_parser.cc" // lalr1.cc:859 break; case 174: -#line 724 "dhcp4_parser.yy" // lalr1.cc:859 +#line 722 "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 1418 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1439 "dhcp4_parser.cc" // lalr1.cc:859 break; case 175: -#line 728 "dhcp4_parser.yy" // lalr1.cc:859 +#line 726 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 1426 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1447 "dhcp4_parser.cc" // lalr1.cc:859 break; case 198: -#line 760 "dhcp4_parser.yy" // lalr1.cc:859 +#line 758 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1434 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1455 "dhcp4_parser.cc" // lalr1.cc:859 break; case 199: -#line 762 "dhcp4_parser.yy" // lalr1.cc:859 +#line 760 "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 1444 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1465 "dhcp4_parser.cc" // lalr1.cc:859 break; case 200: -#line 768 "dhcp4_parser.yy" // lalr1.cc:859 +#line 766 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1452 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1473 "dhcp4_parser.cc" // lalr1.cc:859 break; case 201: -#line 770 "dhcp4_parser.yy" // lalr1.cc:859 +#line 768 "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 1462 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1483 "dhcp4_parser.cc" // lalr1.cc:859 break; case 202: -#line 776 "dhcp4_parser.yy" // lalr1.cc:859 +#line 774 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1470 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1491 "dhcp4_parser.cc" // lalr1.cc:859 break; case 203: -#line 778 "dhcp4_parser.yy" // lalr1.cc:859 +#line 776 "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 1480 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1501 "dhcp4_parser.cc" // lalr1.cc:859 break; case 204: -#line 784 "dhcp4_parser.yy" // lalr1.cc:859 +#line 782 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1488 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1509 "dhcp4_parser.cc" // lalr1.cc:859 break; case 205: -#line 786 "dhcp4_parser.yy" // lalr1.cc:859 +#line 784 "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 1498 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1519 "dhcp4_parser.cc" // lalr1.cc:859 break; case 206: -#line 792 "dhcp4_parser.yy" // lalr1.cc:859 +#line 790 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1506 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1527 "dhcp4_parser.cc" // lalr1.cc:859 break; case 207: -#line 794 "dhcp4_parser.yy" // lalr1.cc:859 +#line 792 "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 1516 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1537 "dhcp4_parser.cc" // lalr1.cc:859 break; case 208: -#line 800 "dhcp4_parser.yy" // lalr1.cc:859 +#line 798 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1524 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1545 "dhcp4_parser.cc" // lalr1.cc:859 break; case 209: -#line 802 "dhcp4_parser.yy" // lalr1.cc:859 +#line 800 "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 1534 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1555 "dhcp4_parser.cc" // lalr1.cc:859 break; case 210: -#line 808 "dhcp4_parser.yy" // lalr1.cc:859 +#line 806 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.CLIENT_CLASS); } -#line 1542 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1563 "dhcp4_parser.cc" // lalr1.cc:859 break; case 211: -#line 810 "dhcp4_parser.yy" // lalr1.cc:859 +#line 808 "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 1552 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1573 "dhcp4_parser.cc" // lalr1.cc:859 break; case 212: -#line 816 "dhcp4_parser.yy" // lalr1.cc:859 +#line 814 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1560 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1581 "dhcp4_parser.cc" // lalr1.cc:859 break; case 213: -#line 818 "dhcp4_parser.yy" // lalr1.cc:859 +#line 816 "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 1570 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1591 "dhcp4_parser.cc" // lalr1.cc:859 break; case 214: -#line 824 "dhcp4_parser.yy" // lalr1.cc:859 +#line 822 "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 1579 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1600 "dhcp4_parser.cc" // lalr1.cc:859 break; case 215: -#line 829 "dhcp4_parser.yy" // lalr1.cc:859 +#line 827 "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 1588 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1609 "dhcp4_parser.cc" // lalr1.cc:859 break; case 216: -#line 838 "dhcp4_parser.yy" // lalr1.cc:859 +#line 836 "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 1599 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1620 "dhcp4_parser.cc" // lalr1.cc:859 break; case 217: -#line 843 "dhcp4_parser.yy" // lalr1.cc:859 +#line 841 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1608 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1629 "dhcp4_parser.cc" // lalr1.cc:859 break; case 222: -#line 860 "dhcp4_parser.yy" // lalr1.cc:859 +#line 858 "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 1618 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1639 "dhcp4_parser.cc" // lalr1.cc:859 break; case 223: -#line 864 "dhcp4_parser.yy" // lalr1.cc:859 +#line 862 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 1626 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1647 "dhcp4_parser.cc" // lalr1.cc:859 break; case 224: -#line 871 "dhcp4_parser.yy" // lalr1.cc:859 +#line 869 "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 1636 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1657 "dhcp4_parser.cc" // lalr1.cc:859 break; case 225: -#line 875 "dhcp4_parser.yy" // lalr1.cc:859 +#line 873 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 1644 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1665 "dhcp4_parser.cc" // lalr1.cc:859 break; case 239: -#line 901 "dhcp4_parser.yy" // lalr1.cc:859 +#line 899 "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 1653 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1674 "dhcp4_parser.cc" // lalr1.cc:859 break; case 242: -#line 910 "dhcp4_parser.yy" // lalr1.cc:859 +#line 908 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1661 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1682 "dhcp4_parser.cc" // lalr1.cc:859 break; case 243: -#line 912 "dhcp4_parser.yy" // lalr1.cc:859 +#line 910 "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 1671 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1692 "dhcp4_parser.cc" // lalr1.cc:859 break; case 244: -#line 918 "dhcp4_parser.yy" // lalr1.cc:859 +#line 916 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1679 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1700 "dhcp4_parser.cc" // lalr1.cc:859 break; case 245: -#line 920 "dhcp4_parser.yy" // lalr1.cc:859 +#line 918 "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 1689 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1710 "dhcp4_parser.cc" // lalr1.cc:859 break; case 247: -#line 928 "dhcp4_parser.yy" // lalr1.cc:859 +#line 926 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1697 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1718 "dhcp4_parser.cc" // lalr1.cc:859 break; case 248: -#line 930 "dhcp4_parser.yy" // lalr1.cc:859 +#line 928 "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 1707 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1728 "dhcp4_parser.cc" // lalr1.cc:859 break; case 249: -#line 936 "dhcp4_parser.yy" // lalr1.cc:859 +#line 934 "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 1716 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1737 "dhcp4_parser.cc" // lalr1.cc:859 break; case 250: -#line 945 "dhcp4_parser.yy" // lalr1.cc:859 +#line 943 "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 1727 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1748 "dhcp4_parser.cc" // lalr1.cc:859 break; case 251: -#line 950 "dhcp4_parser.yy" // lalr1.cc:859 +#line 948 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1736 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1757 "dhcp4_parser.cc" // lalr1.cc:859 break; case 256: -#line 969 "dhcp4_parser.yy" // lalr1.cc:859 +#line 967 "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 1746 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1767 "dhcp4_parser.cc" // lalr1.cc:859 break; case 257: -#line 973 "dhcp4_parser.yy" // lalr1.cc:859 +#line 971 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 1754 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1775 "dhcp4_parser.cc" // lalr1.cc:859 break; case 258: -#line 980 "dhcp4_parser.yy" // lalr1.cc:859 +#line 978 "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 1764 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1785 "dhcp4_parser.cc" // lalr1.cc:859 break; case 259: -#line 984 "dhcp4_parser.yy" // lalr1.cc:859 +#line 982 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 1772 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1793 "dhcp4_parser.cc" // lalr1.cc:859 break; case 271: -#line 1013 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1011 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1780 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1801 "dhcp4_parser.cc" // lalr1.cc:859 break; case 272: -#line 1015 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1013 "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 1790 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1811 "dhcp4_parser.cc" // lalr1.cc:859 break; case 275: -#line 1025 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1023 "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 1799 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1820 "dhcp4_parser.cc" // lalr1.cc:859 break; case 276: -#line 1033 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1031 "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 1810 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1831 "dhcp4_parser.cc" // lalr1.cc:859 break; case 277: -#line 1038 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1036 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1819 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1840 "dhcp4_parser.cc" // lalr1.cc:859 break; case 282: -#line 1053 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1051 "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 1829 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1850 "dhcp4_parser.cc" // lalr1.cc:859 break; case 283: -#line 1057 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1055 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 1837 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1858 "dhcp4_parser.cc" // lalr1.cc:859 break; case 284: -#line 1061 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1059 "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 1847 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1868 "dhcp4_parser.cc" // lalr1.cc:859 break; case 285: -#line 1065 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1063 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 1855 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1876 "dhcp4_parser.cc" // lalr1.cc:859 break; case 291: -#line 1078 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1076 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1863 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1884 "dhcp4_parser.cc" // lalr1.cc:859 break; case 292: -#line 1080 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1078 "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 1873 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1894 "dhcp4_parser.cc" // lalr1.cc:859 break; case 293: -#line 1089 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1087 "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 1884 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1905 "dhcp4_parser.cc" // lalr1.cc:859 break; case 294: -#line 1094 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1092 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 1893 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1914 "dhcp4_parser.cc" // lalr1.cc:859 break; case 299: -#line 1107 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1105 "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 1903 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1924 "dhcp4_parser.cc" // lalr1.cc:859 break; case 300: -#line 1111 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1109 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 1911 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1932 "dhcp4_parser.cc" // lalr1.cc:859 break; case 301: -#line 1115 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1113 "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 1921 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1942 "dhcp4_parser.cc" // lalr1.cc:859 break; case 302: -#line 1119 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1117 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } -#line 1929 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1950 "dhcp4_parser.cc" // lalr1.cc:859 break; case 319: -#line 1146 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1144 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1937 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1958 "dhcp4_parser.cc" // lalr1.cc:859 break; case 320: -#line 1148 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1146 "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 1947 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1968 "dhcp4_parser.cc" // lalr1.cc:859 break; case 321: -#line 1154 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1152 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1955 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1976 "dhcp4_parser.cc" // lalr1.cc:859 break; case 322: -#line 1156 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1154 "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 1965 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1986 "dhcp4_parser.cc" // lalr1.cc:859 break; case 323: -#line 1162 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1160 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1973 "dhcp4_parser.cc" // lalr1.cc:859 +#line 1994 "dhcp4_parser.cc" // lalr1.cc:859 break; case 324: -#line 1164 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1162 "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 1983 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2004 "dhcp4_parser.cc" // lalr1.cc:859 break; case 325: -#line 1170 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1168 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 1991 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2012 "dhcp4_parser.cc" // lalr1.cc:859 break; case 326: -#line 1172 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1170 "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 2001 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2022 "dhcp4_parser.cc" // lalr1.cc:859 break; case 327: -#line 1178 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1176 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2009 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2030 "dhcp4_parser.cc" // lalr1.cc:859 break; case 328: -#line 1180 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1178 "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 2019 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2040 "dhcp4_parser.cc" // lalr1.cc:859 break; case 329: -#line 1186 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1184 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2027 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2048 "dhcp4_parser.cc" // lalr1.cc:859 break; case 330: -#line 1188 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1186 "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 2037 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2058 "dhcp4_parser.cc" // lalr1.cc:859 break; case 331: -#line 1194 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1192 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2045 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2066 "dhcp4_parser.cc" // lalr1.cc:859 break; case 332: -#line 1196 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1194 "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 2055 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2076 "dhcp4_parser.cc" // lalr1.cc:859 break; case 333: -#line 1202 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1200 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2063 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2084 "dhcp4_parser.cc" // lalr1.cc:859 break; case 334: -#line 1204 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1202 "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 2073 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2094 "dhcp4_parser.cc" // lalr1.cc:859 break; case 335: -#line 1211 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1209 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2081 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2102 "dhcp4_parser.cc" // lalr1.cc:859 break; case 336: -#line 1213 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1211 "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 2091 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2112 "dhcp4_parser.cc" // lalr1.cc:859 break; case 337: -#line 1219 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1217 "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 2102 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2123 "dhcp4_parser.cc" // lalr1.cc:859 break; case 338: -#line 1224 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1222 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2111 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2132 "dhcp4_parser.cc" // lalr1.cc:859 break; case 339: -#line 1232 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1230 "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 2122 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2143 "dhcp4_parser.cc" // lalr1.cc:859 break; case 340: -#line 1237 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1235 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2131 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2152 "dhcp4_parser.cc" // lalr1.cc:859 break; case 341: -#line 1242 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1240 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2139 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2160 "dhcp4_parser.cc" // lalr1.cc:859 break; case 342: -#line 1244 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1242 "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 2149 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2170 "dhcp4_parser.cc" // lalr1.cc:859 break; case 343: -#line 1253 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1251 "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 2160 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2181 "dhcp4_parser.cc" // lalr1.cc:859 break; case 344: -#line 1258 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1256 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2169 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2190 "dhcp4_parser.cc" // lalr1.cc:859 break; case 347: -#line 1267 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1265 "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 2179 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2200 "dhcp4_parser.cc" // lalr1.cc:859 break; case 348: -#line 1271 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1269 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 2187 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2208 "dhcp4_parser.cc" // lalr1.cc:859 break; case 361: -#line 1294 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1292 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2195 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2216 "dhcp4_parser.cc" // lalr1.cc:859 break; case 362: -#line 1296 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1294 "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 2205 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2226 "dhcp4_parser.cc" // lalr1.cc:859 break; case 363: -#line 1305 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1303 "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 2216 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2237 "dhcp4_parser.cc" // lalr1.cc:859 break; case 364: -#line 1310 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1308 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2225 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2246 "dhcp4_parser.cc" // lalr1.cc:859 break; case 374: -#line 1328 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1326 "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 2234 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2255 "dhcp4_parser.cc" // lalr1.cc:859 break; case 375: -#line 1333 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1331 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2242 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2263 "dhcp4_parser.cc" // lalr1.cc:859 break; case 376: -#line 1335 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1333 "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 2252 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2273 "dhcp4_parser.cc" // lalr1.cc:859 break; case 377: -#line 1341 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1339 "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 2261 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2282 "dhcp4_parser.cc" // lalr1.cc:859 break; case 378: -#line 1346 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1344 "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 2270 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2291 "dhcp4_parser.cc" // lalr1.cc:859 break; case 379: -#line 1353 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1351 "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 2279 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2300 "dhcp4_parser.cc" // lalr1.cc:859 break; case 380: -#line 1360 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1358 "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 2290 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2311 "dhcp4_parser.cc" // lalr1.cc:859 break; case 381: -#line 1365 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1363 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2299 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2320 "dhcp4_parser.cc" // lalr1.cc:859 break; case 386: -#line 1378 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1376 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2307 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2328 "dhcp4_parser.cc" // lalr1.cc:859 break; case 387: -#line 1380 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1378 "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 2317 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2338 "dhcp4_parser.cc" // lalr1.cc:859 break; case 388: -#line 1386 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1384 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2325 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2346 "dhcp4_parser.cc" // lalr1.cc:859 break; case 389: -#line 1388 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1386 "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 2335 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2356 "dhcp4_parser.cc" // lalr1.cc:859 break; case 390: -#line 1396 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1394 "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 2346 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2367 "dhcp4_parser.cc" // lalr1.cc:859 break; case 391: -#line 1401 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1399 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2355 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2376 "dhcp4_parser.cc" // lalr1.cc:859 break; case 392: -#line 1408 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1406 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2363 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2384 "dhcp4_parser.cc" // lalr1.cc:859 break; case 393: -#line 1410 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1408 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2372 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2393 "dhcp4_parser.cc" // lalr1.cc:859 break; case 394: -#line 1415 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1413 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2380 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2401 "dhcp4_parser.cc" // lalr1.cc:859 break; case 395: -#line 1417 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1415 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); } -#line 2389 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2410 "dhcp4_parser.cc" // lalr1.cc:859 break; case 396: -#line 1427 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1425 "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 2400 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2421 "dhcp4_parser.cc" // lalr1.cc:859 break; case 397: -#line 1432 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1430 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2409 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2430 "dhcp4_parser.cc" // lalr1.cc:859 break; case 401: -#line 1449 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1447 "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 2420 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2441 "dhcp4_parser.cc" // lalr1.cc:859 break; case 402: -#line 1454 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1452 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2429 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2450 "dhcp4_parser.cc" // lalr1.cc:859 break; case 405: -#line 1466 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1464 "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 2439 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2460 "dhcp4_parser.cc" // lalr1.cc:859 break; case 406: -#line 1470 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1468 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 2447 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2468 "dhcp4_parser.cc" // lalr1.cc:859 break; case 414: -#line 1485 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1483 "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 2456 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2477 "dhcp4_parser.cc" // lalr1.cc:859 break; case 415: -#line 1489 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1487 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2464 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2485 "dhcp4_parser.cc" // lalr1.cc:859 break; case 416: -#line 1491 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1489 "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 2474 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2495 "dhcp4_parser.cc" // lalr1.cc:859 break; case 417: -#line 1497 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1495 "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 2485 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2506 "dhcp4_parser.cc" // lalr1.cc:859 break; case 418: -#line 1502 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1500 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); } -#line 2494 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2515 "dhcp4_parser.cc" // lalr1.cc:859 break; case 421: -#line 1511 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1509 "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 2504 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2525 "dhcp4_parser.cc" // lalr1.cc:859 break; case 422: -#line 1515 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1513 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } -#line 2512 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2533 "dhcp4_parser.cc" // lalr1.cc:859 break; case 425: -#line 1523 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1521 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } -#line 2520 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2541 "dhcp4_parser.cc" // lalr1.cc:859 break; case 426: -#line 1525 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1523 "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 2530 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2551 "dhcp4_parser.cc" // lalr1.cc:859 break; -#line 2534 "dhcp4_parser.cc" // lalr1.cc:859 +#line 2555 "dhcp4_parser.cc" // lalr1.cc:859 default: break; } @@ -2785,84 +2806,84 @@ namespace isc { namespace dhcp { } - const short int Dhcp4Parser::yypact_ninf_ = -414; + const short int Dhcp4Parser::yypact_ninf_ = -411; const signed char Dhcp4Parser::yytable_ninf_ = -1; const short int Dhcp4Parser::yypact_[] = { - 187, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, 33, 20, 34, 53, 69, 75, 92, 100, 104, - 110, 130, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, 20, -69, 24, 70, 163, 19, -7, 96, - 126, 54, -23, -414, 146, 36, 152, 200, 211, -414, - -414, -414, -414, 218, -414, 32, -414, -414, -414, -414, - -414, -414, 223, 227, -414, -414, -414, 228, 229, 230, - 232, -414, -414, -414, -414, -414, -414, -414, -414, 233, - -414, -414, -414, 45, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, 234, 49, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, 237, 239, -414, -414, -414, -414, -414, -414, - -414, -414, -414, 58, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, 60, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, 236, 243, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, 246, -414, -414, -414, 247, -414, -414, -414, - 252, 251, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, 257, -414, -414, -414, -414, 254, 260, - -414, -414, -414, -414, -414, -414, -414, -414, -414, 72, - -414, -414, -414, -414, 20, 20, -414, 167, 265, 267, - 269, 270, -414, 24, -414, 271, 184, 185, 285, 286, - 287, 154, 191, 193, 194, 289, 292, 293, 294, 295, - 296, 297, 298, 202, 300, 301, 70, -414, 302, 169, - 163, -414, 25, 303, 304, 305, 306, 307, 308, 309, - 213, 212, 312, 313, 314, 315, 19, -414, 316, -7, - -414, 317, 318, 319, 320, 321, 322, 323, 324, 325, - -414, 96, 326, 327, 231, 329, 330, 331, 238, -414, - 126, 332, 240, -414, 54, 335, 336, 155, -414, -414, - -414, 338, 337, 339, 20, 20, -414, 340, -414, -414, - 245, 341, 342, -414, -414, -414, -414, 345, 346, 347, - 348, 349, 350, 351, 352, -414, 353, 354, -414, 357, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - 358, 362, -414, -414, -414, 256, 272, 273, 365, 274, - 275, 276, -414, -414, 278, 280, 366, 360, -414, 281, - -414, 282, 283, 357, 288, 290, 299, 310, 311, 328, - -414, 333, 334, -414, 343, 344, 355, -414, -414, 356, - -414, -414, 359, 20, -414, 20, 70, 363, -414, -414, - 163, -414, 105, 105, 378, 379, 380, 157, 31, 382, - 361, 113, 150, -69, -414, -414, 388, -414, 25, -414, - -414, -414, 386, -414, -414, -414, -414, -414, 387, 364, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, 81, - -414, 102, -414, -414, 136, -414, -414, -414, 392, 393, - 394, -414, 147, -414, -414, -414, -414, -414, -414, -414, - -414, -414, 182, -414, 395, 397, -414, -414, 396, 400, - -414, -414, 398, 402, -414, -414, -414, -414, -414, -414, - 56, -414, -414, -414, -414, -414, 140, -414, 401, 403, - -414, 404, 189, -414, -414, 405, 408, 409, -414, -414, - -414, 192, -414, -414, -414, -414, -414, -414, -414, 195, - -414, -414, -414, 198, 20, 367, -414, -414, 411, 412, - -414, -414, 413, 417, -414, -414, 406, -414, 418, 363, - -414, -414, 419, 420, 421, 368, 369, 370, 105, -414, - -414, 19, -414, 378, 126, -414, 379, 54, -414, 380, - 157, -414, 31, -414, -23, -414, 382, 371, 361, -414, - 422, 373, 374, 375, 113, -414, 423, 425, 150, -414, - -414, 415, -414, -7, -414, 386, 96, -414, 387, 426, - -414, 427, -414, 377, 381, 383, -414, -414, -414, -414, - 199, -414, 428, -414, 429, -414, -414, -414, 201, -414, - -414, -414, 384, -414, -414, -414, -414, 385, 389, -414, - -414, 207, -414, 430, -414, 390, 432, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, 171, -414, 78, 432, -414, -414, 431, -414, -414, - -414, 208, -414, -414, -414, -414, -414, 436, 391, 437, - 78, -414, 440, -414, 399, -414, 435, -414, -414, 188, - -414, 372, 435, -414, -414, 209, -414, -414, 443, 372, - -414, 407, -414, -414 + 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, + -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, + 255, -411, -411, -411, -411, -411, -411, -411, -411, 256, + -411, -411, -411, 32, -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, -411, -411, + 257, 261, -411, -411, -411, -411, -411, -411, -411, -411, + -411, 50, -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, -411, -411, -411, -411, 259, 266, -411, -411, -411, + -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, + 267, -411, -411, -411, 268, -411, -411, -411, 265, 272, + -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, -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, -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 }; const unsigned short int @@ -2880,38 +2901,38 @@ namespace isc { namespace dhcp { 0, 166, 216, 250, 131, 343, 142, 161, 363, 0, 380, 390, 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, 0, 0, 90, - 92, 93, 98, 99, 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, 156, 37, 0, 0, 31, 0, 0, 0, - 0, 0, 44, 0, 46, 0, 0, 0, 0, 0, + 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, + 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, 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, 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, - 100, 101, 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, 0, 348, 0, 201, + 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, + 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, @@ -2944,33 +2965,33 @@ namespace isc { namespace dhcp { const short int Dhcp4Parser::yypgoto_[] = { - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, 3, -414, -414, -414, -414, -76, -414, -414, - 55, -414, -95, -414, -54, -414, -414, -414, 197, -414, - -414, -414, -414, 35, 176, -56, -40, -38, -414, -414, - -37, -414, -414, 38, 173, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, 37, -114, -401, -414, - -414, -414, -414, -414, -414, -414, -59, -414, -413, -414, - -414, -414, -414, -414, -414, -118, -414, -414, -414, -414, - -414, -414, -414, -123, -414, -414, -414, -120, 138, -414, - -414, -414, -414, -414, -414, -414, -122, -414, -414, -414, - -414, -105, -414, -414, -414, -102, 183, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -400, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -98, - -414, -414, -414, -94, -414, 162, -414, -52, -414, -414, - -414, -414, -48, -414, -414, -414, -414, -414, -47, -414, - -414, -414, -93, -414, -414, -414, -90, -414, 164, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -112, - -414, -414, -414, -109, 196, -414, -414, -414, -414, -414, - -414, -117, -414, -414, -414, -110, -414, 186, -43, -414, - -259, -414, -258, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, 62, -414, - -414, -414, -414, -414, -414, -96, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -97, -414, -414, -414, -414, - -414, -414, -414, -414, -414, -414, -414, -414, -414, -57, - -414, -414, -414, -161, -414, -414, -176, -414, -414, -414, - -414, -414, -414, -187, -414, -414, -193, -414 + -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, -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, -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 }; const short int @@ -2978,29 +2999,29 @@ namespace isc { namespace dhcp { { -1, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 63, 31, 32, 53, 67, 68, 33, 52, - 435, 544, 64, 65, 102, 35, 54, 75, 76, 77, - 248, 37, 55, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 255, 128, 129, 39, 56, 130, 278, 131, - 132, 133, 112, 259, 113, 260, 482, 483, 208, 312, - 485, 562, 486, 563, 487, 564, 209, 313, 489, 490, - 491, 509, 114, 268, 510, 511, 512, 513, 514, 115, - 270, 518, 519, 520, 584, 51, 62, 239, 240, 241, - 325, 242, 326, 116, 271, 522, 523, 117, 265, 494, - 495, 496, 571, 41, 57, 153, 154, 155, 287, 156, - 283, 157, 284, 158, 285, 159, 288, 160, 289, 161, - 293, 162, 292, 163, 164, 118, 266, 498, 499, 500, - 574, 47, 60, 210, 211, 212, 213, 214, 215, 216, - 217, 316, 218, 315, 219, 220, 317, 221, 119, 267, - 502, 503, 504, 577, 49, 61, 228, 229, 230, 231, - 232, 321, 233, 234, 235, 166, 286, 548, 549, 550, - 603, 43, 58, 173, 174, 175, 298, 167, 294, 552, - 553, 554, 606, 45, 59, 187, 188, 189, 120, 258, - 191, 301, 192, 302, 193, 309, 194, 304, 195, 305, - 196, 307, 197, 306, 198, 308, 199, 303, 169, 295, - 556, 609, 121, 269, 516, 282, 370, 371, 372, 373, - 374, 436, 122, 272, 531, 532, 533, 534, 590, 535, - 536, 123, 124, 274, 539, 540, 541, 596, 542, 597, - 125, 275, 78, 250, 79, 251, 80, 249, 471, 472, + 432, 544, 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, 435, 112, 257, 113, 258, 482, 483, 206, 310, + 485, 562, 486, 563, 487, 564, 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 }; @@ -3008,63 +3029,63 @@ namespace isc { namespace dhcp { const unsigned short int Dhcp4Parser::yytable_[] = { - 74, 149, 225, 148, 171, 185, 207, 224, 238, 226, - 165, 172, 186, 227, 168, 30, 190, 150, 530, 151, - 152, 484, 484, 368, 369, 23, 134, 24, 515, 25, - 529, 66, 93, 22, 69, 253, 83, 84, 134, 244, - 254, 34, 170, 84, 176, 177, 236, 237, 276, 87, - 88, 89, 280, 277, 135, 136, 137, 281, 93, 580, - 36, 296, 581, 299, 93, 201, 297, 138, 300, 139, - 140, 141, 142, 143, 144, 327, 38, 73, 145, 146, - 328, 81, 40, 363, 276, 147, 82, 83, 84, 557, - 145, 85, 86, 73, 201, 222, 202, 203, 223, 42, - 87, 88, 89, 90, 91, 559, 70, 44, 92, 93, - 560, 46, 71, 72, 84, 176, 177, 48, 201, 73, - 26, 27, 28, 29, 73, 73, 94, 95, 200, 475, - 476, 477, 478, 479, 480, 93, 200, 50, 96, 280, - 478, 97, 98, 582, 561, 201, 583, 99, 100, 200, - 568, 101, 243, 178, 73, 569, 245, 179, 180, 181, - 182, 183, 666, 184, 667, 668, 201, 484, 202, 203, - 73, 204, 205, 206, 664, 126, 127, 665, 73, 368, - 369, 530, 627, 360, 361, 568, 524, 525, 526, 527, - 570, 692, 588, 529, 693, 594, 73, 589, 598, 74, - 595, 247, 296, 599, 327, 73, 600, 650, 246, 653, - 299, 680, 699, 73, 247, 657, 681, 700, 505, 506, - 507, 508, 252, 365, 236, 237, 73, 256, 364, 537, - 538, 257, 261, 262, 263, 366, 264, 273, 279, 367, - 149, 290, 148, 291, 310, 171, 311, 329, 330, 165, - 314, 318, 172, 168, 320, 343, 150, 185, 151, 152, - 319, 322, 323, 324, 186, 225, 207, 331, 190, 332, - 224, 333, 226, 334, 335, 337, 227, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 338, 339, 340, - 341, 342, 344, 347, 345, 346, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 359, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 389, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 401, 402, 403, 404, 405, 406, 409, 418, 419, 412, - 413, 407, 415, 410, 416, 421, 417, 420, 422, 423, - 424, 425, 426, 427, 428, 429, 439, 543, 430, 431, - 432, 433, 434, 488, 488, 438, 437, 449, 481, 481, - 442, 448, 440, 441, 443, 444, 445, 528, 446, 365, - 447, 450, 451, 452, 364, 493, 497, 501, 454, 517, - 455, 366, 545, 547, 551, 367, 565, 566, 567, 456, - 573, 572, 575, 576, 578, 579, 586, 585, 587, 591, - 457, 458, 592, 593, 610, 605, 467, 604, 468, 607, - 608, 640, 611, 613, 614, 615, 632, 637, 459, 638, - 645, 555, 646, 460, 461, 678, 651, 652, 658, 660, - 682, 684, 688, 462, 463, 686, 470, 701, 453, 601, - 336, 469, 358, 362, 619, 464, 465, 694, 474, 466, - 492, 521, 626, 629, 628, 414, 631, 602, 621, 620, - 617, 616, 630, 618, 633, 634, 635, 647, 623, 388, - 622, 648, 408, 649, 654, 655, 625, 624, 411, 656, - 659, 644, 683, 642, 641, 390, 643, 400, 636, 687, - 546, 639, 612, 676, 685, 697, 702, 703, 0, 488, - 0, 0, 0, 0, 481, 149, 0, 148, 225, 0, - 207, 0, 0, 224, 165, 226, 0, 0, 168, 227, - 238, 150, 0, 151, 152, 0, 0, 0, 0, 0, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 171, - 0, 0, 185, 0, 0, 0, 172, 0, 0, 186, - 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, + 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, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3077,59 +3098,59 @@ namespace isc { namespace dhcp { Dhcp4Parser::yycheck_[] = { 54, 57, 61, 57, 58, 59, 60, 61, 62, 61, - 57, 58, 59, 61, 57, 12, 59, 57, 431, 57, - 57, 422, 423, 282, 282, 5, 7, 7, 428, 9, - 431, 100, 39, 0, 10, 3, 17, 18, 7, 3, - 8, 7, 49, 18, 19, 20, 69, 70, 3, 30, - 31, 32, 3, 8, 35, 36, 37, 8, 39, 3, - 7, 3, 6, 3, 39, 40, 8, 48, 8, 50, - 51, 52, 53, 54, 55, 3, 7, 100, 59, 60, - 8, 11, 7, 58, 3, 66, 16, 17, 18, 8, - 59, 21, 22, 100, 40, 41, 42, 43, 44, 7, - 30, 31, 32, 33, 34, 3, 82, 7, 38, 39, - 8, 7, 88, 89, 18, 19, 20, 7, 40, 100, - 100, 101, 102, 103, 100, 100, 56, 57, 23, 24, - 25, 26, 27, 28, 29, 39, 23, 7, 68, 3, - 27, 71, 72, 3, 8, 40, 6, 77, 78, 23, - 3, 81, 6, 57, 100, 8, 4, 61, 62, 63, - 64, 65, 84, 67, 86, 87, 40, 568, 42, 43, - 100, 45, 46, 47, 3, 12, 13, 6, 100, 438, - 438, 594, 582, 14, 15, 3, 73, 74, 75, 76, - 8, 3, 3, 594, 6, 3, 100, 8, 3, 253, - 8, 3, 3, 8, 3, 100, 8, 8, 8, 8, - 3, 3, 3, 100, 3, 8, 8, 8, 61, 62, - 63, 64, 4, 282, 69, 70, 100, 4, 282, 79, - 80, 4, 4, 4, 4, 282, 4, 4, 4, 282, - 296, 4, 296, 4, 8, 299, 3, 244, 245, 296, - 4, 4, 299, 296, 3, 101, 296, 311, 296, 296, - 8, 4, 8, 3, 311, 324, 320, 100, 311, 4, - 324, 4, 324, 4, 4, 4, 324, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 103, 103, 4, - 4, 4, 101, 4, 101, 101, 4, 4, 4, 4, - 4, 4, 4, 101, 4, 4, 4, 4, 4, 4, + 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, 4, 4, 334, 335, 4, - 4, 103, 4, 103, 7, 100, 7, 7, 7, 7, - 5, 5, 5, 5, 5, 5, 100, 433, 7, 7, - 7, 7, 5, 422, 423, 3, 8, 7, 422, 423, - 5, 5, 100, 100, 100, 100, 100, 431, 100, 438, - 100, 100, 100, 100, 438, 7, 7, 7, 100, 7, - 100, 438, 4, 7, 7, 438, 4, 4, 4, 100, - 3, 6, 6, 3, 6, 3, 3, 6, 4, 4, - 100, 100, 4, 4, 8, 3, 413, 6, 415, 6, - 3, 6, 4, 4, 4, 4, 4, 4, 100, 4, - 4, 67, 5, 100, 100, 4, 8, 8, 8, 7, - 4, 4, 7, 100, 100, 5, 83, 4, 393, 544, - 253, 416, 276, 280, 568, 100, 100, 85, 420, 100, - 423, 100, 580, 586, 584, 327, 588, 100, 573, 571, - 101, 103, 101, 103, 101, 101, 101, 100, 576, 296, - 574, 100, 320, 100, 100, 100, 579, 577, 324, 100, - 100, 608, 101, 605, 603, 299, 606, 311, 594, 100, - 438, 598, 559, 664, 680, 692, 699, 100, -1, 568, - -1, -1, -1, -1, 568, 571, -1, 571, 577, -1, - 574, -1, -1, 577, 571, 577, -1, -1, 571, 577, - 584, 571, -1, 571, 571, -1, -1, -1, -1, -1, + 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, @@ -3157,37 +3178,37 @@ namespace isc { namespace dhcp { 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, 154, 155, 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, 4, - 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, - 14, 15, 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, 7, 5, 5, 5, 5, 5, 5, - 7, 7, 7, 7, 5, 124, 325, 8, 3, 100, + 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, + 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, @@ -3229,8 +3250,8 @@ namespace isc { namespace dhcp { 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, 153, 153, - 154, 155, 157, 156, 159, 158, 160, 160, 161, 161, + 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, @@ -3277,8 +3298,8 @@ namespace isc { namespace dhcp { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 0, 6, - 1, 3, 1, 1, 0, 4, 0, 4, 1, 1, - 3, 3, 0, 6, 0, 6, 1, 3, 1, 1, + 1, 3, 1, 1, 0, 4, 0, 4, 0, 4, + 1, 1, 0, 6, 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 3, 3, 3, 1, 0, 6, 1, 3, 1, 1, 1, 1, 1, @@ -3356,108 +3377,108 @@ namespace isc { namespace dhcp { "renew_timer", "rebind_timer", "decline_probation_period", "echo_client_id", "match_client_id", "interfaces_config", "$@17", "interfaces_config_params", "interfaces_config_param", "sub_interfaces4", - "$@18", "interfaces_list", "$@19", "dhcp_socket_type", - "dhcp_socket_type_raw", "dhcp_socket_type_udp", "lease_database", "$@20", - "hosts_database", "$@21", "database_map_params", "database_map_param", - "type", "$@22", "user", "$@23", "password", "$@24", "host", "$@25", - "name", "$@26", "persist", "lfc_interval", "readonly", "duid_id", - "host_reservation_identifiers", "$@27", - "host_reservation_identifiers_list", "host_reservation_identifier", - "hw_address_id", "circuit_id", "client_id", "hooks_libraries", "$@28", - "hooks_libraries_list", "not_empty_hooks_libraries_list", - "hooks_library", "$@29", "sub_hooks_library", "$@30", "hooks_params", - "hooks_param", "library", "$@31", "parameters", "$@32", - "expired_leases_processing", "$@33", "expired_leases_params", - "expired_leases_param", "subnet4_list", "$@34", "subnet4_list_content", - "not_empty_subnet4_list", "subnet4", "$@35", "sub_subnet4", "$@36", - "subnet4_params", "subnet4_param", "subnet", "$@37", - "subnet_4o6_interface", "$@38", "subnet_4o6_interface_id", "$@39", - "subnet_4o6_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", + "$@18", "interfaces_list", "$@19", "dhcp_socket_type", "$@20", + "socket_type", "lease_database", "$@21", "hosts_database", "$@22", + "database_map_params", "database_map_param", "type", "$@23", "user", + "$@24", "password", "$@25", "host", "$@26", "name", "$@27", "persist", + "lfc_interval", "readonly", "duid_id", "host_reservation_identifiers", + "$@28", "host_reservation_identifiers_list", + "host_reservation_identifier", "hw_address_id", "circuit_id", + "client_id", "hooks_libraries", "$@29", "hooks_libraries_list", + "not_empty_hooks_libraries_list", "hooks_library", "$@30", + "sub_hooks_library", "$@31", "hooks_params", "hooks_param", "library", + "$@32", "parameters", "$@33", "expired_leases_processing", "$@34", + "expired_leases_params", "expired_leases_param", "subnet4_list", "$@35", + "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@36", + "sub_subnet4", "$@37", "subnet4_params", "subnet4_param", "subnet", + "$@38", "subnet_4o6_interface", "$@39", "subnet_4o6_interface_id", + "$@40", "subnet_4o6_subnet", "$@41", "interface", "$@42", "interface_id", + "$@43", "client_class", "$@44", "reservation_mode", "$@45", "id", + "rapid_commit", "option_def_list", "$@46", "option_def_list_content", + "not_empty_option_def_list", "option_def_entry", "$@47", + "sub_option_def", "$@48", "option_def_params", "not_empty_option_def_params", "option_def_param", "option_def_name", "code", "option_def_code", "option_def_type", "option_def_record_types", - "$@48", "space", "$@49", "option_def_space", "option_def_encapsulate", - "$@50", "option_def_array", "option_data_list", "$@51", + "$@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", "$@52", "sub_option_data", "$@53", + "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_pool4", "$@57", "pool_params", - "pool_param", "pool_entry", "$@58", "reservations", "$@59", + "pools_list", "$@56", "pools_list_content", "not_empty_pools_list", + "pool_list_entry", "$@57", "sub_pool4", "$@58", "pool_params", + "pool_param", "pool_entry", "$@59", "reservations", "$@60", "reservations_list", "not_empty_reservations_list", "reservation", - "$@60", "sub_reservation", "$@61", "reservation_params", + "$@61", "sub_reservation", "$@62", "reservation_params", "not_empty_reservation_params", "reservation_param", "next_server", - "$@62", "server_hostname", "$@63", "boot_file_name", "$@64", - "ip_address", "$@65", "duid", "$@66", "hw_address", "$@67", - "client_id_value", "$@68", "circuit_id_value", "$@69", "hostname", - "$@70", "reservation_client_classes", "$@71", "relay", "$@72", - "relay_map", "$@73", "client_classes", "$@74", "client_classes_list", - "$@75", "client_class_params", "not_empty_client_class_params", - "client_class_param", "client_class_name", "client_class_test", "$@76", - "server_id", "$@77", "server_id_params", "server_id_param", "htype", - "identifier", "$@78", "time", "enterprise_id", "dhcp4o6_port", - "control_socket", "$@79", "control_socket_params", - "control_socket_param", "socket_type", "$@80", "socket_name", "$@81", - "dhcp_ddns", "$@82", "dhcp6_json_object", "$@83", "dhcpddns_json_object", - "$@84", "logging_object", "$@85", "logging_params", "logging_param", - "loggers", "$@86", "loggers_entries", "logger_entry", "$@87", - "logger_params", "logger_param", "debuglevel", "severity", "$@88", - "output_options_list", "$@89", "output_options_list_content", - "output_entry", "$@90", "output_params", "output_param", "$@91", YY_NULLPTR + "$@63", "server_hostname", "$@64", "boot_file_name", "$@65", + "ip_address", "$@66", "duid", "$@67", "hw_address", "$@68", + "client_id_value", "$@69", "circuit_id_value", "$@70", "hostname", + "$@71", "reservation_client_classes", "$@72", "relay", "$@73", + "relay_map", "$@74", "client_classes", "$@75", "client_classes_list", + "$@76", "client_class_params", "not_empty_client_class_params", + "client_class_param", "client_class_name", "client_class_test", "$@77", + "server_id", "$@78", "server_id_params", "server_id_param", "htype", + "identifier", "$@79", "time", "enterprise_id", "dhcp4o6_port", + "control_socket", "$@80", "control_socket_params", + "control_socket_param", "control_socket_type", "$@81", + "control_socket_name", "$@82", "dhcp_ddns", "$@83", "dhcp6_json_object", + "$@84", "dhcpddns_json_object", "$@85", "logging_object", "$@86", + "logging_params", "logging_param", "loggers", "$@87", "loggers_entries", + "logger_entry", "$@88", "logger_params", "logger_param", "debuglevel", + "severity", "$@89", "output_options_list", "$@90", + "output_options_list_content", "output_entry", "$@91", "output_params", + "output_param", "$@92", YY_NULLPTR }; #if PARSER4_DEBUG const unsigned short int Dhcp4Parser::yyrline_[] = { - 0, 200, 200, 200, 201, 201, 202, 202, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 208, 208, - 209, 209, 217, 218, 219, 220, 221, 222, 223, 226, - 231, 231, 243, 244, 247, 251, 258, 258, 266, 266, - 273, 274, 277, 281, 292, 302, 302, 314, 315, 319, - 320, 321, 322, 323, 326, 326, 343, 343, 351, 352, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 381, 386, 391, 396, 401, 406, 412, 412, - 422, 423, 426, 427, 430, 430, 438, 438, 448, 449, - 452, 457, 462, 462, 472, 472, 482, 483, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 497, 497, 505, - 505, 513, 513, 521, 521, 529, 529, 537, 542, 547, - 552, 557, 557, 567, 568, 571, 572, 573, 574, 577, - 582, 587, 592, 592, 602, 603, 606, 607, 610, 610, - 618, 618, 626, 627, 628, 631, 632, 635, 635, 643, - 643, 651, 651, 661, 662, 668, 676, 676, 689, 690, - 693, 694, 701, 701, 724, 724, 733, 734, 738, 739, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, - 750, 751, 752, 753, 754, 755, 756, 757, 760, 760, - 768, 768, 776, 776, 784, 784, 792, 792, 800, 800, - 808, 808, 816, 816, 824, 829, 838, 838, 850, 851, - 854, 855, 860, 860, 871, 871, 881, 882, 885, 886, - 889, 890, 891, 892, 893, 894, 895, 896, 899, 901, - 906, 908, 910, 910, 918, 918, 926, 928, 928, 936, - 945, 945, 957, 958, 963, 964, 969, 969, 980, 980, - 991, 992, 997, 998, 1003, 1004, 1005, 1006, 1007, 1008, - 1011, 1013, 1013, 1021, 1023, 1025, 1033, 1033, 1045, 1046, - 1049, 1050, 1053, 1053, 1061, 1061, 1069, 1070, 1073, 1074, - 1075, 1078, 1078, 1089, 1089, 1099, 1100, 1103, 1104, 1107, - 1107, 1115, 1115, 1123, 1124, 1127, 1128, 1132, 1133, 1134, - 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1146, - 1146, 1154, 1154, 1162, 1162, 1170, 1170, 1178, 1178, 1186, - 1186, 1194, 1194, 1202, 1202, 1211, 1211, 1219, 1219, 1232, - 1232, 1242, 1242, 1253, 1253, 1263, 1264, 1267, 1267, 1275, - 1276, 1279, 1280, 1283, 1284, 1285, 1286, 1287, 1288, 1289, - 1292, 1294, 1294, 1305, 1305, 1315, 1316, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1328, 1333, 1333, 1341, 1346, 1353, - 1360, 1360, 1370, 1371, 1374, 1375, 1378, 1378, 1386, 1386, - 1396, 1396, 1408, 1408, 1415, 1415, 1427, 1427, 1440, 1441, - 1445, 1449, 1449, 1461, 1462, 1466, 1466, 1474, 1475, 1478, - 1479, 1480, 1481, 1482, 1485, 1489, 1489, 1497, 1497, 1507, - 1508, 1511, 1511, 1519, 1520, 1523, 1523 + 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 }; // Print the state stack on the debug stream. @@ -3492,8 +3513,8 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" // lalr1.cc:1167 } } // isc::dhcp -#line 3496 "dhcp4_parser.cc" // lalr1.cc:1167 -#line 1531 "dhcp4_parser.yy" // lalr1.cc:1168 +#line 3517 "dhcp4_parser.cc" // lalr1.cc:1167 +#line 1529 "dhcp4_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 6ec3447b29..14dbd3df97 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -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 #include @@ -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 # include // std::abort @@ -135,9 +135,9 @@ using namespace std; # endif /* ! defined YYDEBUG */ #endif /* ! defined PARSER4_DEBUG */ -#line 14 "dhcp4_parser.yy" // lalr1.cc:377 +#line 14 "dhcp4_parser.yy" // lalr1.cc:392 namespace isc { namespace dhcp { -#line 141 "dhcp4_parser.h" // lalr1.cc:377 +#line 141 "dhcp4_parser.h" // lalr1.cc:392 @@ -305,6 +305,7 @@ namespace isc { namespace dhcp { union union_type { // value + // socket_type char dummy1[sizeof(ElementPtr)]; // "boolean" @@ -352,8 +353,8 @@ namespace isc { namespace dhcp { TOKEN_INTERFACES_CONFIG = 266, TOKEN_INTERFACES = 267, TOKEN_DHCP_SOCKET_TYPE = 268, - TOKEN_DHCP_SOCKET_TYPE_RAW = 269, - TOKEN_DHCP_SOCKET_TYPE_UDP = 270, + TOKEN_RAW = 269, + TOKEN_UDP = 270, TOKEN_ECHO_CLIENT_ID = 271, TOKEN_MATCH_CLIENT_ID = 272, TOKEN_NEXT_SERVER = 273, @@ -606,11 +607,11 @@ namespace isc { namespace dhcp { static inline symbol_type - make_DHCP_SOCKET_TYPE_RAW (const location_type& l); + make_RAW (const location_type& l); static inline symbol_type - make_DHCP_SOCKET_TYPE_UDP (const location_type& l); + make_UDP (const location_type& l); static inline symbol_type @@ -1262,6 +1263,7 @@ namespace isc { namespace dhcp { switch (other.type_get ()) { case 116: // value + case 155: // socket_type value.copy< ElementPtr > (other.value); break; @@ -1299,6 +1301,7 @@ namespace isc { namespace dhcp { switch (this->type_get ()) { case 116: // value + case 155: // socket_type value.copy< ElementPtr > (v); break; @@ -1395,6 +1398,7 @@ namespace isc { namespace dhcp { switch (yytype) { case 116: // value + case 155: // socket_type value.template destroy< ElementPtr > (); break; @@ -1438,6 +1442,7 @@ namespace isc { namespace dhcp { switch (this->type_get ()) { case 116: // value + case 155: // socket_type value.move< ElementPtr > (s.value); break; @@ -1600,15 +1605,15 @@ namespace isc { namespace dhcp { } Dhcp4Parser::symbol_type - Dhcp4Parser::make_DHCP_SOCKET_TYPE_RAW (const location_type& l) + Dhcp4Parser::make_RAW (const location_type& l) { - return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE_RAW, l); + return symbol_type (token::TOKEN_RAW, l); } Dhcp4Parser::symbol_type - Dhcp4Parser::make_DHCP_SOCKET_TYPE_UDP (const location_type& l) + Dhcp4Parser::make_UDP (const location_type& l) { - return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE_UDP, l); + return symbol_type (token::TOKEN_UDP, l); } Dhcp4Parser::symbol_type @@ -2140,9 +2145,9 @@ namespace isc { namespace dhcp { } -#line 14 "dhcp4_parser.yy" // lalr1.cc:377 +#line 14 "dhcp4_parser.yy" // lalr1.cc:392 } } // isc::dhcp -#line 2146 "dhcp4_parser.h" // lalr1.cc:377 +#line 2151 "dhcp4_parser.h" // lalr1.cc:392 diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index cc8324aee1..c8d473bb73 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -1,4 +1,4 @@ -/* Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC") +/* Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC") This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this @@ -53,8 +53,8 @@ using namespace std; INTERFACES_CONFIG "interfaces-config" INTERFACES "interfaces" DHCP_SOCKET_TYPE "dhcp-socket-type" - DHCP_SOCKET_TYPE_RAW "raw" - DHCP_SOCKET_TYPE_UDP "udp" + RAW "raw" + UDP "udp" ECHO_CLIENT_ID "echo-client-id" MATCH_CLIENT_ID "match-client-id" @@ -187,6 +187,7 @@ using namespace std; %token BOOLEAN "boolean" %type value +%type socket_type %printer { yyoutput << $$; } <*>; @@ -445,19 +446,16 @@ interfaces_list: INTERFACES { ctx.leave(); }; -dhcp_socket_type: dhcp_socket_type_raw - | dhcp_socket_type_udp - ; - -dhcp_socket_type_raw: DHCP_SOCKET_TYPE COLON DHCP_SOCKET_TYPE_RAW { - ElementPtr type(new StringElement("raw", ctx.loc2pos(@3))); - ctx.stack_.back()->set("dhcp-socket-type", type); +dhcp_socket_type: DHCP_SOCKET_TYPE { + ctx.enter(ctx.DHCP_SOCKET_TYPE); +} COLON socket_type { + ctx.stack_.back()->set("dhcp-socket-type", $4); + ctx.leave(); }; -dhcp_socket_type_udp: DHCP_SOCKET_TYPE COLON DHCP_SOCKET_TYPE_UDP { - ElementPtr type(new StringElement("udp", ctx.loc2pos(@3))); - ctx.stack_.back()->set("dhcp-socket-type", type); -}; +socket_type: RAW { $$ = ElementPtr(new StringElement("raw", ctx.loc2pos(@1))); } + | UDP { $$ = ElementPtr(new StringElement("udp", ctx.loc2pos(@1))); } + ; lease_database: LEASE_DATABASE { ElementPtr i(new MapElement(ctx.loc2pos(@1))); @@ -1371,11 +1369,11 @@ control_socket_params: control_socket_param | control_socket_params COMMA control_socket_param ; -control_socket_param: socket_type - | socket_name +control_socket_param: control_socket_type + | control_socket_name ; -socket_type: SOCKET_TYPE { +control_socket_type: SOCKET_TYPE { ctx.enter(ctx.NO_KEYWORD); } COLON STRING { ElementPtr stype(new StringElement($4, ctx.loc2pos(@4))); @@ -1383,7 +1381,7 @@ socket_type: SOCKET_TYPE { ctx.leave(); }; -socket_name: SOCKET_NAME { +control_socket_name: SOCKET_NAME { ctx.enter(ctx.NO_KEYWORD); } COLON STRING { ElementPtr name(new StringElement($4, ctx.loc2pos(@4))); diff --git a/src/bin/dhcp4/parser_context.cc b/src/bin/dhcp4/parser_context.cc index 250f4dbc8f..5951ec15e5 100644 --- a/src/bin/dhcp4/parser_context.cc +++ b/src/bin/dhcp4/parser_context.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -127,6 +127,8 @@ Parser4Context::contextName() return ("Logging"); case INTERFACES_CONFIG: return ("interfaces-config"); + case DHCP_SOCKET_TYPE: + return ("dhcp-socket-type"); case LEASE_DATABASE: return ("lease-database"); case HOSTS_DATABASE: diff --git a/src/bin/dhcp4/parser_context.h b/src/bin/dhcp4/parser_context.h index 4c8c7d1631..1e6fcf7bae 100644 --- a/src/bin/dhcp4/parser_context.h +++ b/src/bin/dhcp4/parser_context.h @@ -1,4 +1,4 @@ -// Copyright (C) 2015-2016 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2015-2017 Internet Systems Consortium, Inc. ("ISC") // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this @@ -193,6 +193,9 @@ public: /// Used while parsing Dhcp4/interfaces structures. INTERFACES_CONFIG, + /// Used while parsing Dhcp4/interfaces/dhcp-socket-type structures. + DHCP_SOCKET_TYPE, + /// Used while parsing Dhcp4/lease-database structures. LEASE_DATABASE,