594 int yyerrstatus_ = 0;
600 stack_symbol_type yyerror_range[3];
617 yypush_ (YY_NULLPTR, 0,
YY_MOVE (yyla));
623 YYCDEBUG <<
"Entering state " << int (yystack_[0].state) <<
'\n';
627 if (yystack_[0].state == yyfinal_)
638 yyn = yypact_[+yystack_[0].state];
639 if (yy_pact_value_is_default_ (yyn))
651 yyla.move (yylookahead);
656 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
677 if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ())
686 if (yy_table_value_is_error_ (yyn))
697 yypush_ (
"Shifting", state_type (yyn),
YY_MOVE (yyla));
705 yyn = yydefact_[+yystack_[0].state];
717 stack_symbol_type yylhs;
718 yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
738 yylhs.value.emplace<
bool > ();
742 yylhs.value.emplace<
double > ();
746 yylhs.value.emplace< int64_t > ();
750 yylhs.value.emplace< std::string > ();
762 yyerror_range[1].location = yylhs.location;
774#line 326 "dhcp4_parser.yy"
776#line 777 "dhcp4_parser.cc"
780#line 327 "dhcp4_parser.yy"
782#line 783 "dhcp4_parser.cc"
786#line 328 "dhcp4_parser.yy"
788#line 789 "dhcp4_parser.cc"
792#line 329 "dhcp4_parser.yy"
794#line 795 "dhcp4_parser.cc"
798#line 330 "dhcp4_parser.yy"
800#line 801 "dhcp4_parser.cc"
804#line 331 "dhcp4_parser.yy"
806#line 807 "dhcp4_parser.cc"
810#line 332 "dhcp4_parser.yy"
812#line 813 "dhcp4_parser.cc"
816#line 333 "dhcp4_parser.yy"
818#line 819 "dhcp4_parser.cc"
822#line 334 "dhcp4_parser.yy"
824#line 825 "dhcp4_parser.cc"
828#line 335 "dhcp4_parser.yy"
830#line 831 "dhcp4_parser.cc"
834#line 336 "dhcp4_parser.yy"
836#line 837 "dhcp4_parser.cc"
840#line 337 "dhcp4_parser.yy"
842#line 843 "dhcp4_parser.cc"
846#line 338 "dhcp4_parser.yy"
848#line 849 "dhcp4_parser.cc"
852#line 346 "dhcp4_parser.yy"
854#line 855 "dhcp4_parser.cc"
858#line 347 "dhcp4_parser.yy"
860#line 861 "dhcp4_parser.cc"
864#line 348 "dhcp4_parser.yy"
866#line 867 "dhcp4_parser.cc"
870#line 349 "dhcp4_parser.yy"
872#line 873 "dhcp4_parser.cc"
876#line 350 "dhcp4_parser.yy"
878#line 879 "dhcp4_parser.cc"
882#line 351 "dhcp4_parser.yy"
884#line 885 "dhcp4_parser.cc"
888#line 352 "dhcp4_parser.yy"
890#line 891 "dhcp4_parser.cc"
894#line 355 "dhcp4_parser.yy"
899#line 900 "dhcp4_parser.cc"
903#line 360 "dhcp4_parser.yy"
910#line 911 "dhcp4_parser.cc"
914#line 365 "dhcp4_parser.yy"
920#line 921 "dhcp4_parser.cc"
924#line 371 "dhcp4_parser.yy"
926#line 927 "dhcp4_parser.cc"
930#line 378 "dhcp4_parser.yy"
933 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
934 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
936#line 937 "dhcp4_parser.cc"
940#line 383 "dhcp4_parser.yy"
944 ctx.
unique(yystack_[2].value.as < std::string > (), ctx.
loc2pos(yystack_[2].location));
945 ctx.
stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
947#line 948 "dhcp4_parser.cc"
951#line 389 "dhcp4_parser.yy"
955#line 956 "dhcp4_parser.cc"
959#line 394 "dhcp4_parser.yy"
964#line 965 "dhcp4_parser.cc"
968#line 397 "dhcp4_parser.yy"
972#line 973 "dhcp4_parser.cc"
976#line 405 "dhcp4_parser.yy"
981#line 982 "dhcp4_parser.cc"
985#line 409 "dhcp4_parser.yy"
990#line 991 "dhcp4_parser.cc"
994#line 413 "dhcp4_parser.yy"
998#line 999 "dhcp4_parser.cc"
1002#line 419 "dhcp4_parser.yy"
1006#line 1007 "dhcp4_parser.cc"
1010#line 421 "dhcp4_parser.yy"
1015#line 1016 "dhcp4_parser.cc"
1019#line 430 "dhcp4_parser.yy"
1022 ctx.
stack_.back()->add(s);
1024#line 1025 "dhcp4_parser.cc"
1028#line 434 "dhcp4_parser.yy"
1031 ctx.
stack_.back()->add(s);
1033#line 1034 "dhcp4_parser.cc"
1037#line 438 "dhcp4_parser.yy"
1041#line 1042 "dhcp4_parser.cc"
1045#line 448 "dhcp4_parser.yy"
1048 const std::string& keyword = yystack_[1].value.as < std::string > ();
1049 error(yystack_[1].location,
1050 "got unexpected keyword \"" + keyword +
"\" in " + where +
" map.");
1052#line 1053 "dhcp4_parser.cc"
1056#line 457 "dhcp4_parser.yy"
1063#line 1064 "dhcp4_parser.cc"
1067#line 462 "dhcp4_parser.yy"
1076#line 1077 "dhcp4_parser.cc"
1080#line 472 "dhcp4_parser.yy"
1087 ctx.
stack_.back()->set(
"Dhcp4", m);
1091#line 1092 "dhcp4_parser.cc"
1095#line 481 "dhcp4_parser.yy"
1101#line 1102 "dhcp4_parser.cc"
1105#line 489 "dhcp4_parser.yy"
1109#line 1110 "dhcp4_parser.cc"
1113#line 495 "dhcp4_parser.yy"
1119#line 1120 "dhcp4_parser.cc"
1123#line 499 "dhcp4_parser.yy"
1128#line 1129 "dhcp4_parser.cc"
1132#line 506 "dhcp4_parser.yy"
1136#line 1137 "dhcp4_parser.cc"
1140#line 584 "dhcp4_parser.yy"
1142 ctx.
unique(
"valid-lifetime", ctx.
loc2pos(yystack_[2].location));
1144 ctx.
stack_.back()->set(
"valid-lifetime", prf);
1146#line 1147 "dhcp4_parser.cc"
1150#line 590 "dhcp4_parser.yy"
1152 ctx.
unique(
"min-valid-lifetime", ctx.
loc2pos(yystack_[2].location));
1154 ctx.
stack_.back()->set(
"min-valid-lifetime", prf);
1156#line 1157 "dhcp4_parser.cc"
1160#line 596 "dhcp4_parser.yy"
1162 ctx.
unique(
"max-valid-lifetime", ctx.
loc2pos(yystack_[2].location));
1164 ctx.
stack_.back()->set(
"max-valid-lifetime", prf);
1166#line 1167 "dhcp4_parser.cc"
1170#line 602 "dhcp4_parser.yy"
1172 ctx.
unique(
"renew-timer", ctx.
loc2pos(yystack_[2].location));
1174 ctx.
stack_.back()->set(
"renew-timer", prf);
1176#line 1177 "dhcp4_parser.cc"
1180#line 608 "dhcp4_parser.yy"
1182 ctx.
unique(
"rebind-timer", ctx.
loc2pos(yystack_[2].location));
1184 ctx.
stack_.back()->set(
"rebind-timer", prf);
1186#line 1187 "dhcp4_parser.cc"
1190#line 614 "dhcp4_parser.yy"
1192 ctx.
unique(
"calculate-tee-times", ctx.
loc2pos(yystack_[2].location));
1194 ctx.
stack_.back()->set(
"calculate-tee-times", ctt);
1196#line 1197 "dhcp4_parser.cc"
1200#line 620 "dhcp4_parser.yy"
1202 ctx.
unique(
"t1-percent", ctx.
loc2pos(yystack_[2].location));
1204 ctx.
stack_.back()->set(
"t1-percent", t1);
1206#line 1207 "dhcp4_parser.cc"
1210#line 626 "dhcp4_parser.yy"
1212 ctx.
unique(
"t2-percent", ctx.
loc2pos(yystack_[2].location));
1214 ctx.
stack_.back()->set(
"t2-percent", t2);
1216#line 1217 "dhcp4_parser.cc"
1220#line 632 "dhcp4_parser.yy"
1222 ctx.
unique(
"cache-threshold", ctx.
loc2pos(yystack_[2].location));
1224 ctx.
stack_.back()->set(
"cache-threshold", ct);
1226#line 1227 "dhcp4_parser.cc"
1230#line 638 "dhcp4_parser.yy"
1232 ctx.
unique(
"cache-max-age", ctx.
loc2pos(yystack_[2].location));
1234 ctx.
stack_.back()->set(
"cache-max-age", cm);
1236#line 1237 "dhcp4_parser.cc"
1240#line 644 "dhcp4_parser.yy"
1242 ctx.
unique(
"decline-probation-period", ctx.
loc2pos(yystack_[2].location));
1244 ctx.
stack_.back()->set(
"decline-probation-period", dpp);
1246#line 1247 "dhcp4_parser.cc"
1250#line 650 "dhcp4_parser.yy"
1252 ctx.
unique(
"server-tag", ctx.
loc2pos(yystack_[0].location));
1255#line 1256 "dhcp4_parser.cc"
1259#line 653 "dhcp4_parser.yy"
1262 ctx.
stack_.back()->set(
"server-tag", stag);
1265#line 1266 "dhcp4_parser.cc"
1269#line 659 "dhcp4_parser.yy"
1271 ctx.
unique(
"parked-packet-limit", ctx.
loc2pos(yystack_[2].location));
1273 ctx.
stack_.back()->set(
"parked-packet-limit", ppl);
1275#line 1276 "dhcp4_parser.cc"
1279#line 665 "dhcp4_parser.yy"
1284#line 1285 "dhcp4_parser.cc"
1288#line 668 "dhcp4_parser.yy"
1291 ctx.
stack_.back()->set(
"allocator", al);
1294#line 1295 "dhcp4_parser.cc"
1298#line 674 "dhcp4_parser.yy"
1300 ctx.
unique(
"echo-client-id", ctx.
loc2pos(yystack_[2].location));
1302 ctx.
stack_.back()->set(
"echo-client-id", echo);
1304#line 1305 "dhcp4_parser.cc"
1308#line 680 "dhcp4_parser.yy"
1310 ctx.
unique(
"match-client-id", ctx.
loc2pos(yystack_[2].location));
1312 ctx.
stack_.back()->set(
"match-client-id", match);
1314#line 1315 "dhcp4_parser.cc"
1318#line 686 "dhcp4_parser.yy"
1320 ctx.
unique(
"authoritative", ctx.
loc2pos(yystack_[2].location));
1322 ctx.
stack_.back()->set(
"authoritative", prf);
1324#line 1325 "dhcp4_parser.cc"
1328#line 692 "dhcp4_parser.yy"
1330 ctx.
unique(
"ddns-send-updates", ctx.
loc2pos(yystack_[2].location));
1332 ctx.
stack_.back()->set(
"ddns-send-updates", b);
1334#line 1335 "dhcp4_parser.cc"
1338#line 698 "dhcp4_parser.yy"
1340 ctx.
unique(
"ddns-override-no-update", ctx.
loc2pos(yystack_[2].location));
1342 ctx.
stack_.back()->set(
"ddns-override-no-update", b);
1344#line 1345 "dhcp4_parser.cc"
1348#line 704 "dhcp4_parser.yy"
1350 ctx.
unique(
"ddns-override-client-update", ctx.
loc2pos(yystack_[2].location));
1352 ctx.
stack_.back()->set(
"ddns-override-client-update", b);
1354#line 1355 "dhcp4_parser.cc"
1358#line 710 "dhcp4_parser.yy"
1361 ctx.
unique(
"ddns-replace-client-name", ctx.
loc2pos(yystack_[0].location));
1363#line 1364 "dhcp4_parser.cc"
1367#line 713 "dhcp4_parser.yy"
1369 ctx.
stack_.back()->set(
"ddns-replace-client-name", yystack_[0].value.as <
ElementPtr > ());
1372#line 1373 "dhcp4_parser.cc"
1376#line 719 "dhcp4_parser.yy"
1380#line 1381 "dhcp4_parser.cc"
1384#line 722 "dhcp4_parser.yy"
1388#line 1389 "dhcp4_parser.cc"
1392#line 725 "dhcp4_parser.yy"
1396#line 1397 "dhcp4_parser.cc"
1400#line 728 "dhcp4_parser.yy"
1404#line 1405 "dhcp4_parser.cc"
1408#line 731 "dhcp4_parser.yy"
1410 error(yystack_[0].location,
"boolean values for the ddns-replace-client-name are "
1411 "no longer supported");
1413#line 1414 "dhcp4_parser.cc"
1417#line 737 "dhcp4_parser.yy"
1419 ctx.
unique(
"ddns-generated-prefix", ctx.
loc2pos(yystack_[0].location));
1422#line 1423 "dhcp4_parser.cc"
1426#line 740 "dhcp4_parser.yy"
1429 ctx.
stack_.back()->set(
"ddns-generated-prefix", s);
1432#line 1433 "dhcp4_parser.cc"
1436#line 746 "dhcp4_parser.yy"
1438 ctx.
unique(
"ddns-qualifying-suffix", ctx.
loc2pos(yystack_[0].location));
1441#line 1442 "dhcp4_parser.cc"
1445#line 749 "dhcp4_parser.yy"
1448 ctx.
stack_.back()->set(
"ddns-qualifying-suffix", s);
1451#line 1452 "dhcp4_parser.cc"
1455#line 755 "dhcp4_parser.yy"
1457 ctx.
unique(
"ddns-update-on-renew", ctx.
loc2pos(yystack_[2].location));
1459 ctx.
stack_.back()->set(
"ddns-update-on-renew", b);
1461#line 1462 "dhcp4_parser.cc"
1465#line 764 "dhcp4_parser.yy"
1467 ctx.
unique(
"ddns-use-conflict-resolution", ctx.
loc2pos(yystack_[2].location));
1469 ctx.
warning(yystack_[1].location,
"ddns-use-conflict-resolution is deprecated. "
1470 "Substituting ddns-conflict-resolution-mode");
1472 :
"no-check-with-dhcid"));
1473 ctx.
stack_.back()->set(
"ddns-conflict-resolution-mode", mode);
1475#line 1476 "dhcp4_parser.cc"
1479#line 774 "dhcp4_parser.yy"
1481 ctx.
unique(
"ddns-conflict-resolution-mode", ctx.
loc2pos(yystack_[0].location));
1484#line 1485 "dhcp4_parser.cc"
1488#line 777 "dhcp4_parser.yy"
1490 ctx.
stack_.back()->set(
"ddns-conflict-resolution-mode", yystack_[0].value.as <
ElementPtr > ());
1493#line 1494 "dhcp4_parser.cc"
1497#line 783 "dhcp4_parser.yy"
1501#line 1502 "dhcp4_parser.cc"
1505#line 786 "dhcp4_parser.yy"
1509#line 1510 "dhcp4_parser.cc"
1513#line 789 "dhcp4_parser.yy"
1517#line 1518 "dhcp4_parser.cc"
1521#line 792 "dhcp4_parser.yy"
1525#line 1526 "dhcp4_parser.cc"
1529#line 797 "dhcp4_parser.yy"
1531 ctx.
unique(
"ddns-ttl-percent", ctx.
loc2pos(yystack_[2].location));
1533 ctx.
stack_.back()->set(
"ddns-ttl-percent", ttl);
1535#line 1536 "dhcp4_parser.cc"
1539#line 803 "dhcp4_parser.yy"
1541 ctx.
unique(
"hostname-char-set", ctx.
loc2pos(yystack_[0].location));
1544#line 1545 "dhcp4_parser.cc"
1548#line 806 "dhcp4_parser.yy"
1551 ctx.
stack_.back()->set(
"hostname-char-set", s);
1554#line 1555 "dhcp4_parser.cc"
1558#line 812 "dhcp4_parser.yy"
1560 ctx.
unique(
"hostname-char-replacement", ctx.
loc2pos(yystack_[0].location));
1563#line 1564 "dhcp4_parser.cc"
1567#line 815 "dhcp4_parser.yy"
1570 ctx.
stack_.back()->set(
"hostname-char-replacement", s);
1573#line 1574 "dhcp4_parser.cc"
1577#line 821 "dhcp4_parser.yy"
1579 ctx.
unique(
"store-extended-info", ctx.
loc2pos(yystack_[2].location));
1581 ctx.
stack_.back()->set(
"store-extended-info", b);
1583#line 1584 "dhcp4_parser.cc"
1587#line 827 "dhcp4_parser.yy"
1589 ctx.
unique(
"statistic-default-sample-count", ctx.
loc2pos(yystack_[2].location));
1591 ctx.
stack_.back()->set(
"statistic-default-sample-count", count);
1593#line 1594 "dhcp4_parser.cc"
1597#line 833 "dhcp4_parser.yy"
1599 ctx.
unique(
"statistic-default-sample-age", ctx.
loc2pos(yystack_[2].location));
1601 ctx.
stack_.back()->set(
"statistic-default-sample-age", age);
1603#line 1604 "dhcp4_parser.cc"
1607#line 839 "dhcp4_parser.yy"
1609 ctx.
unique(
"early-global-reservations-lookup", ctx.
loc2pos(yystack_[2].location));
1611 ctx.
stack_.back()->set(
"early-global-reservations-lookup", early);
1613#line 1614 "dhcp4_parser.cc"
1617#line 845 "dhcp4_parser.yy"
1619 ctx.
unique(
"ip-reservations-unique", ctx.
loc2pos(yystack_[2].location));
1621 ctx.
stack_.back()->set(
"ip-reservations-unique", unique);
1623#line 1624 "dhcp4_parser.cc"
1627#line 851 "dhcp4_parser.yy"
1629 ctx.
unique(
"reservations-lookup-first", ctx.
loc2pos(yystack_[2].location));
1631 ctx.
stack_.back()->set(
"reservations-lookup-first", first);
1633#line 1634 "dhcp4_parser.cc"
1637#line 857 "dhcp4_parser.yy"
1639 ctx.
unique(
"offer-lifetime", ctx.
loc2pos(yystack_[2].location));
1641 ctx.
stack_.back()->set(
"offer-lifetime", offer_lifetime);
1643#line 1644 "dhcp4_parser.cc"
1647#line 863 "dhcp4_parser.yy"
1649 ctx.
unique(
"stash-agent-options", ctx.
loc2pos(yystack_[2].location));
1651 ctx.
stack_.back()->set(
"stash-agent-options", stash);
1653#line 1654 "dhcp4_parser.cc"
1657#line 869 "dhcp4_parser.yy"
1659 ctx.
unique(
"interfaces-config", ctx.
loc2pos(yystack_[0].location));
1661 ctx.
stack_.back()->set(
"interfaces-config", i);
1665#line 1666 "dhcp4_parser.cc"
1669#line 875 "dhcp4_parser.yy"
1675#line 1676 "dhcp4_parser.cc"
1679#line 883 "dhcp4_parser.yy"
1683#line 1684 "dhcp4_parser.cc"
1687#line 900 "dhcp4_parser.yy"
1693#line 1694 "dhcp4_parser.cc"
1697#line 904 "dhcp4_parser.yy"
1702#line 1703 "dhcp4_parser.cc"
1706#line 909 "dhcp4_parser.yy"
1708 ctx.
unique(
"interfaces", ctx.
loc2pos(yystack_[0].location));
1710 ctx.
stack_.back()->set(
"interfaces", l);
1714#line 1715 "dhcp4_parser.cc"
1718#line 915 "dhcp4_parser.yy"
1723#line 1724 "dhcp4_parser.cc"
1727#line 920 "dhcp4_parser.yy"
1729 ctx.
unique(
"dhcp-socket-type", ctx.
loc2pos(yystack_[0].location));
1732#line 1733 "dhcp4_parser.cc"
1736#line 923 "dhcp4_parser.yy"
1738 ctx.
stack_.back()->set(
"dhcp-socket-type", yystack_[0].value.as <
ElementPtr > ());
1741#line 1742 "dhcp4_parser.cc"
1745#line 928 "dhcp4_parser.yy"
1747#line 1748 "dhcp4_parser.cc"
1751#line 929 "dhcp4_parser.yy"
1753#line 1754 "dhcp4_parser.cc"
1757#line 932 "dhcp4_parser.yy"
1759 ctx.
unique(
"outbound-interface", ctx.
loc2pos(yystack_[0].location));
1762#line 1763 "dhcp4_parser.cc"
1766#line 935 "dhcp4_parser.yy"
1768 ctx.
stack_.back()->set(
"outbound-interface", yystack_[0].value.as <
ElementPtr > ());
1771#line 1772 "dhcp4_parser.cc"
1775#line 940 "dhcp4_parser.yy"
1779#line 1780 "dhcp4_parser.cc"
1783#line 942 "dhcp4_parser.yy"
1787#line 1788 "dhcp4_parser.cc"
1791#line 946 "dhcp4_parser.yy"
1795 ctx.
stack_.back()->set(
"re-detect", b);
1797#line 1798 "dhcp4_parser.cc"
1801#line 952 "dhcp4_parser.yy"
1803 ctx.
unique(
"service-sockets-require-all", ctx.
loc2pos(yystack_[2].location));
1805 ctx.
stack_.back()->set(
"service-sockets-require-all", b);
1807#line 1808 "dhcp4_parser.cc"
1811#line 958 "dhcp4_parser.yy"
1813 ctx.
unique(
"service-sockets-retry-wait-time", ctx.
loc2pos(yystack_[2].location));
1815 ctx.
stack_.back()->set(
"service-sockets-retry-wait-time", n);
1817#line 1818 "dhcp4_parser.cc"
1821#line 964 "dhcp4_parser.yy"
1823 ctx.
unique(
"service-sockets-max-retries", ctx.
loc2pos(yystack_[2].location));
1825 ctx.
stack_.back()->set(
"service-sockets-max-retries", n);
1827#line 1828 "dhcp4_parser.cc"
1831#line 970 "dhcp4_parser.yy"
1833 ctx.
unique(
"lease-database", ctx.
loc2pos(yystack_[0].location));
1835 ctx.
stack_.back()->set(
"lease-database", i);
1839#line 1840 "dhcp4_parser.cc"
1843#line 976 "dhcp4_parser.yy"
1850#line 1851 "dhcp4_parser.cc"
1854#line 983 "dhcp4_parser.yy"
1856 ctx.
unique(
"sanity-checks", ctx.
loc2pos(yystack_[0].location));
1858 ctx.
stack_.back()->set(
"sanity-checks", m);
1862#line 1863 "dhcp4_parser.cc"
1866#line 989 "dhcp4_parser.yy"
1871#line 1872 "dhcp4_parser.cc"
1875#line 996 "dhcp4_parser.yy"
1879#line 1880 "dhcp4_parser.cc"
1883#line 1005 "dhcp4_parser.yy"
1885 ctx.
unique(
"lease-checks", ctx.
loc2pos(yystack_[0].location));
1888#line 1889 "dhcp4_parser.cc"
1892#line 1008 "dhcp4_parser.yy"
1895 if ( (
string(yystack_[0].value.as < std::string > ()) ==
"none") ||
1896 (
string(yystack_[0].value.as < std::string > ()) ==
"warn") ||
1897 (
string(yystack_[0].value.as < std::string > ()) ==
"fix") ||
1898 (
string(yystack_[0].value.as < std::string > ()) ==
"fix-del") ||
1899 (
string(yystack_[0].value.as < std::string > ()) ==
"del")) {
1901 ctx.
stack_.back()->set(
"lease-checks", user);
1904 error(yystack_[0].location,
"Unsupported 'lease-checks value: " +
string(yystack_[0].value.as < std::string > ()) +
1905 ", supported values are: none, warn, fix, fix-del, del");
1908#line 1909 "dhcp4_parser.cc"
1912#line 1024 "dhcp4_parser.yy"
1914 ctx.
unique(
"extended-info-checks", ctx.
loc2pos(yystack_[0].location));
1917#line 1918 "dhcp4_parser.cc"
1921#line 1027 "dhcp4_parser.yy"
1924 if ( (
string(yystack_[0].value.as < std::string > ()) ==
"none") ||
1925 (
string(yystack_[0].value.as < std::string > ()) ==
"fix") ||
1926 (
string(yystack_[0].value.as < std::string > ()) ==
"strict") ||
1927 (
string(yystack_[0].value.as < std::string > ()) ==
"pedantic")) {
1929 ctx.
stack_.back()->set(
"extended-info-checks", user);
1932 error(yystack_[0].location,
"Unsupported 'extended-info-checks value: " +
string(yystack_[0].value.as < std::string > ()) +
1933 ", supported values are: none, fix, strict, pedantic");
1936#line 1937 "dhcp4_parser.cc"
1940#line 1042 "dhcp4_parser.yy"
1942 ctx.
unique(
"hosts-database", ctx.
loc2pos(yystack_[0].location));
1944 ctx.
stack_.back()->set(
"hosts-database", i);
1948#line 1949 "dhcp4_parser.cc"
1952#line 1048 "dhcp4_parser.yy"
1959#line 1960 "dhcp4_parser.cc"
1963#line 1055 "dhcp4_parser.yy"
1965 ctx.
unique(
"hosts-databases", ctx.
loc2pos(yystack_[0].location));
1967 ctx.
stack_.back()->set(
"hosts-databases", l);
1971#line 1972 "dhcp4_parser.cc"
1975#line 1061 "dhcp4_parser.yy"
1980#line 1981 "dhcp4_parser.cc"
1984#line 1072 "dhcp4_parser.yy"
1988#line 1989 "dhcp4_parser.cc"
1992#line 1077 "dhcp4_parser.yy"
1995 ctx.
stack_.back()->add(m);
1998#line 1999 "dhcp4_parser.cc"
2002#line 1081 "dhcp4_parser.yy"
2008#line 2009 "dhcp4_parser.cc"
2012#line 1089 "dhcp4_parser.yy"
2016#line 2017 "dhcp4_parser.cc"
2020#line 1119 "dhcp4_parser.yy"
2025#line 2026 "dhcp4_parser.cc"
2029#line 1122 "dhcp4_parser.yy"
2032 ctx.
stack_.back()->set(
"type", db_type);
2035#line 2036 "dhcp4_parser.cc"
2039#line 1128 "dhcp4_parser.yy"
2044#line 2045 "dhcp4_parser.cc"
2048#line 1131 "dhcp4_parser.yy"
2051 ctx.
stack_.back()->set(
"user", user);
2054#line 2055 "dhcp4_parser.cc"
2058#line 1137 "dhcp4_parser.yy"
2063#line 2064 "dhcp4_parser.cc"
2067#line 1140 "dhcp4_parser.yy"
2070 ctx.
stack_.back()->set(
"password", pwd);
2073#line 2074 "dhcp4_parser.cc"
2077#line 1146 "dhcp4_parser.yy"
2082#line 2083 "dhcp4_parser.cc"
2086#line 1149 "dhcp4_parser.yy"
2089 ctx.
stack_.back()->set(
"host", h);
2092#line 2093 "dhcp4_parser.cc"
2096#line 1155 "dhcp4_parser.yy"
2100 ctx.
stack_.back()->set(
"port", p);
2102#line 2103 "dhcp4_parser.cc"
2106#line 1161 "dhcp4_parser.yy"
2111#line 2112 "dhcp4_parser.cc"
2115#line 1164 "dhcp4_parser.yy"
2118 ctx.
stack_.back()->set(
"name", name);
2121#line 2122 "dhcp4_parser.cc"
2125#line 1170 "dhcp4_parser.yy"
2129 ctx.
stack_.back()->set(
"persist", n);
2131#line 2132 "dhcp4_parser.cc"
2135#line 1176 "dhcp4_parser.yy"
2137 ctx.
unique(
"lfc-interval", ctx.
loc2pos(yystack_[2].location));
2139 ctx.
stack_.back()->set(
"lfc-interval", n);
2141#line 2142 "dhcp4_parser.cc"
2145#line 1182 "dhcp4_parser.yy"
2149 ctx.
stack_.back()->set(
"readonly", n);
2151#line 2152 "dhcp4_parser.cc"
2155#line 1188 "dhcp4_parser.yy"
2157 ctx.
unique(
"connect-timeout", ctx.
loc2pos(yystack_[2].location));
2159 ctx.
stack_.back()->set(
"connect-timeout", n);
2161#line 2162 "dhcp4_parser.cc"
2165#line 1194 "dhcp4_parser.yy"
2167 ctx.
unique(
"read-timeout", ctx.
loc2pos(yystack_[2].location));
2169 ctx.
stack_.back()->set(
"read-timeout", n);
2171#line 2172 "dhcp4_parser.cc"
2175#line 1200 "dhcp4_parser.yy"
2177 ctx.
unique(
"write-timeout", ctx.
loc2pos(yystack_[2].location));
2179 ctx.
stack_.back()->set(
"write-timeout", n);
2181#line 2182 "dhcp4_parser.cc"
2185#line 1206 "dhcp4_parser.yy"
2187 ctx.
unique(
"tcp-user-timeout", ctx.
loc2pos(yystack_[2].location));
2189 ctx.
stack_.back()->set(
"tcp-user-timeout", n);
2191#line 2192 "dhcp4_parser.cc"
2195#line 1212 "dhcp4_parser.yy"
2197 ctx.
unique(
"max-reconnect-tries", ctx.
loc2pos(yystack_[2].location));
2199 ctx.
stack_.back()->set(
"max-reconnect-tries", n);
2201#line 2202 "dhcp4_parser.cc"
2205#line 1218 "dhcp4_parser.yy"
2207 ctx.
unique(
"reconnect-wait-time", ctx.
loc2pos(yystack_[2].location));
2209 ctx.
stack_.back()->set(
"reconnect-wait-time", n);
2211#line 2212 "dhcp4_parser.cc"
2215#line 1224 "dhcp4_parser.yy"
2220#line 2221 "dhcp4_parser.cc"
2224#line 1227 "dhcp4_parser.yy"
2229#line 2230 "dhcp4_parser.cc"
2233#line 1232 "dhcp4_parser.yy"
2235#line 2236 "dhcp4_parser.cc"
2239#line 1233 "dhcp4_parser.yy"
2241#line 2242 "dhcp4_parser.cc"
2245#line 1234 "dhcp4_parser.yy"
2247#line 2248 "dhcp4_parser.cc"
2251#line 1237 "dhcp4_parser.yy"
2253 ctx.
unique(
"retry-on-startup", ctx.
loc2pos(yystack_[2].location));
2255 ctx.
stack_.back()->set(
"retry-on-startup", n);
2257#line 2258 "dhcp4_parser.cc"
2261#line 1243 "dhcp4_parser.yy"
2263 ctx.
unique(
"max-row-errors", ctx.
loc2pos(yystack_[2].location));
2265 ctx.
stack_.back()->set(
"max-row-errors", n);
2267#line 2268 "dhcp4_parser.cc"
2271#line 1249 "dhcp4_parser.yy"
2273 ctx.
unique(
"trust-anchor", ctx.
loc2pos(yystack_[0].location));
2276#line 2277 "dhcp4_parser.cc"
2280#line 1252 "dhcp4_parser.yy"
2283 ctx.
stack_.back()->set(
"trust-anchor", ca);
2286#line 2287 "dhcp4_parser.cc"
2290#line 1258 "dhcp4_parser.yy"
2295#line 2296 "dhcp4_parser.cc"
2299#line 1261 "dhcp4_parser.yy"
2302 ctx.
stack_.back()->set(
"cert-file", cert);
2305#line 2306 "dhcp4_parser.cc"
2309#line 1267 "dhcp4_parser.yy"
2314#line 2315 "dhcp4_parser.cc"
2318#line 1270 "dhcp4_parser.yy"
2321 ctx.
stack_.back()->set(
"key-file", key);
2324#line 2325 "dhcp4_parser.cc"
2328#line 1276 "dhcp4_parser.yy"
2330 ctx.
unique(
"cipher-list", ctx.
loc2pos(yystack_[0].location));
2333#line 2334 "dhcp4_parser.cc"
2337#line 1279 "dhcp4_parser.yy"
2340 ctx.
stack_.back()->set(
"cipher-list", cl);
2343#line 2344 "dhcp4_parser.cc"
2347#line 1285 "dhcp4_parser.yy"
2349 ctx.
unique(
"host-reservation-identifiers", ctx.
loc2pos(yystack_[0].location));
2351 ctx.
stack_.back()->set(
"host-reservation-identifiers", l);
2355#line 2356 "dhcp4_parser.cc"
2359#line 1291 "dhcp4_parser.yy"
2364#line 2365 "dhcp4_parser.cc"
2368#line 1298 "dhcp4_parser.yy"
2372#line 2373 "dhcp4_parser.cc"
2376#line 1310 "dhcp4_parser.yy"
2379 ctx.
stack_.back()->add(duid);
2381#line 2382 "dhcp4_parser.cc"
2385#line 1315 "dhcp4_parser.yy"
2388 ctx.
stack_.back()->add(hwaddr);
2390#line 2391 "dhcp4_parser.cc"
2394#line 1320 "dhcp4_parser.yy"
2397 ctx.
stack_.back()->add(circuit);
2399#line 2400 "dhcp4_parser.cc"
2403#line 1325 "dhcp4_parser.yy"
2406 ctx.
stack_.back()->add(client);
2408#line 2409 "dhcp4_parser.cc"
2412#line 1330 "dhcp4_parser.yy"
2415 ctx.
stack_.back()->add(flex_id);
2417#line 2418 "dhcp4_parser.cc"
2421#line 1337 "dhcp4_parser.yy"
2423 ctx.
unique(
"multi-threading", ctx.
loc2pos(yystack_[0].location));
2425 ctx.
stack_.back()->set(
"multi-threading", mt);
2426 ctx.
stack_.push_back(mt);
2429#line 2430 "dhcp4_parser.cc"
2433#line 1343 "dhcp4_parser.yy"
2436 ctx.
require(
"enable-multi-threading", ctx.
loc2pos(yystack_[2].location), ctx.
loc2pos(yystack_[0].location));
2440#line 2441 "dhcp4_parser.cc"
2444#line 1352 "dhcp4_parser.yy"
2448#line 2449 "dhcp4_parser.cc"
2452#line 1365 "dhcp4_parser.yy"
2454 ctx.
unique(
"enable-multi-threading", ctx.
loc2pos(yystack_[2].location));
2456 ctx.
stack_.back()->set(
"enable-multi-threading", b);
2458#line 2459 "dhcp4_parser.cc"
2462#line 1371 "dhcp4_parser.yy"
2464 ctx.
unique(
"thread-pool-size", ctx.
loc2pos(yystack_[2].location));
2466 ctx.
stack_.back()->set(
"thread-pool-size", prf);
2468#line 2469 "dhcp4_parser.cc"
2472#line 1377 "dhcp4_parser.yy"
2474 ctx.
unique(
"packet-queue-size", ctx.
loc2pos(yystack_[2].location));
2476 ctx.
stack_.back()->set(
"packet-queue-size", prf);
2478#line 2479 "dhcp4_parser.cc"
2482#line 1383 "dhcp4_parser.yy"
2484 ctx.
unique(
"hooks-libraries", ctx.
loc2pos(yystack_[0].location));
2486 ctx.
stack_.back()->set(
"hooks-libraries", l);
2490#line 2491 "dhcp4_parser.cc"
2494#line 1389 "dhcp4_parser.yy"
2499#line 2500 "dhcp4_parser.cc"
2503#line 1400 "dhcp4_parser.yy"
2507#line 2508 "dhcp4_parser.cc"
2511#line 1405 "dhcp4_parser.yy"
2514 ctx.
stack_.back()->add(m);
2517#line 2518 "dhcp4_parser.cc"
2521#line 1409 "dhcp4_parser.yy"
2527#line 2528 "dhcp4_parser.cc"
2531#line 1415 "dhcp4_parser.yy"
2537#line 2538 "dhcp4_parser.cc"
2541#line 1419 "dhcp4_parser.yy"
2547#line 2548 "dhcp4_parser.cc"
2551#line 1427 "dhcp4_parser.yy"
2555#line 2556 "dhcp4_parser.cc"
2559#line 1437 "dhcp4_parser.yy"
2564#line 2565 "dhcp4_parser.cc"
2568#line 1440 "dhcp4_parser.yy"
2571 ctx.
stack_.back()->set(
"library", lib);
2574#line 2575 "dhcp4_parser.cc"
2578#line 1446 "dhcp4_parser.yy"
2580 ctx.
unique(
"parameters", ctx.
loc2pos(yystack_[0].location));
2583#line 2584 "dhcp4_parser.cc"
2587#line 1449 "dhcp4_parser.yy"
2589 ctx.
stack_.back()->set(
"parameters", yystack_[0].value.as <
ElementPtr > ());
2592#line 2593 "dhcp4_parser.cc"
2596#line 1455 "dhcp4_parser.yy"
2598 ctx.
unique(
"expired-leases-processing", ctx.
loc2pos(yystack_[0].location));
2600 ctx.
stack_.back()->set(
"expired-leases-processing", m);
2604#line 2605 "dhcp4_parser.cc"
2608#line 1461 "dhcp4_parser.yy"
2614#line 2615 "dhcp4_parser.cc"
2618#line 1469 "dhcp4_parser.yy"
2622#line 2623 "dhcp4_parser.cc"
2626#line 1482 "dhcp4_parser.yy"
2628 ctx.
unique(
"reclaim-timer-wait-time", ctx.
loc2pos(yystack_[2].location));
2630 ctx.
stack_.back()->set(
"reclaim-timer-wait-time", value);
2632#line 2633 "dhcp4_parser.cc"
2636#line 1488 "dhcp4_parser.yy"
2638 ctx.
unique(
"flush-reclaimed-timer-wait-time", ctx.
loc2pos(yystack_[2].location));
2640 ctx.
stack_.back()->set(
"flush-reclaimed-timer-wait-time", value);
2642#line 2643 "dhcp4_parser.cc"
2646#line 1494 "dhcp4_parser.yy"
2648 ctx.
unique(
"hold-reclaimed-time", ctx.
loc2pos(yystack_[2].location));
2650 ctx.
stack_.back()->set(
"hold-reclaimed-time", value);
2652#line 2653 "dhcp4_parser.cc"
2656#line 1500 "dhcp4_parser.yy"
2658 ctx.
unique(
"max-reclaim-leases", ctx.
loc2pos(yystack_[2].location));
2660 ctx.
stack_.back()->set(
"max-reclaim-leases", value);
2662#line 2663 "dhcp4_parser.cc"
2666#line 1506 "dhcp4_parser.yy"
2668 ctx.
unique(
"max-reclaim-time", ctx.
loc2pos(yystack_[2].location));
2670 ctx.
stack_.back()->set(
"max-reclaim-time", value);
2672#line 2673 "dhcp4_parser.cc"
2676#line 1512 "dhcp4_parser.yy"
2678 ctx.
unique(
"unwarned-reclaim-cycles", ctx.
loc2pos(yystack_[2].location));
2680 ctx.
stack_.back()->set(
"unwarned-reclaim-cycles", value);
2682#line 2683 "dhcp4_parser.cc"
2686#line 1521 "dhcp4_parser.yy"
2690 ctx.
stack_.back()->set(
"subnet4", l);
2694#line 2695 "dhcp4_parser.cc"
2698#line 1527 "dhcp4_parser.yy"
2703#line 2704 "dhcp4_parser.cc"
2707#line 1541 "dhcp4_parser.yy"
2711#line 2712 "dhcp4_parser.cc"
2715#line 1550 "dhcp4_parser.yy"
2718 ctx.
stack_.back()->add(m);
2721#line 2722 "dhcp4_parser.cc"
2725#line 1554 "dhcp4_parser.yy"
2747#line 2748 "dhcp4_parser.cc"
2751#line 1576 "dhcp4_parser.yy"
2757#line 2758 "dhcp4_parser.cc"
2761#line 1580 "dhcp4_parser.yy"
2767#line 2768 "dhcp4_parser.cc"
2771#line 1589 "dhcp4_parser.yy"
2775#line 2776 "dhcp4_parser.cc"
2779#line 1647 "dhcp4_parser.yy"
2784#line 2785 "dhcp4_parser.cc"
2788#line 1650 "dhcp4_parser.yy"
2791 ctx.
stack_.back()->set(
"subnet", subnet);
2794#line 2795 "dhcp4_parser.cc"
2798#line 1656 "dhcp4_parser.yy"
2800 ctx.
unique(
"4o6-interface", ctx.
loc2pos(yystack_[0].location));
2803#line 2804 "dhcp4_parser.cc"
2807#line 1659 "dhcp4_parser.yy"
2810 ctx.
stack_.back()->set(
"4o6-interface", iface);
2813#line 2814 "dhcp4_parser.cc"
2817#line 1665 "dhcp4_parser.yy"
2819 ctx.
unique(
"4o6-interface-id", ctx.
loc2pos(yystack_[0].location));
2822#line 2823 "dhcp4_parser.cc"
2826#line 1668 "dhcp4_parser.yy"
2829 ctx.
stack_.back()->set(
"4o6-interface-id", iface);
2832#line 2833 "dhcp4_parser.cc"
2836#line 1674 "dhcp4_parser.yy"
2838 ctx.
unique(
"4o6-subnet", ctx.
loc2pos(yystack_[0].location));
2841#line 2842 "dhcp4_parser.cc"
2845#line 1677 "dhcp4_parser.yy"
2848 ctx.
stack_.back()->set(
"4o6-subnet", iface);
2851#line 2852 "dhcp4_parser.cc"
2855#line 1683 "dhcp4_parser.yy"
2860#line 2861 "dhcp4_parser.cc"
2864#line 1686 "dhcp4_parser.yy"
2867 ctx.
stack_.back()->set(
"interface", iface);
2870#line 2871 "dhcp4_parser.cc"
2874#line 1692 "dhcp4_parser.yy"
2876 ctx.
unique(
"client-class", ctx.
loc2pos(yystack_[0].location));
2879#line 2880 "dhcp4_parser.cc"
2883#line 1695 "dhcp4_parser.yy"
2886 ctx.
stack_.back()->set(
"client-class", cls);
2889#line 2890 "dhcp4_parser.cc"
2893#line 1702 "dhcp4_parser.yy"
2895 ctx.
unique(
"client-classes", ctx.
loc2pos(yystack_[0].location));
2897 ctx.
stack_.back()->set(
"client-classes", c);
2901#line 2902 "dhcp4_parser.cc"
2905#line 1708 "dhcp4_parser.yy"
2910#line 2911 "dhcp4_parser.cc"
2914#line 1714 "dhcp4_parser.yy"
2916 ctx.
unique(
"require-client-classes", ctx.
loc2pos(yystack_[0].location));
2918 ctx.
stack_.back()->set(
"require-client-classes", c);
2922#line 2923 "dhcp4_parser.cc"
2926#line 1720 "dhcp4_parser.yy"
2931#line 2932 "dhcp4_parser.cc"
2935#line 1725 "dhcp4_parser.yy"
2937 ctx.
unique(
"evaluate-additional-classes", ctx.
loc2pos(yystack_[0].location));
2939 ctx.
stack_.back()->set(
"evaluate-additional-classes", c);
2943#line 2944 "dhcp4_parser.cc"
2947#line 1731 "dhcp4_parser.yy"
2952#line 2953 "dhcp4_parser.cc"
2956#line 1736 "dhcp4_parser.yy"
2958 ctx.
unique(
"reservations-global", ctx.
loc2pos(yystack_[2].location));
2960 ctx.
stack_.back()->set(
"reservations-global", b);
2962#line 2963 "dhcp4_parser.cc"
2966#line 1742 "dhcp4_parser.yy"
2968 ctx.
unique(
"reservations-in-subnet", ctx.
loc2pos(yystack_[2].location));
2970 ctx.
stack_.back()->set(
"reservations-in-subnet", b);
2972#line 2973 "dhcp4_parser.cc"
2976#line 1748 "dhcp4_parser.yy"
2978 ctx.
unique(
"reservations-out-of-pool", ctx.
loc2pos(yystack_[2].location));
2980 ctx.
stack_.back()->set(
"reservations-out-of-pool", b);
2982#line 2983 "dhcp4_parser.cc"
2986#line 1754 "dhcp4_parser.yy"
2990 ctx.
stack_.back()->set(
"id",
id);
2992#line 2993 "dhcp4_parser.cc"
2996#line 1762 "dhcp4_parser.yy"
2998 ctx.
unique(
"shared-networks", ctx.
loc2pos(yystack_[0].location));
3000 ctx.
stack_.back()->set(
"shared-networks", l);
3004#line 3005 "dhcp4_parser.cc"
3008#line 1768 "dhcp4_parser.yy"
3013#line 3014 "dhcp4_parser.cc"
3017#line 1781 "dhcp4_parser.yy"
3021#line 3022 "dhcp4_parser.cc"
3025#line 1786 "dhcp4_parser.yy"
3028 ctx.
stack_.back()->add(m);
3031#line 3032 "dhcp4_parser.cc"
3035#line 1790 "dhcp4_parser.yy"
3039#line 3040 "dhcp4_parser.cc"
3043#line 1796 "dhcp4_parser.yy"
3047#line 3048 "dhcp4_parser.cc"
3051#line 1852 "dhcp4_parser.yy"
3053 ctx.
unique(
"option-def", ctx.
loc2pos(yystack_[0].location));
3055 ctx.
stack_.back()->set(
"option-def", l);
3059#line 3060 "dhcp4_parser.cc"
3063#line 1858 "dhcp4_parser.yy"
3068#line 3069 "dhcp4_parser.cc"
3072#line 1866 "dhcp4_parser.yy"
3077#line 3078 "dhcp4_parser.cc"
3081#line 1869 "dhcp4_parser.yy"
3085#line 3086 "dhcp4_parser.cc"
3089#line 1881 "dhcp4_parser.yy"
3093#line 3094 "dhcp4_parser.cc"
3097#line 1888 "dhcp4_parser.yy"
3100 ctx.
stack_.back()->add(m);
3103#line 3104 "dhcp4_parser.cc"
3107#line 1892 "dhcp4_parser.yy"
3115#line 3116 "dhcp4_parser.cc"
3119#line 1903 "dhcp4_parser.yy"
3125#line 3126 "dhcp4_parser.cc"
3129#line 1907 "dhcp4_parser.yy"
3137#line 3138 "dhcp4_parser.cc"
3141#line 1923 "dhcp4_parser.yy"
3145#line 3146 "dhcp4_parser.cc"
3149#line 1942 "dhcp4_parser.yy"
3153 ctx.
stack_.back()->set(
"code", code);
3155#line 3156 "dhcp4_parser.cc"
3159#line 1950 "dhcp4_parser.yy"
3164#line 3165 "dhcp4_parser.cc"
3168#line 1953 "dhcp4_parser.yy"
3171 ctx.
stack_.back()->set(
"type", prf);
3174#line 3175 "dhcp4_parser.cc"
3178#line 1959 "dhcp4_parser.yy"
3180 ctx.
unique(
"record-types", ctx.
loc2pos(yystack_[0].location));
3183#line 3184 "dhcp4_parser.cc"
3187#line 1962 "dhcp4_parser.yy"
3190 ctx.
stack_.back()->set(
"record-types", rtypes);
3193#line 3194 "dhcp4_parser.cc"
3197#line 1968 "dhcp4_parser.yy"
3202#line 3203 "dhcp4_parser.cc"
3206#line 1971 "dhcp4_parser.yy"
3209 ctx.
stack_.back()->set(
"space", space);
3212#line 3213 "dhcp4_parser.cc"
3216#line 1979 "dhcp4_parser.yy"
3218 ctx.
unique(
"encapsulate", ctx.
loc2pos(yystack_[0].location));
3221#line 3222 "dhcp4_parser.cc"
3225#line 1982 "dhcp4_parser.yy"
3228 ctx.
stack_.back()->set(
"encapsulate", encap);
3231#line 3232 "dhcp4_parser.cc"
3235#line 1988 "dhcp4_parser.yy"
3239 ctx.
stack_.back()->set(
"array", array);
3241#line 3242 "dhcp4_parser.cc"
3245#line 1998 "dhcp4_parser.yy"
3247 ctx.
unique(
"option-data", ctx.
loc2pos(yystack_[0].location));
3249 ctx.
stack_.back()->set(
"option-data", l);
3253#line 3254 "dhcp4_parser.cc"
3257#line 2004 "dhcp4_parser.yy"
3262#line 3263 "dhcp4_parser.cc"
3266#line 2019 "dhcp4_parser.yy"
3270#line 3271 "dhcp4_parser.cc"
3274#line 2026 "dhcp4_parser.yy"
3277 ctx.
stack_.back()->add(m);
3280#line 3281 "dhcp4_parser.cc"
3284#line 2030 "dhcp4_parser.yy"
3289#line 3290 "dhcp4_parser.cc"
3293#line 2038 "dhcp4_parser.yy"
3299#line 3300 "dhcp4_parser.cc"
3303#line 2042 "dhcp4_parser.yy"
3308#line 3309 "dhcp4_parser.cc"
3312#line 2058 "dhcp4_parser.yy"
3316#line 3317 "dhcp4_parser.cc"
3320#line 2080 "dhcp4_parser.yy"
3325#line 3326 "dhcp4_parser.cc"
3329#line 2083 "dhcp4_parser.yy"
3332 ctx.
stack_.back()->set(
"data", data);
3335#line 3336 "dhcp4_parser.cc"
3339#line 2093 "dhcp4_parser.yy"
3341 ctx.
unique(
"csv-format", ctx.
loc2pos(yystack_[2].location));
3343 ctx.
stack_.back()->set(
"csv-format", csv);
3345#line 3346 "dhcp4_parser.cc"
3349#line 2099 "dhcp4_parser.yy"
3351 ctx.
unique(
"always-send", ctx.
loc2pos(yystack_[2].location));
3353 ctx.
stack_.back()->set(
"always-send", persist);
3355#line 3356 "dhcp4_parser.cc"
3359#line 2105 "dhcp4_parser.yy"
3361 ctx.
unique(
"never-send", ctx.
loc2pos(yystack_[2].location));
3363 ctx.
stack_.back()->set(
"never-send", cancel);
3365#line 3366 "dhcp4_parser.cc"
3369#line 2111 "dhcp4_parser.yy"
3371 ctx.
unique(
"client-classes", ctx.
loc2pos(yystack_[0].location));
3373 ctx.
stack_.back()->set(
"client-classes", c);
3377#line 3378 "dhcp4_parser.cc"
3381#line 2117 "dhcp4_parser.yy"
3386#line 3387 "dhcp4_parser.cc"
3390#line 2125 "dhcp4_parser.yy"
3394 ctx.
stack_.back()->set(
"pools", l);
3398#line 3399 "dhcp4_parser.cc"
3402#line 2131 "dhcp4_parser.yy"
3407#line 3408 "dhcp4_parser.cc"
3411#line 2144 "dhcp4_parser.yy"
3415#line 3416 "dhcp4_parser.cc"
3419#line 2149 "dhcp4_parser.yy"
3422 ctx.
stack_.back()->add(m);
3425#line 3426 "dhcp4_parser.cc"
3429#line 2153 "dhcp4_parser.yy"
3435#line 3436 "dhcp4_parser.cc"
3439#line 2159 "dhcp4_parser.yy"
3445#line 3446 "dhcp4_parser.cc"
3449#line 2163 "dhcp4_parser.yy"
3455#line 3456 "dhcp4_parser.cc"
3459#line 2171 "dhcp4_parser.yy"
3463#line 3464 "dhcp4_parser.cc"
3467#line 2188 "dhcp4_parser.yy"
3472#line 3473 "dhcp4_parser.cc"
3476#line 2191 "dhcp4_parser.yy"
3479 ctx.
stack_.back()->set(
"pool", pool);
3482#line 3483 "dhcp4_parser.cc"
3486#line 2197 "dhcp4_parser.yy"
3490 ctx.
stack_.back()->set(
"pool-id",
id);
3492#line 3493 "dhcp4_parser.cc"
3496#line 2203 "dhcp4_parser.yy"
3500#line 3501 "dhcp4_parser.cc"
3504#line 2205 "dhcp4_parser.yy"
3513 if ((old->size() != 1) || !old->contains(
"comment")) {
3514 std::stringstream msg;
3515 msg <<
"duplicate user-context entries (previous at "
3516 << old->getPosition().str() <<
")";
3517 error(yystack_[3].location, msg.str());
3520 user_context->set(
"comment", old->get(
"comment"));
3524 parent->set(
"user-context", user_context);
3527#line 3528 "dhcp4_parser.cc"
3531#line 2228 "dhcp4_parser.yy"
3535#line 3536 "dhcp4_parser.cc"
3539#line 2230 "dhcp4_parser.yy"
3544 user_context->set(
"comment", comment);
3550 if (old->contains(
"comment")) {
3551 std::stringstream msg;
3552 msg <<
"duplicate user-context/comment entries (previous at "
3553 << old->getPosition().str() <<
")";
3554 error(yystack_[3].location, msg.str());
3557 merge(user_context, old);
3561 parent->set(
"user-context", user_context);
3564#line 3565 "dhcp4_parser.cc"
3568#line 2258 "dhcp4_parser.yy"
3570 ctx.
unique(
"reservations", ctx.
loc2pos(yystack_[0].location));
3572 ctx.
stack_.back()->set(
"reservations", l);
3576#line 3577 "dhcp4_parser.cc"
3580#line 2264 "dhcp4_parser.yy"
3585#line 3586 "dhcp4_parser.cc"
3589#line 2275 "dhcp4_parser.yy"
3593#line 3594 "dhcp4_parser.cc"
3597#line 2280 "dhcp4_parser.yy"
3600 ctx.
stack_.back()->add(m);
3603#line 3604 "dhcp4_parser.cc"
3607#line 2284 "dhcp4_parser.yy"
3612#line 3613 "dhcp4_parser.cc"
3616#line 2289 "dhcp4_parser.yy"
3622#line 3623 "dhcp4_parser.cc"
3626#line 2293 "dhcp4_parser.yy"
3631#line 3632 "dhcp4_parser.cc"
3635#line 2304 "dhcp4_parser.yy"
3639#line 3640 "dhcp4_parser.cc"
3643#line 2327 "dhcp4_parser.yy"
3645 ctx.
unique(
"next-server", ctx.
loc2pos(yystack_[0].location));
3648#line 3649 "dhcp4_parser.cc"
3652#line 2330 "dhcp4_parser.yy"
3655 ctx.
stack_.back()->set(
"next-server", next_server);
3658#line 3659 "dhcp4_parser.cc"
3662#line 2336 "dhcp4_parser.yy"
3664 ctx.
unique(
"server-hostname", ctx.
loc2pos(yystack_[0].location));
3667#line 3668 "dhcp4_parser.cc"
3671#line 2339 "dhcp4_parser.yy"
3674 ctx.
stack_.back()->set(
"server-hostname", srv);
3677#line 3678 "dhcp4_parser.cc"
3681#line 2345 "dhcp4_parser.yy"
3683 ctx.
unique(
"boot-file-name", ctx.
loc2pos(yystack_[0].location));
3686#line 3687 "dhcp4_parser.cc"
3690#line 2348 "dhcp4_parser.yy"
3693 ctx.
stack_.back()->set(
"boot-file-name", bootfile);
3696#line 3697 "dhcp4_parser.cc"
3700#line 2354 "dhcp4_parser.yy"
3702 ctx.
unique(
"ip-address", ctx.
loc2pos(yystack_[0].location));
3705#line 3706 "dhcp4_parser.cc"
3709#line 2357 "dhcp4_parser.yy"
3712 ctx.
stack_.back()->set(
"ip-address", addr);
3715#line 3716 "dhcp4_parser.cc"
3719#line 2363 "dhcp4_parser.yy"
3724#line 3725 "dhcp4_parser.cc"
3728#line 2366 "dhcp4_parser.yy"
3731 ctx.
stack_.back()->set(
"duid", d);
3734#line 3735 "dhcp4_parser.cc"
3738#line 2372 "dhcp4_parser.yy"
3740 ctx.
unique(
"hw-address", ctx.
loc2pos(yystack_[0].location));
3743#line 3744 "dhcp4_parser.cc"
3747#line 2375 "dhcp4_parser.yy"
3750 ctx.
stack_.back()->set(
"hw-address", hw);
3753#line 3754 "dhcp4_parser.cc"
3757#line 2381 "dhcp4_parser.yy"
3762#line 3763 "dhcp4_parser.cc"
3766#line 2384 "dhcp4_parser.yy"
3769 ctx.
stack_.back()->set(
"client-id", hw);
3772#line 3773 "dhcp4_parser.cc"
3776#line 2390 "dhcp4_parser.yy"
3778 ctx.
unique(
"circuit-id", ctx.
loc2pos(yystack_[0].location));
3781#line 3782 "dhcp4_parser.cc"
3785#line 2393 "dhcp4_parser.yy"
3788 ctx.
stack_.back()->set(
"circuit-id", hw);
3791#line 3792 "dhcp4_parser.cc"
3795#line 2399 "dhcp4_parser.yy"
3800#line 3801 "dhcp4_parser.cc"
3804#line 2402 "dhcp4_parser.yy"
3807 ctx.
stack_.back()->set(
"flex-id", hw);
3810#line 3811 "dhcp4_parser.cc"
3814#line 2408 "dhcp4_parser.yy"
3819#line 3820 "dhcp4_parser.cc"
3823#line 2411 "dhcp4_parser.yy"
3826 ctx.
stack_.back()->set(
"hostname", host);
3829#line 3830 "dhcp4_parser.cc"
3833#line 2417 "dhcp4_parser.yy"
3835 ctx.
unique(
"client-classes", ctx.
loc2pos(yystack_[0].location));
3837 ctx.
stack_.back()->set(
"client-classes", c);
3841#line 3842 "dhcp4_parser.cc"
3845#line 2423 "dhcp4_parser.yy"
3850#line 3851 "dhcp4_parser.cc"
3854#line 2431 "dhcp4_parser.yy"
3858 ctx.
stack_.back()->set(
"relay", m);
3862#line 3863 "dhcp4_parser.cc"
3866#line 2437 "dhcp4_parser.yy"
3871#line 3872 "dhcp4_parser.cc"
3875#line 2445 "dhcp4_parser.yy"
3877 ctx.
unique(
"ip-addresses", ctx.
loc2pos(yystack_[0].location));
3879 ctx.
stack_.back()->set(
"ip-addresses", l);
3883#line 3884 "dhcp4_parser.cc"
3887#line 2451 "dhcp4_parser.yy"
3892#line 3893 "dhcp4_parser.cc"
3896#line 2459 "dhcp4_parser.yy"
3898 ctx.
unique(
"client-classes", ctx.
loc2pos(yystack_[0].location));
3900 ctx.
stack_.back()->set(
"client-classes", l);
3904#line 3905 "dhcp4_parser.cc"
3908#line 2465 "dhcp4_parser.yy"
3913#line 3914 "dhcp4_parser.cc"
3917#line 2472 "dhcp4_parser.yy"
3921#line 3922 "dhcp4_parser.cc"
3925#line 2477 "dhcp4_parser.yy"
3928 ctx.
stack_.back()->add(m);
3931#line 3932 "dhcp4_parser.cc"
3935#line 2481 "dhcp4_parser.yy"
3941#line 3942 "dhcp4_parser.cc"
3945#line 2493 "dhcp4_parser.yy"
3949#line 3950 "dhcp4_parser.cc"
3953#line 2519 "dhcp4_parser.yy"
3958#line 3959 "dhcp4_parser.cc"
3962#line 2522 "dhcp4_parser.yy"
3965 ctx.
stack_.back()->set(
"test", test);
3968#line 3969 "dhcp4_parser.cc"
3972#line 2528 "dhcp4_parser.yy"
3974 ctx.
unique(
"template-test", ctx.
loc2pos(yystack_[0].location));
3977#line 3978 "dhcp4_parser.cc"
3981#line 2531 "dhcp4_parser.yy"
3984 ctx.
stack_.back()->set(
"template-test", template_test);
3987#line 3988 "dhcp4_parser.cc"
3991#line 2538 "dhcp4_parser.yy"
3993 ctx.
unique(
"only-if-required", ctx.
loc2pos(yystack_[2].location));
3995 ctx.
stack_.back()->set(
"only-if-required", b);
3997#line 3998 "dhcp4_parser.cc"
4001#line 2544 "dhcp4_parser.yy"
4003 ctx.
unique(
"only-in-additional-list", ctx.
loc2pos(yystack_[2].location));
4005 ctx.
stack_.back()->set(
"only-in-additional-list", b);
4007#line 4008 "dhcp4_parser.cc"
4011#line 2552 "dhcp4_parser.yy"
4013 ctx.
unique(
"dhcp4o6-port", ctx.
loc2pos(yystack_[2].location));
4015 ctx.
stack_.back()->set(
"dhcp4o6-port", time);
4017#line 4018 "dhcp4_parser.cc"
4021#line 2560 "dhcp4_parser.yy"
4023 ctx.
unique(
"control-socket", ctx.
loc2pos(yystack_[0].location));
4024 ctx.
unique(
"control-sockets", ctx.
loc2pos(yystack_[0].location));
4026 ctx.
stack_.back()->set(
"control-socket", m);
4030#line 4031 "dhcp4_parser.cc"
4034#line 2567 "dhcp4_parser.yy"
4039#line 4040 "dhcp4_parser.cc"
4043#line 2572 "dhcp4_parser.yy"
4045 ctx.
unique(
"control-sockets", ctx.
loc2pos(yystack_[0].location));
4046 ctx.
unique(
"control-socket", ctx.
loc2pos(yystack_[0].location));
4048 ctx.
stack_.back()->set(
"control-sockets", l);
4052#line 4053 "dhcp4_parser.cc"
4056#line 2579 "dhcp4_parser.yy"
4061#line 4062 "dhcp4_parser.cc"
4065#line 2590 "dhcp4_parser.yy"
4069#line 4070 "dhcp4_parser.cc"
4073#line 2595 "dhcp4_parser.yy"
4076 ctx.
stack_.back()->add(m);
4079#line 4080 "dhcp4_parser.cc"
4083#line 2599 "dhcp4_parser.yy"
4087#line 4088 "dhcp4_parser.cc"
4091#line 2605 "dhcp4_parser.yy"
4095#line 4096 "dhcp4_parser.cc"
4099#line 2625 "dhcp4_parser.yy"
4101 ctx.
unique(
"socket-type", ctx.
loc2pos(yystack_[0].location));
4104#line 4105 "dhcp4_parser.cc"
4108#line 2628 "dhcp4_parser.yy"
4110 ctx.
stack_.back()->set(
"socket-type", yystack_[0].value.as <
ElementPtr > ());
4113#line 4114 "dhcp4_parser.cc"
4117#line 2634 "dhcp4_parser.yy"
4119#line 4120 "dhcp4_parser.cc"
4123#line 2635 "dhcp4_parser.yy"
4125#line 4126 "dhcp4_parser.cc"
4129#line 2636 "dhcp4_parser.yy"
4131#line 4132 "dhcp4_parser.cc"
4135#line 2639 "dhcp4_parser.yy"
4137 ctx.
unique(
"socket-name", ctx.
loc2pos(yystack_[0].location));
4138 ctx.
unique(
"socket-address", ctx.
loc2pos(yystack_[0].location));
4141#line 4142 "dhcp4_parser.cc"
4145#line 2643 "dhcp4_parser.yy"
4148 ctx.
stack_.back()->set(
"socket-name", name);
4151#line 4152 "dhcp4_parser.cc"
4155#line 2649 "dhcp4_parser.yy"
4157 ctx.
unique(
"socket-address", ctx.
loc2pos(yystack_[0].location));
4158 ctx.
unique(
"socket-name", ctx.
loc2pos(yystack_[0].location));
4161#line 4162 "dhcp4_parser.cc"
4165#line 2653 "dhcp4_parser.yy"
4168 ctx.
stack_.back()->set(
"socket-address", address);
4171#line 4172 "dhcp4_parser.cc"
4175#line 2659 "dhcp4_parser.yy"
4177 ctx.
unique(
"socket-port", ctx.
loc2pos(yystack_[2].location));
4179 ctx.
stack_.back()->set(
"socket-port", port);
4181#line 4182 "dhcp4_parser.cc"
4185#line 2665 "dhcp4_parser.yy"
4187 ctx.
unique(
"cert-required", ctx.
loc2pos(yystack_[2].location));
4189 ctx.
stack_.back()->set(
"cert-required", req);
4191#line 4192 "dhcp4_parser.cc"
4195#line 2671 "dhcp4_parser.yy"
4197 ctx.
unique(
"http-headers", ctx.
loc2pos(yystack_[0].location));
4199 ctx.
stack_.back()->set(
"http-headers", l);
4203#line 4204 "dhcp4_parser.cc"
4207#line 2677 "dhcp4_parser.yy"
4212#line 4213 "dhcp4_parser.cc"
4216#line 2688 "dhcp4_parser.yy"
4220#line 4221 "dhcp4_parser.cc"
4224#line 2693 "dhcp4_parser.yy"
4227 ctx.
stack_.back()->add(m);
4230#line 4231 "dhcp4_parser.cc"
4234#line 2697 "dhcp4_parser.yy"
4238#line 4239 "dhcp4_parser.cc"
4242#line 2703 "dhcp4_parser.yy"
4246#line 4247 "dhcp4_parser.cc"
4250#line 2715 "dhcp4_parser.yy"
4255#line 4256 "dhcp4_parser.cc"
4259#line 2718 "dhcp4_parser.yy"
4262 ctx.
stack_.back()->set(
"value", value);
4265#line 4266 "dhcp4_parser.cc"
4269#line 2726 "dhcp4_parser.yy"
4271 ctx.
unique(
"authentication", ctx.
loc2pos(yystack_[0].location));
4273 ctx.
stack_.back()->set(
"authentication", m);
4277#line 4278 "dhcp4_parser.cc"
4281#line 2732 "dhcp4_parser.yy"
4288#line 4289 "dhcp4_parser.cc"
4292#line 2741 "dhcp4_parser.yy"
4296#line 4297 "dhcp4_parser.cc"
4300#line 2755 "dhcp4_parser.yy"
4305#line 4306 "dhcp4_parser.cc"
4309#line 2758 "dhcp4_parser.yy"
4314#line 4315 "dhcp4_parser.cc"
4318#line 2763 "dhcp4_parser.yy"
4320#line 4321 "dhcp4_parser.cc"
4324#line 2766 "dhcp4_parser.yy"
4329#line 4330 "dhcp4_parser.cc"
4333#line 2769 "dhcp4_parser.yy"
4336 ctx.
stack_.back()->set(
"realm", realm);
4339#line 4340 "dhcp4_parser.cc"
4343#line 2775 "dhcp4_parser.yy"
4348#line 4349 "dhcp4_parser.cc"
4352#line 2778 "dhcp4_parser.yy"
4355 ctx.
stack_.back()->set(
"directory", directory);
4358#line 4359 "dhcp4_parser.cc"
4362#line 2784 "dhcp4_parser.yy"
4366 ctx.
stack_.back()->set(
"clients", l);
4370#line 4371 "dhcp4_parser.cc"
4374#line 2790 "dhcp4_parser.yy"
4379#line 4380 "dhcp4_parser.cc"
4383#line 2801 "dhcp4_parser.yy"
4387#line 4388 "dhcp4_parser.cc"
4391#line 2806 "dhcp4_parser.yy"
4394 ctx.
stack_.back()->add(m);
4397#line 4398 "dhcp4_parser.cc"
4401#line 2810 "dhcp4_parser.yy"
4405#line 4406 "dhcp4_parser.cc"
4409#line 2816 "dhcp4_parser.yy"
4413#line 4414 "dhcp4_parser.cc"
4417#line 2830 "dhcp4_parser.yy"
4422#line 4423 "dhcp4_parser.cc"
4426#line 2833 "dhcp4_parser.yy"
4429 ctx.
stack_.back()->set(
"user-file", user);
4432#line 4433 "dhcp4_parser.cc"
4436#line 2839 "dhcp4_parser.yy"
4438 ctx.
unique(
"password-file", ctx.
loc2pos(yystack_[0].location));
4441#line 4442 "dhcp4_parser.cc"
4445#line 2842 "dhcp4_parser.yy"
4448 ctx.
stack_.back()->set(
"password-file", password);
4451#line 4452 "dhcp4_parser.cc"
4455#line 2850 "dhcp4_parser.yy"
4457 ctx.
unique(
"dhcp-queue-control", ctx.
loc2pos(yystack_[0].location));
4459 ctx.
stack_.back()->set(
"dhcp-queue-control", qc);
4460 ctx.
stack_.push_back(qc);
4463#line 4464 "dhcp4_parser.cc"
4467#line 2856 "dhcp4_parser.yy"
4474#line 4475 "dhcp4_parser.cc"
4478#line 2865 "dhcp4_parser.yy"
4482#line 4483 "dhcp4_parser.cc"
4486#line 2878 "dhcp4_parser.yy"
4488 ctx.
unique(
"enable-queue", ctx.
loc2pos(yystack_[2].location));
4490 ctx.
stack_.back()->set(
"enable-queue", b);
4492#line 4493 "dhcp4_parser.cc"
4496#line 2884 "dhcp4_parser.yy"
4498 ctx.
unique(
"queue-type", ctx.
loc2pos(yystack_[0].location));
4501#line 4502 "dhcp4_parser.cc"
4505#line 2887 "dhcp4_parser.yy"
4508 ctx.
stack_.back()->set(
"queue-type", qt);
4511#line 4512 "dhcp4_parser.cc"
4515#line 2893 "dhcp4_parser.yy"
4519 ctx.
stack_.back()->set(
"capacity", c);
4521#line 4522 "dhcp4_parser.cc"
4525#line 2899 "dhcp4_parser.yy"
4527 ctx.
unique(yystack_[0].value.as < std::string > (), ctx.
loc2pos(yystack_[0].location));
4530#line 4531 "dhcp4_parser.cc"
4534#line 2902 "dhcp4_parser.yy"
4536 ctx.
stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as <
ElementPtr > ());
4539#line 4540 "dhcp4_parser.cc"
4543#line 2909 "dhcp4_parser.yy"
4547 ctx.
stack_.back()->set(
"dhcp-ddns", m);
4551#line 4552 "dhcp4_parser.cc"
4555#line 2915 "dhcp4_parser.yy"
4558 ctx.
require(
"enable-updates", ctx.
loc2pos(yystack_[2].location), ctx.
loc2pos(yystack_[0].location));
4562#line 4563 "dhcp4_parser.cc"
4566#line 2922 "dhcp4_parser.yy"
4572#line 4573 "dhcp4_parser.cc"
4576#line 2926 "dhcp4_parser.yy"
4579 ctx.
require(
"enable-updates", ctx.
loc2pos(yystack_[3].location), ctx.
loc2pos(yystack_[0].location));
4582#line 4583 "dhcp4_parser.cc"
4586#line 2934 "dhcp4_parser.yy"
4590#line 4591 "dhcp4_parser.cc"
4594#line 2952 "dhcp4_parser.yy"
4596 ctx.
unique(
"enable-updates", ctx.
loc2pos(yystack_[2].location));
4598 ctx.
stack_.back()->set(
"enable-updates", b);
4600#line 4601 "dhcp4_parser.cc"
4604#line 2958 "dhcp4_parser.yy"
4609#line 4610 "dhcp4_parser.cc"
4613#line 2961 "dhcp4_parser.yy"
4616 ctx.
stack_.back()->set(
"server-ip", s);
4619#line 4620 "dhcp4_parser.cc"
4623#line 2967 "dhcp4_parser.yy"
4625 ctx.
unique(
"server-port", ctx.
loc2pos(yystack_[2].location));
4627 ctx.
stack_.back()->set(
"server-port", i);
4629#line 4630 "dhcp4_parser.cc"
4633#line 2973 "dhcp4_parser.yy"
4638#line 4639 "dhcp4_parser.cc"
4642#line 2976 "dhcp4_parser.yy"
4645 ctx.
stack_.back()->set(
"sender-ip", s);
4648#line 4649 "dhcp4_parser.cc"
4652#line 2982 "dhcp4_parser.yy"
4654 ctx.
unique(
"sender-port", ctx.
loc2pos(yystack_[2].location));
4656 ctx.
stack_.back()->set(
"sender-port", i);
4658#line 4659 "dhcp4_parser.cc"
4662#line 2988 "dhcp4_parser.yy"
4664 ctx.
unique(
"max-queue-size", ctx.
loc2pos(yystack_[2].location));
4666 ctx.
stack_.back()->set(
"max-queue-size", i);
4668#line 4669 "dhcp4_parser.cc"
4672#line 2994 "dhcp4_parser.yy"
4674 ctx.
unique(
"ncr-protocol", ctx.
loc2pos(yystack_[0].location));
4677#line 4678 "dhcp4_parser.cc"
4681#line 2997 "dhcp4_parser.yy"
4683 ctx.
stack_.back()->set(
"ncr-protocol", yystack_[0].value.as <
ElementPtr > ());
4686#line 4687 "dhcp4_parser.cc"
4690#line 3003 "dhcp4_parser.yy"
4692#line 4693 "dhcp4_parser.cc"
4696#line 3004 "dhcp4_parser.yy"
4698#line 4699 "dhcp4_parser.cc"
4702#line 3007 "dhcp4_parser.yy"
4704 ctx.
unique(
"ncr-format", ctx.
loc2pos(yystack_[0].location));
4707#line 4708 "dhcp4_parser.cc"
4711#line 3010 "dhcp4_parser.yy"
4714 ctx.
stack_.back()->set(
"ncr-format", json);
4717#line 4718 "dhcp4_parser.cc"
4721#line 3018 "dhcp4_parser.yy"
4723 ctx.
unique(
"config-control", ctx.
loc2pos(yystack_[0].location));
4725 ctx.
stack_.back()->set(
"config-control", i);
4729#line 4730 "dhcp4_parser.cc"
4733#line 3024 "dhcp4_parser.yy"
4739#line 4740 "dhcp4_parser.cc"
4743#line 3030 "dhcp4_parser.yy"
4749#line 4750 "dhcp4_parser.cc"
4753#line 3034 "dhcp4_parser.yy"
4758#line 4759 "dhcp4_parser.cc"
4762#line 3042 "dhcp4_parser.yy"
4766#line 4767 "dhcp4_parser.cc"
4770#line 3052 "dhcp4_parser.yy"
4772 ctx.
unique(
"config-databases", ctx.
loc2pos(yystack_[0].location));
4774 ctx.
stack_.back()->set(
"config-databases", l);
4778#line 4779 "dhcp4_parser.cc"
4782#line 3058 "dhcp4_parser.yy"
4787#line 4788 "dhcp4_parser.cc"
4791#line 3063 "dhcp4_parser.yy"
4793 ctx.
unique(
"config-fetch-wait-time", ctx.
loc2pos(yystack_[2].location));
4795 ctx.
stack_.back()->set(
"config-fetch-wait-time", value);
4797#line 4798 "dhcp4_parser.cc"
4801#line 3071 "dhcp4_parser.yy"
4805 ctx.
stack_.back()->set(
"loggers", l);
4809#line 4810 "dhcp4_parser.cc"
4813#line 3077 "dhcp4_parser.yy"
4818#line 4819 "dhcp4_parser.cc"
4822#line 3086 "dhcp4_parser.yy"
4826#line 4827 "dhcp4_parser.cc"
4830#line 3092 "dhcp4_parser.yy"
4833 ctx.
stack_.back()->add(l);
4836#line 4837 "dhcp4_parser.cc"
4840#line 3096 "dhcp4_parser.yy"
4844#line 4845 "dhcp4_parser.cc"
4848#line 3102 "dhcp4_parser.yy"
4852#line 4853 "dhcp4_parser.cc"
4856#line 3116 "dhcp4_parser.yy"
4858 ctx.
unique(
"debuglevel", ctx.
loc2pos(yystack_[2].location));
4860 ctx.
stack_.back()->set(
"debuglevel", dl);
4862#line 4863 "dhcp4_parser.cc"
4866#line 3122 "dhcp4_parser.yy"
4871#line 4872 "dhcp4_parser.cc"
4875#line 3125 "dhcp4_parser.yy"
4878 ctx.
stack_.back()->set(
"severity", sev);
4881#line 4882 "dhcp4_parser.cc"
4885#line 3131 "dhcp4_parser.yy"
4887 ctx.
unique(
"output-options", ctx.
loc2pos(yystack_[0].location));
4889 ctx.
stack_.back()->set(
"output-options", l);
4893#line 4894 "dhcp4_parser.cc"
4897#line 3137 "dhcp4_parser.yy"
4902#line 4903 "dhcp4_parser.cc"
4906#line 3144 "dhcp4_parser.yy"
4910#line 4911 "dhcp4_parser.cc"
4914#line 3149 "dhcp4_parser.yy"
4917 ctx.
stack_.back()->add(m);
4920#line 4921 "dhcp4_parser.cc"
4924#line 3153 "dhcp4_parser.yy"
4928#line 4929 "dhcp4_parser.cc"
4932#line 3159 "dhcp4_parser.yy"
4936#line 4937 "dhcp4_parser.cc"
4940#line 3171 "dhcp4_parser.yy"
4945#line 4946 "dhcp4_parser.cc"
4949#line 3174 "dhcp4_parser.yy"
4952 ctx.
stack_.back()->set(
"output", sev);
4955#line 4956 "dhcp4_parser.cc"
4959#line 3180 "dhcp4_parser.yy"
4963 ctx.
stack_.back()->set(
"flush", flush);
4965#line 4966 "dhcp4_parser.cc"
4969#line 3186 "dhcp4_parser.yy"
4973 ctx.
stack_.back()->set(
"maxsize", maxsize);
4975#line 4976 "dhcp4_parser.cc"
4979#line 3192 "dhcp4_parser.yy"
4983 ctx.
stack_.back()->set(
"maxver", maxver);
4985#line 4986 "dhcp4_parser.cc"
4989#line 3198 "dhcp4_parser.yy"
4994#line 4995 "dhcp4_parser.cc"
4998#line 3201 "dhcp4_parser.yy"
5001 ctx.
stack_.back()->set(
"pattern", sev);
5004#line 5005 "dhcp4_parser.cc"
5008#line 3207 "dhcp4_parser.yy"
5010 ctx.
unique(
"compatibility", ctx.
loc2pos(yystack_[0].location));
5012 ctx.
stack_.back()->set(
"compatibility", i);
5016#line 5017 "dhcp4_parser.cc"
5020#line 3213 "dhcp4_parser.yy"
5025#line 5026 "dhcp4_parser.cc"
5029#line 3220 "dhcp4_parser.yy"
5033#line 5034 "dhcp4_parser.cc"
5037#line 3232 "dhcp4_parser.yy"
5039 ctx.
unique(
"lenient-option-parsing", ctx.
loc2pos(yystack_[2].location));
5041 ctx.
stack_.back()->set(
"lenient-option-parsing", b);
5043#line 5044 "dhcp4_parser.cc"
5047#line 3238 "dhcp4_parser.yy"
5049 ctx.
unique(
"ignore-dhcp-server-identifier", ctx.
loc2pos(yystack_[2].location));
5051 ctx.
stack_.back()->set(
"ignore-dhcp-server-identifier", b);
5053#line 5054 "dhcp4_parser.cc"
5057#line 3244 "dhcp4_parser.yy"
5059 ctx.
unique(
"ignore-rai-link-selection", ctx.
loc2pos(yystack_[2].location));
5061 ctx.
stack_.back()->set(
"ignore-rai-link-selection", b);
5063#line 5064 "dhcp4_parser.cc"
5067#line 3250 "dhcp4_parser.yy"
5069 ctx.
unique(
"exclude-first-last-24", ctx.
loc2pos(yystack_[2].location));
5071 ctx.
stack_.back()->set(
"exclude-first-last-24", b);
5073#line 5074 "dhcp4_parser.cc"
5077#line 5078 "dhcp4_parser.cc"
5086 YYCDEBUG <<
"Caught exception: " << yyexc.what() <<
'\n';
5096 yypush_ (YY_NULLPTR,
YY_MOVE (yylhs));
5110 std::string msg = yysyntax_error_ (yyctx);
5115 yyerror_range[1].location = yyla.location;
5116 if (yyerrstatus_ == 3)
5124 else if (!yyla.empty ())
5126 yy_destroy_ (
"Error: discarding", yyla);
5160 yyn = yypact_[+yystack_[0].state];
5161 if (!yy_pact_value_is_default_ (yyn))
5164 if (0 <= yyn && yyn <= yylast_
5167 yyn = yytable_[yyn];
5174 if (yystack_.size () == 1)
5177 yyerror_range[1].location = yystack_[0].location;
5178 yy_destroy_ (
"Error: popping", yystack_[0]);
5183 stack_symbol_type error_token;
5185 yyerror_range[2].location = yyla.location;
5189 error_token.state = state_type (yyn);
5190 yypush_ (
"Shifting",