39#define yylex parser6_lex
47#line 34 "dhcp6_parser.yy"
52#if defined(__GNUC__) || defined(__clang__)
53#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
56#line 57 "dhcp6_parser.cc"
60# if defined YYENABLE_NLS && YYENABLE_NLS
63# define YY_(msgid) dgettext ("bison-runtime", msgid)
67# define YY_(msgid) msgid
74# if defined __GNUC__ && !defined __EXCEPTIONS
75# define YY_EXCEPTIONS 0
77# define YY_EXCEPTIONS 1
81#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
86# ifndef YYLLOC_DEFAULT
87# define YYLLOC_DEFAULT(Current, Rhs, N) \
91 (Current).begin = YYRHSLOC (Rhs, 1).begin; \
92 (Current).end = YYRHSLOC (Rhs, N).end; \
96 (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
106# define YYCDEBUG if (yydebug_) (*yycdebug_)
108# define YY_SYMBOL_PRINT(Title, Symbol) \
112 *yycdebug_ << Title << ' '; \
113 yy_print_ (*yycdebug_, Symbol); \
114 *yycdebug_ << '\n'; \
118# define YY_REDUCE_PRINT(Rule) \
121 yy_reduce_print_ (Rule); \
124# define YY_STACK_PRINT() \
127 yy_stack_print_ (); \
132# define YYCDEBUG if (false) std::cerr
133# define YY_SYMBOL_PRINT(Title, Symbol) YY_USE (Symbol)
134# define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
135# define YY_STACK_PRINT() static_cast<void> (0)
139#define yyerrok (yyerrstatus_ = 0)
140#define yyclearin (yyla.clear ())
142#define YYACCEPT goto yyacceptlab
143#define YYABORT goto yyabortlab
144#define YYERROR goto yyerrorlab
145#define YYRECOVERING() (!!yyerrstatus_)
147#line 14 "dhcp6_parser.yy"
148namespace isc {
namespace dhcp {
149#line 150 "dhcp6_parser.cc"
155 yycdebug_ (&std::cerr),
176 : state (empty_state)
179 Dhcp6Parser::by_state::by_state (
const by_state& that)
YY_NOEXCEPT
190 Dhcp6Parser::by_state::move (by_state& that)
196 Dhcp6Parser::by_state::by_state (state_type s)
YY_NOEXCEPT
203 if (state == empty_state)
209 Dhcp6Parser::stack_symbol_type::stack_symbol_type ()
212 Dhcp6Parser::stack_symbol_type::stack_symbol_type (
YY_RVREF (stack_symbol_type) that)
215 switch (that.kind ())
230 value.YY_MOVE_OR_COPY<
bool > (
YY_MOVE (that.value));
234 value.YY_MOVE_OR_COPY<
double > (
YY_MOVE (that.value));
238 value.YY_MOVE_OR_COPY< int64_t > (
YY_MOVE (that.value));
242 value.YY_MOVE_OR_COPY< std::string > (
YY_MOVE (that.value));
249#if 201103L <= YY_CPLUSPLUS
251 that.state = empty_state;
255 Dhcp6Parser::stack_symbol_type::stack_symbol_type (state_type s,
YY_MOVE_REF (symbol_type) that)
256 : super_type (s,
YY_MOVE (that.location))
258 switch (that.kind ())
273 value.move<
bool > (
YY_MOVE (that.value));
277 value.move<
double > (
YY_MOVE (that.value));
281 value.move< int64_t > (
YY_MOVE (that.value));
285 value.move< std::string > (
YY_MOVE (that.value));
296#if YY_CPLUSPLUS < 201103L
297 Dhcp6Parser::stack_symbol_type&
298 Dhcp6Parser::stack_symbol_type::operator= (
const stack_symbol_type& that)
301 switch (that.kind ())
316 value.copy<
bool > (that.value);
320 value.copy<
double > (that.value);
324 value.copy< int64_t > (that.value);
328 value.copy< std::string > (that.value);
335 location = that.location;
339 Dhcp6Parser::stack_symbol_type&
340 Dhcp6Parser::stack_symbol_type::operator= (stack_symbol_type& that)
343 switch (that.kind ())
358 value.move<
bool > (that.value);
362 value.move<
double > (that.value);
366 value.move< int64_t > (that.value);
370 value.move< std::string > (that.value);
377 location = that.location;
379 that.state = empty_state;
384 template <
typename Base>
386 Dhcp6Parser::yy_destroy_ (
const char* yymsg, basic_symbol<Base>& yysym)
const
393 template <
typename Base>
395 Dhcp6Parser::yy_print_ (std::ostream& yyo,
const basic_symbol<Base>& yysym)
const
397 std::ostream& yyoutput = yyo;
400 yyo <<
"empty symbol";
404 yyo << (yykind <
YYNTOKENS ?
"token" :
"nterm")
405 <<
' ' << yysym.name () <<
" ("
406 << yysym.location <<
": ";
410#line 314 "dhcp6_parser.yy"
411 { yyoutput << yysym.value.template as < std::string > (); }
412#line 413 "dhcp6_parser.cc"
416#line 314 "dhcp6_parser.yy"
417 { yyoutput << yysym.value.template as < int64_t > (); }
418#line 419 "dhcp6_parser.cc"
422#line 314 "dhcp6_parser.yy"
423 { yyoutput << yysym.value.template as < double > (); }
424#line 425 "dhcp6_parser.cc"
428#line 314 "dhcp6_parser.yy"
429 { yyoutput << yysym.value.template as < bool > (); }
430#line 431 "dhcp6_parser.cc"
434#line 314 "dhcp6_parser.yy"
435 { yyoutput << yysym.value.template as < ElementPtr > (); }
436#line 437 "dhcp6_parser.cc"
440#line 314 "dhcp6_parser.yy"
441 { yyoutput << yysym.value.template as < ElementPtr > (); }
442#line 443 "dhcp6_parser.cc"
446#line 314 "dhcp6_parser.yy"
447 { yyoutput << yysym.value.template as < ElementPtr > (); }
448#line 449 "dhcp6_parser.cc"
452#line 314 "dhcp6_parser.yy"
453 { yyoutput << yysym.value.template as < ElementPtr > (); }
454#line 455 "dhcp6_parser.cc"
458#line 314 "dhcp6_parser.yy"
459 { yyoutput << yysym.value.template as < ElementPtr > (); }
460#line 461 "dhcp6_parser.cc"
464#line 314 "dhcp6_parser.yy"
465 { yyoutput << yysym.value.template as < ElementPtr > (); }
466#line 467 "dhcp6_parser.cc"
470#line 314 "dhcp6_parser.yy"
471 { yyoutput << yysym.value.template as < ElementPtr > (); }
472#line 473 "dhcp6_parser.cc"
476#line 314 "dhcp6_parser.yy"
477 { yyoutput << yysym.value.template as < ElementPtr > (); }
478#line 479 "dhcp6_parser.cc"
482#line 314 "dhcp6_parser.yy"
483 { yyoutput << yysym.value.template as < ElementPtr > (); }
484#line 485 "dhcp6_parser.cc"
496 Dhcp6Parser::yypush_ (
const char* m,
YY_MOVE_REF (stack_symbol_type) sym)
504 Dhcp6Parser::yypush_ (
const char* m, state_type s,
YY_MOVE_REF (symbol_type) sym)
506#if 201103L <= YY_CPLUSPLUS
507 yypush_ (m, stack_symbol_type (s, std::move (sym)));
509 stack_symbol_type ss (s, sym);
547 Dhcp6Parser::state_type
548 Dhcp6Parser::yy_lr_goto_state_ (state_type yystate,
int yysym)
550 int yyr = yypgoto_[yysym -
YYNTOKENS] + yystate;
551 if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
552 return yytable_[yyr];
558 Dhcp6Parser::yy_pact_value_is_default_ (
int yyvalue)
YY_NOEXCEPT
560 return yyvalue == yypact_ninf_;
564 Dhcp6Parser::yy_table_value_is_error_ (
int yyvalue)
YY_NOEXCEPT
566 return yyvalue == yytable_ninf_;
584 int yyerrstatus_ = 0;
590 stack_symbol_type yyerror_range[3];
607 yypush_ (YY_NULLPTR, 0,
YY_MOVE (yyla));
613 YYCDEBUG <<
"Entering state " << int (yystack_[0].state) <<
'\n';
617 if (yystack_[0].state == yyfinal_)
628 yyn = yypact_[+yystack_[0].state];
629 if (yy_pact_value_is_default_ (yyn))
641 yyla.
move (yylookahead);
646 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
667 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
676 if (yy_table_value_is_error_ (yyn))
687 yypush_ (
"Shifting", state_type (yyn),
YY_MOVE (yyla));
695 yyn = yydefact_[+yystack_[0].state];
707 stack_symbol_type yylhs;
708 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
727 yylhs.value.emplace<
bool > ();
731 yylhs.value.emplace<
double > ();
735 yylhs.value.emplace< int64_t > ();
739 yylhs.value.emplace< std::string > ();
751 yyerror_range[1].location = yylhs.location;
763#line 323 "dhcp6_parser.yy"
765#line 766 "dhcp6_parser.cc"
769#line 324 "dhcp6_parser.yy"
771#line 772 "dhcp6_parser.cc"
775#line 325 "dhcp6_parser.yy"
777#line 778 "dhcp6_parser.cc"
781#line 326 "dhcp6_parser.yy"
783#line 784 "dhcp6_parser.cc"
787#line 327 "dhcp6_parser.yy"
789#line 790 "dhcp6_parser.cc"
793#line 328 "dhcp6_parser.yy"
795#line 796 "dhcp6_parser.cc"
799#line 329 "dhcp6_parser.yy"
801#line 802 "dhcp6_parser.cc"
805#line 330 "dhcp6_parser.yy"
807#line 808 "dhcp6_parser.cc"
811#line 331 "dhcp6_parser.yy"
813#line 814 "dhcp6_parser.cc"
817#line 332 "dhcp6_parser.yy"
819#line 820 "dhcp6_parser.cc"
823#line 333 "dhcp6_parser.yy"
825#line 826 "dhcp6_parser.cc"
829#line 334 "dhcp6_parser.yy"
831#line 832 "dhcp6_parser.cc"
835#line 335 "dhcp6_parser.yy"
837#line 838 "dhcp6_parser.cc"
841#line 336 "dhcp6_parser.yy"
843#line 844 "dhcp6_parser.cc"
847#line 344 "dhcp6_parser.yy"
849#line 850 "dhcp6_parser.cc"
853#line 345 "dhcp6_parser.yy"
855#line 856 "dhcp6_parser.cc"
859#line 346 "dhcp6_parser.yy"
861#line 862 "dhcp6_parser.cc"
865#line 347 "dhcp6_parser.yy"
867#line 868 "dhcp6_parser.cc"
871#line 348 "dhcp6_parser.yy"
873#line 874 "dhcp6_parser.cc"
877#line 349 "dhcp6_parser.yy"
879#line 880 "dhcp6_parser.cc"
883#line 350 "dhcp6_parser.yy"
885#line 886 "dhcp6_parser.cc"
889#line 353 "dhcp6_parser.yy"
894#line 895 "dhcp6_parser.cc"
898#line 358 "dhcp6_parser.yy"
905#line 906 "dhcp6_parser.cc"
909#line 363 "dhcp6_parser.yy"
915#line 916 "dhcp6_parser.cc"
919#line 369 "dhcp6_parser.yy"
921#line 922 "dhcp6_parser.cc"
925#line 376 "dhcp6_parser.yy"
928 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
929 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
931#line 932 "dhcp6_parser.cc"
935#line 381 "dhcp6_parser.yy"
939 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
940 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
942#line 943 "dhcp6_parser.cc"
946#line 387 "dhcp6_parser.yy"
950#line 951 "dhcp6_parser.cc"
954#line 392 "dhcp6_parser.yy"
959#line 960 "dhcp6_parser.cc"
963#line 395 "dhcp6_parser.yy"
967#line 968 "dhcp6_parser.cc"
971#line 403 "dhcp6_parser.yy"
976#line 977 "dhcp6_parser.cc"
980#line 407 "dhcp6_parser.yy"
985#line 986 "dhcp6_parser.cc"
989#line 411 "dhcp6_parser.yy"
993#line 994 "dhcp6_parser.cc"
997#line 417 "dhcp6_parser.yy"
1001#line 1002 "dhcp6_parser.cc"
1005#line 419 "dhcp6_parser.yy"
1010#line 1011 "dhcp6_parser.cc"
1014#line 428 "dhcp6_parser.yy"
1017 ctx.
stack_.back()->add(s);
1019#line 1020 "dhcp6_parser.cc"
1023#line 432 "dhcp6_parser.yy"
1026 ctx.
stack_.back()->add(s);
1028#line 1029 "dhcp6_parser.cc"
1032#line 436 "dhcp6_parser.yy"
1036#line 1037 "dhcp6_parser.cc"
1040#line 446 "dhcp6_parser.yy"
1043 const std::string& keyword = yystack_[1].value.as < std::string > ();
1044 error(yystack_[1].location,
1045 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
1047#line 1048 "dhcp6_parser.cc"
1051#line 455 "dhcp6_parser.yy"
1058#line 1059 "dhcp6_parser.cc"
1062#line 460 "dhcp6_parser.yy"
1071#line 1072 "dhcp6_parser.cc"
1075#line 470 "dhcp6_parser.yy"
1082 ctx.
stack_.back()->set(
"Dhcp6", m);
1086#line 1087 "dhcp6_parser.cc"
1090#line 479 "dhcp6_parser.yy"
1096#line 1097 "dhcp6_parser.cc"
1100#line 487 "dhcp6_parser.yy"
1104#line 1105 "dhcp6_parser.cc"
1108#line 493 "dhcp6_parser.yy"
1114#line 1115 "dhcp6_parser.cc"
1118#line 497 "dhcp6_parser.yy"
1123#line 1124 "dhcp6_parser.cc"
1127#line 504 "dhcp6_parser.yy"
1131#line 1132 "dhcp6_parser.cc"
1135#line 582 "dhcp6_parser.yy"
1137 ctx.
unique(
"data-directory", ctx.
loc2pos(yystack_[0].location));
1140#line 1141 "dhcp6_parser.cc"
1144#line 585 "dhcp6_parser.yy"
1147 ctx.
stack_.back()->set(
"data-directory", datadir);
1150#line 1151 "dhcp6_parser.cc"
1154#line 591 "dhcp6_parser.yy"
1156 ctx.
unique(
"preferred-lifetime", ctx.
loc2pos(yystack_[2].location));
1158 ctx.
stack_.back()->set(
"preferred-lifetime", prf);
1160#line 1161 "dhcp6_parser.cc"
1164#line 597 "dhcp6_parser.yy"
1166 ctx.
unique(
"min-preferred-lifetime", ctx.
loc2pos(yystack_[2].location));
1168 ctx.
stack_.back()->set(
"min-preferred-lifetime", prf);
1170#line 1171 "dhcp6_parser.cc"
1174#line 603 "dhcp6_parser.yy"
1176 ctx.
unique(
"max-preferred-lifetime", ctx.
loc2pos(yystack_[2].location));
1178 ctx.
stack_.back()->set(
"max-preferred-lifetime", prf);
1180#line 1181 "dhcp6_parser.cc"
1184#line 609 "dhcp6_parser.yy"
1186 ctx.
unique(
"valid-lifetime", ctx.
loc2pos(yystack_[2].location));
1188 ctx.
stack_.back()->set(
"valid-lifetime", prf);
1190#line 1191 "dhcp6_parser.cc"
1194#line 615 "dhcp6_parser.yy"
1196 ctx.
unique(
"min-valid-lifetime", ctx.
loc2pos(yystack_[2].location));
1198 ctx.
stack_.back()->set(
"min-valid-lifetime", prf);
1200#line 1201 "dhcp6_parser.cc"
1204#line 621 "dhcp6_parser.yy"
1206 ctx.
unique(
"max-valid-lifetime", ctx.
loc2pos(yystack_[2].location));
1208 ctx.
stack_.back()->set(
"max-valid-lifetime", prf);
1210#line 1211 "dhcp6_parser.cc"
1214#line 627 "dhcp6_parser.yy"
1216 ctx.
unique(
"renew-timer", ctx.
loc2pos(yystack_[2].location));
1218 ctx.
stack_.back()->set(
"renew-timer", prf);
1220#line 1221 "dhcp6_parser.cc"
1224#line 633 "dhcp6_parser.yy"
1226 ctx.
unique(
"rebind-timer", ctx.
loc2pos(yystack_[2].location));
1228 ctx.
stack_.back()->set(
"rebind-timer", prf);
1230#line 1231 "dhcp6_parser.cc"
1234#line 639 "dhcp6_parser.yy"
1236 ctx.
unique(
"calculate-tee-times", ctx.
loc2pos(yystack_[2].location));
1238 ctx.
stack_.back()->set(
"calculate-tee-times", ctt);
1240#line 1241 "dhcp6_parser.cc"
1244#line 645 "dhcp6_parser.yy"
1246 ctx.
unique(
"t1-percent", ctx.
loc2pos(yystack_[2].location));
1248 ctx.
stack_.back()->set(
"t1-percent", t1);
1250#line 1251 "dhcp6_parser.cc"
1254#line 651 "dhcp6_parser.yy"
1256 ctx.
unique(
"t2-percent", ctx.
loc2pos(yystack_[2].location));
1258 ctx.
stack_.back()->set(
"t2-percent", t2);
1260#line 1261 "dhcp6_parser.cc"
1264#line 657 "dhcp6_parser.yy"
1266 ctx.
unique(
"cache-threshold", ctx.
loc2pos(yystack_[2].location));
1268 ctx.
stack_.back()->set(
"cache-threshold", ct);
1270#line 1271 "dhcp6_parser.cc"
1274#line 663 "dhcp6_parser.yy"
1276 ctx.
unique(
"cache-max-age", ctx.
loc2pos(yystack_[2].location));
1278 ctx.
stack_.back()->set(
"cache-max-age", cm);
1280#line 1281 "dhcp6_parser.cc"
1284#line 669 "dhcp6_parser.yy"
1286 ctx.
unique(
"decline-probation-period", ctx.
loc2pos(yystack_[2].location));
1288 ctx.
stack_.back()->set(
"decline-probation-period", dpp);
1290#line 1291 "dhcp6_parser.cc"
1294#line 675 "dhcp6_parser.yy"
1296 ctx.
unique(
"ddns-send-updates", ctx.
loc2pos(yystack_[2].location));
1298 ctx.
stack_.back()->set(
"ddns-send-updates", b);
1300#line 1301 "dhcp6_parser.cc"
1304#line 681 "dhcp6_parser.yy"
1306 ctx.
unique(
"ddns-override-no-update", ctx.
loc2pos(yystack_[2].location));
1308 ctx.
stack_.back()->set(
"ddns-override-no-update", b);
1310#line 1311 "dhcp6_parser.cc"
1314#line 687 "dhcp6_parser.yy"
1316 ctx.
unique(
"ddns-override-client-update", ctx.
loc2pos(yystack_[2].location));
1318 ctx.
stack_.back()->set(
"ddns-override-client-update", b);
1320#line 1321 "dhcp6_parser.cc"
1324#line 693 "dhcp6_parser.yy"
1326 ctx.
unique(
"ddns-replace-client-name", ctx.
loc2pos(yystack_[0].location));
1329#line 1330 "dhcp6_parser.cc"
1333#line 696 "dhcp6_parser.yy"
1335 ctx.
stack_.back()->set(
"ddns-replace-client-name", yystack_[0].value.as <
ElementPtr > ());
1338#line 1339 "dhcp6_parser.cc"
1342#line 702 "dhcp6_parser.yy"
1346#line 1347 "dhcp6_parser.cc"
1350#line 705 "dhcp6_parser.yy"
1354#line 1355 "dhcp6_parser.cc"
1358#line 708 "dhcp6_parser.yy"
1362#line 1363 "dhcp6_parser.cc"
1366#line 711 "dhcp6_parser.yy"
1370#line 1371 "dhcp6_parser.cc"
1374#line 714 "dhcp6_parser.yy"
1376 error(yystack_[0].location,
"boolean values for the replace-client-name are "
1377 "no longer supported");
1379#line 1380 "dhcp6_parser.cc"
1383#line 720 "dhcp6_parser.yy"
1385 ctx.
unique(
"ddns-generated-prefix", ctx.
loc2pos(yystack_[0].location));
1388#line 1389 "dhcp6_parser.cc"
1392#line 723 "dhcp6_parser.yy"
1395 ctx.
stack_.back()->set(
"ddns-generated-prefix", s);
1398#line 1399 "dhcp6_parser.cc"
1402#line 729 "dhcp6_parser.yy"
1404 ctx.
unique(
"ddns-qualifying-suffix", ctx.
loc2pos(yystack_[0].location));
1407#line 1408 "dhcp6_parser.cc"
1411#line 732 "dhcp6_parser.yy"
1414 ctx.
stack_.back()->set(
"ddns-qualifying-suffix", s);
1417#line 1418 "dhcp6_parser.cc"
1421#line 738 "dhcp6_parser.yy"
1423 ctx.
unique(
"ddns-update-on-renew", ctx.
loc2pos(yystack_[2].location));
1425 ctx.
stack_.back()->set(
"ddns-update-on-renew", b);
1427#line 1428 "dhcp6_parser.cc"
1431#line 747 "dhcp6_parser.yy"
1433 ctx.
unique(
"ddns-use-conflict-resolution", ctx.
loc2pos(yystack_[2].location));
1435 ctx.
warning(yystack_[1].location,
"ddns-use-conflict-resolution is deprecated. "
1436 "Substituting ddns-conflict-resolution-mode");
1438 :
"no-check-with-dhcid"));
1439 ctx.
stack_.back()->set(
"ddns-conflict-resolution-mode", mode);
1441#line 1442 "dhcp6_parser.cc"
1445#line 757 "dhcp6_parser.yy"
1447 ctx.
unique(
"ddns-conflict-resolution-mode", ctx.
loc2pos(yystack_[0].location));
1450#line 1451 "dhcp6_parser.cc"
1454#line 760 "dhcp6_parser.yy"
1456 ctx.
stack_.back()->set(
"ddns-conflict-resolution-mode", yystack_[0].value.as <
ElementPtr > ());
1459#line 1460 "dhcp6_parser.cc"
1463#line 766 "dhcp6_parser.yy"
1467#line 1468 "dhcp6_parser.cc"
1471#line 769 "dhcp6_parser.yy"
1475#line 1476 "dhcp6_parser.cc"
1479#line 772 "dhcp6_parser.yy"
1483#line 1484 "dhcp6_parser.cc"
1487#line 775 "dhcp6_parser.yy"
1491#line 1492 "dhcp6_parser.cc"
1495#line 780 "dhcp6_parser.yy"
1497 ctx.
unique(
"ddns-ttl-percent", ctx.
loc2pos(yystack_[2].location));
1499 ctx.
stack_.back()->set(
"ddns-ttl-percent", ttl);
1501#line 1502 "dhcp6_parser.cc"
1505#line 786 "dhcp6_parser.yy"
1507 ctx.
unique(
"hostname-char-set", ctx.
loc2pos(yystack_[0].location));
1510#line 1511 "dhcp6_parser.cc"
1514#line 789 "dhcp6_parser.yy"
1517 ctx.
stack_.back()->set(
"hostname-char-set", s);
1520#line 1521 "dhcp6_parser.cc"
1524#line 795 "dhcp6_parser.yy"
1526 ctx.
unique(
"hostname-char-replacement", ctx.
loc2pos(yystack_[0].location));
1529#line 1530 "dhcp6_parser.cc"
1533#line 798 "dhcp6_parser.yy"
1536 ctx.
stack_.back()->set(
"hostname-char-replacement", s);
1539#line 1540 "dhcp6_parser.cc"
1543#line 804 "dhcp6_parser.yy"
1545 ctx.
unique(
"store-extended-info", ctx.
loc2pos(yystack_[2].location));
1547 ctx.
stack_.back()->set(
"store-extended-info", b);
1549#line 1550 "dhcp6_parser.cc"
1553#line 810 "dhcp6_parser.yy"
1555 ctx.
unique(
"statistic-default-sample-count", ctx.
loc2pos(yystack_[2].location));
1557 ctx.
stack_.back()->set(
"statistic-default-sample-count", count);
1559#line 1560 "dhcp6_parser.cc"
1563#line 816 "dhcp6_parser.yy"
1565 ctx.
unique(
"statistic-default-sample-age", ctx.
loc2pos(yystack_[2].location));
1567 ctx.
stack_.back()->set(
"statistic-default-sample-age", age);
1569#line 1570 "dhcp6_parser.cc"
1573#line 822 "dhcp6_parser.yy"
1575 ctx.
unique(
"server-tag", ctx.
loc2pos(yystack_[0].location));
1578#line 1579 "dhcp6_parser.cc"
1582#line 825 "dhcp6_parser.yy"
1585 ctx.
stack_.back()->set(
"server-tag", stag);
1588#line 1589 "dhcp6_parser.cc"
1592#line 831 "dhcp6_parser.yy"
1594 ctx.
unique(
"parked-packet-limit", ctx.
loc2pos(yystack_[2].location));
1596 ctx.
stack_.back()->set(
"parked-packet-limit", ppl);
1598#line 1599 "dhcp6_parser.cc"
1602#line 837 "dhcp6_parser.yy"
1607#line 1608 "dhcp6_parser.cc"
1611#line 840 "dhcp6_parser.yy"
1614 ctx.
stack_.back()->set(
"allocator", al);
1617#line 1618 "dhcp6_parser.cc"
1621#line 846 "dhcp6_parser.yy"
1623 ctx.
unique(
"pd-allocator", ctx.
loc2pos(yystack_[0].location));
1626#line 1627 "dhcp6_parser.cc"
1630#line 849 "dhcp6_parser.yy"
1633 ctx.
stack_.back()->set(
"pd-allocator", al);
1636#line 1637 "dhcp6_parser.cc"
1640#line 855 "dhcp6_parser.yy"
1642 ctx.
unique(
"early-global-reservations-lookup", ctx.
loc2pos(yystack_[2].location));
1644 ctx.
stack_.back()->set(
"early-global-reservations-lookup", early);
1646#line 1647 "dhcp6_parser.cc"
1650#line 861 "dhcp6_parser.yy"
1652 ctx.
unique(
"ip-reservations-unique", ctx.
loc2pos(yystack_[2].location));
1654 ctx.
stack_.back()->set(
"ip-reservations-unique", unique);
1656#line 1657 "dhcp6_parser.cc"
1660#line 867 "dhcp6_parser.yy"
1662 ctx.
unique(
"reservations-lookup-first", ctx.
loc2pos(yystack_[2].location));
1664 ctx.
stack_.back()->set(
"reservations-lookup-first", first);
1666#line 1667 "dhcp6_parser.cc"
1670#line 873 "dhcp6_parser.yy"
1672 ctx.
unique(
"interfaces-config", ctx.
loc2pos(yystack_[0].location));
1674 ctx.
stack_.back()->set(
"interfaces-config", i);
1678#line 1679 "dhcp6_parser.cc"
1682#line 879 "dhcp6_parser.yy"
1688#line 1689 "dhcp6_parser.cc"
1692#line 885 "dhcp6_parser.yy"
1698#line 1699 "dhcp6_parser.cc"
1702#line 889 "dhcp6_parser.yy"
1707#line 1708 "dhcp6_parser.cc"
1711#line 896 "dhcp6_parser.yy"
1715#line 1716 "dhcp6_parser.cc"
1719#line 911 "dhcp6_parser.yy"
1721 ctx.
unique(
"interfaces", ctx.
loc2pos(yystack_[0].location));
1723 ctx.
stack_.back()->set(
"interfaces", l);
1727#line 1728 "dhcp6_parser.cc"
1731#line 917 "dhcp6_parser.yy"
1736#line 1737 "dhcp6_parser.cc"
1740#line 922 "dhcp6_parser.yy"
1744 ctx.
stack_.back()->set(
"re-detect", b);
1746#line 1747 "dhcp6_parser.cc"
1750#line 928 "dhcp6_parser.yy"
1752 ctx.
unique(
"service-sockets-require-all", ctx.
loc2pos(yystack_[2].location));
1754 ctx.
stack_.back()->set(
"service-sockets-require-all", b);
1756#line 1757 "dhcp6_parser.cc"
1760#line 934 "dhcp6_parser.yy"
1762 ctx.
unique(
"service-sockets-retry-wait-time", ctx.
loc2pos(yystack_[2].location));
1764 ctx.
stack_.back()->set(
"service-sockets-retry-wait-time", n);
1766#line 1767 "dhcp6_parser.cc"
1770#line 940 "dhcp6_parser.yy"
1772 ctx.
unique(
"service-sockets-max-retries", ctx.
loc2pos(yystack_[2].location));
1774 ctx.
stack_.back()->set(
"service-sockets-max-retries", n);
1776#line 1777 "dhcp6_parser.cc"
1780#line 946 "dhcp6_parser.yy"
1782 ctx.
unique(
"lease-database", ctx.
loc2pos(yystack_[0].location));
1784 ctx.
stack_.back()->set(
"lease-database", i);
1788#line 1789 "dhcp6_parser.cc"
1792#line 952 "dhcp6_parser.yy"
1799#line 1800 "dhcp6_parser.cc"
1803#line 959 "dhcp6_parser.yy"
1805 ctx.
unique(
"hosts-database", ctx.
loc2pos(yystack_[0].location));
1807 ctx.
stack_.back()->set(
"hosts-database", i);
1811#line 1812 "dhcp6_parser.cc"
1815#line 965 "dhcp6_parser.yy"
1822#line 1823 "dhcp6_parser.cc"
1826#line 972 "dhcp6_parser.yy"
1828 ctx.
unique(
"hosts-databases", ctx.
loc2pos(yystack_[0].location));
1830 ctx.
stack_.back()->set(
"hosts-databases", l);
1834#line 1835 "dhcp6_parser.cc"
1838#line 978 "dhcp6_parser.yy"
1843#line 1844 "dhcp6_parser.cc"
1847#line 989 "dhcp6_parser.yy"
1851#line 1852 "dhcp6_parser.cc"
1855#line 994 "dhcp6_parser.yy"
1858 ctx.
stack_.back()->add(m);
1861#line 1862 "dhcp6_parser.cc"
1865#line 998 "dhcp6_parser.yy"
1871#line 1872 "dhcp6_parser.cc"
1875#line 1006 "dhcp6_parser.yy"
1879#line 1880 "dhcp6_parser.cc"
1883#line 1035 "dhcp6_parser.yy"
1888#line 1889 "dhcp6_parser.cc"
1892#line 1038 "dhcp6_parser.yy"
1897#line 1898 "dhcp6_parser.cc"
1901#line 1043 "dhcp6_parser.yy"
1903#line 1904 "dhcp6_parser.cc"
1907#line 1044 "dhcp6_parser.yy"
1909#line 1910 "dhcp6_parser.cc"
1913#line 1045 "dhcp6_parser.yy"
1915#line 1916 "dhcp6_parser.cc"
1919#line 1048 "dhcp6_parser.yy"
1924#line 1925 "dhcp6_parser.cc"
1928#line 1051 "dhcp6_parser.yy"
1931 ctx.
stack_.back()->set(
"user", user);
1934#line 1935 "dhcp6_parser.cc"
1938#line 1057 "dhcp6_parser.yy"
1943#line 1944 "dhcp6_parser.cc"
1947#line 1060 "dhcp6_parser.yy"
1950 ctx.
stack_.back()->set(
"password", pwd);
1953#line 1954 "dhcp6_parser.cc"
1957#line 1066 "dhcp6_parser.yy"
1962#line 1963 "dhcp6_parser.cc"
1966#line 1069 "dhcp6_parser.yy"
1969 ctx.
stack_.back()->set(
"host", h);
1972#line 1973 "dhcp6_parser.cc"
1976#line 1075 "dhcp6_parser.yy"
1980 ctx.
stack_.back()->set(
"port", p);
1982#line 1983 "dhcp6_parser.cc"
1986#line 1081 "dhcp6_parser.yy"
1991#line 1992 "dhcp6_parser.cc"
1995#line 1084 "dhcp6_parser.yy"
1998 ctx.
stack_.back()->set(
"name", name);
2001#line 2002 "dhcp6_parser.cc"
2005#line 1090 "dhcp6_parser.yy"
2009 ctx.
stack_.back()->set(
"persist", n);
2011#line 2012 "dhcp6_parser.cc"
2015#line 1096 "dhcp6_parser.yy"
2017 ctx.
unique(
"lfc-interval", ctx.
loc2pos(yystack_[2].location));
2019 ctx.
stack_.back()->set(
"lfc-interval", n);
2021#line 2022 "dhcp6_parser.cc"
2025#line 1102 "dhcp6_parser.yy"
2029 ctx.
stack_.back()->set(
"readonly", n);
2031#line 2032 "dhcp6_parser.cc"
2035#line 1108 "dhcp6_parser.yy"
2037 ctx.
unique(
"connect-timeout", ctx.
loc2pos(yystack_[2].location));
2039 ctx.
stack_.back()->set(
"connect-timeout", n);
2041#line 2042 "dhcp6_parser.cc"
2045#line 1114 "dhcp6_parser.yy"
2047 ctx.
unique(
"read-timeout", ctx.
loc2pos(yystack_[2].location));
2049 ctx.
stack_.back()->set(
"read-timeout", n);
2051#line 2052 "dhcp6_parser.cc"
2055#line 1120 "dhcp6_parser.yy"
2057 ctx.
unique(
"write-timeout", ctx.
loc2pos(yystack_[2].location));
2059 ctx.
stack_.back()->set(
"write-timeout", n);
2061#line 2062 "dhcp6_parser.cc"
2065#line 1126 "dhcp6_parser.yy"
2067 ctx.
unique(
"tcp-user-timeout", ctx.
loc2pos(yystack_[2].location));
2069 ctx.
stack_.back()->set(
"tcp-user-timeout", n);
2071#line 2072 "dhcp6_parser.cc"
2075#line 1133 "dhcp6_parser.yy"
2077 ctx.
unique(
"reconnect-wait-time", ctx.
loc2pos(yystack_[2].location));
2079 ctx.
stack_.back()->set(
"reconnect-wait-time", n);
2081#line 2082 "dhcp6_parser.cc"
2085#line 1139 "dhcp6_parser.yy"
2090#line 2091 "dhcp6_parser.cc"
2094#line 1142 "dhcp6_parser.yy"
2099#line 2100 "dhcp6_parser.cc"
2103#line 1147 "dhcp6_parser.yy"
2105#line 2106 "dhcp6_parser.cc"
2109#line 1148 "dhcp6_parser.yy"
2111#line 2112 "dhcp6_parser.cc"
2115#line 1149 "dhcp6_parser.yy"
2117#line 2118 "dhcp6_parser.cc"
2121#line 1152 "dhcp6_parser.yy"
2123 ctx.
unique(
"max-row-errors", ctx.
loc2pos(yystack_[2].location));
2125 ctx.
stack_.back()->set(
"max-row-errors", n);
2127#line 2128 "dhcp6_parser.cc"
2131#line 1158 "dhcp6_parser.yy"
2133 ctx.
unique(
"max-reconnect-tries", ctx.
loc2pos(yystack_[2].location));
2135 ctx.
stack_.back()->set(
"max-reconnect-tries", n);
2137#line 2138 "dhcp6_parser.cc"
2141#line 1164 "dhcp6_parser.yy"
2143 ctx.
unique(
"trust-anchor", ctx.
loc2pos(yystack_[0].location));
2146#line 2147 "dhcp6_parser.cc"
2150#line 1167 "dhcp6_parser.yy"
2153 ctx.
stack_.back()->set(
"trust-anchor", ca);
2156#line 2157 "dhcp6_parser.cc"
2160#line 1173 "dhcp6_parser.yy"
2165#line 2166 "dhcp6_parser.cc"
2169#line 1176 "dhcp6_parser.yy"
2172 ctx.
stack_.back()->set(
"cert-file", cert);
2175#line 2176 "dhcp6_parser.cc"
2179#line 1182 "dhcp6_parser.yy"
2184#line 2185 "dhcp6_parser.cc"
2188#line 1185 "dhcp6_parser.yy"
2191 ctx.
stack_.back()->set(
"key-file", key);
2194#line 2195 "dhcp6_parser.cc"
2198#line 1191 "dhcp6_parser.yy"
2200 ctx.
unique(
"cipher-list", ctx.
loc2pos(yystack_[0].location));
2203#line 2204 "dhcp6_parser.cc"
2207#line 1194 "dhcp6_parser.yy"
2210 ctx.
stack_.back()->set(
"cipher-list", cl);
2213#line 2214 "dhcp6_parser.cc"
2217#line 1200 "dhcp6_parser.yy"
2219 ctx.
unique(
"sanity-checks", ctx.
loc2pos(yystack_[0].location));
2221 ctx.
stack_.back()->set(
"sanity-checks", m);
2225#line 2226 "dhcp6_parser.cc"
2229#line 1206 "dhcp6_parser.yy"
2234#line 2235 "dhcp6_parser.cc"
2238#line 1213 "dhcp6_parser.yy"
2242#line 2243 "dhcp6_parser.cc"
2246#line 1222 "dhcp6_parser.yy"
2248 ctx.
unique(
"lease-checks", ctx.
loc2pos(yystack_[0].location));
2251#line 2252 "dhcp6_parser.cc"
2255#line 1225 "dhcp6_parser.yy"
2258 if ( (
string(yystack_[0].value.as < std::string > ()) ==
"none") ||
2259 (
string(yystack_[0].value.as < std::string > ()) ==
"warn") ||
2260 (
string(yystack_[0].value.as < std::string > ()) ==
"fix") ||
2261 (
string(yystack_[0].value.as < std::string > ()) ==
"fix-del") ||
2262 (
string(yystack_[0].value.as < std::string > ()) ==
"del")) {
2264 ctx.
stack_.back()->set(
"lease-checks", user);
2267 error(yystack_[0].location,
"Unsupported 'lease-checks value: " +
string(yystack_[0].value.as < std::string > ()) +
2268 ", supported values are: none, warn, fix, fix-del, del");
2271#line 2272 "dhcp6_parser.cc"
2275#line 1241 "dhcp6_parser.yy"
2277 ctx.
unique(
"extended-info-checks", ctx.
loc2pos(yystack_[0].location));
2280#line 2281 "dhcp6_parser.cc"
2284#line 1244 "dhcp6_parser.yy"
2287 if ( (
string(yystack_[0].value.as < std::string > ()) ==
"none") ||
2288 (
string(yystack_[0].value.as < std::string > ()) ==
"fix") ||
2289 (
string(yystack_[0].value.as < std::string > ()) ==
"strict") ||
2290 (
string(yystack_[0].value.as < std::string > ()) ==
"pedantic")) {
2292 ctx.
stack_.back()->set(
"extended-info-checks", user);
2295 error(yystack_[0].location,
"Unsupported 'extended-info-checks value: " +
string(yystack_[0].value.as < std::string > ()) +
2296 ", supported values are: none, fix, strict, pedantic");
2299#line 2300 "dhcp6_parser.cc"
2303#line 1259 "dhcp6_parser.yy"
2305 ctx.
unique(
"mac-sources", ctx.
loc2pos(yystack_[0].location));
2307 ctx.
stack_.back()->set(
"mac-sources", l);
2311#line 2312 "dhcp6_parser.cc"
2315#line 1265 "dhcp6_parser.yy"
2320#line 2321 "dhcp6_parser.cc"
2324#line 1272 "dhcp6_parser.yy"
2328#line 2329 "dhcp6_parser.cc"
2332#line 1281 "dhcp6_parser.yy"
2335 ctx.
stack_.back()->add(duid);
2337#line 2338 "dhcp6_parser.cc"
2341#line 1286 "dhcp6_parser.yy"
2344 ctx.
stack_.back()->add(duid);
2346#line 2347 "dhcp6_parser.cc"
2350#line 1291 "dhcp6_parser.yy"
2352 ctx.
unique(
"host-reservation-identifiers", ctx.
loc2pos(yystack_[0].location));
2354 ctx.
stack_.back()->set(
"host-reservation-identifiers", l);
2358#line 2359 "dhcp6_parser.cc"
2362#line 1297 "dhcp6_parser.yy"
2367#line 2368 "dhcp6_parser.cc"
2371#line 1304 "dhcp6_parser.yy"
2375#line 2376 "dhcp6_parser.cc"
2379#line 1314 "dhcp6_parser.yy"
2382 ctx.
stack_.back()->add(hwaddr);
2384#line 2385 "dhcp6_parser.cc"
2388#line 1319 "dhcp6_parser.yy"
2391 ctx.
stack_.back()->add(flex_id);
2393#line 2394 "dhcp6_parser.cc"
2397#line 1326 "dhcp6_parser.yy"
2399 ctx.
unique(
"relay-supplied-options", ctx.
loc2pos(yystack_[0].location));
2401 ctx.
stack_.back()->set(
"relay-supplied-options", l);
2405#line 2406 "dhcp6_parser.cc"
2409#line 1332 "dhcp6_parser.yy"
2414#line 2415 "dhcp6_parser.cc"
2418#line 1339 "dhcp6_parser.yy"
2420 ctx.
unique(
"multi-threading", ctx.
loc2pos(yystack_[0].location));
2422 ctx.
stack_.back()->set(
"multi-threading", mt);
2423 ctx.
stack_.push_back(mt);
2426#line 2427 "dhcp6_parser.cc"
2430#line 1345 "dhcp6_parser.yy"
2433 ctx.
require(
"enable-multi-threading", ctx.
loc2pos(yystack_[2].location), ctx.
loc2pos(yystack_[0].location));
2437#line 2438 "dhcp6_parser.cc"
2441#line 1354 "dhcp6_parser.yy"
2445#line 2446 "dhcp6_parser.cc"
2449#line 1367 "dhcp6_parser.yy"
2451 ctx.
unique(
"enable-multi-threading", ctx.
loc2pos(yystack_[2].location));
2453 ctx.
stack_.back()->set(
"enable-multi-threading", b);
2455#line 2456 "dhcp6_parser.cc"
2459#line 1373 "dhcp6_parser.yy"
2461 ctx.
unique(
"thread-pool-size", ctx.
loc2pos(yystack_[2].location));
2463 ctx.
stack_.back()->set(
"thread-pool-size", prf);
2465#line 2466 "dhcp6_parser.cc"
2469#line 1379 "dhcp6_parser.yy"
2471 ctx.
unique(
"packet-queue-size", ctx.
loc2pos(yystack_[2].location));
2473 ctx.
stack_.back()->set(
"packet-queue-size", prf);
2475#line 2476 "dhcp6_parser.cc"
2479#line 1385 "dhcp6_parser.yy"
2481 ctx.
unique(
"hooks-libraries", ctx.
loc2pos(yystack_[0].location));
2483 ctx.
stack_.back()->set(
"hooks-libraries", l);
2487#line 2488 "dhcp6_parser.cc"
2491#line 1391 "dhcp6_parser.yy"
2496#line 2497 "dhcp6_parser.cc"
2500#line 1402 "dhcp6_parser.yy"
2504#line 2505 "dhcp6_parser.cc"
2508#line 1407 "dhcp6_parser.yy"
2511 ctx.
stack_.back()->add(m);
2514#line 2515 "dhcp6_parser.cc"
2518#line 1411 "dhcp6_parser.yy"
2524#line 2525 "dhcp6_parser.cc"
2528#line 1417 "dhcp6_parser.yy"
2534#line 2535 "dhcp6_parser.cc"
2538#line 1421 "dhcp6_parser.yy"
2544#line 2545 "dhcp6_parser.cc"
2548#line 1429 "dhcp6_parser.yy"
2552#line 2553 "dhcp6_parser.cc"
2556#line 1439 "dhcp6_parser.yy"
2561#line 2562 "dhcp6_parser.cc"
2565#line 1442 "dhcp6_parser.yy"
2568 ctx.
stack_.back()->set(
"library", lib);
2571#line 2572 "dhcp6_parser.cc"
2575#line 1448 "dhcp6_parser.yy"
2577 ctx.
unique(
"parameters", ctx.
loc2pos(yystack_[0].location));
2580#line 2581 "dhcp6_parser.cc"
2584#line 1451 "dhcp6_parser.yy"
2586 ctx.
stack_.back()->set(
"parameters", yystack_[0].value.as <
ElementPtr > ());
2589#line 2590 "dhcp6_parser.cc"
2593#line 1457 "dhcp6_parser.yy"
2595 ctx.
unique(
"expired-leases-processing", ctx.
loc2pos(yystack_[0].location));
2597 ctx.
stack_.back()->set(
"expired-leases-processing", m);
2601#line 2602 "dhcp6_parser.cc"
2605#line 1463 "dhcp6_parser.yy"
2611#line 2612 "dhcp6_parser.cc"
2615#line 1471 "dhcp6_parser.yy"
2619#line 2620 "dhcp6_parser.cc"
2623#line 1484 "dhcp6_parser.yy"
2625 ctx.
unique(
"reclaim-timer-wait-time", ctx.
loc2pos(yystack_[2].location));
2627 ctx.
stack_.back()->set(
"reclaim-timer-wait-time", value);
2629#line 2630 "dhcp6_parser.cc"
2633#line 1490 "dhcp6_parser.yy"
2635 ctx.
unique(
"flush-reclaimed-timer-wait-time", ctx.
loc2pos(yystack_[2].location));
2637 ctx.
stack_.back()->set(
"flush-reclaimed-timer-wait-time", value);
2639#line 2640 "dhcp6_parser.cc"
2643#line 1496 "dhcp6_parser.yy"
2645 ctx.
unique(
"hold-reclaimed-time", ctx.
loc2pos(yystack_[2].location));
2647 ctx.
stack_.back()->set(
"hold-reclaimed-time", value);
2649#line 2650 "dhcp6_parser.cc"
2653#line 1502 "dhcp6_parser.yy"
2655 ctx.
unique(
"max-reclaim-leases", ctx.
loc2pos(yystack_[2].location));
2657 ctx.
stack_.back()->set(
"max-reclaim-leases", value);
2659#line 2660 "dhcp6_parser.cc"
2663#line 1508 "dhcp6_parser.yy"
2665 ctx.
unique(
"max-reclaim-time", ctx.
loc2pos(yystack_[2].location));
2667 ctx.
stack_.back()->set(
"max-reclaim-time", value);
2669#line 2670 "dhcp6_parser.cc"
2673#line 1514 "dhcp6_parser.yy"
2675 ctx.
unique(
"unwarned-reclaim-cycles", ctx.
loc2pos(yystack_[2].location));
2677 ctx.
stack_.back()->set(
"unwarned-reclaim-cycles", value);
2679#line 2680 "dhcp6_parser.cc"
2683#line 1523 "dhcp6_parser.yy"
2687 ctx.
stack_.back()->set(
"subnet6", l);
2691#line 2692 "dhcp6_parser.cc"
2695#line 1529 "dhcp6_parser.yy"
2700#line 2701 "dhcp6_parser.cc"
2704#line 1543 "dhcp6_parser.yy"
2708#line 2709 "dhcp6_parser.cc"
2712#line 1552 "dhcp6_parser.yy"
2715 ctx.
stack_.back()->add(m);
2718#line 2719 "dhcp6_parser.cc"
2722#line 1556 "dhcp6_parser.yy"
2744#line 2745 "dhcp6_parser.cc"
2748#line 1578 "dhcp6_parser.yy"
2754#line 2755 "dhcp6_parser.cc"
2758#line 1582 "dhcp6_parser.yy"
2764#line 2765 "dhcp6_parser.cc"
2768#line 1591 "dhcp6_parser.yy"
2772#line 2773 "dhcp6_parser.cc"
2776#line 1646 "dhcp6_parser.yy"
2781#line 2782 "dhcp6_parser.cc"
2785#line 1649 "dhcp6_parser.yy"
2788 ctx.
stack_.back()->set(
"subnet", subnet);
2791#line 2792 "dhcp6_parser.cc"
2795#line 1655 "dhcp6_parser.yy"
2800#line 2801 "dhcp6_parser.cc"
2804#line 1658 "dhcp6_parser.yy"
2807 ctx.
stack_.back()->set(
"interface", iface);
2810#line 2811 "dhcp6_parser.cc"
2814#line 1664 "dhcp6_parser.yy"
2816 ctx.
unique(
"interface-id", ctx.
loc2pos(yystack_[0].location));
2819#line 2820 "dhcp6_parser.cc"
2823#line 1667 "dhcp6_parser.yy"
2826 ctx.
stack_.back()->set(
"interface-id", iface);
2829#line 2830 "dhcp6_parser.cc"
2833#line 1673 "dhcp6_parser.yy"
2835 ctx.
unique(
"client-class", ctx.
loc2pos(yystack_[0].location));
2838#line 2839 "dhcp6_parser.cc"
2842#line 1676 "dhcp6_parser.yy"
2845 ctx.
stack_.back()->set(
"client-class", cls);
2848#line 2849 "dhcp6_parser.cc"
2852#line 1682 "dhcp6_parser.yy"
2854 ctx.
unique(
"require-client-classes", ctx.
loc2pos(yystack_[0].location));
2856 ctx.
stack_.back()->set(
"require-client-classes", c);
2860#line 2861 "dhcp6_parser.cc"
2864#line 1688 "dhcp6_parser.yy"
2869#line 2870 "dhcp6_parser.cc"
2873#line 1693 "dhcp6_parser.yy"
2875 ctx.
unique(
"reservations-global", ctx.
loc2pos(yystack_[2].location));
2877 ctx.
stack_.back()->set(
"reservations-global", b);
2879#line 2880 "dhcp6_parser.cc"
2883#line 1699 "dhcp6_parser.yy"
2885 ctx.
unique(
"reservations-in-subnet", ctx.
loc2pos(yystack_[2].location));
2887 ctx.
stack_.back()->set(
"reservations-in-subnet", b);
2889#line 2890 "dhcp6_parser.cc"
2893#line 1705 "dhcp6_parser.yy"
2895 ctx.
unique(
"reservations-out-of-pool", ctx.
loc2pos(yystack_[2].location));
2897 ctx.
stack_.back()->set(
"reservations-out-of-pool", b);
2899#line 2900 "dhcp6_parser.cc"
2903#line 1711 "dhcp6_parser.yy"
2905 ctx.
unique(
"reservation-mode", ctx.
loc2pos(yystack_[0].location));
2908#line 2909 "dhcp6_parser.cc"
2912#line 1714 "dhcp6_parser.yy"
2914 ctx.
stack_.back()->set(
"reservation-mode", yystack_[0].value.as <
ElementPtr > ());
2917#line 2918 "dhcp6_parser.cc"
2921#line 1719 "dhcp6_parser.yy"
2923#line 2924 "dhcp6_parser.cc"
2927#line 1720 "dhcp6_parser.yy"
2929#line 2930 "dhcp6_parser.cc"
2933#line 1721 "dhcp6_parser.yy"
2935#line 2936 "dhcp6_parser.cc"
2939#line 1722 "dhcp6_parser.yy"
2941#line 2942 "dhcp6_parser.cc"
2945#line 1725 "dhcp6_parser.yy"
2949 ctx.
stack_.back()->set(
"id",
id);
2951#line 2952 "dhcp6_parser.cc"
2955#line 1731 "dhcp6_parser.yy"
2957 ctx.
unique(
"rapid-commit", ctx.
loc2pos(yystack_[2].location));
2959 ctx.
stack_.back()->set(
"rapid-commit", rc);
2961#line 2962 "dhcp6_parser.cc"
2965#line 1739 "dhcp6_parser.yy"
2967 ctx.
unique(
"shared-networks", ctx.
loc2pos(yystack_[0].location));
2969 ctx.
stack_.back()->set(
"shared-networks", l);
2973#line 2974 "dhcp6_parser.cc"
2977#line 1745 "dhcp6_parser.yy"
2982#line 2983 "dhcp6_parser.cc"
2986#line 1758 "dhcp6_parser.yy"
2990#line 2991 "dhcp6_parser.cc"
2994#line 1763 "dhcp6_parser.yy"
2997 ctx.
stack_.back()->add(m);
3000#line 3001 "dhcp6_parser.cc"
3004#line 1767 "dhcp6_parser.yy"
3008#line 3009 "dhcp6_parser.cc"
3012#line 1773 "dhcp6_parser.yy"
3016#line 3017 "dhcp6_parser.cc"
3020#line 1828 "dhcp6_parser.yy"
3022 ctx.
unique(
"option-def", ctx.
loc2pos(yystack_[0].location));
3024 ctx.
stack_.back()->set(
"option-def", l);
3028#line 3029 "dhcp6_parser.cc"
3032#line 1834 "dhcp6_parser.yy"
3037#line 3038 "dhcp6_parser.cc"
3041#line 1842 "dhcp6_parser.yy"
3046#line 3047 "dhcp6_parser.cc"
3050#line 1845 "dhcp6_parser.yy"
3054#line 3055 "dhcp6_parser.cc"
3058#line 1857 "dhcp6_parser.yy"
3062#line 3063 "dhcp6_parser.cc"
3066#line 1864 "dhcp6_parser.yy"
3069 ctx.
stack_.back()->add(m);
3072#line 3073 "dhcp6_parser.cc"
3076#line 1868 "dhcp6_parser.yy"
3084#line 3085 "dhcp6_parser.cc"
3088#line 1879 "dhcp6_parser.yy"
3094#line 3095 "dhcp6_parser.cc"
3098#line 1883 "dhcp6_parser.yy"
3106#line 3107 "dhcp6_parser.cc"
3110#line 1899 "dhcp6_parser.yy"
3114#line 3115 "dhcp6_parser.cc"
3118#line 1918 "dhcp6_parser.yy"
3122 ctx.
stack_.back()->set(
"code", code);
3124#line 3125 "dhcp6_parser.cc"
3128#line 1926 "dhcp6_parser.yy"
3133#line 3134 "dhcp6_parser.cc"
3137#line 1929 "dhcp6_parser.yy"
3140 ctx.
stack_.back()->set(
"type", prf);
3143#line 3144 "dhcp6_parser.cc"
3147#line 1935 "dhcp6_parser.yy"
3149 ctx.
unique(
"record-types", ctx.
loc2pos(yystack_[0].location));
3152#line 3153 "dhcp6_parser.cc"
3156#line 1938 "dhcp6_parser.yy"
3159 ctx.
stack_.back()->set(
"record-types", rtypes);
3162#line 3163 "dhcp6_parser.cc"
3166#line 1944 "dhcp6_parser.yy"
3171#line 3172 "dhcp6_parser.cc"
3175#line 1947 "dhcp6_parser.yy"
3178 ctx.
stack_.back()->set(
"space", space);
3181#line 3182 "dhcp6_parser.cc"
3185#line 1955 "dhcp6_parser.yy"
3187 ctx.
unique(
"encapsulate", ctx.
loc2pos(yystack_[0].location));
3190#line 3191 "dhcp6_parser.cc"
3194#line 1958 "dhcp6_parser.yy"
3197 ctx.
stack_.back()->set(
"encapsulate", encap);
3200#line 3201 "dhcp6_parser.cc"
3204#line 1964 "dhcp6_parser.yy"
3208 ctx.
stack_.back()->set(
"array", array);
3210#line 3211 "dhcp6_parser.cc"
3214#line 1974 "dhcp6_parser.yy"
3216 ctx.
unique(
"option-data", ctx.
loc2pos(yystack_[0].location));
3218 ctx.
stack_.back()->set(
"option-data", l);
3222#line 3223 "dhcp6_parser.cc"
3226#line 1980 "dhcp6_parser.yy"
3231#line 3232 "dhcp6_parser.cc"
3235#line 1995 "dhcp6_parser.yy"
3239#line 3240 "dhcp6_parser.cc"
3243#line 2002 "dhcp6_parser.yy"
3246 ctx.
stack_.back()->add(m);
3249#line 3250 "dhcp6_parser.cc"
3253#line 2006 "dhcp6_parser.yy"
3258#line 3259 "dhcp6_parser.cc"
3262#line 2014 "dhcp6_parser.yy"
3268#line 3269 "dhcp6_parser.cc"
3272#line 2018 "dhcp6_parser.yy"
3277#line 3278 "dhcp6_parser.cc"
3281#line 2034 "dhcp6_parser.yy"
3285#line 3286 "dhcp6_parser.cc"
3289#line 2055 "dhcp6_parser.yy"
3294#line 3295 "dhcp6_parser.cc"
3298#line 2058 "dhcp6_parser.yy"
3301 ctx.
stack_.back()->set(
"data", data);
3304#line 3305 "dhcp6_parser.cc"
3308#line 2068 "dhcp6_parser.yy"
3310 ctx.
unique(
"csv-format", ctx.
loc2pos(yystack_[2].location));
3312 ctx.
stack_.back()->set(
"csv-format", csv);
3314#line 3315 "dhcp6_parser.cc"
3318#line 2074 "dhcp6_parser.yy"
3320 ctx.
unique(
"always-send", ctx.
loc2pos(yystack_[2].location));
3322 ctx.
stack_.back()->set(
"always-send", persist);
3324#line 3325 "dhcp6_parser.cc"
3328#line 2080 "dhcp6_parser.yy"
3330 ctx.
unique(
"never-send", ctx.
loc2pos(yystack_[2].location));
3332 ctx.
stack_.back()->set(
"never-send", cancel);
3334#line 3335 "dhcp6_parser.cc"
3338#line 2089 "dhcp6_parser.yy"
3342 ctx.
stack_.back()->set(
"pools", l);
3346#line 3347 "dhcp6_parser.cc"
3350#line 2095 "dhcp6_parser.yy"
3355#line 3356 "dhcp6_parser.cc"
3359#line 2108 "dhcp6_parser.yy"
3363#line 3364 "dhcp6_parser.cc"
3367#line 2113 "dhcp6_parser.yy"
3370 ctx.
stack_.back()->add(m);
3373#line 3374 "dhcp6_parser.cc"
3377#line 2117 "dhcp6_parser.yy"
3383#line 3384 "dhcp6_parser.cc"
3387#line 2123 "dhcp6_parser.yy"
3393#line 3394 "dhcp6_parser.cc"
3397#line 2127 "dhcp6_parser.yy"
3403#line 3404 "dhcp6_parser.cc"
3407#line 2135 "dhcp6_parser.yy"
3411#line 3412 "dhcp6_parser.cc"
3415#line 2150 "dhcp6_parser.yy"
3420#line 3421 "dhcp6_parser.cc"
3424#line 2153 "dhcp6_parser.yy"
3427 ctx.
stack_.back()->set(
"pool", pool);
3430#line 3431 "dhcp6_parser.cc"
3434#line 2159 "dhcp6_parser.yy"
3438 ctx.
stack_.back()->set(
"pool-id",
id);
3440#line 3441 "dhcp6_parser.cc"
3444#line 2165 "dhcp6_parser.yy"
3448#line 3449 "dhcp6_parser.cc"
3452#line 2167 "dhcp6_parser.yy"
3461 if ((old->size() != 1) || !old->contains(
"comment")) {
3462 std::stringstream msg;
3463 msg <<
"duplicate user-context entries (previous at "
3464 << old->getPosition().str() <<
")";
3465 error(yystack_[3].location, msg.str());
3468 user_context->set(
"comment", old->get(
"comment"));
3472 parent->set(
"user-context", user_context);
3475#line 3476 "dhcp6_parser.cc"
3479#line 2190 "dhcp6_parser.yy"
3483#line 3484 "dhcp6_parser.cc"
3487#line 2192 "dhcp6_parser.yy"
3492 user_context->set(
"comment", comment);
3498 if (old->contains(
"comment")) {
3499 std::stringstream msg;
3500 msg <<
"duplicate user-context/comment entries (previous at "
3501 << old->getPosition().str() <<
")";
3502 error(yystack_[3].location, msg.str());
3505 merge(user_context, old);
3509 parent->set(
"user-context", user_context);
3512#line 3513 "dhcp6_parser.cc"
3516#line 2220 "dhcp6_parser.yy"
3520 ctx.
stack_.back()->set(
"pd-pools", l);
3524#line 3525 "dhcp6_parser.cc"
3528#line 2226 "dhcp6_parser.yy"
3533#line 3534 "dhcp6_parser.cc"
3537#line 2239 "dhcp6_parser.yy"
3541#line 3542 "dhcp6_parser.cc"
3545#line 2244 "dhcp6_parser.yy"
3548 ctx.
stack_.back()->add(m);
3551#line 3552 "dhcp6_parser.cc"
3555#line 2248 "dhcp6_parser.yy"
3563#line 3564 "dhcp6_parser.cc"
3567#line 2256 "dhcp6_parser.yy"
3573#line 3574 "dhcp6_parser.cc"
3577#line 2260 "dhcp6_parser.yy"
3585#line 3586 "dhcp6_parser.cc"
3589#line 2270 "dhcp6_parser.yy"
3593#line 3594 "dhcp6_parser.cc"
3597#line 2288 "dhcp6_parser.yy"
3602#line 3603 "dhcp6_parser.cc"
3606#line 2291 "dhcp6_parser.yy"
3609 ctx.
stack_.back()->set(
"prefix", prf);
3612#line 3613 "dhcp6_parser.cc"
3616#line 2297 "dhcp6_parser.yy"
3618 ctx.
unique(
"prefix-len", ctx.
loc2pos(yystack_[2].location));
3620 ctx.
stack_.back()->set(
"prefix-len", prf);
3622#line 3623 "dhcp6_parser.cc"
3626#line 2303 "dhcp6_parser.yy"
3628 ctx.
unique(
"excluded-prefix", ctx.
loc2pos(yystack_[0].location));
3631#line 3632 "dhcp6_parser.cc"
3635#line 2306 "dhcp6_parser.yy"
3638 ctx.
stack_.back()->set(
"excluded-prefix", prf);
3641#line 3642 "dhcp6_parser.cc"
3645#line 2312 "dhcp6_parser.yy"
3647 ctx.
unique(
"excluded-prefix-len", ctx.
loc2pos(yystack_[2].location));
3649 ctx.
stack_.back()->set(
"excluded-prefix-len", prf);
3651#line 3652 "dhcp6_parser.cc"
3655#line 2318 "dhcp6_parser.yy"
3657 ctx.
unique(
"delegated-len", ctx.
loc2pos(yystack_[2].location));
3659 ctx.
stack_.back()->set(
"delegated-len", deleg);
3661#line 3662 "dhcp6_parser.cc"
3665#line 2327 "dhcp6_parser.yy"
3667 ctx.
unique(
"reservations", ctx.
loc2pos(yystack_[0].location));
3669 ctx.
stack_.back()->set(
"reservations", l);
3673#line 3674 "dhcp6_parser.cc"
3677#line 2333 "dhcp6_parser.yy"
3682#line 3683 "dhcp6_parser.cc"
3686#line 2344 "dhcp6_parser.yy"
3690#line 3691 "dhcp6_parser.cc"
3694#line 2349 "dhcp6_parser.yy"
3697 ctx.
stack_.back()->add(m);
3700#line 3701 "dhcp6_parser.cc"
3704#line 2353 "dhcp6_parser.yy"
3709#line 3710 "dhcp6_parser.cc"
3713#line 2358 "dhcp6_parser.yy"
3719#line 3720 "dhcp6_parser.cc"
3723#line 2362 "dhcp6_parser.yy"
3728#line 3729 "dhcp6_parser.cc"
3732#line 2373 "dhcp6_parser.yy"
3736#line 3737 "dhcp6_parser.cc"
3740#line 2392 "dhcp6_parser.yy"
3742 ctx.
unique(
"ip-addresses", ctx.
loc2pos(yystack_[0].location));
3744 ctx.
stack_.back()->set(
"ip-addresses", l);
3748#line 3749 "dhcp6_parser.cc"
3752#line 2398 "dhcp6_parser.yy"
3757#line 3758 "dhcp6_parser.cc"
3761#line 2403 "dhcp6_parser.yy"
3765 ctx.
stack_.back()->set(
"prefixes", l);
3769#line 3770 "dhcp6_parser.cc"
3773#line 2409 "dhcp6_parser.yy"
3778#line 3779 "dhcp6_parser.cc"
3782#line 2414 "dhcp6_parser.yy"
3787#line 3788 "dhcp6_parser.cc"
3791#line 2417 "dhcp6_parser.yy"
3794 ctx.
stack_.back()->set(
"duid", d);
3797#line 3798 "dhcp6_parser.cc"
3801#line 2423 "dhcp6_parser.yy"
3803 ctx.
unique(
"hw-address", ctx.
loc2pos(yystack_[0].location));
3806#line 3807 "dhcp6_parser.cc"
3810#line 2426 "dhcp6_parser.yy"
3813 ctx.
stack_.back()->set(
"hw-address", hw);
3816#line 3817 "dhcp6_parser.cc"
3820#line 2432 "dhcp6_parser.yy"
3825#line 3826 "dhcp6_parser.cc"
3829#line 2435 "dhcp6_parser.yy"
3832 ctx.
stack_.back()->set(
"hostname", host);
3835#line 3836 "dhcp6_parser.cc"
3839#line 2441 "dhcp6_parser.yy"
3844#line 3845 "dhcp6_parser.cc"
3848#line 2444 "dhcp6_parser.yy"
3851 ctx.
stack_.back()->set(
"flex-id", hw);
3854#line 3855 "dhcp6_parser.cc"
3858#line 2450 "dhcp6_parser.yy"
3860 ctx.
unique(
"client-classes", ctx.
loc2pos(yystack_[0].location));
3862 ctx.
stack_.back()->set(
"client-classes", c);
3866#line 3867 "dhcp6_parser.cc"
3870#line 2456 "dhcp6_parser.yy"
3875#line 3876 "dhcp6_parser.cc"
3879#line 2464 "dhcp6_parser.yy"
3883 ctx.
stack_.back()->set(
"relay", m);
3887#line 3888 "dhcp6_parser.cc"
3891#line 2470 "dhcp6_parser.yy"
3896#line 3897 "dhcp6_parser.cc"
3900#line 2479 "dhcp6_parser.yy"
3902 ctx.
unique(
"ip-address", ctx.
loc2pos(yystack_[0].location));
3905#line 3906 "dhcp6_parser.cc"
3909#line 2482 "dhcp6_parser.yy"
3912 ctx.
stack_.back()->set(
"ip-address", addr);
3915#line 3916 "dhcp6_parser.cc"
3919#line 2491 "dhcp6_parser.yy"
3921 ctx.
unique(
"client-classes", ctx.
loc2pos(yystack_[0].location));
3923 ctx.
stack_.back()->set(
"client-classes", l);
3927#line 3928 "dhcp6_parser.cc"
3931#line 2497 "dhcp6_parser.yy"
3936#line 3937 "dhcp6_parser.cc"
3940#line 2504 "dhcp6_parser.yy"
3944#line 3945 "dhcp6_parser.cc"
3948#line 2509 "dhcp6_parser.yy"
3951 ctx.
stack_.back()->add(m);
3954#line 3955 "dhcp6_parser.cc"
3958#line 2513 "dhcp6_parser.yy"
3964#line 3965 "dhcp6_parser.cc"
3968#line 2525 "dhcp6_parser.yy"
3972#line 3973 "dhcp6_parser.cc"
3976#line 2548 "dhcp6_parser.yy"
3981#line 3982 "dhcp6_parser.cc"
3985#line 2551 "dhcp6_parser.yy"
3988 ctx.
stack_.back()->set(
"test", test);
3991#line 3992 "dhcp6_parser.cc"
3995#line 2557 "dhcp6_parser.yy"
3997 ctx.
unique(
"template-test", ctx.
loc2pos(yystack_[0].location));
4000#line 4001 "dhcp6_parser.cc"
4004#line 2560 "dhcp6_parser.yy"
4007 ctx.
stack_.back()->set(
"template-test", template_test);
4010#line 4011 "dhcp6_parser.cc"
4014#line 2566 "dhcp6_parser.yy"
4016 ctx.
unique(
"only-if-required", ctx.
loc2pos(yystack_[2].location));
4018 ctx.
stack_.back()->set(
"only-if-required", b);
4020#line 4021 "dhcp6_parser.cc"
4024#line 2575 "dhcp6_parser.yy"
4028 ctx.
stack_.back()->set(
"server-id", m);
4032#line 4033 "dhcp6_parser.cc"
4036#line 2581 "dhcp6_parser.yy"
4043#line 4044 "dhcp6_parser.cc"
4047#line 2590 "dhcp6_parser.yy"
4051#line 4052 "dhcp6_parser.cc"
4055#line 2606 "dhcp6_parser.yy"
4060#line 4061 "dhcp6_parser.cc"
4064#line 2609 "dhcp6_parser.yy"
4069#line 4070 "dhcp6_parser.cc"
4073#line 2614 "dhcp6_parser.yy"
4075#line 4076 "dhcp6_parser.cc"
4079#line 2615 "dhcp6_parser.yy"
4081#line 4082 "dhcp6_parser.cc"
4085#line 2616 "dhcp6_parser.yy"
4087#line 4088 "dhcp6_parser.cc"
4091#line 2619 "dhcp6_parser.yy"
4095 ctx.
stack_.back()->set(
"htype", htype);
4097#line 4098 "dhcp6_parser.cc"
4101#line 2625 "dhcp6_parser.yy"
4103 ctx.
unique(
"identifier", ctx.
loc2pos(yystack_[0].location));
4106#line 4107 "dhcp6_parser.cc"
4110#line 2628 "dhcp6_parser.yy"
4113 ctx.
stack_.back()->set(
"identifier",
id);
4116#line 4117 "dhcp6_parser.cc"
4120#line 2634 "dhcp6_parser.yy"
4124 ctx.
stack_.back()->set(
"time", time);
4126#line 4127 "dhcp6_parser.cc"
4130#line 2640 "dhcp6_parser.yy"
4132 ctx.
unique(
"enterprise-id", ctx.
loc2pos(yystack_[2].location));
4134 ctx.
stack_.back()->set(
"enterprise-id", time);
4136#line 4137 "dhcp6_parser.cc"
4140#line 2648 "dhcp6_parser.yy"
4142 ctx.
unique(
"dhcp4o6-port", ctx.
loc2pos(yystack_[2].location));
4144 ctx.
stack_.back()->set(
"dhcp4o6-port", time);
4146#line 4147 "dhcp6_parser.cc"
4150#line 2656 "dhcp6_parser.yy"
4152 ctx.
unique(
"control-socket", ctx.
loc2pos(yystack_[0].location));
4154 ctx.
stack_.back()->set(
"control-socket", m);
4158#line 4159 "dhcp6_parser.cc"
4162#line 2662 "dhcp6_parser.yy"
4167#line 4168 "dhcp6_parser.cc"
4171#line 2669 "dhcp6_parser.yy"
4175#line 4176 "dhcp6_parser.cc"
4179#line 2681 "dhcp6_parser.yy"
4181 ctx.
unique(
"socket-type", ctx.
loc2pos(yystack_[0].location));
4184#line 4185 "dhcp6_parser.cc"
4188#line 2684 "dhcp6_parser.yy"
4191 ctx.
stack_.back()->set(
"socket-type", stype);
4194#line 4195 "dhcp6_parser.cc"
4198#line 2690 "dhcp6_parser.yy"
4200 ctx.
unique(
"socket-name", ctx.
loc2pos(yystack_[0].location));
4203#line 4204 "dhcp6_parser.cc"
4207#line 2693 "dhcp6_parser.yy"
4210 ctx.
stack_.back()->set(
"socket-name", name);
4213#line 4214 "dhcp6_parser.cc"
4217#line 2702 "dhcp6_parser.yy"
4219 ctx.
unique(
"dhcp-queue-control", ctx.
loc2pos(yystack_[0].location));
4221 ctx.
stack_.back()->set(
"dhcp-queue-control", qc);
4222 ctx.
stack_.push_back(qc);
4225#line 4226 "dhcp6_parser.cc"
4229#line 2708 "dhcp6_parser.yy"
4236#line 4237 "dhcp6_parser.cc"
4240#line 2717 "dhcp6_parser.yy"
4244#line 4245 "dhcp6_parser.cc"
4248#line 2730 "dhcp6_parser.yy"
4250 ctx.
unique(
"enable-queue", ctx.
loc2pos(yystack_[2].location));
4252 ctx.
stack_.back()->set(
"enable-queue", b);
4254#line 4255 "dhcp6_parser.cc"
4258#line 2736 "dhcp6_parser.yy"
4260 ctx.
unique(
"queue-type", ctx.
loc2pos(yystack_[0].location));
4263#line 4264 "dhcp6_parser.cc"
4267#line 2739 "dhcp6_parser.yy"
4270 ctx.
stack_.back()->set(
"queue-type", qt);
4273#line 4274 "dhcp6_parser.cc"
4277#line 2745 "dhcp6_parser.yy"
4281 ctx.
stack_.back()->set(
"capacity", c);
4283#line 4284 "dhcp6_parser.cc"
4287#line 2751 "dhcp6_parser.yy"
4289 ctx.
unique(yystack_[0].value.as < std::string > (), ctx.
loc2pos(yystack_[0].location));
4292#line 4293 "dhcp6_parser.cc"
4296#line 2754 "dhcp6_parser.yy"
4298 ctx.
stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
4301#line 4302 "dhcp6_parser.cc"
4305#line 2761 "dhcp6_parser.yy"
4309 ctx.
stack_.back()->set(
"dhcp-ddns", m);
4313#line 4314 "dhcp6_parser.cc"
4317#line 2767 "dhcp6_parser.yy"
4320 ctx.
require(
"enable-updates", ctx.
loc2pos(yystack_[2].location), ctx.
loc2pos(yystack_[0].location));
4324#line 4325 "dhcp6_parser.cc"
4328#line 2774 "dhcp6_parser.yy"
4334#line 4335 "dhcp6_parser.cc"
4338#line 2778 "dhcp6_parser.yy"
4341 ctx.
require(
"enable-updates", ctx.
loc2pos(yystack_[3].location), ctx.
loc2pos(yystack_[0].location));
4344#line 4345 "dhcp6_parser.cc"
4348#line 2786 "dhcp6_parser.yy"
4352#line 4353 "dhcp6_parser.cc"
4356#line 2811 "dhcp6_parser.yy"
4358 ctx.
unique(
"enable-updates", ctx.
loc2pos(yystack_[2].location));
4360 ctx.
stack_.back()->set(
"enable-updates", b);
4362#line 4363 "dhcp6_parser.cc"
4366#line 2818 "dhcp6_parser.yy"
4368 ctx.
unique(
"qualifying-suffix", ctx.
loc2pos(yystack_[0].location));
4371#line 4372 "dhcp6_parser.cc"
4375#line 2821 "dhcp6_parser.yy"
4378 ctx.
stack_.back()->set(
"qualifying-suffix", s);
4381#line 4382 "dhcp6_parser.cc"
4385#line 2827 "dhcp6_parser.yy"
4390#line 4391 "dhcp6_parser.cc"
4394#line 2830 "dhcp6_parser.yy"
4397 ctx.
stack_.back()->set(
"server-ip", s);
4400#line 4401 "dhcp6_parser.cc"
4404#line 2836 "dhcp6_parser.yy"
4406 ctx.
unique(
"server-port", ctx.
loc2pos(yystack_[2].location));
4408 ctx.
stack_.back()->set(
"server-port", i);
4410#line 4411 "dhcp6_parser.cc"
4414#line 2842 "dhcp6_parser.yy"
4419#line 4420 "dhcp6_parser.cc"
4423#line 2845 "dhcp6_parser.yy"
4426 ctx.
stack_.back()->set(
"sender-ip", s);
4429#line 4430 "dhcp6_parser.cc"
4433#line 2851 "dhcp6_parser.yy"
4435 ctx.
unique(
"sender-port", ctx.
loc2pos(yystack_[2].location));
4437 ctx.
stack_.back()->set(
"sender-port", i);
4439#line 4440 "dhcp6_parser.cc"
4443#line 2857 "dhcp6_parser.yy"
4445 ctx.
unique(
"max-queue-size", ctx.
loc2pos(yystack_[2].location));
4447 ctx.
stack_.back()->set(
"max-queue-size", i);
4449#line 4450 "dhcp6_parser.cc"
4453#line 2863 "dhcp6_parser.yy"
4455 ctx.
unique(
"ncr-protocol", ctx.
loc2pos(yystack_[0].location));
4458#line 4459 "dhcp6_parser.cc"
4462#line 2866 "dhcp6_parser.yy"
4464 ctx.
stack_.back()->set(
"ncr-protocol", yystack_[0].value.as <
ElementPtr > ());
4467#line 4468 "dhcp6_parser.cc"
4471#line 2872 "dhcp6_parser.yy"
4473#line 4474 "dhcp6_parser.cc"
4477#line 2873 "dhcp6_parser.yy"
4479#line 4480 "dhcp6_parser.cc"
4483#line 2876 "dhcp6_parser.yy"
4485 ctx.
unique(
"ncr-format", ctx.
loc2pos(yystack_[0].location));
4488#line 4489 "dhcp6_parser.cc"
4492#line 2879 "dhcp6_parser.yy"
4495 ctx.
stack_.back()->set(
"ncr-format", json);
4498#line 4499 "dhcp6_parser.cc"
4502#line 2886 "dhcp6_parser.yy"
4504 ctx.
unique(
"override-no-update", ctx.
loc2pos(yystack_[2].location));
4506 ctx.
stack_.back()->set(
"override-no-update", b);
4508#line 4509 "dhcp6_parser.cc"
4512#line 2893 "dhcp6_parser.yy"
4514 ctx.
unique(
"override-client-update", ctx.
loc2pos(yystack_[2].location));
4516 ctx.
stack_.back()->set(
"override-client-update", b);
4518#line 4519 "dhcp6_parser.cc"
4522#line 2900 "dhcp6_parser.yy"
4524 ctx.
unique(
"replace-client-name", ctx.
loc2pos(yystack_[0].location));
4527#line 4528 "dhcp6_parser.cc"
4531#line 2903 "dhcp6_parser.yy"
4533 ctx.
stack_.back()->set(
"replace-client-name", yystack_[0].value.as <
ElementPtr > ());
4536#line 4537 "dhcp6_parser.cc"
4540#line 2909 "dhcp6_parser.yy"
4542 ctx.
unique(
"generated-prefix", ctx.
loc2pos(yystack_[0].location));
4545#line 4546 "dhcp6_parser.cc"
4549#line 2912 "dhcp6_parser.yy"
4552 ctx.
stack_.back()->set(
"generated-prefix", s);
4555#line 4556 "dhcp6_parser.cc"
4559#line 2919 "dhcp6_parser.yy"
4561 ctx.
unique(
"hostname-char-set", ctx.
loc2pos(yystack_[0].location));
4564#line 4565 "dhcp6_parser.cc"
4568#line 2922 "dhcp6_parser.yy"
4571 ctx.
stack_.back()->set(
"hostname-char-set", s);
4574#line 4575 "dhcp6_parser.cc"
4578#line 2929 "dhcp6_parser.yy"
4580 ctx.
unique(
"hostname-char-replacement", ctx.
loc2pos(yystack_[0].location));
4583#line 4584 "dhcp6_parser.cc"
4587#line 2932 "dhcp6_parser.yy"
4590 ctx.
stack_.back()->set(
"hostname-char-replacement", s);
4593#line 4594 "dhcp6_parser.cc"
4597#line 2941 "dhcp6_parser.yy"
4599 ctx.
unique(
"config-control", ctx.
loc2pos(yystack_[0].location));
4601 ctx.
stack_.back()->set(
"config-control", i);
4605#line 4606 "dhcp6_parser.cc"
4609#line 2947 "dhcp6_parser.yy"
4615#line 4616 "dhcp6_parser.cc"
4619#line 2953 "dhcp6_parser.yy"
4625#line 4626 "dhcp6_parser.cc"
4629#line 2957 "dhcp6_parser.yy"
4634#line 4635 "dhcp6_parser.cc"
4638#line 2965 "dhcp6_parser.yy"
4642#line 4643 "dhcp6_parser.cc"
4646#line 2975 "dhcp6_parser.yy"
4648 ctx.
unique(
"config-databases", ctx.
loc2pos(yystack_[0].location));
4650 ctx.
stack_.back()->set(
"config-databases", l);
4654#line 4655 "dhcp6_parser.cc"
4658#line 2981 "dhcp6_parser.yy"
4663#line 4664 "dhcp6_parser.cc"
4667#line 2986 "dhcp6_parser.yy"
4669 ctx.
unique(
"config-fetch-wait-time", ctx.
loc2pos(yystack_[2].location));
4671 ctx.
stack_.back()->set(
"config-fetch-wait-time", value);
4673#line 4674 "dhcp6_parser.cc"
4677#line 2994 "dhcp6_parser.yy"
4681 ctx.
stack_.back()->set(
"loggers", l);
4685#line 4686 "dhcp6_parser.cc"
4689#line 3000 "dhcp6_parser.yy"
4694#line 4695 "dhcp6_parser.cc"
4698#line 3009 "dhcp6_parser.yy"
4702#line 4703 "dhcp6_parser.cc"
4706#line 3015 "dhcp6_parser.yy"
4709 ctx.
stack_.back()->add(l);
4712#line 4713 "dhcp6_parser.cc"
4716#line 3019 "dhcp6_parser.yy"
4720#line 4721 "dhcp6_parser.cc"
4724#line 3025 "dhcp6_parser.yy"
4728#line 4729 "dhcp6_parser.cc"
4732#line 3039 "dhcp6_parser.yy"
4734 ctx.
unique(
"debuglevel", ctx.
loc2pos(yystack_[2].location));
4736 ctx.
stack_.back()->set(
"debuglevel", dl);
4738#line 4739 "dhcp6_parser.cc"
4742#line 3045 "dhcp6_parser.yy"
4747#line 4748 "dhcp6_parser.cc"
4751#line 3048 "dhcp6_parser.yy"
4754 ctx.
stack_.back()->set(
"severity", sev);
4757#line 4758 "dhcp6_parser.cc"
4761#line 3054 "dhcp6_parser.yy"
4763 ctx.
unique(
"output-options", ctx.
loc2pos(yystack_[0].location));
4765 ctx.
stack_.back()->set(
"output-options", l);
4769#line 4770 "dhcp6_parser.cc"
4773#line 3060 "dhcp6_parser.yy"
4778#line 4779 "dhcp6_parser.cc"
4782#line 3067 "dhcp6_parser.yy"
4786#line 4787 "dhcp6_parser.cc"
4790#line 3072 "dhcp6_parser.yy"
4793 ctx.
stack_.back()->add(m);
4796#line 4797 "dhcp6_parser.cc"
4800#line 3076 "dhcp6_parser.yy"
4804#line 4805 "dhcp6_parser.cc"
4808#line 3082 "dhcp6_parser.yy"
4812#line 4813 "dhcp6_parser.cc"
4816#line 3094 "dhcp6_parser.yy"
4821#line 4822 "dhcp6_parser.cc"
4825#line 3097 "dhcp6_parser.yy"
4828 ctx.
stack_.back()->set(
"output", sev);
4831#line 4832 "dhcp6_parser.cc"
4835#line 3103 "dhcp6_parser.yy"
4839 ctx.
stack_.back()->set(
"flush", flush);
4841#line 4842 "dhcp6_parser.cc"
4845#line 3109 "dhcp6_parser.yy"
4849 ctx.
stack_.back()->set(
"maxsize", maxsize);
4851#line 4852 "dhcp6_parser.cc"
4855#line 3115 "dhcp6_parser.yy"
4859 ctx.
stack_.back()->set(
"maxver", maxver);
4861#line 4862 "dhcp6_parser.cc"
4865#line 3121 "dhcp6_parser.yy"
4870#line 4871 "dhcp6_parser.cc"
4874#line 3124 "dhcp6_parser.yy"
4877 ctx.
stack_.back()->set(
"pattern", sev);
4880#line 4881 "dhcp6_parser.cc"
4884#line 3130 "dhcp6_parser.yy"
4886 ctx.
unique(
"compatibility", ctx.
loc2pos(yystack_[0].location));
4888 ctx.
stack_.back()->set(
"compatibility", i);
4892#line 4893 "dhcp6_parser.cc"
4896#line 3136 "dhcp6_parser.yy"
4901#line 4902 "dhcp6_parser.cc"
4905#line 3143 "dhcp6_parser.yy"
4909#line 4910 "dhcp6_parser.cc"
4913#line 3152 "dhcp6_parser.yy"
4915 ctx.
unique(
"lenient-option-parsing", ctx.
loc2pos(yystack_[2].location));
4917 ctx.
stack_.back()->set(
"lenient-option-parsing", b);
4919#line 4920 "dhcp6_parser.cc"
4923#line 4924 "dhcp6_parser.cc"
4932 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
4942 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
4956 std::string msg = yysyntax_error_ (yyctx);
4961 yyerror_range[1].location = yyla.
location;
4962 if (yyerrstatus_ == 3)
4970 else if (!yyla.
empty ())
4972 yy_destroy_ (
"Error: discarding", yyla);
5006 yyn = yypact_[+yystack_[0].state];
5007 if (!yy_pact_value_is_default_ (yyn))
5010 if (0 <= yyn && yyn <= yylast_
5013 yyn = yytable_[yyn];
5020 if (yystack_.size () == 1)
5023 yyerror_range[1].location = yystack_[0].location;
5024 yy_destroy_ (
"Error: popping", yystack_[0]);
5029 stack_symbol_type error_token;
5031 yyerror_range[2].location = yyla.
location;
5035 error_token.state = state_type (yyn);
5036 yypush_ (
"Shifting",
YY_MOVE (error_token));
5062 yy_destroy_ (
"Cleanup: discarding lookahead", yyla);
5068 while (1 < yystack_.size ())
5070 yy_destroy_ (
"Cleanup: popping", yystack_[0]);
5079 YYCDEBUG <<
"Exception caught: cleaning lookahead and stack\n";
5083 yy_destroy_ (YY_NULLPTR, yyla);
5085 while (1 < yystack_.size ())
5087 yy_destroy_ (YY_NULLPTR, yystack_[0]);
5107 Dhcp6Parser::yytnamerr_ (
const char *yystr)
5112 char const *yyp = yystr;
5119 goto do_not_strip_quotes;
5123 goto do_not_strip_quotes;
5135 do_not_strip_quotes: ;
5144 return yytnamerr_ (yytname_[yysymbol]);
5151 : yyparser_ (yyparser)
5161 const int yyn = yypact_[+yyparser_.yystack_[0].state];
5162 if (!yy_pact_value_is_default_ (yyn))
5167 const int yyxbegin = yyn < 0 ? -yyn : 0;
5169 const int yychecklim = yylast_ - yyn + 1;
5171 for (
int yyx = yyxbegin; yyx < yyxend; ++yyx)
5173 && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
5177 else if (yycount == yyargn)
5184 if (yyarg && yycount == 0 && 0 < yyargn)
5195 Dhcp6Parser::yy_syntax_error_arguments_ (
const context& yyctx,