// It may be specified at the global, shared-network, and subnet levels.
// This field has been replaced by ddns-conflict-resolution-mode.
// Parsing is maintained only for backwards compatibility.
- "ddns-use-conflict-resolution": true,
+ // "ddns-use-conflict-resolution": true,
// Enumeration, which is passed to kea-dhcp-ddns with each DDNS
// update request to indicate the mode used for resolving conflicts
// Shared-network level value. See description at the global level.
// This field has been replaced by ddns-conflict-resolution-mode.
// Parsing is maintained only for backwards compatibility.
- "ddns-use-conflict-resolution": true,
+ // "ddns-use-conflict-resolution": true,
// Shared-network level value. See description at the global level.
"ddns-conflict-resolution-mode": "check-with-dhcid",
// Subnet-level value. See description at the global level.
"ddns-update-on-renew": true,
- // Subnet-level value. See description at the global level.
+ // Shared-network level value. See description at the global level.
// This field has been replaced by ddns-conflict-resolution-mode.
// Parsing is maintained only for backwards compatibility.
- "ddns-use-conflict-resolution": true,
+ // "ddns-use-conflict-resolution": true,
// Subnet-level value. See description at the global level.
"ddns-conflict-resolution-mode": "check-with-dhcid",
// It may be specified at the global, shared-network, and subnet levels.
// This field has been replaced by ddns-conflict-resolution-mode.
// Parsing is maintained only for backwards compatibility.
- "ddns-use-conflict-resolution": true,
+ // "ddns-use-conflict-resolution": true,
// Enumeration, which is passed to kea-dhcp-ddns with each DDNS
// update request to indicate the mode used for resolving conflicts
// Shared-network level value. See description at the global level.
// This field has been replaced by ddns-conflict-resolution-mode.
// Parsing is maintained only for backwards compatibility.
- "ddns-use-conflict-resolution": true,
+ // "ddns-use-conflict-resolution": true,
// Shared-network level value. See description at the global level.
"ddns-conflict-resolution-mode": "check-with-dhcid",
// Subnet-level value. See description at the global level.
// This field has been replaced by ddns-conflict-resolution-mode.
// Parsing is maintained only for backwards compatibility.
- "ddns-use-conflict-resolution": true,
+ // "ddns-use-conflict-resolution": true,
// Subnet-level value. See description at the global level.
"ddns-conflict-resolution-mode": "check-with-dhcid",
break;
case 172: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
-#line 753 "dhcp4_parser.yy"
+#line 756 "dhcp4_parser.yy"
{
ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+ ctx.warning(yystack_[1].location, "ddns-use-conflict-resolution is deprecated. "
+ "Substituting ddns-conflict-resolution-mode");
+ ElementPtr mode(new StringElement(b->boolValue() ? "check-with-dhcid"
+ : "no-check-with-dhcid"));
+ ctx.stack_.back()->set("ddns-conflict-resolution-mode", mode);
}
-#line 1472 "dhcp4_parser.cc"
+#line 1476 "dhcp4_parser.cc"
break;
case 173: // $@25: %empty
-#line 759 "dhcp4_parser.yy"
+#line 766 "dhcp4_parser.yy"
{
ctx.unique("ddns-conflict-resolution-mode", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DDNS_CONFLICT_RESOLUTION_MODE);
}
-#line 1481 "dhcp4_parser.cc"
+#line 1485 "dhcp4_parser.cc"
break;
case 174: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value
-#line 762 "dhcp4_parser.yy"
+#line 769 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("ddns-conflict-resolution-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1490 "dhcp4_parser.cc"
+#line 1494 "dhcp4_parser.cc"
break;
case 175: // ddns_conflict_resolution_mode_value: "check-with-dhcid"
-#line 768 "dhcp4_parser.yy"
+#line 775 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1498 "dhcp4_parser.cc"
+#line 1502 "dhcp4_parser.cc"
break;
case 176: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid"
-#line 771 "dhcp4_parser.yy"
+#line 778 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1506 "dhcp4_parser.cc"
+#line 1510 "dhcp4_parser.cc"
break;
case 177: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid"
-#line 774 "dhcp4_parser.yy"
+#line 781 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-exists-with-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1514 "dhcp4_parser.cc"
+#line 1518 "dhcp4_parser.cc"
break;
case 178: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid"
-#line 777 "dhcp4_parser.yy"
+#line 784 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-without-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1522 "dhcp4_parser.cc"
+#line 1526 "dhcp4_parser.cc"
break;
case 179: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point"
-#line 782 "dhcp4_parser.yy"
+#line 789 "dhcp4_parser.yy"
{
ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location));
ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-ttl-percent", ttl);
}
-#line 1532 "dhcp4_parser.cc"
+#line 1536 "dhcp4_parser.cc"
break;
case 180: // $@26: %empty
-#line 788 "dhcp4_parser.yy"
+#line 795 "dhcp4_parser.yy"
{
ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1541 "dhcp4_parser.cc"
+#line 1545 "dhcp4_parser.cc"
break;
case 181: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string"
-#line 791 "dhcp4_parser.yy"
+#line 798 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 1551 "dhcp4_parser.cc"
+#line 1555 "dhcp4_parser.cc"
break;
case 182: // $@27: %empty
-#line 797 "dhcp4_parser.yy"
+#line 804 "dhcp4_parser.yy"
{
ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1560 "dhcp4_parser.cc"
+#line 1564 "dhcp4_parser.cc"
break;
case 183: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string"
-#line 800 "dhcp4_parser.yy"
+#line 807 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 1570 "dhcp4_parser.cc"
+#line 1574 "dhcp4_parser.cc"
break;
case 184: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 806 "dhcp4_parser.yy"
+#line 813 "dhcp4_parser.yy"
{
ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("store-extended-info", b);
}
-#line 1580 "dhcp4_parser.cc"
+#line 1584 "dhcp4_parser.cc"
break;
case 185: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 812 "dhcp4_parser.yy"
+#line 819 "dhcp4_parser.yy"
{
ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-count", count);
}
-#line 1590 "dhcp4_parser.cc"
+#line 1594 "dhcp4_parser.cc"
break;
case 186: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 818 "dhcp4_parser.yy"
+#line 825 "dhcp4_parser.yy"
{
ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-age", age);
}
-#line 1600 "dhcp4_parser.cc"
+#line 1604 "dhcp4_parser.cc"
break;
case 187: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean"
-#line 824 "dhcp4_parser.yy"
+#line 831 "dhcp4_parser.yy"
{
ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location));
ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("early-global-reservations-lookup", early);
}
-#line 1610 "dhcp4_parser.cc"
+#line 1614 "dhcp4_parser.cc"
break;
case 188: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 830 "dhcp4_parser.yy"
+#line 837 "dhcp4_parser.yy"
{
ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-reservations-unique", unique);
}
-#line 1620 "dhcp4_parser.cc"
+#line 1624 "dhcp4_parser.cc"
break;
case 189: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean"
-#line 836 "dhcp4_parser.yy"
+#line 843 "dhcp4_parser.yy"
{
ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location));
ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-lookup-first", first);
}
-#line 1630 "dhcp4_parser.cc"
+#line 1634 "dhcp4_parser.cc"
break;
case 190: // offer_lifetime: "offer-lifetime" ":" "integer"
-#line 842 "dhcp4_parser.yy"
+#line 849 "dhcp4_parser.yy"
{
ctx.unique("offer-lifetime", ctx.loc2pos(yystack_[2].location));
ElementPtr offer_lifetime(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("offer-lifetime", offer_lifetime);
}
-#line 1640 "dhcp4_parser.cc"
+#line 1644 "dhcp4_parser.cc"
break;
case 191: // $@28: %empty
-#line 848 "dhcp4_parser.yy"
+#line 855 "dhcp4_parser.yy"
{
ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.INTERFACES_CONFIG);
}
-#line 1652 "dhcp4_parser.cc"
+#line 1656 "dhcp4_parser.cc"
break;
case 192: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
-#line 854 "dhcp4_parser.yy"
+#line 861 "dhcp4_parser.yy"
{
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1662 "dhcp4_parser.cc"
+#line 1666 "dhcp4_parser.cc"
break;
case 195: // interfaces_config_params: interfaces_config_params ","
-#line 862 "dhcp4_parser.yy"
+#line 869 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 1670 "dhcp4_parser.cc"
+#line 1674 "dhcp4_parser.cc"
break;
case 206: // $@29: %empty
-#line 879 "dhcp4_parser.yy"
+#line 886 "dhcp4_parser.yy"
{
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1680 "dhcp4_parser.cc"
+#line 1684 "dhcp4_parser.cc"
break;
case 207: // sub_interfaces4: "{" $@29 interfaces_config_params "}"
-#line 883 "dhcp4_parser.yy"
+#line 890 "dhcp4_parser.yy"
{
// No interfaces config param is required
// parsing completed
}
-#line 1689 "dhcp4_parser.cc"
+#line 1693 "dhcp4_parser.cc"
break;
case 208: // $@30: %empty
-#line 888 "dhcp4_parser.yy"
+#line 895 "dhcp4_parser.yy"
{
ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1701 "dhcp4_parser.cc"
+#line 1705 "dhcp4_parser.cc"
break;
case 209: // interfaces_list: "interfaces" $@30 ":" list_strings
-#line 894 "dhcp4_parser.yy"
+#line 901 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1710 "dhcp4_parser.cc"
+#line 1714 "dhcp4_parser.cc"
break;
case 210: // $@31: %empty
-#line 899 "dhcp4_parser.yy"
+#line 906 "dhcp4_parser.yy"
{
ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DHCP_SOCKET_TYPE);
}
-#line 1719 "dhcp4_parser.cc"
+#line 1723 "dhcp4_parser.cc"
break;
case 211: // dhcp_socket_type: "dhcp-socket-type" $@31 ":" socket_type
-#line 902 "dhcp4_parser.yy"
+#line 909 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1728 "dhcp4_parser.cc"
+#line 1732 "dhcp4_parser.cc"
break;
case 212: // socket_type: "raw"
-#line 907 "dhcp4_parser.yy"
+#line 914 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1734 "dhcp4_parser.cc"
+#line 1738 "dhcp4_parser.cc"
break;
case 213: // socket_type: "udp"
-#line 908 "dhcp4_parser.yy"
+#line 915 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1740 "dhcp4_parser.cc"
+#line 1744 "dhcp4_parser.cc"
break;
case 214: // $@32: %empty
-#line 911 "dhcp4_parser.yy"
+#line 918 "dhcp4_parser.yy"
{
ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.OUTBOUND_INTERFACE);
}
-#line 1749 "dhcp4_parser.cc"
+#line 1753 "dhcp4_parser.cc"
break;
case 215: // outbound_interface: "outbound-interface" $@32 ":" outbound_interface_value
-#line 914 "dhcp4_parser.yy"
+#line 921 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1758 "dhcp4_parser.cc"
+#line 1762 "dhcp4_parser.cc"
break;
case 216: // outbound_interface_value: "same-as-inbound"
-#line 919 "dhcp4_parser.yy"
+#line 926 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
}
-#line 1766 "dhcp4_parser.cc"
+#line 1770 "dhcp4_parser.cc"
break;
case 217: // outbound_interface_value: "use-routing"
-#line 921 "dhcp4_parser.yy"
+#line 928 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
}
-#line 1774 "dhcp4_parser.cc"
+#line 1778 "dhcp4_parser.cc"
break;
case 218: // re_detect: "re-detect" ":" "boolean"
-#line 925 "dhcp4_parser.yy"
+#line 932 "dhcp4_parser.yy"
{
ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1784 "dhcp4_parser.cc"
+#line 1788 "dhcp4_parser.cc"
break;
case 219: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean"
-#line 931 "dhcp4_parser.yy"
+#line 938 "dhcp4_parser.yy"
{
ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("service-sockets-require-all", b);
}
-#line 1794 "dhcp4_parser.cc"
+#line 1798 "dhcp4_parser.cc"
break;
case 220: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer"
-#line 937 "dhcp4_parser.yy"
+#line 944 "dhcp4_parser.yy"
{
ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("service-sockets-retry-wait-time", n);
}
-#line 1804 "dhcp4_parser.cc"
+#line 1808 "dhcp4_parser.cc"
break;
case 221: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer"
-#line 943 "dhcp4_parser.yy"
+#line 950 "dhcp4_parser.yy"
{
ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("service-sockets-max-retries", n);
}
-#line 1814 "dhcp4_parser.cc"
+#line 1818 "dhcp4_parser.cc"
break;
case 222: // $@33: %empty
-#line 949 "dhcp4_parser.yy"
+#line 956 "dhcp4_parser.yy"
{
ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.LEASE_DATABASE);
}
-#line 1826 "dhcp4_parser.cc"
+#line 1830 "dhcp4_parser.cc"
break;
case 223: // lease_database: "lease-database" $@33 ":" "{" database_map_params "}"
-#line 955 "dhcp4_parser.yy"
+#line 962 "dhcp4_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1837 "dhcp4_parser.cc"
+#line 1841 "dhcp4_parser.cc"
break;
case 224: // $@34: %empty
-#line 962 "dhcp4_parser.yy"
+#line 969 "dhcp4_parser.yy"
{
ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.SANITY_CHECKS);
}
-#line 1849 "dhcp4_parser.cc"
+#line 1853 "dhcp4_parser.cc"
break;
case 225: // sanity_checks: "sanity-checks" $@34 ":" "{" sanity_checks_params "}"
-#line 968 "dhcp4_parser.yy"
+#line 975 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1858 "dhcp4_parser.cc"
+#line 1862 "dhcp4_parser.cc"
break;
case 228: // sanity_checks_params: sanity_checks_params ","
-#line 975 "dhcp4_parser.yy"
+#line 982 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 1866 "dhcp4_parser.cc"
+#line 1870 "dhcp4_parser.cc"
break;
case 231: // $@35: %empty
-#line 984 "dhcp4_parser.yy"
+#line 991 "dhcp4_parser.yy"
{
ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1875 "dhcp4_parser.cc"
+#line 1879 "dhcp4_parser.cc"
break;
case 232: // lease_checks: "lease-checks" $@35 ":" "constant string"
-#line 987 "dhcp4_parser.yy"
+#line 994 "dhcp4_parser.yy"
{
if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 1895 "dhcp4_parser.cc"
+#line 1899 "dhcp4_parser.cc"
break;
case 233: // $@36: %empty
-#line 1003 "dhcp4_parser.yy"
+#line 1010 "dhcp4_parser.yy"
{
ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1904 "dhcp4_parser.cc"
+#line 1908 "dhcp4_parser.cc"
break;
case 234: // extended_info_checks: "extended-info-checks" $@36 ":" "constant string"
-#line 1006 "dhcp4_parser.yy"
+#line 1013 "dhcp4_parser.yy"
{
if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
", supported values are: none, fix, strict, pedantic");
}
}
-#line 1923 "dhcp4_parser.cc"
+#line 1927 "dhcp4_parser.cc"
break;
case 235: // $@37: %empty
-#line 1021 "dhcp4_parser.yy"
+#line 1028 "dhcp4_parser.yy"
{
ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1935 "dhcp4_parser.cc"
+#line 1939 "dhcp4_parser.cc"
break;
case 236: // hosts_database: "hosts-database" $@37 ":" "{" database_map_params "}"
-#line 1027 "dhcp4_parser.yy"
+#line 1034 "dhcp4_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1946 "dhcp4_parser.cc"
+#line 1950 "dhcp4_parser.cc"
break;
case 237: // $@38: %empty
-#line 1034 "dhcp4_parser.yy"
+#line 1041 "dhcp4_parser.yy"
{
ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1958 "dhcp4_parser.cc"
+#line 1962 "dhcp4_parser.cc"
break;
case 238: // hosts_databases: "hosts-databases" $@38 ":" "[" database_list "]"
-#line 1040 "dhcp4_parser.yy"
+#line 1047 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1967 "dhcp4_parser.cc"
+#line 1971 "dhcp4_parser.cc"
break;
case 243: // not_empty_database_list: not_empty_database_list ","
-#line 1051 "dhcp4_parser.yy"
+#line 1058 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 1975 "dhcp4_parser.cc"
+#line 1979 "dhcp4_parser.cc"
break;
case 244: // $@39: %empty
-#line 1056 "dhcp4_parser.yy"
+#line 1063 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1985 "dhcp4_parser.cc"
+#line 1989 "dhcp4_parser.cc"
break;
case 245: // database: "{" $@39 database_map_params "}"
-#line 1060 "dhcp4_parser.yy"
+#line 1067 "dhcp4_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1995 "dhcp4_parser.cc"
+#line 1999 "dhcp4_parser.cc"
break;
case 248: // database_map_params: database_map_params ","
-#line 1068 "dhcp4_parser.yy"
+#line 1075 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2003 "dhcp4_parser.cc"
+#line 2007 "dhcp4_parser.cc"
break;
case 271: // $@40: %empty
-#line 1097 "dhcp4_parser.yy"
+#line 1104 "dhcp4_parser.yy"
{
ctx.unique("type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 2012 "dhcp4_parser.cc"
+#line 2016 "dhcp4_parser.cc"
break;
case 272: // database_type: "type" $@40 ":" db_type
-#line 1100 "dhcp4_parser.yy"
+#line 1107 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2021 "dhcp4_parser.cc"
+#line 2025 "dhcp4_parser.cc"
break;
case 273: // db_type: "memfile"
-#line 1105 "dhcp4_parser.yy"
+#line 1112 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 2027 "dhcp4_parser.cc"
+#line 2031 "dhcp4_parser.cc"
break;
case 274: // db_type: "mysql"
-#line 1106 "dhcp4_parser.yy"
+#line 1113 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 2033 "dhcp4_parser.cc"
+#line 2037 "dhcp4_parser.cc"
break;
case 275: // db_type: "postgresql"
-#line 1107 "dhcp4_parser.yy"
+#line 1114 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 2039 "dhcp4_parser.cc"
+#line 2043 "dhcp4_parser.cc"
break;
case 276: // $@41: %empty
-#line 1110 "dhcp4_parser.yy"
+#line 1117 "dhcp4_parser.yy"
{
ctx.unique("user", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2048 "dhcp4_parser.cc"
+#line 2052 "dhcp4_parser.cc"
break;
case 277: // user: "user" $@41 ":" "constant string"
-#line 1113 "dhcp4_parser.yy"
+#line 1120 "dhcp4_parser.yy"
{
ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 2058 "dhcp4_parser.cc"
+#line 2062 "dhcp4_parser.cc"
break;
case 278: // $@42: %empty
-#line 1119 "dhcp4_parser.yy"
+#line 1126 "dhcp4_parser.yy"
{
ctx.unique("password", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2067 "dhcp4_parser.cc"
+#line 2071 "dhcp4_parser.cc"
break;
case 279: // password: "password" $@42 ":" "constant string"
-#line 1122 "dhcp4_parser.yy"
+#line 1129 "dhcp4_parser.yy"
{
ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 2077 "dhcp4_parser.cc"
+#line 2081 "dhcp4_parser.cc"
break;
case 280: // $@43: %empty
-#line 1128 "dhcp4_parser.yy"
+#line 1135 "dhcp4_parser.yy"
{
ctx.unique("host", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2086 "dhcp4_parser.cc"
+#line 2090 "dhcp4_parser.cc"
break;
case 281: // host: "host" $@43 ":" "constant string"
-#line 1131 "dhcp4_parser.yy"
+#line 1138 "dhcp4_parser.yy"
{
ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 2096 "dhcp4_parser.cc"
+#line 2100 "dhcp4_parser.cc"
break;
case 282: // port: "port" ":" "integer"
-#line 1137 "dhcp4_parser.yy"
+#line 1144 "dhcp4_parser.yy"
{
ctx.unique("port", ctx.loc2pos(yystack_[2].location));
ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 2106 "dhcp4_parser.cc"
+#line 2110 "dhcp4_parser.cc"
break;
case 283: // $@44: %empty
-#line 1143 "dhcp4_parser.yy"
+#line 1150 "dhcp4_parser.yy"
{
ctx.unique("name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2115 "dhcp4_parser.cc"
+#line 2119 "dhcp4_parser.cc"
break;
case 284: // name: "name" $@44 ":" "constant string"
-#line 1146 "dhcp4_parser.yy"
+#line 1153 "dhcp4_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 2125 "dhcp4_parser.cc"
+#line 2129 "dhcp4_parser.cc"
break;
case 285: // persist: "persist" ":" "boolean"
-#line 1152 "dhcp4_parser.yy"
+#line 1159 "dhcp4_parser.yy"
{
ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 2135 "dhcp4_parser.cc"
+#line 2139 "dhcp4_parser.cc"
break;
case 286: // lfc_interval: "lfc-interval" ":" "integer"
-#line 1158 "dhcp4_parser.yy"
+#line 1165 "dhcp4_parser.yy"
{
ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 2145 "dhcp4_parser.cc"
+#line 2149 "dhcp4_parser.cc"
break;
case 287: // readonly: "readonly" ":" "boolean"
-#line 1164 "dhcp4_parser.yy"
+#line 1171 "dhcp4_parser.yy"
{
ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 2155 "dhcp4_parser.cc"
+#line 2159 "dhcp4_parser.cc"
break;
case 288: // connect_timeout: "connect-timeout" ":" "integer"
-#line 1170 "dhcp4_parser.yy"
+#line 1177 "dhcp4_parser.yy"
{
ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 2165 "dhcp4_parser.cc"
+#line 2169 "dhcp4_parser.cc"
break;
case 289: // read_timeout: "read-timeout" ":" "integer"
-#line 1176 "dhcp4_parser.yy"
+#line 1183 "dhcp4_parser.yy"
{
ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("read-timeout", n);
}
-#line 2175 "dhcp4_parser.cc"
+#line 2179 "dhcp4_parser.cc"
break;
case 290: // write_timeout: "write-timeout" ":" "integer"
-#line 1182 "dhcp4_parser.yy"
+#line 1189 "dhcp4_parser.yy"
{
ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("write-timeout", n);
}
-#line 2185 "dhcp4_parser.cc"
+#line 2189 "dhcp4_parser.cc"
break;
case 291: // tcp_user_timeout: "tcp-user-timeout" ":" "integer"
-#line 1188 "dhcp4_parser.yy"
+#line 1195 "dhcp4_parser.yy"
{
ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-user-timeout", n);
}
-#line 2195 "dhcp4_parser.cc"
+#line 2199 "dhcp4_parser.cc"
break;
case 292: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1194 "dhcp4_parser.yy"
+#line 1201 "dhcp4_parser.yy"
{
ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 2205 "dhcp4_parser.cc"
+#line 2209 "dhcp4_parser.cc"
break;
case 293: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1200 "dhcp4_parser.yy"
+#line 1207 "dhcp4_parser.yy"
{
ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 2215 "dhcp4_parser.cc"
+#line 2219 "dhcp4_parser.cc"
break;
case 294: // $@45: %empty
-#line 1206 "dhcp4_parser.yy"
+#line 1213 "dhcp4_parser.yy"
{
ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DATABASE_ON_FAIL);
}
-#line 2224 "dhcp4_parser.cc"
+#line 2228 "dhcp4_parser.cc"
break;
case 295: // on_fail: "on-fail" $@45 ":" on_fail_mode
-#line 1209 "dhcp4_parser.yy"
+#line 1216 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2233 "dhcp4_parser.cc"
+#line 2237 "dhcp4_parser.cc"
break;
case 296: // on_fail_mode: "stop-retry-exit"
-#line 1214 "dhcp4_parser.yy"
+#line 1221 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
-#line 2239 "dhcp4_parser.cc"
+#line 2243 "dhcp4_parser.cc"
break;
case 297: // on_fail_mode: "serve-retry-exit"
-#line 1215 "dhcp4_parser.yy"
+#line 1222 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
-#line 2245 "dhcp4_parser.cc"
+#line 2249 "dhcp4_parser.cc"
break;
case 298: // on_fail_mode: "serve-retry-continue"
-#line 1216 "dhcp4_parser.yy"
+#line 1223 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
-#line 2251 "dhcp4_parser.cc"
+#line 2255 "dhcp4_parser.cc"
break;
case 299: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1219 "dhcp4_parser.yy"
+#line 1226 "dhcp4_parser.yy"
{
ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-row-errors", n);
}
-#line 2261 "dhcp4_parser.cc"
+#line 2265 "dhcp4_parser.cc"
break;
case 300: // $@46: %empty
-#line 1225 "dhcp4_parser.yy"
+#line 1232 "dhcp4_parser.yy"
{
ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2270 "dhcp4_parser.cc"
+#line 2274 "dhcp4_parser.cc"
break;
case 301: // trust_anchor: "trust-anchor" $@46 ":" "constant string"
-#line 1228 "dhcp4_parser.yy"
+#line 1235 "dhcp4_parser.yy"
{
ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("trust-anchor", ca);
ctx.leave();
}
-#line 2280 "dhcp4_parser.cc"
+#line 2284 "dhcp4_parser.cc"
break;
case 302: // $@47: %empty
-#line 1234 "dhcp4_parser.yy"
+#line 1241 "dhcp4_parser.yy"
{
ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2289 "dhcp4_parser.cc"
+#line 2293 "dhcp4_parser.cc"
break;
case 303: // cert_file: "cert-file" $@47 ":" "constant string"
-#line 1237 "dhcp4_parser.yy"
+#line 1244 "dhcp4_parser.yy"
{
ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("cert-file", cert);
ctx.leave();
}
-#line 2299 "dhcp4_parser.cc"
+#line 2303 "dhcp4_parser.cc"
break;
case 304: // $@48: %empty
-#line 1243 "dhcp4_parser.yy"
+#line 1250 "dhcp4_parser.yy"
{
ctx.unique("key-file", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2308 "dhcp4_parser.cc"
+#line 2312 "dhcp4_parser.cc"
break;
case 305: // key_file: "key-file" $@48 ":" "constant string"
-#line 1246 "dhcp4_parser.yy"
+#line 1253 "dhcp4_parser.yy"
{
ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("key-file", key);
ctx.leave();
}
-#line 2318 "dhcp4_parser.cc"
+#line 2322 "dhcp4_parser.cc"
break;
case 306: // $@49: %empty
-#line 1252 "dhcp4_parser.yy"
+#line 1259 "dhcp4_parser.yy"
{
ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2327 "dhcp4_parser.cc"
+#line 2331 "dhcp4_parser.cc"
break;
case 307: // cipher_list: "cipher-list" $@49 ":" "constant string"
-#line 1255 "dhcp4_parser.yy"
+#line 1262 "dhcp4_parser.yy"
{
ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("cipher-list", cl);
ctx.leave();
}
-#line 2337 "dhcp4_parser.cc"
+#line 2341 "dhcp4_parser.cc"
break;
case 308: // $@50: %empty
-#line 1261 "dhcp4_parser.yy"
+#line 1268 "dhcp4_parser.yy"
{
ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
}
-#line 2349 "dhcp4_parser.cc"
+#line 2353 "dhcp4_parser.cc"
break;
case 309: // host_reservation_identifiers: "host-reservation-identifiers" $@50 ":" "[" host_reservation_identifiers_list "]"
-#line 1267 "dhcp4_parser.yy"
+#line 1274 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2358 "dhcp4_parser.cc"
+#line 2362 "dhcp4_parser.cc"
break;
case 312: // host_reservation_identifiers_list: host_reservation_identifiers_list ","
-#line 1274 "dhcp4_parser.yy"
+#line 1281 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2366 "dhcp4_parser.cc"
+#line 2370 "dhcp4_parser.cc"
break;
case 318: // duid_id: "duid"
-#line 1286 "dhcp4_parser.yy"
+#line 1293 "dhcp4_parser.yy"
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 2375 "dhcp4_parser.cc"
+#line 2379 "dhcp4_parser.cc"
break;
case 319: // hw_address_id: "hw-address"
-#line 1291 "dhcp4_parser.yy"
+#line 1298 "dhcp4_parser.yy"
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 2384 "dhcp4_parser.cc"
+#line 2388 "dhcp4_parser.cc"
break;
case 320: // circuit_id: "circuit-id"
-#line 1296 "dhcp4_parser.yy"
+#line 1303 "dhcp4_parser.yy"
{
ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(circuit);
}
-#line 2393 "dhcp4_parser.cc"
+#line 2397 "dhcp4_parser.cc"
break;
case 321: // client_id: "client-id"
-#line 1301 "dhcp4_parser.yy"
+#line 1308 "dhcp4_parser.yy"
{
ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(client);
}
-#line 2402 "dhcp4_parser.cc"
+#line 2406 "dhcp4_parser.cc"
break;
case 322: // flex_id: "flex-id"
-#line 1306 "dhcp4_parser.yy"
+#line 1313 "dhcp4_parser.yy"
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 2411 "dhcp4_parser.cc"
+#line 2415 "dhcp4_parser.cc"
break;
case 323: // $@51: %empty
-#line 1313 "dhcp4_parser.yy"
+#line 1320 "dhcp4_parser.yy"
{
ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(mt);
ctx.enter(ctx.DHCP_MULTI_THREADING);
}
-#line 2423 "dhcp4_parser.cc"
+#line 2427 "dhcp4_parser.cc"
break;
case 324: // dhcp_multi_threading: "multi-threading" $@51 ":" "{" multi_threading_params "}"
-#line 1319 "dhcp4_parser.yy"
+#line 1326 "dhcp4_parser.yy"
{
// The enable parameter is required.
ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2434 "dhcp4_parser.cc"
+#line 2438 "dhcp4_parser.cc"
break;
case 327: // multi_threading_params: multi_threading_params ","
-#line 1328 "dhcp4_parser.yy"
+#line 1335 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2442 "dhcp4_parser.cc"
+#line 2446 "dhcp4_parser.cc"
break;
case 334: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1341 "dhcp4_parser.yy"
+#line 1348 "dhcp4_parser.yy"
{
ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-multi-threading", b);
}
-#line 2452 "dhcp4_parser.cc"
+#line 2456 "dhcp4_parser.cc"
break;
case 335: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1347 "dhcp4_parser.yy"
+#line 1354 "dhcp4_parser.yy"
{
ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("thread-pool-size", prf);
}
-#line 2462 "dhcp4_parser.cc"
+#line 2466 "dhcp4_parser.cc"
break;
case 336: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1353 "dhcp4_parser.yy"
+#line 1360 "dhcp4_parser.yy"
{
ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("packet-queue-size", prf);
}
-#line 2472 "dhcp4_parser.cc"
+#line 2476 "dhcp4_parser.cc"
break;
case 337: // $@52: %empty
-#line 1359 "dhcp4_parser.yy"
+#line 1366 "dhcp4_parser.yy"
{
ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 2484 "dhcp4_parser.cc"
+#line 2488 "dhcp4_parser.cc"
break;
case 338: // hooks_libraries: "hooks-libraries" $@52 ":" "[" hooks_libraries_list "]"
-#line 1365 "dhcp4_parser.yy"
+#line 1372 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2493 "dhcp4_parser.cc"
+#line 2497 "dhcp4_parser.cc"
break;
case 343: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list ","
-#line 1376 "dhcp4_parser.yy"
+#line 1383 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2501 "dhcp4_parser.cc"
+#line 2505 "dhcp4_parser.cc"
break;
case 344: // $@53: %empty
-#line 1381 "dhcp4_parser.yy"
+#line 1388 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2511 "dhcp4_parser.cc"
+#line 2515 "dhcp4_parser.cc"
break;
case 345: // hooks_library: "{" $@53 hooks_params "}"
-#line 1385 "dhcp4_parser.yy"
+#line 1392 "dhcp4_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2521 "dhcp4_parser.cc"
+#line 2525 "dhcp4_parser.cc"
break;
case 346: // $@54: %empty
-#line 1391 "dhcp4_parser.yy"
+#line 1398 "dhcp4_parser.yy"
{
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2531 "dhcp4_parser.cc"
+#line 2535 "dhcp4_parser.cc"
break;
case 347: // sub_hooks_library: "{" $@54 hooks_params "}"
-#line 1395 "dhcp4_parser.yy"
+#line 1402 "dhcp4_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2541 "dhcp4_parser.cc"
+#line 2545 "dhcp4_parser.cc"
break;
case 350: // hooks_params: hooks_params ","
-#line 1403 "dhcp4_parser.yy"
+#line 1410 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2549 "dhcp4_parser.cc"
+#line 2553 "dhcp4_parser.cc"
break;
case 354: // $@55: %empty
-#line 1413 "dhcp4_parser.yy"
+#line 1420 "dhcp4_parser.yy"
{
ctx.unique("library", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2558 "dhcp4_parser.cc"
+#line 2562 "dhcp4_parser.cc"
break;
case 355: // library: "library" $@55 ":" "constant string"
-#line 1416 "dhcp4_parser.yy"
+#line 1423 "dhcp4_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 2568 "dhcp4_parser.cc"
+#line 2572 "dhcp4_parser.cc"
break;
case 356: // $@56: %empty
-#line 1422 "dhcp4_parser.yy"
+#line 1429 "dhcp4_parser.yy"
{
ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2577 "dhcp4_parser.cc"
+#line 2581 "dhcp4_parser.cc"
break;
case 357: // parameters: "parameters" $@56 ":" map_value
-#line 1425 "dhcp4_parser.yy"
+#line 1432 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2586 "dhcp4_parser.cc"
+#line 2590 "dhcp4_parser.cc"
break;
case 358: // $@57: %empty
-#line 1431 "dhcp4_parser.yy"
+#line 1438 "dhcp4_parser.yy"
{
ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
}
-#line 2598 "dhcp4_parser.cc"
+#line 2602 "dhcp4_parser.cc"
break;
case 359: // expired_leases_processing: "expired-leases-processing" $@57 ":" "{" expired_leases_params "}"
-#line 1437 "dhcp4_parser.yy"
+#line 1444 "dhcp4_parser.yy"
{
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2608 "dhcp4_parser.cc"
+#line 2612 "dhcp4_parser.cc"
break;
case 362: // expired_leases_params: expired_leases_params ","
-#line 1445 "dhcp4_parser.yy"
+#line 1452 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2616 "dhcp4_parser.cc"
+#line 2620 "dhcp4_parser.cc"
break;
case 369: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1458 "dhcp4_parser.yy"
+#line 1465 "dhcp4_parser.yy"
{
ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reclaim-timer-wait-time", value);
}
-#line 2626 "dhcp4_parser.cc"
+#line 2630 "dhcp4_parser.cc"
break;
case 370: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1464 "dhcp4_parser.yy"
+#line 1471 "dhcp4_parser.yy"
{
ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
}
-#line 2636 "dhcp4_parser.cc"
+#line 2640 "dhcp4_parser.cc"
break;
case 371: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1470 "dhcp4_parser.yy"
+#line 1477 "dhcp4_parser.yy"
{
ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 2646 "dhcp4_parser.cc"
+#line 2650 "dhcp4_parser.cc"
break;
case 372: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1476 "dhcp4_parser.yy"
+#line 1483 "dhcp4_parser.yy"
{
ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 2656 "dhcp4_parser.cc"
+#line 2660 "dhcp4_parser.cc"
break;
case 373: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1482 "dhcp4_parser.yy"
+#line 1489 "dhcp4_parser.yy"
{
ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 2666 "dhcp4_parser.cc"
+#line 2670 "dhcp4_parser.cc"
break;
case 374: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1488 "dhcp4_parser.yy"
+#line 1495 "dhcp4_parser.yy"
{
ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 2676 "dhcp4_parser.cc"
+#line 2680 "dhcp4_parser.cc"
break;
case 375: // $@58: %empty
-#line 1497 "dhcp4_parser.yy"
+#line 1504 "dhcp4_parser.yy"
{
ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET4);
}
-#line 2688 "dhcp4_parser.cc"
+#line 2692 "dhcp4_parser.cc"
break;
case 376: // subnet4_list: "subnet4" $@58 ":" "[" subnet4_list_content "]"
-#line 1503 "dhcp4_parser.yy"
+#line 1510 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2697 "dhcp4_parser.cc"
+#line 2701 "dhcp4_parser.cc"
break;
case 381: // not_empty_subnet4_list: not_empty_subnet4_list ","
-#line 1517 "dhcp4_parser.yy"
+#line 1524 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2705 "dhcp4_parser.cc"
+#line 2709 "dhcp4_parser.cc"
break;
case 382: // $@59: %empty
-#line 1526 "dhcp4_parser.yy"
+#line 1533 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2715 "dhcp4_parser.cc"
+#line 2719 "dhcp4_parser.cc"
break;
case 383: // subnet4: "{" $@59 subnet4_params "}"
-#line 1530 "dhcp4_parser.yy"
+#line 1537 "dhcp4_parser.yy"
{
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2741 "dhcp4_parser.cc"
+#line 2745 "dhcp4_parser.cc"
break;
case 384: // $@60: %empty
-#line 1552 "dhcp4_parser.yy"
+#line 1559 "dhcp4_parser.yy"
{
// Parse the subnet4 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2751 "dhcp4_parser.cc"
+#line 2755 "dhcp4_parser.cc"
break;
case 385: // sub_subnet4: "{" $@60 subnet4_params "}"
-#line 1556 "dhcp4_parser.yy"
+#line 1563 "dhcp4_parser.yy"
{
// The subnet subnet4 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2761 "dhcp4_parser.cc"
+#line 2765 "dhcp4_parser.cc"
break;
case 388: // subnet4_params: subnet4_params ","
-#line 1565 "dhcp4_parser.yy"
+#line 1572 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2769 "dhcp4_parser.cc"
+#line 2773 "dhcp4_parser.cc"
break;
case 438: // $@61: %empty
-#line 1622 "dhcp4_parser.yy"
+#line 1629 "dhcp4_parser.yy"
{
ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2778 "dhcp4_parser.cc"
+#line 2782 "dhcp4_parser.cc"
break;
case 439: // subnet: "subnet" $@61 ":" "constant string"
-#line 1625 "dhcp4_parser.yy"
+#line 1632 "dhcp4_parser.yy"
{
ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 2788 "dhcp4_parser.cc"
+#line 2792 "dhcp4_parser.cc"
break;
case 440: // $@62: %empty
-#line 1631 "dhcp4_parser.yy"
+#line 1638 "dhcp4_parser.yy"
{
ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2797 "dhcp4_parser.cc"
+#line 2801 "dhcp4_parser.cc"
break;
case 441: // subnet_4o6_interface: "4o6-interface" $@62 ":" "constant string"
-#line 1634 "dhcp4_parser.yy"
+#line 1641 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface", iface);
ctx.leave();
}
-#line 2807 "dhcp4_parser.cc"
+#line 2811 "dhcp4_parser.cc"
break;
case 442: // $@63: %empty
-#line 1640 "dhcp4_parser.yy"
+#line 1647 "dhcp4_parser.yy"
{
ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2816 "dhcp4_parser.cc"
+#line 2820 "dhcp4_parser.cc"
break;
case 443: // subnet_4o6_interface_id: "4o6-interface-id" $@63 ":" "constant string"
-#line 1643 "dhcp4_parser.yy"
+#line 1650 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface-id", iface);
ctx.leave();
}
-#line 2826 "dhcp4_parser.cc"
+#line 2830 "dhcp4_parser.cc"
break;
case 444: // $@64: %empty
-#line 1649 "dhcp4_parser.yy"
+#line 1656 "dhcp4_parser.yy"
{
ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2835 "dhcp4_parser.cc"
+#line 2839 "dhcp4_parser.cc"
break;
case 445: // subnet_4o6_subnet: "4o6-subnet" $@64 ":" "constant string"
-#line 1652 "dhcp4_parser.yy"
+#line 1659 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-subnet", iface);
ctx.leave();
}
-#line 2845 "dhcp4_parser.cc"
+#line 2849 "dhcp4_parser.cc"
break;
case 446: // $@65: %empty
-#line 1658 "dhcp4_parser.yy"
+#line 1665 "dhcp4_parser.yy"
{
ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2854 "dhcp4_parser.cc"
+#line 2858 "dhcp4_parser.cc"
break;
case 447: // interface: "interface" $@65 ":" "constant string"
-#line 1661 "dhcp4_parser.yy"
+#line 1668 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2864 "dhcp4_parser.cc"
+#line 2868 "dhcp4_parser.cc"
break;
case 448: // $@66: %empty
-#line 1667 "dhcp4_parser.yy"
+#line 1674 "dhcp4_parser.yy"
{
ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2873 "dhcp4_parser.cc"
+#line 2877 "dhcp4_parser.cc"
break;
case 449: // client_class: "client-class" $@66 ":" "constant string"
-#line 1670 "dhcp4_parser.yy"
+#line 1677 "dhcp4_parser.yy"
{
ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 2883 "dhcp4_parser.cc"
+#line 2887 "dhcp4_parser.cc"
break;
case 450: // $@67: %empty
-#line 1676 "dhcp4_parser.yy"
+#line 1683 "dhcp4_parser.yy"
{
ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2895 "dhcp4_parser.cc"
+#line 2899 "dhcp4_parser.cc"
break;
case 451: // require_client_classes: "require-client-classes" $@67 ":" list_strings
-#line 1682 "dhcp4_parser.yy"
+#line 1689 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2904 "dhcp4_parser.cc"
+#line 2908 "dhcp4_parser.cc"
break;
case 452: // reservations_global: "reservations-global" ":" "boolean"
-#line 1687 "dhcp4_parser.yy"
+#line 1694 "dhcp4_parser.yy"
{
ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-global", b);
}
-#line 2914 "dhcp4_parser.cc"
+#line 2918 "dhcp4_parser.cc"
break;
case 453: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
-#line 1693 "dhcp4_parser.yy"
+#line 1700 "dhcp4_parser.yy"
{
ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-in-subnet", b);
}
-#line 2924 "dhcp4_parser.cc"
+#line 2928 "dhcp4_parser.cc"
break;
case 454: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
-#line 1699 "dhcp4_parser.yy"
+#line 1706 "dhcp4_parser.yy"
{
ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-out-of-pool", b);
}
-#line 2934 "dhcp4_parser.cc"
+#line 2938 "dhcp4_parser.cc"
break;
case 455: // $@68: %empty
-#line 1705 "dhcp4_parser.yy"
+#line 1712 "dhcp4_parser.yy"
{
ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2943 "dhcp4_parser.cc"
+#line 2947 "dhcp4_parser.cc"
break;
case 456: // reservation_mode: "reservation-mode" $@68 ":" hr_mode
-#line 1708 "dhcp4_parser.yy"
+#line 1715 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2952 "dhcp4_parser.cc"
+#line 2956 "dhcp4_parser.cc"
break;
case 457: // hr_mode: "disabled"
-#line 1713 "dhcp4_parser.yy"
+#line 1720 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2958 "dhcp4_parser.cc"
+#line 2962 "dhcp4_parser.cc"
break;
case 458: // hr_mode: "out-of-pool"
-#line 1714 "dhcp4_parser.yy"
+#line 1721 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2964 "dhcp4_parser.cc"
+#line 2968 "dhcp4_parser.cc"
break;
case 459: // hr_mode: "global"
-#line 1715 "dhcp4_parser.yy"
+#line 1722 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2970 "dhcp4_parser.cc"
+#line 2974 "dhcp4_parser.cc"
break;
case 460: // hr_mode: "all"
-#line 1716 "dhcp4_parser.yy"
+#line 1723 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2976 "dhcp4_parser.cc"
+#line 2980 "dhcp4_parser.cc"
break;
case 461: // id: "id" ":" "integer"
-#line 1719 "dhcp4_parser.yy"
+#line 1726 "dhcp4_parser.yy"
{
ctx.unique("id", ctx.loc2pos(yystack_[2].location));
ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2986 "dhcp4_parser.cc"
+#line 2990 "dhcp4_parser.cc"
break;
case 462: // $@69: %empty
-#line 1727 "dhcp4_parser.yy"
+#line 1734 "dhcp4_parser.yy"
{
ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.SHARED_NETWORK);
}
-#line 2998 "dhcp4_parser.cc"
+#line 3002 "dhcp4_parser.cc"
break;
case 463: // shared_networks: "shared-networks" $@69 ":" "[" shared_networks_content "]"
-#line 1733 "dhcp4_parser.yy"
+#line 1740 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3007 "dhcp4_parser.cc"
+#line 3011 "dhcp4_parser.cc"
break;
case 468: // shared_networks_list: shared_networks_list ","
-#line 1746 "dhcp4_parser.yy"
+#line 1753 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3015 "dhcp4_parser.cc"
+#line 3019 "dhcp4_parser.cc"
break;
case 469: // $@70: %empty
-#line 1751 "dhcp4_parser.yy"
+#line 1758 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3025 "dhcp4_parser.cc"
+#line 3029 "dhcp4_parser.cc"
break;
case 470: // shared_network: "{" $@70 shared_network_params "}"
-#line 1755 "dhcp4_parser.yy"
+#line 1762 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 3033 "dhcp4_parser.cc"
+#line 3037 "dhcp4_parser.cc"
break;
case 473: // shared_network_params: shared_network_params ","
-#line 1761 "dhcp4_parser.yy"
+#line 1768 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3041 "dhcp4_parser.cc"
+#line 3045 "dhcp4_parser.cc"
break;
case 518: // $@71: %empty
-#line 1816 "dhcp4_parser.yy"
+#line 1823 "dhcp4_parser.yy"
{
ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 3053 "dhcp4_parser.cc"
+#line 3057 "dhcp4_parser.cc"
break;
case 519: // option_def_list: "option-def" $@71 ":" "[" option_def_list_content "]"
-#line 1822 "dhcp4_parser.yy"
+#line 1829 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3062 "dhcp4_parser.cc"
+#line 3066 "dhcp4_parser.cc"
break;
case 520: // $@72: %empty
-#line 1830 "dhcp4_parser.yy"
+#line 1837 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3071 "dhcp4_parser.cc"
+#line 3075 "dhcp4_parser.cc"
break;
case 521: // sub_option_def_list: "{" $@72 option_def_list "}"
-#line 1833 "dhcp4_parser.yy"
+#line 1840 "dhcp4_parser.yy"
{
// parsing completed
}
-#line 3079 "dhcp4_parser.cc"
+#line 3083 "dhcp4_parser.cc"
break;
case 526: // not_empty_option_def_list: not_empty_option_def_list ","
-#line 1845 "dhcp4_parser.yy"
+#line 1852 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3087 "dhcp4_parser.cc"
+#line 3091 "dhcp4_parser.cc"
break;
case 527: // $@73: %empty
-#line 1852 "dhcp4_parser.yy"
+#line 1859 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3097 "dhcp4_parser.cc"
+#line 3101 "dhcp4_parser.cc"
break;
case 528: // option_def_entry: "{" $@73 option_def_params "}"
-#line 1856 "dhcp4_parser.yy"
+#line 1863 "dhcp4_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3109 "dhcp4_parser.cc"
+#line 3113 "dhcp4_parser.cc"
break;
case 529: // $@74: %empty
-#line 1867 "dhcp4_parser.yy"
+#line 1874 "dhcp4_parser.yy"
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3119 "dhcp4_parser.cc"
+#line 3123 "dhcp4_parser.cc"
break;
case 530: // sub_option_def: "{" $@74 option_def_params "}"
-#line 1871 "dhcp4_parser.yy"
+#line 1878 "dhcp4_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3131 "dhcp4_parser.cc"
+#line 3135 "dhcp4_parser.cc"
break;
case 535: // not_empty_option_def_params: not_empty_option_def_params ","
-#line 1887 "dhcp4_parser.yy"
+#line 1894 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3139 "dhcp4_parser.cc"
+#line 3143 "dhcp4_parser.cc"
break;
case 547: // code: "code" ":" "integer"
-#line 1906 "dhcp4_parser.yy"
+#line 1913 "dhcp4_parser.yy"
{
ctx.unique("code", ctx.loc2pos(yystack_[2].location));
ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 3149 "dhcp4_parser.cc"
+#line 3153 "dhcp4_parser.cc"
break;
case 549: // $@75: %empty
-#line 1914 "dhcp4_parser.yy"
+#line 1921 "dhcp4_parser.yy"
{
ctx.unique("type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3158 "dhcp4_parser.cc"
+#line 3162 "dhcp4_parser.cc"
break;
case 550: // option_def_type: "type" $@75 ":" "constant string"
-#line 1917 "dhcp4_parser.yy"
+#line 1924 "dhcp4_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 3168 "dhcp4_parser.cc"
+#line 3172 "dhcp4_parser.cc"
break;
case 551: // $@76: %empty
-#line 1923 "dhcp4_parser.yy"
+#line 1930 "dhcp4_parser.yy"
{
ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3177 "dhcp4_parser.cc"
+#line 3181 "dhcp4_parser.cc"
break;
case 552: // option_def_record_types: "record-types" $@76 ":" "constant string"
-#line 1926 "dhcp4_parser.yy"
+#line 1933 "dhcp4_parser.yy"
{
ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 3187 "dhcp4_parser.cc"
+#line 3191 "dhcp4_parser.cc"
break;
case 553: // $@77: %empty
-#line 1932 "dhcp4_parser.yy"
+#line 1939 "dhcp4_parser.yy"
{
ctx.unique("space", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3196 "dhcp4_parser.cc"
+#line 3200 "dhcp4_parser.cc"
break;
case 554: // space: "space" $@77 ":" "constant string"
-#line 1935 "dhcp4_parser.yy"
+#line 1942 "dhcp4_parser.yy"
{
ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 3206 "dhcp4_parser.cc"
+#line 3210 "dhcp4_parser.cc"
break;
case 556: // $@78: %empty
-#line 1943 "dhcp4_parser.yy"
+#line 1950 "dhcp4_parser.yy"
{
ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3215 "dhcp4_parser.cc"
+#line 3219 "dhcp4_parser.cc"
break;
case 557: // option_def_encapsulate: "encapsulate" $@78 ":" "constant string"
-#line 1946 "dhcp4_parser.yy"
+#line 1953 "dhcp4_parser.yy"
{
ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 3225 "dhcp4_parser.cc"
+#line 3229 "dhcp4_parser.cc"
break;
case 558: // option_def_array: "array" ":" "boolean"
-#line 1952 "dhcp4_parser.yy"
+#line 1959 "dhcp4_parser.yy"
{
ctx.unique("array", ctx.loc2pos(yystack_[2].location));
ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 3235 "dhcp4_parser.cc"
+#line 3239 "dhcp4_parser.cc"
break;
case 559: // $@79: %empty
-#line 1962 "dhcp4_parser.yy"
+#line 1969 "dhcp4_parser.yy"
{
ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 3247 "dhcp4_parser.cc"
+#line 3251 "dhcp4_parser.cc"
break;
case 560: // option_data_list: "option-data" $@79 ":" "[" option_data_list_content "]"
-#line 1968 "dhcp4_parser.yy"
+#line 1975 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3256 "dhcp4_parser.cc"
+#line 3260 "dhcp4_parser.cc"
break;
case 565: // not_empty_option_data_list: not_empty_option_data_list ","
-#line 1983 "dhcp4_parser.yy"
+#line 1990 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3264 "dhcp4_parser.cc"
+#line 3268 "dhcp4_parser.cc"
break;
case 566: // $@80: %empty
-#line 1990 "dhcp4_parser.yy"
+#line 1997 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3274 "dhcp4_parser.cc"
+#line 3278 "dhcp4_parser.cc"
break;
case 567: // option_data_entry: "{" $@80 option_data_params "}"
-#line 1994 "dhcp4_parser.yy"
+#line 2001 "dhcp4_parser.yy"
{
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 3283 "dhcp4_parser.cc"
+#line 3287 "dhcp4_parser.cc"
break;
case 568: // $@81: %empty
-#line 2002 "dhcp4_parser.yy"
+#line 2009 "dhcp4_parser.yy"
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3293 "dhcp4_parser.cc"
+#line 3297 "dhcp4_parser.cc"
break;
case 569: // sub_option_data: "{" $@81 option_data_params "}"
-#line 2006 "dhcp4_parser.yy"
+#line 2013 "dhcp4_parser.yy"
{
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 3302 "dhcp4_parser.cc"
+#line 3306 "dhcp4_parser.cc"
break;
case 574: // not_empty_option_data_params: not_empty_option_data_params ","
-#line 2022 "dhcp4_parser.yy"
+#line 2029 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3310 "dhcp4_parser.cc"
+#line 3314 "dhcp4_parser.cc"
break;
case 586: // $@82: %empty
-#line 2043 "dhcp4_parser.yy"
+#line 2050 "dhcp4_parser.yy"
{
ctx.unique("data", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3319 "dhcp4_parser.cc"
+#line 3323 "dhcp4_parser.cc"
break;
case 587: // option_data_data: "data" $@82 ":" "constant string"
-#line 2046 "dhcp4_parser.yy"
+#line 2053 "dhcp4_parser.yy"
{
ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 3329 "dhcp4_parser.cc"
+#line 3333 "dhcp4_parser.cc"
break;
case 590: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 2056 "dhcp4_parser.yy"
+#line 2063 "dhcp4_parser.yy"
{
ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", csv);
}
-#line 3339 "dhcp4_parser.cc"
+#line 3343 "dhcp4_parser.cc"
break;
case 591: // option_data_always_send: "always-send" ":" "boolean"
-#line 2062 "dhcp4_parser.yy"
+#line 2069 "dhcp4_parser.yy"
{
ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 3349 "dhcp4_parser.cc"
+#line 3353 "dhcp4_parser.cc"
break;
case 592: // option_data_never_send: "never-send" ":" "boolean"
-#line 2068 "dhcp4_parser.yy"
+#line 2075 "dhcp4_parser.yy"
{
ctx.unique("never-send", ctx.loc2pos(yystack_[2].location));
ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("never-send", cancel);
}
-#line 3359 "dhcp4_parser.cc"
+#line 3363 "dhcp4_parser.cc"
break;
case 593: // $@83: %empty
-#line 2077 "dhcp4_parser.yy"
+#line 2084 "dhcp4_parser.yy"
{
ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 3371 "dhcp4_parser.cc"
+#line 3375 "dhcp4_parser.cc"
break;
case 594: // pools_list: "pools" $@83 ":" "[" pools_list_content "]"
-#line 2083 "dhcp4_parser.yy"
+#line 2090 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3380 "dhcp4_parser.cc"
+#line 3384 "dhcp4_parser.cc"
break;
case 599: // not_empty_pools_list: not_empty_pools_list ","
-#line 2096 "dhcp4_parser.yy"
+#line 2103 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3388 "dhcp4_parser.cc"
+#line 3392 "dhcp4_parser.cc"
break;
case 600: // $@84: %empty
-#line 2101 "dhcp4_parser.yy"
+#line 2108 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3398 "dhcp4_parser.cc"
+#line 3402 "dhcp4_parser.cc"
break;
case 601: // pool_list_entry: "{" $@84 pool_params "}"
-#line 2105 "dhcp4_parser.yy"
+#line 2112 "dhcp4_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3408 "dhcp4_parser.cc"
+#line 3412 "dhcp4_parser.cc"
break;
case 602: // $@85: %empty
-#line 2111 "dhcp4_parser.yy"
+#line 2118 "dhcp4_parser.yy"
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3418 "dhcp4_parser.cc"
+#line 3422 "dhcp4_parser.cc"
break;
case 603: // sub_pool4: "{" $@85 pool_params "}"
-#line 2115 "dhcp4_parser.yy"
+#line 2122 "dhcp4_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3428 "dhcp4_parser.cc"
+#line 3432 "dhcp4_parser.cc"
break;
case 606: // pool_params: pool_params ","
-#line 2123 "dhcp4_parser.yy"
+#line 2130 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3436 "dhcp4_parser.cc"
+#line 3440 "dhcp4_parser.cc"
break;
case 615: // $@86: %empty
-#line 2138 "dhcp4_parser.yy"
+#line 2145 "dhcp4_parser.yy"
{
ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3445 "dhcp4_parser.cc"
+#line 3449 "dhcp4_parser.cc"
break;
case 616: // pool_entry: "pool" $@86 ":" "constant string"
-#line 2141 "dhcp4_parser.yy"
+#line 2148 "dhcp4_parser.yy"
{
ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 3455 "dhcp4_parser.cc"
+#line 3459 "dhcp4_parser.cc"
break;
case 617: // pool_id: "pool-id" ":" "integer"
-#line 2147 "dhcp4_parser.yy"
+#line 2154 "dhcp4_parser.yy"
{
ctx.unique("pool-id", ctx.loc2pos(yystack_[2].location));
ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool-id", id);
}
-#line 3465 "dhcp4_parser.cc"
+#line 3469 "dhcp4_parser.cc"
break;
case 618: // $@87: %empty
-#line 2153 "dhcp4_parser.yy"
+#line 2160 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3473 "dhcp4_parser.cc"
+#line 3477 "dhcp4_parser.cc"
break;
case 619: // user_context: "user-context" $@87 ":" map_value
-#line 2155 "dhcp4_parser.yy"
+#line 2162 "dhcp4_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
parent->set("user-context", user_context);
ctx.leave();
}
-#line 3500 "dhcp4_parser.cc"
+#line 3504 "dhcp4_parser.cc"
break;
case 620: // $@88: %empty
-#line 2178 "dhcp4_parser.yy"
+#line 2185 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3508 "dhcp4_parser.cc"
+#line 3512 "dhcp4_parser.cc"
break;
case 621: // comment: "comment" $@88 ":" "constant string"
-#line 2180 "dhcp4_parser.yy"
+#line 2187 "dhcp4_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
parent->set("user-context", user_context);
ctx.leave();
}
-#line 3537 "dhcp4_parser.cc"
+#line 3541 "dhcp4_parser.cc"
break;
case 622: // $@89: %empty
-#line 2208 "dhcp4_parser.yy"
+#line 2215 "dhcp4_parser.yy"
{
ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 3549 "dhcp4_parser.cc"
+#line 3553 "dhcp4_parser.cc"
break;
case 623: // reservations: "reservations" $@89 ":" "[" reservations_list "]"
-#line 2214 "dhcp4_parser.yy"
+#line 2221 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3558 "dhcp4_parser.cc"
+#line 3562 "dhcp4_parser.cc"
break;
case 628: // not_empty_reservations_list: not_empty_reservations_list ","
-#line 2225 "dhcp4_parser.yy"
+#line 2232 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3566 "dhcp4_parser.cc"
+#line 3570 "dhcp4_parser.cc"
break;
case 629: // $@90: %empty
-#line 2230 "dhcp4_parser.yy"
+#line 2237 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3576 "dhcp4_parser.cc"
+#line 3580 "dhcp4_parser.cc"
break;
case 630: // reservation: "{" $@90 reservation_params "}"
-#line 2234 "dhcp4_parser.yy"
+#line 2241 "dhcp4_parser.yy"
{
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 3585 "dhcp4_parser.cc"
+#line 3589 "dhcp4_parser.cc"
break;
case 631: // $@91: %empty
-#line 2239 "dhcp4_parser.yy"
+#line 2246 "dhcp4_parser.yy"
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3595 "dhcp4_parser.cc"
+#line 3599 "dhcp4_parser.cc"
break;
case 632: // sub_reservation: "{" $@91 reservation_params "}"
-#line 2243 "dhcp4_parser.yy"
+#line 2250 "dhcp4_parser.yy"
{
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 3604 "dhcp4_parser.cc"
+#line 3608 "dhcp4_parser.cc"
break;
case 637: // not_empty_reservation_params: not_empty_reservation_params ","
-#line 2254 "dhcp4_parser.yy"
+#line 2261 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3612 "dhcp4_parser.cc"
+#line 3616 "dhcp4_parser.cc"
break;
case 653: // $@92: %empty
-#line 2277 "dhcp4_parser.yy"
+#line 2284 "dhcp4_parser.yy"
{
ctx.unique("next-server", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3621 "dhcp4_parser.cc"
+#line 3625 "dhcp4_parser.cc"
break;
case 654: // next_server: "next-server" $@92 ":" "constant string"
-#line 2280 "dhcp4_parser.yy"
+#line 2287 "dhcp4_parser.yy"
{
ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("next-server", next_server);
ctx.leave();
}
-#line 3631 "dhcp4_parser.cc"
+#line 3635 "dhcp4_parser.cc"
break;
case 655: // $@93: %empty
-#line 2286 "dhcp4_parser.yy"
+#line 2293 "dhcp4_parser.yy"
{
ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3640 "dhcp4_parser.cc"
+#line 3644 "dhcp4_parser.cc"
break;
case 656: // server_hostname: "server-hostname" $@93 ":" "constant string"
-#line 2289 "dhcp4_parser.yy"
+#line 2296 "dhcp4_parser.yy"
{
ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-hostname", srv);
ctx.leave();
}
-#line 3650 "dhcp4_parser.cc"
+#line 3654 "dhcp4_parser.cc"
break;
case 657: // $@94: %empty
-#line 2295 "dhcp4_parser.yy"
+#line 2302 "dhcp4_parser.yy"
{
ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3659 "dhcp4_parser.cc"
+#line 3663 "dhcp4_parser.cc"
break;
case 658: // boot_file_name: "boot-file-name" $@94 ":" "constant string"
-#line 2298 "dhcp4_parser.yy"
+#line 2305 "dhcp4_parser.yy"
{
ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-file-name", bootfile);
ctx.leave();
}
-#line 3669 "dhcp4_parser.cc"
+#line 3673 "dhcp4_parser.cc"
break;
case 659: // $@95: %empty
-#line 2304 "dhcp4_parser.yy"
+#line 2311 "dhcp4_parser.yy"
{
ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3678 "dhcp4_parser.cc"
+#line 3682 "dhcp4_parser.cc"
break;
case 660: // ip_address: "ip-address" $@95 ":" "constant string"
-#line 2307 "dhcp4_parser.yy"
+#line 2314 "dhcp4_parser.yy"
{
ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 3688 "dhcp4_parser.cc"
+#line 3692 "dhcp4_parser.cc"
break;
case 661: // $@96: %empty
-#line 2313 "dhcp4_parser.yy"
+#line 2320 "dhcp4_parser.yy"
{
ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3700 "dhcp4_parser.cc"
+#line 3704 "dhcp4_parser.cc"
break;
case 662: // ip_addresses: "ip-addresses" $@96 ":" list_strings
-#line 2319 "dhcp4_parser.yy"
+#line 2326 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3709 "dhcp4_parser.cc"
+#line 3713 "dhcp4_parser.cc"
break;
case 663: // $@97: %empty
-#line 2324 "dhcp4_parser.yy"
+#line 2331 "dhcp4_parser.yy"
{
ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3718 "dhcp4_parser.cc"
+#line 3722 "dhcp4_parser.cc"
break;
case 664: // duid: "duid" $@97 ":" "constant string"
-#line 2327 "dhcp4_parser.yy"
+#line 2334 "dhcp4_parser.yy"
{
ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 3728 "dhcp4_parser.cc"
+#line 3732 "dhcp4_parser.cc"
break;
case 665: // $@98: %empty
-#line 2333 "dhcp4_parser.yy"
+#line 2340 "dhcp4_parser.yy"
{
ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3737 "dhcp4_parser.cc"
+#line 3741 "dhcp4_parser.cc"
break;
case 666: // hw_address: "hw-address" $@98 ":" "constant string"
-#line 2336 "dhcp4_parser.yy"
+#line 2343 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 3747 "dhcp4_parser.cc"
+#line 3751 "dhcp4_parser.cc"
break;
case 667: // $@99: %empty
-#line 2342 "dhcp4_parser.yy"
+#line 2349 "dhcp4_parser.yy"
{
ctx.unique("client-id", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3756 "dhcp4_parser.cc"
+#line 3760 "dhcp4_parser.cc"
break;
case 668: // client_id_value: "client-id" $@99 ":" "constant string"
-#line 2345 "dhcp4_parser.yy"
+#line 2352 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-id", hw);
ctx.leave();
}
-#line 3766 "dhcp4_parser.cc"
+#line 3770 "dhcp4_parser.cc"
break;
case 669: // $@100: %empty
-#line 2351 "dhcp4_parser.yy"
+#line 2358 "dhcp4_parser.yy"
{
ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3775 "dhcp4_parser.cc"
+#line 3779 "dhcp4_parser.cc"
break;
case 670: // circuit_id_value: "circuit-id" $@100 ":" "constant string"
-#line 2354 "dhcp4_parser.yy"
+#line 2361 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("circuit-id", hw);
ctx.leave();
}
-#line 3785 "dhcp4_parser.cc"
+#line 3789 "dhcp4_parser.cc"
break;
case 671: // $@101: %empty
-#line 2360 "dhcp4_parser.yy"
+#line 2367 "dhcp4_parser.yy"
{
ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3794 "dhcp4_parser.cc"
+#line 3798 "dhcp4_parser.cc"
break;
case 672: // flex_id_value: "flex-id" $@101 ":" "constant string"
-#line 2363 "dhcp4_parser.yy"
+#line 2370 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 3804 "dhcp4_parser.cc"
+#line 3808 "dhcp4_parser.cc"
break;
case 673: // $@102: %empty
-#line 2369 "dhcp4_parser.yy"
+#line 2376 "dhcp4_parser.yy"
{
ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3813 "dhcp4_parser.cc"
+#line 3817 "dhcp4_parser.cc"
break;
case 674: // hostname: "hostname" $@102 ":" "constant string"
-#line 2372 "dhcp4_parser.yy"
+#line 2379 "dhcp4_parser.yy"
{
ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 3823 "dhcp4_parser.cc"
+#line 3827 "dhcp4_parser.cc"
break;
case 675: // $@103: %empty
-#line 2378 "dhcp4_parser.yy"
+#line 2385 "dhcp4_parser.yy"
{
ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3835 "dhcp4_parser.cc"
+#line 3839 "dhcp4_parser.cc"
break;
case 676: // reservation_client_classes: "client-classes" $@103 ":" list_strings
-#line 2384 "dhcp4_parser.yy"
+#line 2391 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3844 "dhcp4_parser.cc"
+#line 3848 "dhcp4_parser.cc"
break;
case 677: // $@104: %empty
-#line 2392 "dhcp4_parser.yy"
+#line 2399 "dhcp4_parser.yy"
{
ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 3856 "dhcp4_parser.cc"
+#line 3860 "dhcp4_parser.cc"
break;
case 678: // relay: "relay" $@104 ":" "{" relay_map "}"
-#line 2398 "dhcp4_parser.yy"
+#line 2405 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3865 "dhcp4_parser.cc"
+#line 3869 "dhcp4_parser.cc"
break;
case 681: // $@105: %empty
-#line 2410 "dhcp4_parser.yy"
+#line 2417 "dhcp4_parser.yy"
{
ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 3877 "dhcp4_parser.cc"
+#line 3881 "dhcp4_parser.cc"
break;
case 682: // client_classes: "client-classes" $@105 ":" "[" client_classes_list "]"
-#line 2416 "dhcp4_parser.yy"
+#line 2423 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3886 "dhcp4_parser.cc"
+#line 3890 "dhcp4_parser.cc"
break;
case 685: // client_classes_list: client_classes_list ","
-#line 2423 "dhcp4_parser.yy"
+#line 2430 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3894 "dhcp4_parser.cc"
+#line 3898 "dhcp4_parser.cc"
break;
case 686: // $@106: %empty
-#line 2428 "dhcp4_parser.yy"
+#line 2435 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3904 "dhcp4_parser.cc"
+#line 3908 "dhcp4_parser.cc"
break;
case 687: // client_class_entry: "{" $@106 client_class_params "}"
-#line 2432 "dhcp4_parser.yy"
+#line 2439 "dhcp4_parser.yy"
{
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3914 "dhcp4_parser.cc"
+#line 3918 "dhcp4_parser.cc"
break;
case 692: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2444 "dhcp4_parser.yy"
+#line 2451 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3922 "dhcp4_parser.cc"
+#line 3926 "dhcp4_parser.cc"
break;
case 710: // $@107: %empty
-#line 2469 "dhcp4_parser.yy"
+#line 2476 "dhcp4_parser.yy"
{
ctx.unique("test", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3931 "dhcp4_parser.cc"
+#line 3935 "dhcp4_parser.cc"
break;
case 711: // client_class_test: "test" $@107 ":" "constant string"
-#line 2472 "dhcp4_parser.yy"
+#line 2479 "dhcp4_parser.yy"
{
ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 3941 "dhcp4_parser.cc"
+#line 3945 "dhcp4_parser.cc"
break;
case 712: // $@108: %empty
-#line 2478 "dhcp4_parser.yy"
+#line 2485 "dhcp4_parser.yy"
{
ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3950 "dhcp4_parser.cc"
+#line 3954 "dhcp4_parser.cc"
break;
case 713: // client_class_template_test: "template-test" $@108 ":" "constant string"
-#line 2481 "dhcp4_parser.yy"
+#line 2488 "dhcp4_parser.yy"
{
ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("template-test", template_test);
ctx.leave();
}
-#line 3960 "dhcp4_parser.cc"
+#line 3964 "dhcp4_parser.cc"
break;
case 714: // only_if_required: "only-if-required" ":" "boolean"
-#line 2487 "dhcp4_parser.yy"
+#line 2494 "dhcp4_parser.yy"
{
ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 3970 "dhcp4_parser.cc"
+#line 3974 "dhcp4_parser.cc"
break;
case 715: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2495 "dhcp4_parser.yy"
+#line 2502 "dhcp4_parser.yy"
{
ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 3980 "dhcp4_parser.cc"
+#line 3984 "dhcp4_parser.cc"
break;
case 716: // $@109: %empty
-#line 2503 "dhcp4_parser.yy"
+#line 2510 "dhcp4_parser.yy"
{
ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 3992 "dhcp4_parser.cc"
+#line 3996 "dhcp4_parser.cc"
break;
case 717: // control_socket: "control-socket" $@109 ":" "{" control_socket_params "}"
-#line 2509 "dhcp4_parser.yy"
+#line 2516 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4001 "dhcp4_parser.cc"
+#line 4005 "dhcp4_parser.cc"
break;
case 720: // control_socket_params: control_socket_params ","
-#line 2516 "dhcp4_parser.yy"
+#line 2523 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4009 "dhcp4_parser.cc"
+#line 4013 "dhcp4_parser.cc"
break;
case 726: // $@110: %empty
-#line 2528 "dhcp4_parser.yy"
+#line 2535 "dhcp4_parser.yy"
{
ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4018 "dhcp4_parser.cc"
+#line 4022 "dhcp4_parser.cc"
break;
case 727: // control_socket_type: "socket-type" $@110 ":" "constant string"
-#line 2531 "dhcp4_parser.yy"
+#line 2538 "dhcp4_parser.yy"
{
ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 4028 "dhcp4_parser.cc"
+#line 4032 "dhcp4_parser.cc"
break;
case 728: // $@111: %empty
-#line 2537 "dhcp4_parser.yy"
+#line 2544 "dhcp4_parser.yy"
{
ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4037 "dhcp4_parser.cc"
+#line 4041 "dhcp4_parser.cc"
break;
case 729: // control_socket_name: "socket-name" $@111 ":" "constant string"
-#line 2540 "dhcp4_parser.yy"
+#line 2547 "dhcp4_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 4047 "dhcp4_parser.cc"
+#line 4051 "dhcp4_parser.cc"
break;
case 730: // $@112: %empty
-#line 2549 "dhcp4_parser.yy"
+#line 2556 "dhcp4_parser.yy"
{
ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(qc);
ctx.enter(ctx.DHCP_QUEUE_CONTROL);
}
-#line 4059 "dhcp4_parser.cc"
+#line 4063 "dhcp4_parser.cc"
break;
case 731: // dhcp_queue_control: "dhcp-queue-control" $@112 ":" "{" queue_control_params "}"
-#line 2555 "dhcp4_parser.yy"
+#line 2562 "dhcp4_parser.yy"
{
// The enable queue parameter is required.
ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4070 "dhcp4_parser.cc"
+#line 4074 "dhcp4_parser.cc"
break;
case 734: // queue_control_params: queue_control_params ","
-#line 2564 "dhcp4_parser.yy"
+#line 2571 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4078 "dhcp4_parser.cc"
+#line 4082 "dhcp4_parser.cc"
break;
case 741: // enable_queue: "enable-queue" ":" "boolean"
-#line 2577 "dhcp4_parser.yy"
+#line 2584 "dhcp4_parser.yy"
{
ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-queue", b);
}
-#line 4088 "dhcp4_parser.cc"
+#line 4092 "dhcp4_parser.cc"
break;
case 742: // $@113: %empty
-#line 2583 "dhcp4_parser.yy"
+#line 2590 "dhcp4_parser.yy"
{
ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4097 "dhcp4_parser.cc"
+#line 4101 "dhcp4_parser.cc"
break;
case 743: // queue_type: "queue-type" $@113 ":" "constant string"
-#line 2586 "dhcp4_parser.yy"
+#line 2593 "dhcp4_parser.yy"
{
ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("queue-type", qt);
ctx.leave();
}
-#line 4107 "dhcp4_parser.cc"
+#line 4111 "dhcp4_parser.cc"
break;
case 744: // capacity: "capacity" ":" "integer"
-#line 2592 "dhcp4_parser.yy"
+#line 2599 "dhcp4_parser.yy"
{
ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("capacity", c);
}
-#line 4117 "dhcp4_parser.cc"
+#line 4121 "dhcp4_parser.cc"
break;
case 745: // $@114: %empty
-#line 2598 "dhcp4_parser.yy"
+#line 2605 "dhcp4_parser.yy"
{
ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4126 "dhcp4_parser.cc"
+#line 4130 "dhcp4_parser.cc"
break;
case 746: // arbitrary_map_entry: "constant string" $@114 ":" value
-#line 2601 "dhcp4_parser.yy"
+#line 2608 "dhcp4_parser.yy"
{
ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4135 "dhcp4_parser.cc"
+#line 4139 "dhcp4_parser.cc"
break;
case 747: // $@115: %empty
-#line 2608 "dhcp4_parser.yy"
+#line 2615 "dhcp4_parser.yy"
{
ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 4147 "dhcp4_parser.cc"
+#line 4151 "dhcp4_parser.cc"
break;
case 748: // dhcp_ddns: "dhcp-ddns" $@115 ":" "{" dhcp_ddns_params "}"
-#line 2614 "dhcp4_parser.yy"
+#line 2621 "dhcp4_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4158 "dhcp4_parser.cc"
+#line 4162 "dhcp4_parser.cc"
break;
case 749: // $@116: %empty
-#line 2621 "dhcp4_parser.yy"
+#line 2628 "dhcp4_parser.yy"
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 4168 "dhcp4_parser.cc"
+#line 4172 "dhcp4_parser.cc"
break;
case 750: // sub_dhcp_ddns: "{" $@116 dhcp_ddns_params "}"
-#line 2625 "dhcp4_parser.yy"
+#line 2632 "dhcp4_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 4178 "dhcp4_parser.cc"
+#line 4182 "dhcp4_parser.cc"
break;
case 753: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 2633 "dhcp4_parser.yy"
+#line 2640 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4186 "dhcp4_parser.cc"
+#line 4190 "dhcp4_parser.cc"
break;
case 772: // enable_updates: "enable-updates" ":" "boolean"
-#line 2658 "dhcp4_parser.yy"
+#line 2665 "dhcp4_parser.yy"
{
ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 4196 "dhcp4_parser.cc"
+#line 4200 "dhcp4_parser.cc"
break;
case 773: // $@117: %empty
-#line 2664 "dhcp4_parser.yy"
+#line 2671 "dhcp4_parser.yy"
{
ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4205 "dhcp4_parser.cc"
+#line 4209 "dhcp4_parser.cc"
break;
case 774: // server_ip: "server-ip" $@117 ":" "constant string"
-#line 2667 "dhcp4_parser.yy"
+#line 2674 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 4215 "dhcp4_parser.cc"
+#line 4219 "dhcp4_parser.cc"
break;
case 775: // server_port: "server-port" ":" "integer"
-#line 2673 "dhcp4_parser.yy"
+#line 2680 "dhcp4_parser.yy"
{
ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 4225 "dhcp4_parser.cc"
+#line 4229 "dhcp4_parser.cc"
break;
case 776: // $@118: %empty
-#line 2679 "dhcp4_parser.yy"
+#line 2686 "dhcp4_parser.yy"
{
ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4234 "dhcp4_parser.cc"
+#line 4238 "dhcp4_parser.cc"
break;
case 777: // sender_ip: "sender-ip" $@118 ":" "constant string"
-#line 2682 "dhcp4_parser.yy"
+#line 2689 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 4244 "dhcp4_parser.cc"
+#line 4248 "dhcp4_parser.cc"
break;
case 778: // sender_port: "sender-port" ":" "integer"
-#line 2688 "dhcp4_parser.yy"
+#line 2695 "dhcp4_parser.yy"
{
ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 4254 "dhcp4_parser.cc"
+#line 4258 "dhcp4_parser.cc"
break;
case 779: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2694 "dhcp4_parser.yy"
+#line 2701 "dhcp4_parser.yy"
{
ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 4264 "dhcp4_parser.cc"
+#line 4268 "dhcp4_parser.cc"
break;
case 780: // $@119: %empty
-#line 2700 "dhcp4_parser.yy"
+#line 2707 "dhcp4_parser.yy"
{
ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 4273 "dhcp4_parser.cc"
+#line 4277 "dhcp4_parser.cc"
break;
case 781: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
-#line 2703 "dhcp4_parser.yy"
+#line 2710 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4282 "dhcp4_parser.cc"
+#line 4286 "dhcp4_parser.cc"
break;
case 782: // ncr_protocol_value: "udp"
-#line 2709 "dhcp4_parser.yy"
+#line 2716 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 4288 "dhcp4_parser.cc"
+#line 4292 "dhcp4_parser.cc"
break;
case 783: // ncr_protocol_value: "tcp"
-#line 2710 "dhcp4_parser.yy"
+#line 2717 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 4294 "dhcp4_parser.cc"
+#line 4298 "dhcp4_parser.cc"
break;
case 784: // $@120: %empty
-#line 2713 "dhcp4_parser.yy"
+#line 2720 "dhcp4_parser.yy"
{
ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NCR_FORMAT);
}
-#line 4303 "dhcp4_parser.cc"
+#line 4307 "dhcp4_parser.cc"
break;
case 785: // ncr_format: "ncr-format" $@120 ":" "JSON"
-#line 2716 "dhcp4_parser.yy"
+#line 2723 "dhcp4_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 4313 "dhcp4_parser.cc"
+#line 4317 "dhcp4_parser.cc"
break;
case 786: // $@121: %empty
-#line 2723 "dhcp4_parser.yy"
+#line 2730 "dhcp4_parser.yy"
{
ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4322 "dhcp4_parser.cc"
+#line 4326 "dhcp4_parser.cc"
break;
case 787: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string"
-#line 2726 "dhcp4_parser.yy"
+#line 2733 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 4332 "dhcp4_parser.cc"
+#line 4336 "dhcp4_parser.cc"
break;
case 788: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2733 "dhcp4_parser.yy"
+#line 2740 "dhcp4_parser.yy"
{
ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 4342 "dhcp4_parser.cc"
+#line 4346 "dhcp4_parser.cc"
break;
case 789: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2740 "dhcp4_parser.yy"
+#line 2747 "dhcp4_parser.yy"
{
ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 4352 "dhcp4_parser.cc"
+#line 4356 "dhcp4_parser.cc"
break;
case 790: // $@122: %empty
-#line 2747 "dhcp4_parser.yy"
+#line 2754 "dhcp4_parser.yy"
{
ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 4361 "dhcp4_parser.cc"
+#line 4365 "dhcp4_parser.cc"
break;
case 791: // dep_replace_client_name: "replace-client-name" $@122 ":" ddns_replace_client_name_value
-#line 2750 "dhcp4_parser.yy"
+#line 2757 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4370 "dhcp4_parser.cc"
+#line 4374 "dhcp4_parser.cc"
break;
case 792: // $@123: %empty
-#line 2756 "dhcp4_parser.yy"
+#line 2763 "dhcp4_parser.yy"
{
ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4379 "dhcp4_parser.cc"
+#line 4383 "dhcp4_parser.cc"
break;
case 793: // dep_generated_prefix: "generated-prefix" $@123 ":" "constant string"
-#line 2759 "dhcp4_parser.yy"
+#line 2766 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 4389 "dhcp4_parser.cc"
+#line 4393 "dhcp4_parser.cc"
break;
case 794: // $@124: %empty
-#line 2766 "dhcp4_parser.yy"
+#line 2773 "dhcp4_parser.yy"
{
ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4398 "dhcp4_parser.cc"
+#line 4402 "dhcp4_parser.cc"
break;
case 795: // dep_hostname_char_set: "hostname-char-set" $@124 ":" "constant string"
-#line 2769 "dhcp4_parser.yy"
+#line 2776 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 4408 "dhcp4_parser.cc"
+#line 4412 "dhcp4_parser.cc"
break;
case 796: // $@125: %empty
-#line 2776 "dhcp4_parser.yy"
+#line 2783 "dhcp4_parser.yy"
{
ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4417 "dhcp4_parser.cc"
+#line 4421 "dhcp4_parser.cc"
break;
case 797: // dep_hostname_char_replacement: "hostname-char-replacement" $@125 ":" "constant string"
-#line 2779 "dhcp4_parser.yy"
+#line 2786 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 4427 "dhcp4_parser.cc"
+#line 4431 "dhcp4_parser.cc"
break;
case 798: // $@126: %empty
-#line 2788 "dhcp4_parser.yy"
+#line 2795 "dhcp4_parser.yy"
{
ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.CONFIG_CONTROL);
}
-#line 4439 "dhcp4_parser.cc"
+#line 4443 "dhcp4_parser.cc"
break;
case 799: // config_control: "config-control" $@126 ":" "{" config_control_params "}"
-#line 2794 "dhcp4_parser.yy"
+#line 2801 "dhcp4_parser.yy"
{
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4449 "dhcp4_parser.cc"
+#line 4453 "dhcp4_parser.cc"
break;
case 800: // $@127: %empty
-#line 2800 "dhcp4_parser.yy"
+#line 2807 "dhcp4_parser.yy"
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 4459 "dhcp4_parser.cc"
+#line 4463 "dhcp4_parser.cc"
break;
case 801: // sub_config_control: "{" $@127 config_control_params "}"
-#line 2804 "dhcp4_parser.yy"
+#line 2811 "dhcp4_parser.yy"
{
// No config_control params are required
// parsing completed
}
-#line 4468 "dhcp4_parser.cc"
+#line 4472 "dhcp4_parser.cc"
break;
case 804: // config_control_params: config_control_params ","
-#line 2812 "dhcp4_parser.yy"
+#line 2819 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4476 "dhcp4_parser.cc"
+#line 4480 "dhcp4_parser.cc"
break;
case 807: // $@128: %empty
-#line 2822 "dhcp4_parser.yy"
+#line 2829 "dhcp4_parser.yy"
{
ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.CONFIG_DATABASE);
}
-#line 4488 "dhcp4_parser.cc"
+#line 4492 "dhcp4_parser.cc"
break;
case 808: // config_databases: "config-databases" $@128 ":" "[" database_list "]"
-#line 2828 "dhcp4_parser.yy"
+#line 2835 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4497 "dhcp4_parser.cc"
+#line 4501 "dhcp4_parser.cc"
break;
case 809: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2833 "dhcp4_parser.yy"
+#line 2840 "dhcp4_parser.yy"
{
ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
}
-#line 4507 "dhcp4_parser.cc"
+#line 4511 "dhcp4_parser.cc"
break;
case 810: // $@129: %empty
-#line 2841 "dhcp4_parser.yy"
+#line 2848 "dhcp4_parser.yy"
{
ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 4519 "dhcp4_parser.cc"
+#line 4523 "dhcp4_parser.cc"
break;
case 811: // loggers: "loggers" $@129 ":" "[" loggers_entries "]"
-#line 2847 "dhcp4_parser.yy"
+#line 2854 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4528 "dhcp4_parser.cc"
+#line 4532 "dhcp4_parser.cc"
break;
case 814: // loggers_entries: loggers_entries ","
-#line 2856 "dhcp4_parser.yy"
+#line 2863 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4536 "dhcp4_parser.cc"
+#line 4540 "dhcp4_parser.cc"
break;
case 815: // $@130: %empty
-#line 2862 "dhcp4_parser.yy"
+#line 2869 "dhcp4_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 4546 "dhcp4_parser.cc"
+#line 4550 "dhcp4_parser.cc"
break;
case 816: // logger_entry: "{" $@130 logger_params "}"
-#line 2866 "dhcp4_parser.yy"
+#line 2873 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 4554 "dhcp4_parser.cc"
+#line 4558 "dhcp4_parser.cc"
break;
case 819: // logger_params: logger_params ","
-#line 2872 "dhcp4_parser.yy"
+#line 2879 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4562 "dhcp4_parser.cc"
+#line 4566 "dhcp4_parser.cc"
break;
case 827: // debuglevel: "debuglevel" ":" "integer"
-#line 2886 "dhcp4_parser.yy"
+#line 2893 "dhcp4_parser.yy"
{
ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 4572 "dhcp4_parser.cc"
+#line 4576 "dhcp4_parser.cc"
break;
case 828: // $@131: %empty
-#line 2892 "dhcp4_parser.yy"
+#line 2899 "dhcp4_parser.yy"
{
ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4581 "dhcp4_parser.cc"
+#line 4585 "dhcp4_parser.cc"
break;
case 829: // severity: "severity" $@131 ":" "constant string"
-#line 2895 "dhcp4_parser.yy"
+#line 2902 "dhcp4_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 4591 "dhcp4_parser.cc"
+#line 4595 "dhcp4_parser.cc"
break;
case 830: // $@132: %empty
-#line 2901 "dhcp4_parser.yy"
+#line 2908 "dhcp4_parser.yy"
{
ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 4603 "dhcp4_parser.cc"
+#line 4607 "dhcp4_parser.cc"
break;
case 831: // output_options_list: "output_options" $@132 ":" "[" output_options_list_content "]"
-#line 2907 "dhcp4_parser.yy"
+#line 2914 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4612 "dhcp4_parser.cc"
+#line 4616 "dhcp4_parser.cc"
break;
case 834: // output_options_list_content: output_options_list_content ","
-#line 2914 "dhcp4_parser.yy"
+#line 2921 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4620 "dhcp4_parser.cc"
+#line 4624 "dhcp4_parser.cc"
break;
case 835: // $@133: %empty
-#line 2919 "dhcp4_parser.yy"
+#line 2926 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 4630 "dhcp4_parser.cc"
+#line 4634 "dhcp4_parser.cc"
break;
case 836: // output_entry: "{" $@133 output_params_list "}"
-#line 2923 "dhcp4_parser.yy"
+#line 2930 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 4638 "dhcp4_parser.cc"
+#line 4642 "dhcp4_parser.cc"
break;
case 839: // output_params_list: output_params_list ","
-#line 2929 "dhcp4_parser.yy"
+#line 2936 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4646 "dhcp4_parser.cc"
+#line 4650 "dhcp4_parser.cc"
break;
case 845: // $@134: %empty
-#line 2941 "dhcp4_parser.yy"
+#line 2948 "dhcp4_parser.yy"
{
ctx.unique("output", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4655 "dhcp4_parser.cc"
+#line 4659 "dhcp4_parser.cc"
break;
case 846: // output: "output" $@134 ":" "constant string"
-#line 2944 "dhcp4_parser.yy"
+#line 2951 "dhcp4_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 4665 "dhcp4_parser.cc"
+#line 4669 "dhcp4_parser.cc"
break;
case 847: // flush: "flush" ":" "boolean"
-#line 2950 "dhcp4_parser.yy"
+#line 2957 "dhcp4_parser.yy"
{
ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 4675 "dhcp4_parser.cc"
+#line 4679 "dhcp4_parser.cc"
break;
case 848: // maxsize: "maxsize" ":" "integer"
-#line 2956 "dhcp4_parser.yy"
+#line 2963 "dhcp4_parser.yy"
{
ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 4685 "dhcp4_parser.cc"
+#line 4689 "dhcp4_parser.cc"
break;
case 849: // maxver: "maxver" ":" "integer"
-#line 2962 "dhcp4_parser.yy"
+#line 2969 "dhcp4_parser.yy"
{
ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 4695 "dhcp4_parser.cc"
+#line 4699 "dhcp4_parser.cc"
break;
case 850: // $@135: %empty
-#line 2968 "dhcp4_parser.yy"
+#line 2975 "dhcp4_parser.yy"
{
ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4704 "dhcp4_parser.cc"
+#line 4708 "dhcp4_parser.cc"
break;
case 851: // pattern: "pattern" $@135 ":" "constant string"
-#line 2971 "dhcp4_parser.yy"
+#line 2978 "dhcp4_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 4714 "dhcp4_parser.cc"
+#line 4718 "dhcp4_parser.cc"
break;
case 852: // $@136: %empty
-#line 2977 "dhcp4_parser.yy"
+#line 2984 "dhcp4_parser.yy"
{
ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.COMPATIBILITY);
}
-#line 4726 "dhcp4_parser.cc"
+#line 4730 "dhcp4_parser.cc"
break;
case 853: // compatibility: "compatibility" $@136 ":" "{" compatibility_params "}"
-#line 2983 "dhcp4_parser.yy"
+#line 2990 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4735 "dhcp4_parser.cc"
+#line 4739 "dhcp4_parser.cc"
break;
case 856: // compatibility_params: compatibility_params ","
-#line 2990 "dhcp4_parser.yy"
+#line 2997 "dhcp4_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4743 "dhcp4_parser.cc"
+#line 4747 "dhcp4_parser.cc"
break;
case 862: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3002 "dhcp4_parser.yy"
+#line 3009 "dhcp4_parser.yy"
{
ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lenient-option-parsing", b);
}
-#line 4753 "dhcp4_parser.cc"
+#line 4757 "dhcp4_parser.cc"
break;
case 863: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean"
-#line 3008 "dhcp4_parser.yy"
+#line 3015 "dhcp4_parser.yy"
{
ctx.unique("ignore-dhcp-server-identifier", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ignore-dhcp-server-identifier", b);
}
-#line 4763 "dhcp4_parser.cc"
+#line 4767 "dhcp4_parser.cc"
break;
case 864: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean"
-#line 3014 "dhcp4_parser.yy"
+#line 3021 "dhcp4_parser.yy"
{
ctx.unique("ignore-rai-link-selection", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ignore-rai-link-selection", b);
}
-#line 4773 "dhcp4_parser.cc"
+#line 4777 "dhcp4_parser.cc"
break;
case 865: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
-#line 3020 "dhcp4_parser.yy"
+#line 3027 "dhcp4_parser.yy"
{
ctx.unique("exclude-first-last-24", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("exclude-first-last-24", b);
}
-#line 4783 "dhcp4_parser.cc"
+#line 4787 "dhcp4_parser.cc"
break;
-#line 4787 "dhcp4_parser.cc"
+#line 4791 "dhcp4_parser.cc"
default:
break;
588, 594, 600, 606, 612, 618, 624, 630, 636, 642,
642, 651, 657, 657, 666, 672, 678, 684, 690, 696,
702, 702, 711, 714, 717, 720, 723, 729, 729, 738,
- 738, 747, 753, 759, 759, 768, 771, 774, 777, 782,
- 788, 788, 797, 797, 806, 812, 818, 824, 830, 836,
- 842, 848, 848, 860, 861, 862, 867, 868, 869, 870,
- 871, 872, 873, 874, 875, 876, 879, 879, 888, 888,
- 899, 899, 907, 908, 911, 911, 919, 921, 925, 931,
- 937, 943, 949, 949, 962, 962, 973, 974, 975, 980,
- 981, 984, 984, 1003, 1003, 1021, 1021, 1034, 1034, 1045,
- 1046, 1049, 1050, 1051, 1056, 1056, 1066, 1067, 1068, 1073,
- 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
- 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
- 1094, 1097, 1097, 1105, 1106, 1107, 1110, 1110, 1119, 1119,
- 1128, 1128, 1137, 1143, 1143, 1152, 1158, 1164, 1170, 1176,
- 1182, 1188, 1194, 1200, 1206, 1206, 1214, 1215, 1216, 1219,
- 1225, 1225, 1234, 1234, 1243, 1243, 1252, 1252, 1261, 1261,
- 1272, 1273, 1274, 1279, 1280, 1281, 1282, 1283, 1286, 1291,
- 1296, 1301, 1306, 1313, 1313, 1326, 1327, 1328, 1333, 1334,
- 1335, 1336, 1337, 1338, 1341, 1347, 1353, 1359, 1359, 1370,
- 1371, 1374, 1375, 1376, 1381, 1381, 1391, 1391, 1401, 1402,
- 1403, 1406, 1409, 1410, 1413, 1413, 1422, 1422, 1431, 1431,
- 1443, 1444, 1445, 1450, 1451, 1452, 1453, 1454, 1455, 1458,
- 1464, 1470, 1476, 1482, 1488, 1497, 1497, 1511, 1512, 1515,
- 1516, 1517, 1526, 1526, 1552, 1552, 1563, 1564, 1565, 1571,
- 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581,
- 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591,
- 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601,
- 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611,
- 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1622, 1622,
- 1631, 1631, 1640, 1640, 1649, 1649, 1658, 1658, 1667, 1667,
- 1676, 1676, 1687, 1693, 1699, 1705, 1705, 1713, 1714, 1715,
- 1716, 1719, 1727, 1727, 1739, 1740, 1744, 1745, 1746, 1751,
- 1751, 1759, 1760, 1761, 1766, 1767, 1768, 1769, 1770, 1771,
- 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781,
- 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791,
- 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801,
- 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1816, 1816,
- 1830, 1830, 1839, 1840, 1843, 1844, 1845, 1852, 1852, 1867,
- 1867, 1881, 1882, 1885, 1886, 1887, 1892, 1893, 1894, 1895,
- 1896, 1897, 1898, 1899, 1900, 1901, 1904, 1906, 1912, 1914,
- 1914, 1923, 1923, 1932, 1932, 1941, 1943, 1943, 1952, 1962,
- 1962, 1975, 1976, 1981, 1982, 1983, 1990, 1990, 2002, 2002,
- 2014, 2015, 2020, 2021, 2022, 2029, 2030, 2031, 2032, 2033,
- 2034, 2035, 2036, 2037, 2038, 2041, 2043, 2043, 2052, 2054,
- 2056, 2062, 2068, 2077, 2077, 2090, 2091, 2094, 2095, 2096,
- 2101, 2101, 2111, 2111, 2121, 2122, 2123, 2128, 2129, 2130,
- 2131, 2132, 2133, 2134, 2135, 2138, 2138, 2147, 2153, 2153,
- 2178, 2178, 2208, 2208, 2219, 2220, 2223, 2224, 2225, 2230,
- 2230, 2239, 2239, 2248, 2249, 2252, 2253, 2254, 2260, 2261,
- 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271,
- 2272, 2273, 2274, 2277, 2277, 2286, 2286, 2295, 2295, 2304,
- 2304, 2313, 2313, 2324, 2324, 2333, 2333, 2342, 2342, 2351,
- 2351, 2360, 2360, 2369, 2369, 2378, 2378, 2392, 2392, 2403,
- 2404, 2410, 2410, 2421, 2422, 2423, 2428, 2428, 2438, 2439,
- 2442, 2443, 2444, 2449, 2450, 2451, 2452, 2453, 2454, 2455,
- 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463, 2464, 2467,
- 2469, 2469, 2478, 2478, 2487, 2495, 2503, 2503, 2514, 2515,
- 2516, 2521, 2522, 2523, 2524, 2525, 2528, 2528, 2537, 2537,
- 2549, 2549, 2562, 2563, 2564, 2569, 2570, 2571, 2572, 2573,
- 2574, 2577, 2583, 2583, 2592, 2598, 2598, 2608, 2608, 2621,
- 2621, 2631, 2632, 2633, 2638, 2639, 2640, 2641, 2642, 2643,
- 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653,
- 2654, 2655, 2658, 2664, 2664, 2673, 2679, 2679, 2688, 2694,
- 2700, 2700, 2709, 2710, 2713, 2713, 2723, 2723, 2733, 2740,
- 2747, 2747, 2756, 2756, 2766, 2766, 2776, 2776, 2788, 2788,
- 2800, 2800, 2810, 2811, 2812, 2818, 2819, 2822, 2822, 2833,
- 2841, 2841, 2854, 2855, 2856, 2862, 2862, 2870, 2871, 2872,
- 2877, 2878, 2879, 2880, 2881, 2882, 2883, 2886, 2892, 2892,
- 2901, 2901, 2912, 2913, 2914, 2919, 2919, 2927, 2928, 2929,
- 2934, 2935, 2936, 2937, 2938, 2941, 2941, 2950, 2956, 2962,
- 2968, 2968, 2977, 2977, 2988, 2989, 2990, 2995, 2996, 2997,
- 2998, 2999, 3002, 3008, 3014, 3020
+ 738, 747, 756, 766, 766, 775, 778, 781, 784, 789,
+ 795, 795, 804, 804, 813, 819, 825, 831, 837, 843,
+ 849, 855, 855, 867, 868, 869, 874, 875, 876, 877,
+ 878, 879, 880, 881, 882, 883, 886, 886, 895, 895,
+ 906, 906, 914, 915, 918, 918, 926, 928, 932, 938,
+ 944, 950, 956, 956, 969, 969, 980, 981, 982, 987,
+ 988, 991, 991, 1010, 1010, 1028, 1028, 1041, 1041, 1052,
+ 1053, 1056, 1057, 1058, 1063, 1063, 1073, 1074, 1075, 1080,
+ 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090,
+ 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100,
+ 1101, 1104, 1104, 1112, 1113, 1114, 1117, 1117, 1126, 1126,
+ 1135, 1135, 1144, 1150, 1150, 1159, 1165, 1171, 1177, 1183,
+ 1189, 1195, 1201, 1207, 1213, 1213, 1221, 1222, 1223, 1226,
+ 1232, 1232, 1241, 1241, 1250, 1250, 1259, 1259, 1268, 1268,
+ 1279, 1280, 1281, 1286, 1287, 1288, 1289, 1290, 1293, 1298,
+ 1303, 1308, 1313, 1320, 1320, 1333, 1334, 1335, 1340, 1341,
+ 1342, 1343, 1344, 1345, 1348, 1354, 1360, 1366, 1366, 1377,
+ 1378, 1381, 1382, 1383, 1388, 1388, 1398, 1398, 1408, 1409,
+ 1410, 1413, 1416, 1417, 1420, 1420, 1429, 1429, 1438, 1438,
+ 1450, 1451, 1452, 1457, 1458, 1459, 1460, 1461, 1462, 1465,
+ 1471, 1477, 1483, 1489, 1495, 1504, 1504, 1518, 1519, 1522,
+ 1523, 1524, 1533, 1533, 1559, 1559, 1570, 1571, 1572, 1578,
+ 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588,
+ 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598,
+ 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608,
+ 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
+ 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1629, 1629,
+ 1638, 1638, 1647, 1647, 1656, 1656, 1665, 1665, 1674, 1674,
+ 1683, 1683, 1694, 1700, 1706, 1712, 1712, 1720, 1721, 1722,
+ 1723, 1726, 1734, 1734, 1746, 1747, 1751, 1752, 1753, 1758,
+ 1758, 1766, 1767, 1768, 1773, 1774, 1775, 1776, 1777, 1778,
+ 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788,
+ 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798,
+ 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808,
+ 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1823, 1823,
+ 1837, 1837, 1846, 1847, 1850, 1851, 1852, 1859, 1859, 1874,
+ 1874, 1888, 1889, 1892, 1893, 1894, 1899, 1900, 1901, 1902,
+ 1903, 1904, 1905, 1906, 1907, 1908, 1911, 1913, 1919, 1921,
+ 1921, 1930, 1930, 1939, 1939, 1948, 1950, 1950, 1959, 1969,
+ 1969, 1982, 1983, 1988, 1989, 1990, 1997, 1997, 2009, 2009,
+ 2021, 2022, 2027, 2028, 2029, 2036, 2037, 2038, 2039, 2040,
+ 2041, 2042, 2043, 2044, 2045, 2048, 2050, 2050, 2059, 2061,
+ 2063, 2069, 2075, 2084, 2084, 2097, 2098, 2101, 2102, 2103,
+ 2108, 2108, 2118, 2118, 2128, 2129, 2130, 2135, 2136, 2137,
+ 2138, 2139, 2140, 2141, 2142, 2145, 2145, 2154, 2160, 2160,
+ 2185, 2185, 2215, 2215, 2226, 2227, 2230, 2231, 2232, 2237,
+ 2237, 2246, 2246, 2255, 2256, 2259, 2260, 2261, 2267, 2268,
+ 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278,
+ 2279, 2280, 2281, 2284, 2284, 2293, 2293, 2302, 2302, 2311,
+ 2311, 2320, 2320, 2331, 2331, 2340, 2340, 2349, 2349, 2358,
+ 2358, 2367, 2367, 2376, 2376, 2385, 2385, 2399, 2399, 2410,
+ 2411, 2417, 2417, 2428, 2429, 2430, 2435, 2435, 2445, 2446,
+ 2449, 2450, 2451, 2456, 2457, 2458, 2459, 2460, 2461, 2462,
+ 2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2474,
+ 2476, 2476, 2485, 2485, 2494, 2502, 2510, 2510, 2521, 2522,
+ 2523, 2528, 2529, 2530, 2531, 2532, 2535, 2535, 2544, 2544,
+ 2556, 2556, 2569, 2570, 2571, 2576, 2577, 2578, 2579, 2580,
+ 2581, 2584, 2590, 2590, 2599, 2605, 2605, 2615, 2615, 2628,
+ 2628, 2638, 2639, 2640, 2645, 2646, 2647, 2648, 2649, 2650,
+ 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, 2660,
+ 2661, 2662, 2665, 2671, 2671, 2680, 2686, 2686, 2695, 2701,
+ 2707, 2707, 2716, 2717, 2720, 2720, 2730, 2730, 2740, 2747,
+ 2754, 2754, 2763, 2763, 2773, 2773, 2783, 2783, 2795, 2795,
+ 2807, 2807, 2817, 2818, 2819, 2825, 2826, 2829, 2829, 2840,
+ 2848, 2848, 2861, 2862, 2863, 2869, 2869, 2877, 2878, 2879,
+ 2884, 2885, 2886, 2887, 2888, 2889, 2890, 2893, 2899, 2899,
+ 2908, 2908, 2919, 2920, 2921, 2926, 2926, 2934, 2935, 2936,
+ 2941, 2942, 2943, 2944, 2945, 2948, 2948, 2957, 2963, 2969,
+ 2975, 2975, 2984, 2984, 2995, 2996, 2997, 3002, 3003, 3004,
+ 3005, 3006, 3009, 3015, 3021, 3027
};
void
#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 6439 "dhcp4_parser.cc"
+#line 6443 "dhcp4_parser.cc"
-#line 3026 "dhcp4_parser.yy"
+#line 3033 "dhcp4_parser.yy"
void
ctx.stack_.back()->set("ddns-update-on-renew", b);
};
+// ddns-use-conflict-resolutions is deprecated. We translate it
+// to ddns-conflict-resolution-mode. If they happen to specify
+// both the server parsing should detect it.
ddns_use_conflict_resolution: DDNS_USE_CONFLICT_RESOLUTION COLON BOOLEAN {
ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(@1));
ElementPtr b(new BoolElement($3, ctx.loc2pos(@3)));
- ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+ ctx.warning(@2, "ddns-use-conflict-resolution is deprecated. "
+ "Substituting ddns-conflict-resolution-mode");
+ ElementPtr mode(new StringElement(b->boolValue() ? "check-with-dhcid"
+ : "no-check-with-dhcid"));
+ ctx.stack_.back()->set("ddns-conflict-resolution-mode", mode);
};
ddns_conflict_resolution_mode: DDNS_CONFLICT_RESOLUTION_MODE {
-// A Bison parser, made by GNU Bison 3.8.2.
+// A Bison parser, made by GNU Bison 3.7.2.
// Locations for Bison parsers in C++
break;
case 172: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
-#line 744 "dhcp6_parser.yy"
+#line 747 "dhcp6_parser.yy"
{
ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
- ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+ ctx.warning(yystack_[1].location, "ddns-use-conflict-resolution is deprecated. "
+ "Substituting ddns-conflict-resolution-mode");
+ ElementPtr mode(new StringElement(b->boolValue() ? "check-with-dhcid"
+ : "no-check-with-dhcid"));
+ ctx.stack_.back()->set("ddns-conflict-resolution-mode", mode);
}
-#line 1438 "dhcp6_parser.cc"
+#line 1442 "dhcp6_parser.cc"
break;
case 173: // $@25: %empty
-#line 750 "dhcp6_parser.yy"
+#line 757 "dhcp6_parser.yy"
{
ctx.unique("ddns-conflict-resolution-mode", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DDNS_CONFLICT_RESOLUTION_MODE);
}
-#line 1447 "dhcp6_parser.cc"
+#line 1451 "dhcp6_parser.cc"
break;
case 174: // ddns_conflict_resolution_mode: "ddns-conflict-resolution-mode" $@25 ":" ddns_conflict_resolution_mode_value
-#line 753 "dhcp6_parser.yy"
+#line 760 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("ddns-conflict-resolution-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1456 "dhcp6_parser.cc"
+#line 1460 "dhcp6_parser.cc"
break;
case 175: // ddns_conflict_resolution_mode_value: "check-with-dhcid"
-#line 759 "dhcp6_parser.yy"
+#line 766 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1464 "dhcp6_parser.cc"
+#line 1468 "dhcp6_parser.cc"
break;
case 176: // ddns_conflict_resolution_mode_value: "no-check-with-dhcid"
-#line 762 "dhcp6_parser.yy"
+#line 769 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-with-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1472 "dhcp6_parser.cc"
+#line 1476 "dhcp6_parser.cc"
break;
case 177: // ddns_conflict_resolution_mode_value: "check-exists-with-dhcid"
-#line 765 "dhcp6_parser.yy"
+#line 772 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("check-exists-with-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1480 "dhcp6_parser.cc"
+#line 1484 "dhcp6_parser.cc"
break;
case 178: // ddns_conflict_resolution_mode_value: "no-check-without-dhcid"
-#line 768 "dhcp6_parser.yy"
+#line 775 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("no-check-without-dhcid", ctx.loc2pos(yystack_[0].location)));
}
-#line 1488 "dhcp6_parser.cc"
+#line 1492 "dhcp6_parser.cc"
break;
case 179: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point"
-#line 773 "dhcp6_parser.yy"
+#line 780 "dhcp6_parser.yy"
{
ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location));
ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ddns-ttl-percent", ttl);
}
-#line 1498 "dhcp6_parser.cc"
+#line 1502 "dhcp6_parser.cc"
break;
case 180: // $@26: %empty
-#line 779 "dhcp6_parser.yy"
+#line 786 "dhcp6_parser.yy"
{
ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1507 "dhcp6_parser.cc"
+#line 1511 "dhcp6_parser.cc"
break;
case 181: // hostname_char_set: "hostname-char-set" $@26 ":" "constant string"
-#line 782 "dhcp6_parser.yy"
+#line 789 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 1517 "dhcp6_parser.cc"
+#line 1521 "dhcp6_parser.cc"
break;
case 182: // $@27: %empty
-#line 788 "dhcp6_parser.yy"
+#line 795 "dhcp6_parser.yy"
{
ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1526 "dhcp6_parser.cc"
+#line 1530 "dhcp6_parser.cc"
break;
case 183: // hostname_char_replacement: "hostname-char-replacement" $@27 ":" "constant string"
-#line 791 "dhcp6_parser.yy"
+#line 798 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 1536 "dhcp6_parser.cc"
+#line 1540 "dhcp6_parser.cc"
break;
case 184: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 797 "dhcp6_parser.yy"
+#line 804 "dhcp6_parser.yy"
{
ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("store-extended-info", b);
}
-#line 1546 "dhcp6_parser.cc"
+#line 1550 "dhcp6_parser.cc"
break;
case 185: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 803 "dhcp6_parser.yy"
+#line 810 "dhcp6_parser.yy"
{
ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-count", count);
}
-#line 1556 "dhcp6_parser.cc"
+#line 1560 "dhcp6_parser.cc"
break;
case 186: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 809 "dhcp6_parser.yy"
+#line 816 "dhcp6_parser.yy"
{
ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("statistic-default-sample-age", age);
}
-#line 1566 "dhcp6_parser.cc"
+#line 1570 "dhcp6_parser.cc"
break;
case 187: // $@28: %empty
-#line 815 "dhcp6_parser.yy"
+#line 822 "dhcp6_parser.yy"
{
ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1575 "dhcp6_parser.cc"
+#line 1579 "dhcp6_parser.cc"
break;
case 188: // server_tag: "server-tag" $@28 ":" "constant string"
-#line 818 "dhcp6_parser.yy"
+#line 825 "dhcp6_parser.yy"
{
ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-tag", stag);
ctx.leave();
}
-#line 1585 "dhcp6_parser.cc"
+#line 1589 "dhcp6_parser.cc"
break;
case 189: // parked_packet_limit: "parked-packet-limit" ":" "integer"
-#line 824 "dhcp6_parser.yy"
+#line 831 "dhcp6_parser.yy"
{
ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location));
ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("parked-packet-limit", ppl);
}
-#line 1595 "dhcp6_parser.cc"
+#line 1599 "dhcp6_parser.cc"
break;
case 190: // $@29: %empty
-#line 830 "dhcp6_parser.yy"
+#line 837 "dhcp6_parser.yy"
{
ctx.unique("allocator", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1604 "dhcp6_parser.cc"
+#line 1608 "dhcp6_parser.cc"
break;
case 191: // allocator: "allocator" $@29 ":" "constant string"
-#line 833 "dhcp6_parser.yy"
+#line 840 "dhcp6_parser.yy"
{
ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("allocator", al);
ctx.leave();
}
-#line 1614 "dhcp6_parser.cc"
+#line 1618 "dhcp6_parser.cc"
break;
case 192: // $@30: %empty
-#line 839 "dhcp6_parser.yy"
+#line 846 "dhcp6_parser.yy"
{
ctx.unique("pd-allocator", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1623 "dhcp6_parser.cc"
+#line 1627 "dhcp6_parser.cc"
break;
case 193: // pd_allocator: "pd-allocator" $@30 ":" "constant string"
-#line 842 "dhcp6_parser.yy"
+#line 849 "dhcp6_parser.yy"
{
ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pd-allocator", al);
ctx.leave();
}
-#line 1633 "dhcp6_parser.cc"
+#line 1637 "dhcp6_parser.cc"
break;
case 194: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean"
-#line 848 "dhcp6_parser.yy"
+#line 855 "dhcp6_parser.yy"
{
ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location));
ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("early-global-reservations-lookup", early);
}
-#line 1643 "dhcp6_parser.cc"
+#line 1647 "dhcp6_parser.cc"
break;
case 195: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean"
-#line 854 "dhcp6_parser.yy"
+#line 861 "dhcp6_parser.yy"
{
ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location));
ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-reservations-unique", unique);
}
-#line 1653 "dhcp6_parser.cc"
+#line 1657 "dhcp6_parser.cc"
break;
case 196: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean"
-#line 860 "dhcp6_parser.yy"
+#line 867 "dhcp6_parser.yy"
{
ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location));
ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-lookup-first", first);
}
-#line 1663 "dhcp6_parser.cc"
+#line 1667 "dhcp6_parser.cc"
break;
case 197: // $@31: %empty
-#line 866 "dhcp6_parser.yy"
+#line 873 "dhcp6_parser.yy"
{
ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.INTERFACES_CONFIG);
}
-#line 1675 "dhcp6_parser.cc"
+#line 1679 "dhcp6_parser.cc"
break;
case 198: // interfaces_config: "interfaces-config" $@31 ":" "{" interfaces_config_params "}"
-#line 872 "dhcp6_parser.yy"
+#line 879 "dhcp6_parser.yy"
{
// No interfaces config param is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1685 "dhcp6_parser.cc"
+#line 1689 "dhcp6_parser.cc"
break;
case 199: // $@32: %empty
-#line 878 "dhcp6_parser.yy"
+#line 885 "dhcp6_parser.yy"
{
// Parse the interfaces-config map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1695 "dhcp6_parser.cc"
+#line 1699 "dhcp6_parser.cc"
break;
case 200: // sub_interfaces6: "{" $@32 interfaces_config_params "}"
-#line 882 "dhcp6_parser.yy"
+#line 889 "dhcp6_parser.yy"
{
// No interfaces config param is required
// parsing completed
}
-#line 1704 "dhcp6_parser.cc"
+#line 1708 "dhcp6_parser.cc"
break;
case 203: // interfaces_config_params: interfaces_config_params ","
-#line 889 "dhcp6_parser.yy"
+#line 896 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 1712 "dhcp6_parser.cc"
+#line 1716 "dhcp6_parser.cc"
break;
case 212: // $@33: %empty
-#line 904 "dhcp6_parser.yy"
+#line 911 "dhcp6_parser.yy"
{
ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1724 "dhcp6_parser.cc"
+#line 1728 "dhcp6_parser.cc"
break;
case 213: // interfaces_list: "interfaces" $@33 ":" list_strings
-#line 910 "dhcp6_parser.yy"
+#line 917 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1733 "dhcp6_parser.cc"
+#line 1737 "dhcp6_parser.cc"
break;
case 214: // re_detect: "re-detect" ":" "boolean"
-#line 915 "dhcp6_parser.yy"
+#line 922 "dhcp6_parser.yy"
{
ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("re-detect", b);
}
-#line 1743 "dhcp6_parser.cc"
+#line 1747 "dhcp6_parser.cc"
break;
case 215: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean"
-#line 921 "dhcp6_parser.yy"
+#line 928 "dhcp6_parser.yy"
{
ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("service-sockets-require-all", b);
}
-#line 1753 "dhcp6_parser.cc"
+#line 1757 "dhcp6_parser.cc"
break;
case 216: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer"
-#line 927 "dhcp6_parser.yy"
+#line 934 "dhcp6_parser.yy"
{
ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("service-sockets-retry-wait-time", n);
}
-#line 1763 "dhcp6_parser.cc"
+#line 1767 "dhcp6_parser.cc"
break;
case 217: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer"
-#line 933 "dhcp6_parser.yy"
+#line 940 "dhcp6_parser.yy"
{
ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("service-sockets-max-retries", n);
}
-#line 1773 "dhcp6_parser.cc"
+#line 1777 "dhcp6_parser.cc"
break;
case 218: // $@34: %empty
-#line 939 "dhcp6_parser.yy"
+#line 946 "dhcp6_parser.yy"
{
ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.LEASE_DATABASE);
}
-#line 1785 "dhcp6_parser.cc"
+#line 1789 "dhcp6_parser.cc"
break;
case 219: // lease_database: "lease-database" $@34 ":" "{" database_map_params "}"
-#line 945 "dhcp6_parser.yy"
+#line 952 "dhcp6_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1796 "dhcp6_parser.cc"
+#line 1800 "dhcp6_parser.cc"
break;
case 220: // $@35: %empty
-#line 952 "dhcp6_parser.yy"
+#line 959 "dhcp6_parser.yy"
{
ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1808 "dhcp6_parser.cc"
+#line 1812 "dhcp6_parser.cc"
break;
case 221: // hosts_database: "hosts-database" $@35 ":" "{" database_map_params "}"
-#line 958 "dhcp6_parser.yy"
+#line 965 "dhcp6_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1819 "dhcp6_parser.cc"
+#line 1823 "dhcp6_parser.cc"
break;
case 222: // $@36: %empty
-#line 965 "dhcp6_parser.yy"
+#line 972 "dhcp6_parser.yy"
{
ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.HOSTS_DATABASE);
}
-#line 1831 "dhcp6_parser.cc"
+#line 1835 "dhcp6_parser.cc"
break;
case 223: // hosts_databases: "hosts-databases" $@36 ":" "[" database_list "]"
-#line 971 "dhcp6_parser.yy"
+#line 978 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1840 "dhcp6_parser.cc"
+#line 1844 "dhcp6_parser.cc"
break;
case 228: // not_empty_database_list: not_empty_database_list ","
-#line 982 "dhcp6_parser.yy"
+#line 989 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 1848 "dhcp6_parser.cc"
+#line 1852 "dhcp6_parser.cc"
break;
case 229: // $@37: %empty
-#line 987 "dhcp6_parser.yy"
+#line 994 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1858 "dhcp6_parser.cc"
+#line 1862 "dhcp6_parser.cc"
break;
case 230: // database: "{" $@37 database_map_params "}"
-#line 991 "dhcp6_parser.yy"
+#line 998 "dhcp6_parser.yy"
{
// The type parameter is required
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 1868 "dhcp6_parser.cc"
+#line 1872 "dhcp6_parser.cc"
break;
case 233: // database_map_params: database_map_params ","
-#line 999 "dhcp6_parser.yy"
+#line 1006 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 1876 "dhcp6_parser.cc"
+#line 1880 "dhcp6_parser.cc"
break;
case 256: // $@38: %empty
-#line 1028 "dhcp6_parser.yy"
+#line 1035 "dhcp6_parser.yy"
{
ctx.unique("type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DATABASE_TYPE);
}
-#line 1885 "dhcp6_parser.cc"
+#line 1889 "dhcp6_parser.cc"
break;
case 257: // database_type: "type" $@38 ":" db_type
-#line 1031 "dhcp6_parser.yy"
+#line 1038 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 1894 "dhcp6_parser.cc"
+#line 1898 "dhcp6_parser.cc"
break;
case 258: // db_type: "memfile"
-#line 1036 "dhcp6_parser.yy"
+#line 1043 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1900 "dhcp6_parser.cc"
+#line 1904 "dhcp6_parser.cc"
break;
case 259: // db_type: "mysql"
-#line 1037 "dhcp6_parser.yy"
+#line 1044 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1906 "dhcp6_parser.cc"
+#line 1910 "dhcp6_parser.cc"
break;
case 260: // db_type: "postgresql"
-#line 1038 "dhcp6_parser.yy"
+#line 1045 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1912 "dhcp6_parser.cc"
+#line 1916 "dhcp6_parser.cc"
break;
case 261: // $@39: %empty
-#line 1041 "dhcp6_parser.yy"
+#line 1048 "dhcp6_parser.yy"
{
ctx.unique("user", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1921 "dhcp6_parser.cc"
+#line 1925 "dhcp6_parser.cc"
break;
case 262: // user: "user" $@39 ":" "constant string"
-#line 1044 "dhcp6_parser.yy"
+#line 1051 "dhcp6_parser.yy"
{
ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("user", user);
ctx.leave();
}
-#line 1931 "dhcp6_parser.cc"
+#line 1935 "dhcp6_parser.cc"
break;
case 263: // $@40: %empty
-#line 1050 "dhcp6_parser.yy"
+#line 1057 "dhcp6_parser.yy"
{
ctx.unique("password", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1940 "dhcp6_parser.cc"
+#line 1944 "dhcp6_parser.cc"
break;
case 264: // password: "password" $@40 ":" "constant string"
-#line 1053 "dhcp6_parser.yy"
+#line 1060 "dhcp6_parser.yy"
{
ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("password", pwd);
ctx.leave();
}
-#line 1950 "dhcp6_parser.cc"
+#line 1954 "dhcp6_parser.cc"
break;
case 265: // $@41: %empty
-#line 1059 "dhcp6_parser.yy"
+#line 1066 "dhcp6_parser.yy"
{
ctx.unique("host", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1959 "dhcp6_parser.cc"
+#line 1963 "dhcp6_parser.cc"
break;
case 266: // host: "host" $@41 ":" "constant string"
-#line 1062 "dhcp6_parser.yy"
+#line 1069 "dhcp6_parser.yy"
{
ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("host", h);
ctx.leave();
}
-#line 1969 "dhcp6_parser.cc"
+#line 1973 "dhcp6_parser.cc"
break;
case 267: // port: "port" ":" "integer"
-#line 1068 "dhcp6_parser.yy"
+#line 1075 "dhcp6_parser.yy"
{
ctx.unique("port", ctx.loc2pos(yystack_[2].location));
ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("port", p);
}
-#line 1979 "dhcp6_parser.cc"
+#line 1983 "dhcp6_parser.cc"
break;
case 268: // $@42: %empty
-#line 1074 "dhcp6_parser.yy"
+#line 1081 "dhcp6_parser.yy"
{
ctx.unique("name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1988 "dhcp6_parser.cc"
+#line 1992 "dhcp6_parser.cc"
break;
case 269: // name: "name" $@42 ":" "constant string"
-#line 1077 "dhcp6_parser.yy"
+#line 1084 "dhcp6_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("name", name);
ctx.leave();
}
-#line 1998 "dhcp6_parser.cc"
+#line 2002 "dhcp6_parser.cc"
break;
case 270: // persist: "persist" ":" "boolean"
-#line 1083 "dhcp6_parser.yy"
+#line 1090 "dhcp6_parser.yy"
{
ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("persist", n);
}
-#line 2008 "dhcp6_parser.cc"
+#line 2012 "dhcp6_parser.cc"
break;
case 271: // lfc_interval: "lfc-interval" ":" "integer"
-#line 1089 "dhcp6_parser.yy"
+#line 1096 "dhcp6_parser.yy"
{
ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lfc-interval", n);
}
-#line 2018 "dhcp6_parser.cc"
+#line 2022 "dhcp6_parser.cc"
break;
case 272: // readonly: "readonly" ":" "boolean"
-#line 1095 "dhcp6_parser.yy"
+#line 1102 "dhcp6_parser.yy"
{
ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("readonly", n);
}
-#line 2028 "dhcp6_parser.cc"
+#line 2032 "dhcp6_parser.cc"
break;
case 273: // connect_timeout: "connect-timeout" ":" "integer"
-#line 1101 "dhcp6_parser.yy"
+#line 1108 "dhcp6_parser.yy"
{
ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("connect-timeout", n);
}
-#line 2038 "dhcp6_parser.cc"
+#line 2042 "dhcp6_parser.cc"
break;
case 274: // read_timeout: "read-timeout" ":" "integer"
-#line 1107 "dhcp6_parser.yy"
+#line 1114 "dhcp6_parser.yy"
{
ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("read-timeout", n);
}
-#line 2048 "dhcp6_parser.cc"
+#line 2052 "dhcp6_parser.cc"
break;
case 275: // write_timeout: "write-timeout" ":" "integer"
-#line 1113 "dhcp6_parser.yy"
+#line 1120 "dhcp6_parser.yy"
{
ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("write-timeout", n);
}
-#line 2058 "dhcp6_parser.cc"
+#line 2062 "dhcp6_parser.cc"
break;
case 276: // tcp_user_timeout: "tcp-user-timeout" ":" "integer"
-#line 1119 "dhcp6_parser.yy"
+#line 1126 "dhcp6_parser.yy"
{
ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("tcp-user-timeout", n);
}
-#line 2068 "dhcp6_parser.cc"
+#line 2072 "dhcp6_parser.cc"
break;
case 277: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1126 "dhcp6_parser.yy"
+#line 1133 "dhcp6_parser.yy"
{
ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reconnect-wait-time", n);
}
-#line 2078 "dhcp6_parser.cc"
+#line 2082 "dhcp6_parser.cc"
break;
case 278: // $@43: %empty
-#line 1132 "dhcp6_parser.yy"
+#line 1139 "dhcp6_parser.yy"
{
ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DATABASE_ON_FAIL);
}
-#line 2087 "dhcp6_parser.cc"
+#line 2091 "dhcp6_parser.cc"
break;
case 279: // on_fail: "on-fail" $@43 ":" on_fail_mode
-#line 1135 "dhcp6_parser.yy"
+#line 1142 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2096 "dhcp6_parser.cc"
+#line 2100 "dhcp6_parser.cc"
break;
case 280: // on_fail_mode: "stop-retry-exit"
-#line 1140 "dhcp6_parser.yy"
+#line 1147 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); }
-#line 2102 "dhcp6_parser.cc"
+#line 2106 "dhcp6_parser.cc"
break;
case 281: // on_fail_mode: "serve-retry-exit"
-#line 1141 "dhcp6_parser.yy"
+#line 1148 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); }
-#line 2108 "dhcp6_parser.cc"
+#line 2112 "dhcp6_parser.cc"
break;
case 282: // on_fail_mode: "serve-retry-continue"
-#line 1142 "dhcp6_parser.yy"
+#line 1149 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); }
-#line 2114 "dhcp6_parser.cc"
+#line 2118 "dhcp6_parser.cc"
break;
case 283: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1145 "dhcp6_parser.yy"
+#line 1152 "dhcp6_parser.yy"
{
ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-row-errors", n);
}
-#line 2124 "dhcp6_parser.cc"
+#line 2128 "dhcp6_parser.cc"
break;
case 284: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1151 "dhcp6_parser.yy"
+#line 1158 "dhcp6_parser.yy"
{
ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reconnect-tries", n);
}
-#line 2134 "dhcp6_parser.cc"
+#line 2138 "dhcp6_parser.cc"
break;
case 285: // $@44: %empty
-#line 1157 "dhcp6_parser.yy"
+#line 1164 "dhcp6_parser.yy"
{
ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2143 "dhcp6_parser.cc"
+#line 2147 "dhcp6_parser.cc"
break;
case 286: // trust_anchor: "trust-anchor" $@44 ":" "constant string"
-#line 1160 "dhcp6_parser.yy"
+#line 1167 "dhcp6_parser.yy"
{
ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("trust-anchor", ca);
ctx.leave();
}
-#line 2153 "dhcp6_parser.cc"
+#line 2157 "dhcp6_parser.cc"
break;
case 287: // $@45: %empty
-#line 1166 "dhcp6_parser.yy"
+#line 1173 "dhcp6_parser.yy"
{
ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2162 "dhcp6_parser.cc"
+#line 2166 "dhcp6_parser.cc"
break;
case 288: // cert_file: "cert-file" $@45 ":" "constant string"
-#line 1169 "dhcp6_parser.yy"
+#line 1176 "dhcp6_parser.yy"
{
ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("cert-file", cert);
ctx.leave();
}
-#line 2172 "dhcp6_parser.cc"
+#line 2176 "dhcp6_parser.cc"
break;
case 289: // $@46: %empty
-#line 1175 "dhcp6_parser.yy"
+#line 1182 "dhcp6_parser.yy"
{
ctx.unique("key-file", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2181 "dhcp6_parser.cc"
+#line 2185 "dhcp6_parser.cc"
break;
case 290: // key_file: "key-file" $@46 ":" "constant string"
-#line 1178 "dhcp6_parser.yy"
+#line 1185 "dhcp6_parser.yy"
{
ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("key-file", key);
ctx.leave();
}
-#line 2191 "dhcp6_parser.cc"
+#line 2195 "dhcp6_parser.cc"
break;
case 291: // $@47: %empty
-#line 1184 "dhcp6_parser.yy"
+#line 1191 "dhcp6_parser.yy"
{
ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2200 "dhcp6_parser.cc"
+#line 2204 "dhcp6_parser.cc"
break;
case 292: // cipher_list: "cipher-list" $@47 ":" "constant string"
-#line 1187 "dhcp6_parser.yy"
+#line 1194 "dhcp6_parser.yy"
{
ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("cipher-list", cl);
ctx.leave();
}
-#line 2210 "dhcp6_parser.cc"
+#line 2214 "dhcp6_parser.cc"
break;
case 293: // $@48: %empty
-#line 1193 "dhcp6_parser.yy"
+#line 1200 "dhcp6_parser.yy"
{
ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.SANITY_CHECKS);
}
-#line 2222 "dhcp6_parser.cc"
+#line 2226 "dhcp6_parser.cc"
break;
case 294: // sanity_checks: "sanity-checks" $@48 ":" "{" sanity_checks_params "}"
-#line 1199 "dhcp6_parser.yy"
+#line 1206 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2231 "dhcp6_parser.cc"
+#line 2235 "dhcp6_parser.cc"
break;
case 297: // sanity_checks_params: sanity_checks_params ","
-#line 1206 "dhcp6_parser.yy"
+#line 1213 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2239 "dhcp6_parser.cc"
+#line 2243 "dhcp6_parser.cc"
break;
case 300: // $@49: %empty
-#line 1215 "dhcp6_parser.yy"
+#line 1222 "dhcp6_parser.yy"
{
ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2248 "dhcp6_parser.cc"
+#line 2252 "dhcp6_parser.cc"
break;
case 301: // lease_checks: "lease-checks" $@49 ":" "constant string"
-#line 1218 "dhcp6_parser.yy"
+#line 1225 "dhcp6_parser.yy"
{
if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
", supported values are: none, warn, fix, fix-del, del");
}
}
-#line 2268 "dhcp6_parser.cc"
+#line 2272 "dhcp6_parser.cc"
break;
case 302: // $@50: %empty
-#line 1234 "dhcp6_parser.yy"
+#line 1241 "dhcp6_parser.yy"
{
ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2277 "dhcp6_parser.cc"
+#line 2281 "dhcp6_parser.cc"
break;
case 303: // extended_info_checks: "extended-info-checks" $@50 ":" "constant string"
-#line 1237 "dhcp6_parser.yy"
+#line 1244 "dhcp6_parser.yy"
{
if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
", supported values are: none, fix, strict, pedantic");
}
}
-#line 2296 "dhcp6_parser.cc"
+#line 2300 "dhcp6_parser.cc"
break;
case 304: // $@51: %empty
-#line 1252 "dhcp6_parser.yy"
+#line 1259 "dhcp6_parser.yy"
{
ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.MAC_SOURCES);
}
-#line 2308 "dhcp6_parser.cc"
+#line 2312 "dhcp6_parser.cc"
break;
case 305: // mac_sources: "mac-sources" $@51 ":" "[" mac_sources_list "]"
-#line 1258 "dhcp6_parser.yy"
+#line 1265 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2317 "dhcp6_parser.cc"
+#line 2321 "dhcp6_parser.cc"
break;
case 308: // mac_sources_list: mac_sources_list ","
-#line 1265 "dhcp6_parser.yy"
+#line 1272 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2325 "dhcp6_parser.cc"
+#line 2329 "dhcp6_parser.cc"
break;
case 311: // duid_id: "duid"
-#line 1274 "dhcp6_parser.yy"
+#line 1281 "dhcp6_parser.yy"
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 2334 "dhcp6_parser.cc"
+#line 2338 "dhcp6_parser.cc"
break;
case 312: // string_id: "constant string"
-#line 1279 "dhcp6_parser.yy"
+#line 1286 "dhcp6_parser.yy"
{
ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(duid);
}
-#line 2343 "dhcp6_parser.cc"
+#line 2347 "dhcp6_parser.cc"
break;
case 313: // $@52: %empty
-#line 1284 "dhcp6_parser.yy"
+#line 1291 "dhcp6_parser.yy"
{
ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
}
-#line 2355 "dhcp6_parser.cc"
+#line 2359 "dhcp6_parser.cc"
break;
case 314: // host_reservation_identifiers: "host-reservation-identifiers" $@52 ":" "[" host_reservation_identifiers_list "]"
-#line 1290 "dhcp6_parser.yy"
+#line 1297 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2364 "dhcp6_parser.cc"
+#line 2368 "dhcp6_parser.cc"
break;
case 317: // host_reservation_identifiers_list: host_reservation_identifiers_list ","
-#line 1297 "dhcp6_parser.yy"
+#line 1304 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2372 "dhcp6_parser.cc"
+#line 2376 "dhcp6_parser.cc"
break;
case 321: // hw_address_id: "hw-address"
-#line 1307 "dhcp6_parser.yy"
+#line 1314 "dhcp6_parser.yy"
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(hwaddr);
}
-#line 2381 "dhcp6_parser.cc"
+#line 2385 "dhcp6_parser.cc"
break;
case 322: // flex_id: "flex-id"
-#line 1312 "dhcp6_parser.yy"
+#line 1319 "dhcp6_parser.yy"
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(flex_id);
}
-#line 2390 "dhcp6_parser.cc"
+#line 2394 "dhcp6_parser.cc"
break;
case 323: // $@53: %empty
-#line 1319 "dhcp6_parser.yy"
+#line 1326 "dhcp6_parser.yy"
{
ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2402 "dhcp6_parser.cc"
+#line 2406 "dhcp6_parser.cc"
break;
case 324: // relay_supplied_options: "relay-supplied-options" $@53 ":" "[" list_content "]"
-#line 1325 "dhcp6_parser.yy"
+#line 1332 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2411 "dhcp6_parser.cc"
+#line 2415 "dhcp6_parser.cc"
break;
case 325: // $@54: %empty
-#line 1332 "dhcp6_parser.yy"
+#line 1339 "dhcp6_parser.yy"
{
ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(mt);
ctx.enter(ctx.DHCP_MULTI_THREADING);
}
-#line 2423 "dhcp6_parser.cc"
+#line 2427 "dhcp6_parser.cc"
break;
case 326: // dhcp_multi_threading: "multi-threading" $@54 ":" "{" multi_threading_params "}"
-#line 1338 "dhcp6_parser.yy"
+#line 1345 "dhcp6_parser.yy"
{
// The enable parameter is required.
ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2434 "dhcp6_parser.cc"
+#line 2438 "dhcp6_parser.cc"
break;
case 329: // multi_threading_params: multi_threading_params ","
-#line 1347 "dhcp6_parser.yy"
+#line 1354 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2442 "dhcp6_parser.cc"
+#line 2446 "dhcp6_parser.cc"
break;
case 336: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1360 "dhcp6_parser.yy"
+#line 1367 "dhcp6_parser.yy"
{
ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-multi-threading", b);
}
-#line 2452 "dhcp6_parser.cc"
+#line 2456 "dhcp6_parser.cc"
break;
case 337: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1366 "dhcp6_parser.yy"
+#line 1373 "dhcp6_parser.yy"
{
ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("thread-pool-size", prf);
}
-#line 2462 "dhcp6_parser.cc"
+#line 2466 "dhcp6_parser.cc"
break;
case 338: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1372 "dhcp6_parser.yy"
+#line 1379 "dhcp6_parser.yy"
{
ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("packet-queue-size", prf);
}
-#line 2472 "dhcp6_parser.cc"
+#line 2476 "dhcp6_parser.cc"
break;
case 339: // $@55: %empty
-#line 1378 "dhcp6_parser.yy"
+#line 1385 "dhcp6_parser.yy"
{
ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.HOOKS_LIBRARIES);
}
-#line 2484 "dhcp6_parser.cc"
+#line 2488 "dhcp6_parser.cc"
break;
case 340: // hooks_libraries: "hooks-libraries" $@55 ":" "[" hooks_libraries_list "]"
-#line 1384 "dhcp6_parser.yy"
+#line 1391 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2493 "dhcp6_parser.cc"
+#line 2497 "dhcp6_parser.cc"
break;
case 345: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list ","
-#line 1395 "dhcp6_parser.yy"
+#line 1402 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2501 "dhcp6_parser.cc"
+#line 2505 "dhcp6_parser.cc"
break;
case 346: // $@56: %empty
-#line 1400 "dhcp6_parser.yy"
+#line 1407 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2511 "dhcp6_parser.cc"
+#line 2515 "dhcp6_parser.cc"
break;
case 347: // hooks_library: "{" $@56 hooks_params "}"
-#line 1404 "dhcp6_parser.yy"
+#line 1411 "dhcp6_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2521 "dhcp6_parser.cc"
+#line 2525 "dhcp6_parser.cc"
break;
case 348: // $@57: %empty
-#line 1410 "dhcp6_parser.yy"
+#line 1417 "dhcp6_parser.yy"
{
// Parse the hooks-libraries list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2531 "dhcp6_parser.cc"
+#line 2535 "dhcp6_parser.cc"
break;
case 349: // sub_hooks_library: "{" $@57 hooks_params "}"
-#line 1414 "dhcp6_parser.yy"
+#line 1421 "dhcp6_parser.yy"
{
// The library hooks parameter is required
ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2541 "dhcp6_parser.cc"
+#line 2545 "dhcp6_parser.cc"
break;
case 352: // hooks_params: hooks_params ","
-#line 1422 "dhcp6_parser.yy"
+#line 1429 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2549 "dhcp6_parser.cc"
+#line 2553 "dhcp6_parser.cc"
break;
case 356: // $@58: %empty
-#line 1432 "dhcp6_parser.yy"
+#line 1439 "dhcp6_parser.yy"
{
ctx.unique("library", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2558 "dhcp6_parser.cc"
+#line 2562 "dhcp6_parser.cc"
break;
case 357: // library: "library" $@58 ":" "constant string"
-#line 1435 "dhcp6_parser.yy"
+#line 1442 "dhcp6_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("library", lib);
ctx.leave();
}
-#line 2568 "dhcp6_parser.cc"
+#line 2572 "dhcp6_parser.cc"
break;
case 358: // $@59: %empty
-#line 1441 "dhcp6_parser.yy"
+#line 1448 "dhcp6_parser.yy"
{
ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2577 "dhcp6_parser.cc"
+#line 2581 "dhcp6_parser.cc"
break;
case 359: // parameters: "parameters" $@59 ":" map_value
-#line 1444 "dhcp6_parser.yy"
+#line 1451 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2586 "dhcp6_parser.cc"
+#line 2590 "dhcp6_parser.cc"
break;
case 360: // $@60: %empty
-#line 1450 "dhcp6_parser.yy"
+#line 1457 "dhcp6_parser.yy"
{
ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
}
-#line 2598 "dhcp6_parser.cc"
+#line 2602 "dhcp6_parser.cc"
break;
case 361: // expired_leases_processing: "expired-leases-processing" $@60 ":" "{" expired_leases_params "}"
-#line 1456 "dhcp6_parser.yy"
+#line 1463 "dhcp6_parser.yy"
{
// No expired lease parameter is required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2608 "dhcp6_parser.cc"
+#line 2612 "dhcp6_parser.cc"
break;
case 364: // expired_leases_params: expired_leases_params ","
-#line 1464 "dhcp6_parser.yy"
+#line 1471 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2616 "dhcp6_parser.cc"
+#line 2620 "dhcp6_parser.cc"
break;
case 371: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1477 "dhcp6_parser.yy"
+#line 1484 "dhcp6_parser.yy"
{
ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reclaim-timer-wait-time", value);
}
-#line 2626 "dhcp6_parser.cc"
+#line 2630 "dhcp6_parser.cc"
break;
case 372: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1483 "dhcp6_parser.yy"
+#line 1490 "dhcp6_parser.yy"
{
ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
}
-#line 2636 "dhcp6_parser.cc"
+#line 2640 "dhcp6_parser.cc"
break;
case 373: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1489 "dhcp6_parser.yy"
+#line 1496 "dhcp6_parser.yy"
{
ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hold-reclaimed-time", value);
}
-#line 2646 "dhcp6_parser.cc"
+#line 2650 "dhcp6_parser.cc"
break;
case 374: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1495 "dhcp6_parser.yy"
+#line 1502 "dhcp6_parser.yy"
{
ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-leases", value);
}
-#line 2656 "dhcp6_parser.cc"
+#line 2660 "dhcp6_parser.cc"
break;
case 375: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1501 "dhcp6_parser.yy"
+#line 1508 "dhcp6_parser.yy"
{
ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-reclaim-time", value);
}
-#line 2666 "dhcp6_parser.cc"
+#line 2670 "dhcp6_parser.cc"
break;
case 376: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1507 "dhcp6_parser.yy"
+#line 1514 "dhcp6_parser.yy"
{
ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
}
-#line 2676 "dhcp6_parser.cc"
+#line 2680 "dhcp6_parser.cc"
break;
case 377: // $@61: %empty
-#line 1516 "dhcp6_parser.yy"
+#line 1523 "dhcp6_parser.yy"
{
ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.SUBNET6);
}
-#line 2688 "dhcp6_parser.cc"
+#line 2692 "dhcp6_parser.cc"
break;
case 378: // subnet6_list: "subnet6" $@61 ":" "[" subnet6_list_content "]"
-#line 1522 "dhcp6_parser.yy"
+#line 1529 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2697 "dhcp6_parser.cc"
+#line 2701 "dhcp6_parser.cc"
break;
case 383: // not_empty_subnet6_list: not_empty_subnet6_list ","
-#line 1536 "dhcp6_parser.yy"
+#line 1543 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2705 "dhcp6_parser.cc"
+#line 2709 "dhcp6_parser.cc"
break;
case 384: // $@62: %empty
-#line 1545 "dhcp6_parser.yy"
+#line 1552 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2715 "dhcp6_parser.cc"
+#line 2719 "dhcp6_parser.cc"
break;
case 385: // subnet6: "{" $@62 subnet6_params "}"
-#line 1549 "dhcp6_parser.yy"
+#line 1556 "dhcp6_parser.yy"
{
// Once we reached this place, the subnet parsing is now complete.
// If we want to, we can implement default values here.
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2741 "dhcp6_parser.cc"
+#line 2745 "dhcp6_parser.cc"
break;
case 386: // $@63: %empty
-#line 1571 "dhcp6_parser.yy"
+#line 1578 "dhcp6_parser.yy"
{
// Parse the subnet6 list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2751 "dhcp6_parser.cc"
+#line 2755 "dhcp6_parser.cc"
break;
case 387: // sub_subnet6: "{" $@63 subnet6_params "}"
-#line 1575 "dhcp6_parser.yy"
+#line 1582 "dhcp6_parser.yy"
{
// The subnet subnet6 parameter is required
ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2761 "dhcp6_parser.cc"
+#line 2765 "dhcp6_parser.cc"
break;
case 390: // subnet6_params: subnet6_params ","
-#line 1584 "dhcp6_parser.yy"
+#line 1591 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2769 "dhcp6_parser.cc"
+#line 2773 "dhcp6_parser.cc"
break;
case 438: // $@64: %empty
-#line 1639 "dhcp6_parser.yy"
+#line 1646 "dhcp6_parser.yy"
{
ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2778 "dhcp6_parser.cc"
+#line 2782 "dhcp6_parser.cc"
break;
case 439: // subnet: "subnet" $@64 ":" "constant string"
-#line 1642 "dhcp6_parser.yy"
+#line 1649 "dhcp6_parser.yy"
{
ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 2788 "dhcp6_parser.cc"
+#line 2792 "dhcp6_parser.cc"
break;
case 440: // $@65: %empty
-#line 1648 "dhcp6_parser.yy"
+#line 1655 "dhcp6_parser.yy"
{
ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2797 "dhcp6_parser.cc"
+#line 2801 "dhcp6_parser.cc"
break;
case 441: // interface: "interface" $@65 ":" "constant string"
-#line 1651 "dhcp6_parser.yy"
+#line 1658 "dhcp6_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 2807 "dhcp6_parser.cc"
+#line 2811 "dhcp6_parser.cc"
break;
case 442: // $@66: %empty
-#line 1657 "dhcp6_parser.yy"
+#line 1664 "dhcp6_parser.yy"
{
ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2816 "dhcp6_parser.cc"
+#line 2820 "dhcp6_parser.cc"
break;
case 443: // interface_id: "interface-id" $@66 ":" "constant string"
-#line 1660 "dhcp6_parser.yy"
+#line 1667 "dhcp6_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface-id", iface);
ctx.leave();
}
-#line 2826 "dhcp6_parser.cc"
+#line 2830 "dhcp6_parser.cc"
break;
case 444: // $@67: %empty
-#line 1666 "dhcp6_parser.yy"
+#line 1673 "dhcp6_parser.yy"
{
ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2835 "dhcp6_parser.cc"
+#line 2839 "dhcp6_parser.cc"
break;
case 445: // client_class: "client-class" $@67 ":" "constant string"
-#line 1669 "dhcp6_parser.yy"
+#line 1676 "dhcp6_parser.yy"
{
ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 2845 "dhcp6_parser.cc"
+#line 2849 "dhcp6_parser.cc"
break;
case 446: // $@68: %empty
-#line 1675 "dhcp6_parser.yy"
+#line 1682 "dhcp6_parser.yy"
{
ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2857 "dhcp6_parser.cc"
+#line 2861 "dhcp6_parser.cc"
break;
case 447: // require_client_classes: "require-client-classes" $@68 ":" list_strings
-#line 1681 "dhcp6_parser.yy"
+#line 1688 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2866 "dhcp6_parser.cc"
+#line 2870 "dhcp6_parser.cc"
break;
case 448: // reservations_global: "reservations-global" ":" "boolean"
-#line 1686 "dhcp6_parser.yy"
+#line 1693 "dhcp6_parser.yy"
{
ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-global", b);
}
-#line 2876 "dhcp6_parser.cc"
+#line 2880 "dhcp6_parser.cc"
break;
case 449: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean"
-#line 1692 "dhcp6_parser.yy"
+#line 1699 "dhcp6_parser.yy"
{
ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-in-subnet", b);
}
-#line 2886 "dhcp6_parser.cc"
+#line 2890 "dhcp6_parser.cc"
break;
case 450: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean"
-#line 1698 "dhcp6_parser.yy"
+#line 1705 "dhcp6_parser.yy"
{
ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations-out-of-pool", b);
}
-#line 2896 "dhcp6_parser.cc"
+#line 2900 "dhcp6_parser.cc"
break;
case 451: // $@69: %empty
-#line 1704 "dhcp6_parser.yy"
+#line 1711 "dhcp6_parser.yy"
{
ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 2905 "dhcp6_parser.cc"
+#line 2909 "dhcp6_parser.cc"
break;
case 452: // reservation_mode: "reservation-mode" $@69 ":" hr_mode
-#line 1707 "dhcp6_parser.yy"
+#line 1714 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 2914 "dhcp6_parser.cc"
+#line 2918 "dhcp6_parser.cc"
break;
case 453: // hr_mode: "disabled"
-#line 1712 "dhcp6_parser.yy"
+#line 1719 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2920 "dhcp6_parser.cc"
+#line 2924 "dhcp6_parser.cc"
break;
case 454: // hr_mode: "out-of-pool"
-#line 1713 "dhcp6_parser.yy"
+#line 1720 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2926 "dhcp6_parser.cc"
+#line 2930 "dhcp6_parser.cc"
break;
case 455: // hr_mode: "global"
-#line 1714 "dhcp6_parser.yy"
+#line 1721 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2932 "dhcp6_parser.cc"
+#line 2936 "dhcp6_parser.cc"
break;
case 456: // hr_mode: "all"
-#line 1715 "dhcp6_parser.yy"
+#line 1722 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2938 "dhcp6_parser.cc"
+#line 2942 "dhcp6_parser.cc"
break;
case 457: // id: "id" ":" "integer"
-#line 1718 "dhcp6_parser.yy"
+#line 1725 "dhcp6_parser.yy"
{
ctx.unique("id", ctx.loc2pos(yystack_[2].location));
ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 2948 "dhcp6_parser.cc"
+#line 2952 "dhcp6_parser.cc"
break;
case 458: // rapid_commit: "rapid-commit" ":" "boolean"
-#line 1724 "dhcp6_parser.yy"
+#line 1731 "dhcp6_parser.yy"
{
ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location));
ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rapid-commit", rc);
}
-#line 2958 "dhcp6_parser.cc"
+#line 2962 "dhcp6_parser.cc"
break;
case 459: // $@70: %empty
-#line 1732 "dhcp6_parser.yy"
+#line 1739 "dhcp6_parser.yy"
{
ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.SHARED_NETWORK);
}
-#line 2970 "dhcp6_parser.cc"
+#line 2974 "dhcp6_parser.cc"
break;
case 460: // shared_networks: "shared-networks" $@70 ":" "[" shared_networks_content "]"
-#line 1738 "dhcp6_parser.yy"
+#line 1745 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2979 "dhcp6_parser.cc"
+#line 2983 "dhcp6_parser.cc"
break;
case 465: // shared_networks_list: shared_networks_list ","
-#line 1751 "dhcp6_parser.yy"
+#line 1758 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 2987 "dhcp6_parser.cc"
+#line 2991 "dhcp6_parser.cc"
break;
case 466: // $@71: %empty
-#line 1756 "dhcp6_parser.yy"
+#line 1763 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2997 "dhcp6_parser.cc"
+#line 3001 "dhcp6_parser.cc"
break;
case 467: // shared_network: "{" $@71 shared_network_params "}"
-#line 1760 "dhcp6_parser.yy"
+#line 1767 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 3005 "dhcp6_parser.cc"
+#line 3009 "dhcp6_parser.cc"
break;
case 470: // shared_network_params: shared_network_params ","
-#line 1766 "dhcp6_parser.yy"
+#line 1773 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3013 "dhcp6_parser.cc"
+#line 3017 "dhcp6_parser.cc"
break;
case 515: // $@72: %empty
-#line 1821 "dhcp6_parser.yy"
+#line 1828 "dhcp6_parser.yy"
{
ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 3025 "dhcp6_parser.cc"
+#line 3029 "dhcp6_parser.cc"
break;
case 516: // option_def_list: "option-def" $@72 ":" "[" option_def_list_content "]"
-#line 1827 "dhcp6_parser.yy"
+#line 1834 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3034 "dhcp6_parser.cc"
+#line 3038 "dhcp6_parser.cc"
break;
case 517: // $@73: %empty
-#line 1835 "dhcp6_parser.yy"
+#line 1842 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3043 "dhcp6_parser.cc"
+#line 3047 "dhcp6_parser.cc"
break;
case 518: // sub_option_def_list: "{" $@73 option_def_list "}"
-#line 1838 "dhcp6_parser.yy"
+#line 1845 "dhcp6_parser.yy"
{
// parsing completed
}
-#line 3051 "dhcp6_parser.cc"
+#line 3055 "dhcp6_parser.cc"
break;
case 523: // not_empty_option_def_list: not_empty_option_def_list ","
-#line 1850 "dhcp6_parser.yy"
+#line 1857 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3059 "dhcp6_parser.cc"
+#line 3063 "dhcp6_parser.cc"
break;
case 524: // $@74: %empty
-#line 1857 "dhcp6_parser.yy"
+#line 1864 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3069 "dhcp6_parser.cc"
+#line 3073 "dhcp6_parser.cc"
break;
case 525: // option_def_entry: "{" $@74 option_def_params "}"
-#line 1861 "dhcp6_parser.yy"
+#line 1868 "dhcp6_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3081 "dhcp6_parser.cc"
+#line 3085 "dhcp6_parser.cc"
break;
case 526: // $@75: %empty
-#line 1872 "dhcp6_parser.yy"
+#line 1879 "dhcp6_parser.yy"
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3091 "dhcp6_parser.cc"
+#line 3095 "dhcp6_parser.cc"
break;
case 527: // sub_option_def: "{" $@75 option_def_params "}"
-#line 1876 "dhcp6_parser.yy"
+#line 1883 "dhcp6_parser.yy"
{
// The name, code and type option def parameters are required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3103 "dhcp6_parser.cc"
+#line 3107 "dhcp6_parser.cc"
break;
case 532: // not_empty_option_def_params: not_empty_option_def_params ","
-#line 1892 "dhcp6_parser.yy"
+#line 1899 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3111 "dhcp6_parser.cc"
+#line 3115 "dhcp6_parser.cc"
break;
case 544: // code: "code" ":" "integer"
-#line 1911 "dhcp6_parser.yy"
+#line 1918 "dhcp6_parser.yy"
{
ctx.unique("code", ctx.loc2pos(yystack_[2].location));
ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 3121 "dhcp6_parser.cc"
+#line 3125 "dhcp6_parser.cc"
break;
case 546: // $@76: %empty
-#line 1919 "dhcp6_parser.yy"
+#line 1926 "dhcp6_parser.yy"
{
ctx.unique("type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3130 "dhcp6_parser.cc"
+#line 3134 "dhcp6_parser.cc"
break;
case 547: // option_def_type: "type" $@76 ":" "constant string"
-#line 1922 "dhcp6_parser.yy"
+#line 1929 "dhcp6_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 3140 "dhcp6_parser.cc"
+#line 3144 "dhcp6_parser.cc"
break;
case 548: // $@77: %empty
-#line 1928 "dhcp6_parser.yy"
+#line 1935 "dhcp6_parser.yy"
{
ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3149 "dhcp6_parser.cc"
+#line 3153 "dhcp6_parser.cc"
break;
case 549: // option_def_record_types: "record-types" $@77 ":" "constant string"
-#line 1931 "dhcp6_parser.yy"
+#line 1938 "dhcp6_parser.yy"
{
ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 3159 "dhcp6_parser.cc"
+#line 3163 "dhcp6_parser.cc"
break;
case 550: // $@78: %empty
-#line 1937 "dhcp6_parser.yy"
+#line 1944 "dhcp6_parser.yy"
{
ctx.unique("space", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3168 "dhcp6_parser.cc"
+#line 3172 "dhcp6_parser.cc"
break;
case 551: // space: "space" $@78 ":" "constant string"
-#line 1940 "dhcp6_parser.yy"
+#line 1947 "dhcp6_parser.yy"
{
ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 3178 "dhcp6_parser.cc"
+#line 3182 "dhcp6_parser.cc"
break;
case 553: // $@79: %empty
-#line 1948 "dhcp6_parser.yy"
+#line 1955 "dhcp6_parser.yy"
{
ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3187 "dhcp6_parser.cc"
+#line 3191 "dhcp6_parser.cc"
break;
case 554: // option_def_encapsulate: "encapsulate" $@79 ":" "constant string"
-#line 1951 "dhcp6_parser.yy"
+#line 1958 "dhcp6_parser.yy"
{
ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 3197 "dhcp6_parser.cc"
+#line 3201 "dhcp6_parser.cc"
break;
case 555: // option_def_array: "array" ":" "boolean"
-#line 1957 "dhcp6_parser.yy"
+#line 1964 "dhcp6_parser.yy"
{
ctx.unique("array", ctx.loc2pos(yystack_[2].location));
ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 3207 "dhcp6_parser.cc"
+#line 3211 "dhcp6_parser.cc"
break;
case 556: // $@80: %empty
-#line 1967 "dhcp6_parser.yy"
+#line 1974 "dhcp6_parser.yy"
{
ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 3219 "dhcp6_parser.cc"
+#line 3223 "dhcp6_parser.cc"
break;
case 557: // option_data_list: "option-data" $@80 ":" "[" option_data_list_content "]"
-#line 1973 "dhcp6_parser.yy"
+#line 1980 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3228 "dhcp6_parser.cc"
+#line 3232 "dhcp6_parser.cc"
break;
case 562: // not_empty_option_data_list: not_empty_option_data_list ","
-#line 1988 "dhcp6_parser.yy"
+#line 1995 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3236 "dhcp6_parser.cc"
+#line 3240 "dhcp6_parser.cc"
break;
case 563: // $@81: %empty
-#line 1995 "dhcp6_parser.yy"
+#line 2002 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3246 "dhcp6_parser.cc"
+#line 3250 "dhcp6_parser.cc"
break;
case 564: // option_data_entry: "{" $@81 option_data_params "}"
-#line 1999 "dhcp6_parser.yy"
+#line 2006 "dhcp6_parser.yy"
{
/// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 3255 "dhcp6_parser.cc"
+#line 3259 "dhcp6_parser.cc"
break;
case 565: // $@82: %empty
-#line 2007 "dhcp6_parser.yy"
+#line 2014 "dhcp6_parser.yy"
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3265 "dhcp6_parser.cc"
+#line 3269 "dhcp6_parser.cc"
break;
case 566: // sub_option_data: "{" $@82 option_data_params "}"
-#line 2011 "dhcp6_parser.yy"
+#line 2018 "dhcp6_parser.yy"
{
/// @todo: the code or name parameters are required.
// parsing completed
}
-#line 3274 "dhcp6_parser.cc"
+#line 3278 "dhcp6_parser.cc"
break;
case 571: // not_empty_option_data_params: not_empty_option_data_params ","
-#line 2027 "dhcp6_parser.yy"
+#line 2034 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3282 "dhcp6_parser.cc"
+#line 3286 "dhcp6_parser.cc"
break;
case 583: // $@83: %empty
-#line 2048 "dhcp6_parser.yy"
+#line 2055 "dhcp6_parser.yy"
{
ctx.unique("data", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3291 "dhcp6_parser.cc"
+#line 3295 "dhcp6_parser.cc"
break;
case 584: // option_data_data: "data" $@83 ":" "constant string"
-#line 2051 "dhcp6_parser.yy"
+#line 2058 "dhcp6_parser.yy"
{
ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 3301 "dhcp6_parser.cc"
+#line 3305 "dhcp6_parser.cc"
break;
case 587: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 2061 "dhcp6_parser.yy"
+#line 2068 "dhcp6_parser.yy"
{
ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", csv);
}
-#line 3311 "dhcp6_parser.cc"
+#line 3315 "dhcp6_parser.cc"
break;
case 588: // option_data_always_send: "always-send" ":" "boolean"
-#line 2067 "dhcp6_parser.yy"
+#line 2074 "dhcp6_parser.yy"
{
ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 3321 "dhcp6_parser.cc"
+#line 3325 "dhcp6_parser.cc"
break;
case 589: // option_data_never_send: "never-send" ":" "boolean"
-#line 2073 "dhcp6_parser.yy"
+#line 2080 "dhcp6_parser.yy"
{
ctx.unique("never-send", ctx.loc2pos(yystack_[2].location));
ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("never-send", cancel);
}
-#line 3331 "dhcp6_parser.cc"
+#line 3335 "dhcp6_parser.cc"
break;
case 590: // $@84: %empty
-#line 2082 "dhcp6_parser.yy"
+#line 2089 "dhcp6_parser.yy"
{
ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 3343 "dhcp6_parser.cc"
+#line 3347 "dhcp6_parser.cc"
break;
case 591: // pools_list: "pools" $@84 ":" "[" pools_list_content "]"
-#line 2088 "dhcp6_parser.yy"
+#line 2095 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3352 "dhcp6_parser.cc"
+#line 3356 "dhcp6_parser.cc"
break;
case 596: // not_empty_pools_list: not_empty_pools_list ","
-#line 2101 "dhcp6_parser.yy"
+#line 2108 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3360 "dhcp6_parser.cc"
+#line 3364 "dhcp6_parser.cc"
break;
case 597: // $@85: %empty
-#line 2106 "dhcp6_parser.yy"
+#line 2113 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3370 "dhcp6_parser.cc"
+#line 3374 "dhcp6_parser.cc"
break;
case 598: // pool_list_entry: "{" $@85 pool_params "}"
-#line 2110 "dhcp6_parser.yy"
+#line 2117 "dhcp6_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3380 "dhcp6_parser.cc"
+#line 3384 "dhcp6_parser.cc"
break;
case 599: // $@86: %empty
-#line 2116 "dhcp6_parser.yy"
+#line 2123 "dhcp6_parser.yy"
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3390 "dhcp6_parser.cc"
+#line 3394 "dhcp6_parser.cc"
break;
case 600: // sub_pool6: "{" $@86 pool_params "}"
-#line 2120 "dhcp6_parser.yy"
+#line 2127 "dhcp6_parser.yy"
{
// The pool parameter is required.
ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3400 "dhcp6_parser.cc"
+#line 3404 "dhcp6_parser.cc"
break;
case 603: // pool_params: pool_params ","
-#line 2128 "dhcp6_parser.yy"
+#line 2135 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3408 "dhcp6_parser.cc"
+#line 3412 "dhcp6_parser.cc"
break;
case 612: // $@87: %empty
-#line 2143 "dhcp6_parser.yy"
+#line 2150 "dhcp6_parser.yy"
{
ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3417 "dhcp6_parser.cc"
+#line 3421 "dhcp6_parser.cc"
break;
case 613: // pool_entry: "pool" $@87 ":" "constant string"
-#line 2146 "dhcp6_parser.yy"
+#line 2153 "dhcp6_parser.yy"
{
ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 3427 "dhcp6_parser.cc"
+#line 3431 "dhcp6_parser.cc"
break;
case 614: // pool_id: "pool-id" ":" "integer"
-#line 2152 "dhcp6_parser.yy"
+#line 2159 "dhcp6_parser.yy"
{
ctx.unique("pool-id", ctx.loc2pos(yystack_[2].location));
ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool-id", id);
}
-#line 3437 "dhcp6_parser.cc"
+#line 3441 "dhcp6_parser.cc"
break;
case 615: // $@88: %empty
-#line 2158 "dhcp6_parser.yy"
+#line 2165 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3445 "dhcp6_parser.cc"
+#line 3449 "dhcp6_parser.cc"
break;
case 616: // user_context: "user-context" $@88 ":" map_value
-#line 2160 "dhcp6_parser.yy"
+#line 2167 "dhcp6_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
parent->set("user-context", user_context);
ctx.leave();
}
-#line 3472 "dhcp6_parser.cc"
+#line 3476 "dhcp6_parser.cc"
break;
case 617: // $@89: %empty
-#line 2183 "dhcp6_parser.yy"
+#line 2190 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3480 "dhcp6_parser.cc"
+#line 3484 "dhcp6_parser.cc"
break;
case 618: // comment: "comment" $@89 ":" "constant string"
-#line 2185 "dhcp6_parser.yy"
+#line 2192 "dhcp6_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
parent->set("user-context", user_context);
ctx.leave();
}
-#line 3509 "dhcp6_parser.cc"
+#line 3513 "dhcp6_parser.cc"
break;
case 619: // $@90: %empty
-#line 2213 "dhcp6_parser.yy"
+#line 2220 "dhcp6_parser.yy"
{
ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.PD_POOLS);
}
-#line 3521 "dhcp6_parser.cc"
+#line 3525 "dhcp6_parser.cc"
break;
case 620: // pd_pools_list: "pd-pools" $@90 ":" "[" pd_pools_list_content "]"
-#line 2219 "dhcp6_parser.yy"
+#line 2226 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3530 "dhcp6_parser.cc"
+#line 3534 "dhcp6_parser.cc"
break;
case 625: // not_empty_pd_pools_list: not_empty_pd_pools_list ","
-#line 2232 "dhcp6_parser.yy"
+#line 2239 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3538 "dhcp6_parser.cc"
+#line 3542 "dhcp6_parser.cc"
break;
case 626: // $@91: %empty
-#line 2237 "dhcp6_parser.yy"
+#line 2244 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3548 "dhcp6_parser.cc"
+#line 3552 "dhcp6_parser.cc"
break;
case 627: // pd_pool_entry: "{" $@91 pd_pool_params "}"
-#line 2241 "dhcp6_parser.yy"
+#line 2248 "dhcp6_parser.yy"
{
// The prefix, prefix len and delegated len parameters are required.
ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3560 "dhcp6_parser.cc"
+#line 3564 "dhcp6_parser.cc"
break;
case 628: // $@92: %empty
-#line 2249 "dhcp6_parser.yy"
+#line 2256 "dhcp6_parser.yy"
{
// Parse the pd-pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3570 "dhcp6_parser.cc"
+#line 3574 "dhcp6_parser.cc"
break;
case 629: // sub_pd_pool: "{" $@92 pd_pool_params "}"
-#line 2253 "dhcp6_parser.yy"
+#line 2260 "dhcp6_parser.yy"
{
// The prefix, prefix len and delegated len parameters are required.
ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 3582 "dhcp6_parser.cc"
+#line 3586 "dhcp6_parser.cc"
break;
case 632: // pd_pool_params: pd_pool_params ","
-#line 2263 "dhcp6_parser.yy"
+#line 2270 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3590 "dhcp6_parser.cc"
+#line 3594 "dhcp6_parser.cc"
break;
case 644: // $@93: %empty
-#line 2281 "dhcp6_parser.yy"
+#line 2288 "dhcp6_parser.yy"
{
ctx.unique("prefix", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3599 "dhcp6_parser.cc"
+#line 3603 "dhcp6_parser.cc"
break;
case 645: // pd_prefix: "prefix" $@93 ":" "constant string"
-#line 2284 "dhcp6_parser.yy"
+#line 2291 "dhcp6_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix", prf);
ctx.leave();
}
-#line 3609 "dhcp6_parser.cc"
+#line 3613 "dhcp6_parser.cc"
break;
case 646: // pd_prefix_len: "prefix-len" ":" "integer"
-#line 2290 "dhcp6_parser.yy"
+#line 2297 "dhcp6_parser.yy"
{
ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location));
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix-len", prf);
}
-#line 3619 "dhcp6_parser.cc"
+#line 3623 "dhcp6_parser.cc"
break;
case 647: // $@94: %empty
-#line 2296 "dhcp6_parser.yy"
+#line 2303 "dhcp6_parser.yy"
{
ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3628 "dhcp6_parser.cc"
+#line 3632 "dhcp6_parser.cc"
break;
case 648: // excluded_prefix: "excluded-prefix" $@94 ":" "constant string"
-#line 2299 "dhcp6_parser.yy"
+#line 2306 "dhcp6_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix", prf);
ctx.leave();
}
-#line 3638 "dhcp6_parser.cc"
+#line 3642 "dhcp6_parser.cc"
break;
case 649: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
-#line 2305 "dhcp6_parser.yy"
+#line 2312 "dhcp6_parser.yy"
{
ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location));
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix-len", prf);
}
-#line 3648 "dhcp6_parser.cc"
+#line 3652 "dhcp6_parser.cc"
break;
case 650: // pd_delegated_len: "delegated-len" ":" "integer"
-#line 2311 "dhcp6_parser.yy"
+#line 2318 "dhcp6_parser.yy"
{
ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location));
ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("delegated-len", deleg);
}
-#line 3658 "dhcp6_parser.cc"
+#line 3662 "dhcp6_parser.cc"
break;
case 651: // $@95: %empty
-#line 2320 "dhcp6_parser.yy"
+#line 2327 "dhcp6_parser.yy"
{
ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 3670 "dhcp6_parser.cc"
+#line 3674 "dhcp6_parser.cc"
break;
case 652: // reservations: "reservations" $@95 ":" "[" reservations_list "]"
-#line 2326 "dhcp6_parser.yy"
+#line 2333 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3679 "dhcp6_parser.cc"
+#line 3683 "dhcp6_parser.cc"
break;
case 657: // not_empty_reservations_list: not_empty_reservations_list ","
-#line 2337 "dhcp6_parser.yy"
+#line 2344 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3687 "dhcp6_parser.cc"
+#line 3691 "dhcp6_parser.cc"
break;
case 658: // $@96: %empty
-#line 2342 "dhcp6_parser.yy"
+#line 2349 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3697 "dhcp6_parser.cc"
+#line 3701 "dhcp6_parser.cc"
break;
case 659: // reservation: "{" $@96 reservation_params "}"
-#line 2346 "dhcp6_parser.yy"
+#line 2353 "dhcp6_parser.yy"
{
/// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 3706 "dhcp6_parser.cc"
+#line 3710 "dhcp6_parser.cc"
break;
case 660: // $@97: %empty
-#line 2351 "dhcp6_parser.yy"
+#line 2358 "dhcp6_parser.yy"
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 3716 "dhcp6_parser.cc"
+#line 3720 "dhcp6_parser.cc"
break;
case 661: // sub_reservation: "{" $@97 reservation_params "}"
-#line 2355 "dhcp6_parser.yy"
+#line 2362 "dhcp6_parser.yy"
{
/// @todo: an identifier parameter is required.
// parsing completed
}
-#line 3725 "dhcp6_parser.cc"
+#line 3729 "dhcp6_parser.cc"
break;
case 666: // not_empty_reservation_params: not_empty_reservation_params ","
-#line 2366 "dhcp6_parser.yy"
+#line 2373 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3733 "dhcp6_parser.cc"
+#line 3737 "dhcp6_parser.cc"
break;
case 678: // $@98: %empty
-#line 2385 "dhcp6_parser.yy"
+#line 2392 "dhcp6_parser.yy"
{
ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3745 "dhcp6_parser.cc"
+#line 3749 "dhcp6_parser.cc"
break;
case 679: // ip_addresses: "ip-addresses" $@98 ":" list_strings
-#line 2391 "dhcp6_parser.yy"
+#line 2398 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3754 "dhcp6_parser.cc"
+#line 3758 "dhcp6_parser.cc"
break;
case 680: // $@99: %empty
-#line 2396 "dhcp6_parser.yy"
+#line 2403 "dhcp6_parser.yy"
{
ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3766 "dhcp6_parser.cc"
+#line 3770 "dhcp6_parser.cc"
break;
case 681: // prefixes: "prefixes" $@99 ":" list_strings
-#line 2402 "dhcp6_parser.yy"
+#line 2409 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3775 "dhcp6_parser.cc"
+#line 3779 "dhcp6_parser.cc"
break;
case 682: // $@100: %empty
-#line 2407 "dhcp6_parser.yy"
+#line 2414 "dhcp6_parser.yy"
{
ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3784 "dhcp6_parser.cc"
+#line 3788 "dhcp6_parser.cc"
break;
case 683: // duid: "duid" $@100 ":" "constant string"
-#line 2410 "dhcp6_parser.yy"
+#line 2417 "dhcp6_parser.yy"
{
ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 3794 "dhcp6_parser.cc"
+#line 3798 "dhcp6_parser.cc"
break;
case 684: // $@101: %empty
-#line 2416 "dhcp6_parser.yy"
+#line 2423 "dhcp6_parser.yy"
{
ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3803 "dhcp6_parser.cc"
+#line 3807 "dhcp6_parser.cc"
break;
case 685: // hw_address: "hw-address" $@101 ":" "constant string"
-#line 2419 "dhcp6_parser.yy"
+#line 2426 "dhcp6_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 3813 "dhcp6_parser.cc"
+#line 3817 "dhcp6_parser.cc"
break;
case 686: // $@102: %empty
-#line 2425 "dhcp6_parser.yy"
+#line 2432 "dhcp6_parser.yy"
{
ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3822 "dhcp6_parser.cc"
+#line 3826 "dhcp6_parser.cc"
break;
case 687: // hostname: "hostname" $@102 ":" "constant string"
-#line 2428 "dhcp6_parser.yy"
+#line 2435 "dhcp6_parser.yy"
{
ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 3832 "dhcp6_parser.cc"
+#line 3836 "dhcp6_parser.cc"
break;
case 688: // $@103: %empty
-#line 2434 "dhcp6_parser.yy"
+#line 2441 "dhcp6_parser.yy"
{
ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3841 "dhcp6_parser.cc"
+#line 3845 "dhcp6_parser.cc"
break;
case 689: // flex_id_value: "flex-id" $@103 ":" "constant string"
-#line 2437 "dhcp6_parser.yy"
+#line 2444 "dhcp6_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 3851 "dhcp6_parser.cc"
+#line 3855 "dhcp6_parser.cc"
break;
case 690: // $@104: %empty
-#line 2443 "dhcp6_parser.yy"
+#line 2450 "dhcp6_parser.yy"
{
ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3863 "dhcp6_parser.cc"
+#line 3867 "dhcp6_parser.cc"
break;
case 691: // reservation_client_classes: "client-classes" $@104 ":" list_strings
-#line 2449 "dhcp6_parser.yy"
+#line 2456 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3872 "dhcp6_parser.cc"
+#line 3876 "dhcp6_parser.cc"
break;
case 692: // $@105: %empty
-#line 2457 "dhcp6_parser.yy"
+#line 2464 "dhcp6_parser.yy"
{
ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 3884 "dhcp6_parser.cc"
+#line 3888 "dhcp6_parser.cc"
break;
case 693: // relay: "relay" $@105 ":" "{" relay_map "}"
-#line 2463 "dhcp6_parser.yy"
+#line 2470 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3893 "dhcp6_parser.cc"
+#line 3897 "dhcp6_parser.cc"
break;
case 696: // $@106: %empty
-#line 2472 "dhcp6_parser.yy"
+#line 2479 "dhcp6_parser.yy"
{
ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3902 "dhcp6_parser.cc"
+#line 3906 "dhcp6_parser.cc"
break;
case 697: // ip_address: "ip-address" $@106 ":" "constant string"
-#line 2475 "dhcp6_parser.yy"
+#line 2482 "dhcp6_parser.yy"
{
ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 3912 "dhcp6_parser.cc"
+#line 3916 "dhcp6_parser.cc"
break;
case 698: // $@107: %empty
-#line 2484 "dhcp6_parser.yy"
+#line 2491 "dhcp6_parser.yy"
{
ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 3924 "dhcp6_parser.cc"
+#line 3928 "dhcp6_parser.cc"
break;
case 699: // client_classes: "client-classes" $@107 ":" "[" client_classes_list "]"
-#line 2490 "dhcp6_parser.yy"
+#line 2497 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3933 "dhcp6_parser.cc"
+#line 3937 "dhcp6_parser.cc"
break;
case 702: // client_classes_list: client_classes_list ","
-#line 2497 "dhcp6_parser.yy"
+#line 2504 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3941 "dhcp6_parser.cc"
+#line 3945 "dhcp6_parser.cc"
break;
case 703: // $@108: %empty
-#line 2502 "dhcp6_parser.yy"
+#line 2509 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3951 "dhcp6_parser.cc"
+#line 3955 "dhcp6_parser.cc"
break;
case 704: // client_class_entry: "{" $@108 client_class_params "}"
-#line 2506 "dhcp6_parser.yy"
+#line 2513 "dhcp6_parser.yy"
{
// The name client class parameter is required.
ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 3961 "dhcp6_parser.cc"
+#line 3965 "dhcp6_parser.cc"
break;
case 709: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2518 "dhcp6_parser.yy"
+#line 2525 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 3969 "dhcp6_parser.cc"
+#line 3973 "dhcp6_parser.cc"
break;
case 725: // $@109: %empty
-#line 2541 "dhcp6_parser.yy"
+#line 2548 "dhcp6_parser.yy"
{
ctx.unique("test", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3978 "dhcp6_parser.cc"
+#line 3982 "dhcp6_parser.cc"
break;
case 726: // client_class_test: "test" $@109 ":" "constant string"
-#line 2544 "dhcp6_parser.yy"
+#line 2551 "dhcp6_parser.yy"
{
ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 3988 "dhcp6_parser.cc"
+#line 3992 "dhcp6_parser.cc"
break;
case 727: // $@110: %empty
-#line 2550 "dhcp6_parser.yy"
+#line 2557 "dhcp6_parser.yy"
{
ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3997 "dhcp6_parser.cc"
+#line 4001 "dhcp6_parser.cc"
break;
case 728: // client_class_template_test: "template-test" $@110 ":" "constant string"
-#line 2553 "dhcp6_parser.yy"
+#line 2560 "dhcp6_parser.yy"
{
ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("template-test", template_test);
ctx.leave();
}
-#line 4007 "dhcp6_parser.cc"
+#line 4011 "dhcp6_parser.cc"
break;
case 729: // only_if_required: "only-if-required" ":" "boolean"
-#line 2559 "dhcp6_parser.yy"
+#line 2566 "dhcp6_parser.yy"
{
ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("only-if-required", b);
}
-#line 4017 "dhcp6_parser.cc"
+#line 4021 "dhcp6_parser.cc"
break;
case 730: // $@111: %empty
-#line 2568 "dhcp6_parser.yy"
+#line 2575 "dhcp6_parser.yy"
{
ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER_ID);
}
-#line 4029 "dhcp6_parser.cc"
+#line 4033 "dhcp6_parser.cc"
break;
case 731: // server_id: "server-id" $@111 ":" "{" server_id_params "}"
-#line 2574 "dhcp6_parser.yy"
+#line 2581 "dhcp6_parser.yy"
{
// The type parameter is required.
ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4040 "dhcp6_parser.cc"
+#line 4044 "dhcp6_parser.cc"
break;
case 734: // server_id_params: server_id_params ","
-#line 2583 "dhcp6_parser.yy"
+#line 2590 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4048 "dhcp6_parser.cc"
+#line 4052 "dhcp6_parser.cc"
break;
case 744: // $@112: %empty
-#line 2599 "dhcp6_parser.yy"
+#line 2606 "dhcp6_parser.yy"
{
ctx.unique("type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.DUID_TYPE);
}
-#line 4057 "dhcp6_parser.cc"
+#line 4061 "dhcp6_parser.cc"
break;
case 745: // server_id_type: "type" $@112 ":" duid_type
-#line 2602 "dhcp6_parser.yy"
+#line 2609 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4066 "dhcp6_parser.cc"
+#line 4070 "dhcp6_parser.cc"
break;
case 746: // duid_type: "LLT"
-#line 2607 "dhcp6_parser.yy"
+#line 2614 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 4072 "dhcp6_parser.cc"
+#line 4076 "dhcp6_parser.cc"
break;
case 747: // duid_type: "EN"
-#line 2608 "dhcp6_parser.yy"
+#line 2615 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 4078 "dhcp6_parser.cc"
+#line 4082 "dhcp6_parser.cc"
break;
case 748: // duid_type: "LL"
-#line 2609 "dhcp6_parser.yy"
+#line 2616 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 4084 "dhcp6_parser.cc"
+#line 4088 "dhcp6_parser.cc"
break;
case 749: // htype: "htype" ":" "integer"
-#line 2612 "dhcp6_parser.yy"
+#line 2619 "dhcp6_parser.yy"
{
ctx.unique("htype", ctx.loc2pos(yystack_[2].location));
ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("htype", htype);
}
-#line 4094 "dhcp6_parser.cc"
+#line 4098 "dhcp6_parser.cc"
break;
case 750: // $@113: %empty
-#line 2618 "dhcp6_parser.yy"
+#line 2625 "dhcp6_parser.yy"
{
ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4103 "dhcp6_parser.cc"
+#line 4107 "dhcp6_parser.cc"
break;
case 751: // identifier: "identifier" $@113 ":" "constant string"
-#line 2621 "dhcp6_parser.yy"
+#line 2628 "dhcp6_parser.yy"
{
ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("identifier", id);
ctx.leave();
}
-#line 4113 "dhcp6_parser.cc"
+#line 4117 "dhcp6_parser.cc"
break;
case 752: // time: "time" ":" "integer"
-#line 2627 "dhcp6_parser.yy"
+#line 2634 "dhcp6_parser.yy"
{
ctx.unique("time", ctx.loc2pos(yystack_[2].location));
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("time", time);
}
-#line 4123 "dhcp6_parser.cc"
+#line 4127 "dhcp6_parser.cc"
break;
case 753: // enterprise_id: "enterprise-id" ":" "integer"
-#line 2633 "dhcp6_parser.yy"
+#line 2640 "dhcp6_parser.yy"
{
ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location));
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enterprise-id", time);
}
-#line 4133 "dhcp6_parser.cc"
+#line 4137 "dhcp6_parser.cc"
break;
case 754: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2641 "dhcp6_parser.yy"
+#line 2648 "dhcp6_parser.yy"
{
ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 4143 "dhcp6_parser.cc"
+#line 4147 "dhcp6_parser.cc"
break;
case 755: // $@114: %empty
-#line 2649 "dhcp6_parser.yy"
+#line 2656 "dhcp6_parser.yy"
{
ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 4155 "dhcp6_parser.cc"
+#line 4159 "dhcp6_parser.cc"
break;
case 756: // control_socket: "control-socket" $@114 ":" "{" control_socket_params "}"
-#line 2655 "dhcp6_parser.yy"
+#line 2662 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4164 "dhcp6_parser.cc"
+#line 4168 "dhcp6_parser.cc"
break;
case 759: // control_socket_params: control_socket_params ","
-#line 2662 "dhcp6_parser.yy"
+#line 2669 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4172 "dhcp6_parser.cc"
+#line 4176 "dhcp6_parser.cc"
break;
case 765: // $@115: %empty
-#line 2674 "dhcp6_parser.yy"
+#line 2681 "dhcp6_parser.yy"
{
ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4181 "dhcp6_parser.cc"
+#line 4185 "dhcp6_parser.cc"
break;
case 766: // socket_type: "socket-type" $@115 ":" "constant string"
-#line 2677 "dhcp6_parser.yy"
+#line 2684 "dhcp6_parser.yy"
{
ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 4191 "dhcp6_parser.cc"
+#line 4195 "dhcp6_parser.cc"
break;
case 767: // $@116: %empty
-#line 2683 "dhcp6_parser.yy"
+#line 2690 "dhcp6_parser.yy"
{
ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4200 "dhcp6_parser.cc"
+#line 4204 "dhcp6_parser.cc"
break;
case 768: // socket_name: "socket-name" $@116 ":" "constant string"
-#line 2686 "dhcp6_parser.yy"
+#line 2693 "dhcp6_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 4210 "dhcp6_parser.cc"
+#line 4214 "dhcp6_parser.cc"
break;
case 769: // $@117: %empty
-#line 2695 "dhcp6_parser.yy"
+#line 2702 "dhcp6_parser.yy"
{
ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(qc);
ctx.enter(ctx.DHCP_QUEUE_CONTROL);
}
-#line 4222 "dhcp6_parser.cc"
+#line 4226 "dhcp6_parser.cc"
break;
case 770: // dhcp_queue_control: "dhcp-queue-control" $@117 ":" "{" queue_control_params "}"
-#line 2701 "dhcp6_parser.yy"
+#line 2708 "dhcp6_parser.yy"
{
// The enable queue parameter is required.
ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4233 "dhcp6_parser.cc"
+#line 4237 "dhcp6_parser.cc"
break;
case 773: // queue_control_params: queue_control_params ","
-#line 2710 "dhcp6_parser.yy"
+#line 2717 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4241 "dhcp6_parser.cc"
+#line 4245 "dhcp6_parser.cc"
break;
case 780: // enable_queue: "enable-queue" ":" "boolean"
-#line 2723 "dhcp6_parser.yy"
+#line 2730 "dhcp6_parser.yy"
{
ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-queue", b);
}
-#line 4251 "dhcp6_parser.cc"
+#line 4255 "dhcp6_parser.cc"
break;
case 781: // $@118: %empty
-#line 2729 "dhcp6_parser.yy"
+#line 2736 "dhcp6_parser.yy"
{
ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4260 "dhcp6_parser.cc"
+#line 4264 "dhcp6_parser.cc"
break;
case 782: // queue_type: "queue-type" $@118 ":" "constant string"
-#line 2732 "dhcp6_parser.yy"
+#line 2739 "dhcp6_parser.yy"
{
ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("queue-type", qt);
ctx.leave();
}
-#line 4270 "dhcp6_parser.cc"
+#line 4274 "dhcp6_parser.cc"
break;
case 783: // capacity: "capacity" ":" "integer"
-#line 2738 "dhcp6_parser.yy"
+#line 2745 "dhcp6_parser.yy"
{
ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("capacity", c);
}
-#line 4280 "dhcp6_parser.cc"
+#line 4284 "dhcp6_parser.cc"
break;
case 784: // $@119: %empty
-#line 2744 "dhcp6_parser.yy"
+#line 2751 "dhcp6_parser.yy"
{
ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4289 "dhcp6_parser.cc"
+#line 4293 "dhcp6_parser.cc"
break;
case 785: // arbitrary_map_entry: "constant string" $@119 ":" value
-#line 2747 "dhcp6_parser.yy"
+#line 2754 "dhcp6_parser.yy"
{
ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4298 "dhcp6_parser.cc"
+#line 4302 "dhcp6_parser.cc"
break;
case 786: // $@120: %empty
-#line 2754 "dhcp6_parser.yy"
+#line 2761 "dhcp6_parser.yy"
{
ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 4310 "dhcp6_parser.cc"
+#line 4314 "dhcp6_parser.cc"
break;
case 787: // dhcp_ddns: "dhcp-ddns" $@120 ":" "{" dhcp_ddns_params "}"
-#line 2760 "dhcp6_parser.yy"
+#line 2767 "dhcp6_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4321 "dhcp6_parser.cc"
+#line 4325 "dhcp6_parser.cc"
break;
case 788: // $@121: %empty
-#line 2767 "dhcp6_parser.yy"
+#line 2774 "dhcp6_parser.yy"
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 4331 "dhcp6_parser.cc"
+#line 4335 "dhcp6_parser.cc"
break;
case 789: // sub_dhcp_ddns: "{" $@121 dhcp_ddns_params "}"
-#line 2771 "dhcp6_parser.yy"
+#line 2778 "dhcp6_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 4341 "dhcp6_parser.cc"
+#line 4345 "dhcp6_parser.cc"
break;
case 792: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 2779 "dhcp6_parser.yy"
+#line 2786 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4349 "dhcp6_parser.cc"
+#line 4353 "dhcp6_parser.cc"
break;
case 811: // enable_updates: "enable-updates" ":" "boolean"
-#line 2804 "dhcp6_parser.yy"
+#line 2811 "dhcp6_parser.yy"
{
ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 4359 "dhcp6_parser.cc"
+#line 4363 "dhcp6_parser.cc"
break;
case 812: // $@122: %empty
-#line 2811 "dhcp6_parser.yy"
+#line 2818 "dhcp6_parser.yy"
{
ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4368 "dhcp6_parser.cc"
+#line 4372 "dhcp6_parser.cc"
break;
case 813: // dep_qualifying_suffix: "qualifying-suffix" $@122 ":" "constant string"
-#line 2814 "dhcp6_parser.yy"
+#line 2821 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
ctx.leave();
}
-#line 4378 "dhcp6_parser.cc"
+#line 4382 "dhcp6_parser.cc"
break;
case 814: // $@123: %empty
-#line 2820 "dhcp6_parser.yy"
+#line 2827 "dhcp6_parser.yy"
{
ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4387 "dhcp6_parser.cc"
+#line 4391 "dhcp6_parser.cc"
break;
case 815: // server_ip: "server-ip" $@123 ":" "constant string"
-#line 2823 "dhcp6_parser.yy"
+#line 2830 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
ctx.leave();
}
-#line 4397 "dhcp6_parser.cc"
+#line 4401 "dhcp6_parser.cc"
break;
case 816: // server_port: "server-port" ":" "integer"
-#line 2829 "dhcp6_parser.yy"
+#line 2836 "dhcp6_parser.yy"
{
ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 4407 "dhcp6_parser.cc"
+#line 4411 "dhcp6_parser.cc"
break;
case 817: // $@124: %empty
-#line 2835 "dhcp6_parser.yy"
+#line 2842 "dhcp6_parser.yy"
{
ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4416 "dhcp6_parser.cc"
+#line 4420 "dhcp6_parser.cc"
break;
case 818: // sender_ip: "sender-ip" $@124 ":" "constant string"
-#line 2838 "dhcp6_parser.yy"
+#line 2845 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
ctx.leave();
}
-#line 4426 "dhcp6_parser.cc"
+#line 4430 "dhcp6_parser.cc"
break;
case 819: // sender_port: "sender-port" ":" "integer"
-#line 2844 "dhcp6_parser.yy"
+#line 2851 "dhcp6_parser.yy"
{
ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 4436 "dhcp6_parser.cc"
+#line 4440 "dhcp6_parser.cc"
break;
case 820: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2850 "dhcp6_parser.yy"
+#line 2857 "dhcp6_parser.yy"
{
ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 4446 "dhcp6_parser.cc"
+#line 4450 "dhcp6_parser.cc"
break;
case 821: // $@125: %empty
-#line 2856 "dhcp6_parser.yy"
+#line 2863 "dhcp6_parser.yy"
{
ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 4455 "dhcp6_parser.cc"
+#line 4459 "dhcp6_parser.cc"
break;
case 822: // ncr_protocol: "ncr-protocol" $@125 ":" ncr_protocol_value
-#line 2859 "dhcp6_parser.yy"
+#line 2866 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4464 "dhcp6_parser.cc"
+#line 4468 "dhcp6_parser.cc"
break;
case 823: // ncr_protocol_value: "UDP"
-#line 2865 "dhcp6_parser.yy"
+#line 2872 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 4470 "dhcp6_parser.cc"
+#line 4474 "dhcp6_parser.cc"
break;
case 824: // ncr_protocol_value: "TCP"
-#line 2866 "dhcp6_parser.yy"
+#line 2873 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 4476 "dhcp6_parser.cc"
+#line 4480 "dhcp6_parser.cc"
break;
case 825: // $@126: %empty
-#line 2869 "dhcp6_parser.yy"
+#line 2876 "dhcp6_parser.yy"
{
ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NCR_FORMAT);
}
-#line 4485 "dhcp6_parser.cc"
+#line 4489 "dhcp6_parser.cc"
break;
case 826: // ncr_format: "ncr-format" $@126 ":" "JSON"
-#line 2872 "dhcp6_parser.yy"
+#line 2879 "dhcp6_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 4495 "dhcp6_parser.cc"
+#line 4499 "dhcp6_parser.cc"
break;
case 827: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2879 "dhcp6_parser.yy"
+#line 2886 "dhcp6_parser.yy"
{
ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 4505 "dhcp6_parser.cc"
+#line 4509 "dhcp6_parser.cc"
break;
case 828: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2886 "dhcp6_parser.yy"
+#line 2893 "dhcp6_parser.yy"
{
ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 4515 "dhcp6_parser.cc"
+#line 4519 "dhcp6_parser.cc"
break;
case 829: // $@127: %empty
-#line 2893 "dhcp6_parser.yy"
+#line 2900 "dhcp6_parser.yy"
{
ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 4524 "dhcp6_parser.cc"
+#line 4528 "dhcp6_parser.cc"
break;
case 830: // dep_replace_client_name: "replace-client-name" $@127 ":" ddns_replace_client_name_value
-#line 2896 "dhcp6_parser.yy"
+#line 2903 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
}
-#line 4533 "dhcp6_parser.cc"
+#line 4537 "dhcp6_parser.cc"
break;
case 831: // $@128: %empty
-#line 2902 "dhcp6_parser.yy"
+#line 2909 "dhcp6_parser.yy"
{
ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4542 "dhcp6_parser.cc"
+#line 4546 "dhcp6_parser.cc"
break;
case 832: // dep_generated_prefix: "generated-prefix" $@128 ":" "constant string"
-#line 2905 "dhcp6_parser.yy"
+#line 2912 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
ctx.leave();
}
-#line 4552 "dhcp6_parser.cc"
+#line 4556 "dhcp6_parser.cc"
break;
case 833: // $@129: %empty
-#line 2912 "dhcp6_parser.yy"
+#line 2919 "dhcp6_parser.yy"
{
ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4561 "dhcp6_parser.cc"
+#line 4565 "dhcp6_parser.cc"
break;
case 834: // dep_hostname_char_set: "hostname-char-set" $@129 ":" "constant string"
-#line 2915 "dhcp6_parser.yy"
+#line 2922 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
ctx.leave();
}
-#line 4571 "dhcp6_parser.cc"
+#line 4575 "dhcp6_parser.cc"
break;
case 835: // $@130: %empty
-#line 2922 "dhcp6_parser.yy"
+#line 2929 "dhcp6_parser.yy"
{
ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4580 "dhcp6_parser.cc"
+#line 4584 "dhcp6_parser.cc"
break;
case 836: // dep_hostname_char_replacement: "hostname-char-replacement" $@130 ":" "constant string"
-#line 2925 "dhcp6_parser.yy"
+#line 2932 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
ctx.leave();
}
-#line 4590 "dhcp6_parser.cc"
+#line 4594 "dhcp6_parser.cc"
break;
case 837: // $@131: %empty
-#line 2934 "dhcp6_parser.yy"
+#line 2941 "dhcp6_parser.yy"
{
ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.CONFIG_CONTROL);
}
-#line 4602 "dhcp6_parser.cc"
+#line 4606 "dhcp6_parser.cc"
break;
case 838: // config_control: "config-control" $@131 ":" "{" config_control_params "}"
-#line 2940 "dhcp6_parser.yy"
+#line 2947 "dhcp6_parser.yy"
{
// No config control params are required
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4612 "dhcp6_parser.cc"
+#line 4616 "dhcp6_parser.cc"
break;
case 839: // $@132: %empty
-#line 2946 "dhcp6_parser.yy"
+#line 2953 "dhcp6_parser.yy"
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 4622 "dhcp6_parser.cc"
+#line 4626 "dhcp6_parser.cc"
break;
case 840: // sub_config_control: "{" $@132 config_control_params "}"
-#line 2950 "dhcp6_parser.yy"
+#line 2957 "dhcp6_parser.yy"
{
// No config_control params are required
// parsing completed
}
-#line 4631 "dhcp6_parser.cc"
+#line 4635 "dhcp6_parser.cc"
break;
case 843: // config_control_params: config_control_params ","
-#line 2958 "dhcp6_parser.yy"
+#line 2965 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4639 "dhcp6_parser.cc"
+#line 4643 "dhcp6_parser.cc"
break;
case 846: // $@133: %empty
-#line 2968 "dhcp6_parser.yy"
+#line 2975 "dhcp6_parser.yy"
{
ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.CONFIG_DATABASE);
}
-#line 4651 "dhcp6_parser.cc"
+#line 4655 "dhcp6_parser.cc"
break;
case 847: // config_databases: "config-databases" $@133 ":" "[" database_list "]"
-#line 2974 "dhcp6_parser.yy"
+#line 2981 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4660 "dhcp6_parser.cc"
+#line 4664 "dhcp6_parser.cc"
break;
case 848: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2979 "dhcp6_parser.yy"
+#line 2986 "dhcp6_parser.yy"
{
ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
}
-#line 4670 "dhcp6_parser.cc"
+#line 4674 "dhcp6_parser.cc"
break;
case 849: // $@134: %empty
-#line 2987 "dhcp6_parser.yy"
+#line 2994 "dhcp6_parser.yy"
{
ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 4682 "dhcp6_parser.cc"
+#line 4686 "dhcp6_parser.cc"
break;
case 850: // loggers: "loggers" $@134 ":" "[" loggers_entries "]"
-#line 2993 "dhcp6_parser.yy"
+#line 3000 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4691 "dhcp6_parser.cc"
+#line 4695 "dhcp6_parser.cc"
break;
case 853: // loggers_entries: loggers_entries ","
-#line 3002 "dhcp6_parser.yy"
+#line 3009 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4699 "dhcp6_parser.cc"
+#line 4703 "dhcp6_parser.cc"
break;
case 854: // $@135: %empty
-#line 3008 "dhcp6_parser.yy"
+#line 3015 "dhcp6_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 4709 "dhcp6_parser.cc"
+#line 4713 "dhcp6_parser.cc"
break;
case 855: // logger_entry: "{" $@135 logger_params "}"
-#line 3012 "dhcp6_parser.yy"
+#line 3019 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 4717 "dhcp6_parser.cc"
+#line 4721 "dhcp6_parser.cc"
break;
case 858: // logger_params: logger_params ","
-#line 3018 "dhcp6_parser.yy"
+#line 3025 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4725 "dhcp6_parser.cc"
+#line 4729 "dhcp6_parser.cc"
break;
case 866: // debuglevel: "debuglevel" ":" "integer"
-#line 3032 "dhcp6_parser.yy"
+#line 3039 "dhcp6_parser.yy"
{
ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 4735 "dhcp6_parser.cc"
+#line 4739 "dhcp6_parser.cc"
break;
case 867: // $@136: %empty
-#line 3038 "dhcp6_parser.yy"
+#line 3045 "dhcp6_parser.yy"
{
ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4744 "dhcp6_parser.cc"
+#line 4748 "dhcp6_parser.cc"
break;
case 868: // severity: "severity" $@136 ":" "constant string"
-#line 3041 "dhcp6_parser.yy"
+#line 3048 "dhcp6_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 4754 "dhcp6_parser.cc"
+#line 4758 "dhcp6_parser.cc"
break;
case 869: // $@137: %empty
-#line 3047 "dhcp6_parser.yy"
+#line 3054 "dhcp6_parser.yy"
{
ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 4766 "dhcp6_parser.cc"
+#line 4770 "dhcp6_parser.cc"
break;
case 870: // output_options_list: "output_options" $@137 ":" "[" output_options_list_content "]"
-#line 3053 "dhcp6_parser.yy"
+#line 3060 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4775 "dhcp6_parser.cc"
+#line 4779 "dhcp6_parser.cc"
break;
case 873: // output_options_list_content: output_options_list_content ","
-#line 3060 "dhcp6_parser.yy"
+#line 3067 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4783 "dhcp6_parser.cc"
+#line 4787 "dhcp6_parser.cc"
break;
case 874: // $@138: %empty
-#line 3065 "dhcp6_parser.yy"
+#line 3072 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 4793 "dhcp6_parser.cc"
+#line 4797 "dhcp6_parser.cc"
break;
case 875: // output_entry: "{" $@138 output_params_list "}"
-#line 3069 "dhcp6_parser.yy"
+#line 3076 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
-#line 4801 "dhcp6_parser.cc"
+#line 4805 "dhcp6_parser.cc"
break;
case 878: // output_params_list: output_params_list ","
-#line 3075 "dhcp6_parser.yy"
+#line 3082 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4809 "dhcp6_parser.cc"
+#line 4813 "dhcp6_parser.cc"
break;
case 884: // $@139: %empty
-#line 3087 "dhcp6_parser.yy"
+#line 3094 "dhcp6_parser.yy"
{
ctx.unique("output", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4818 "dhcp6_parser.cc"
+#line 4822 "dhcp6_parser.cc"
break;
case 885: // output: "output" $@139 ":" "constant string"
-#line 3090 "dhcp6_parser.yy"
+#line 3097 "dhcp6_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 4828 "dhcp6_parser.cc"
+#line 4832 "dhcp6_parser.cc"
break;
case 886: // flush: "flush" ":" "boolean"
-#line 3096 "dhcp6_parser.yy"
+#line 3103 "dhcp6_parser.yy"
{
ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 4838 "dhcp6_parser.cc"
+#line 4842 "dhcp6_parser.cc"
break;
case 887: // maxsize: "maxsize" ":" "integer"
-#line 3102 "dhcp6_parser.yy"
+#line 3109 "dhcp6_parser.yy"
{
ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 4848 "dhcp6_parser.cc"
+#line 4852 "dhcp6_parser.cc"
break;
case 888: // maxver: "maxver" ":" "integer"
-#line 3108 "dhcp6_parser.yy"
+#line 3115 "dhcp6_parser.yy"
{
ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
}
-#line 4858 "dhcp6_parser.cc"
+#line 4862 "dhcp6_parser.cc"
break;
case 889: // $@140: %empty
-#line 3114 "dhcp6_parser.yy"
+#line 3121 "dhcp6_parser.yy"
{
ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
ctx.enter(ctx.NO_KEYWORD);
}
-#line 4867 "dhcp6_parser.cc"
+#line 4871 "dhcp6_parser.cc"
break;
case 890: // pattern: "pattern" $@140 ":" "constant string"
-#line 3117 "dhcp6_parser.yy"
+#line 3124 "dhcp6_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
ctx.leave();
}
-#line 4877 "dhcp6_parser.cc"
+#line 4881 "dhcp6_parser.cc"
break;
case 891: // $@141: %empty
-#line 3123 "dhcp6_parser.yy"
+#line 3130 "dhcp6_parser.yy"
{
ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(i);
ctx.enter(ctx.COMPATIBILITY);
}
-#line 4889 "dhcp6_parser.cc"
+#line 4893 "dhcp6_parser.cc"
break;
case 892: // compatibility: "compatibility" $@141 ":" "{" compatibility_params "}"
-#line 3129 "dhcp6_parser.yy"
+#line 3136 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 4898 "dhcp6_parser.cc"
+#line 4902 "dhcp6_parser.cc"
break;
case 895: // compatibility_params: compatibility_params ","
-#line 3136 "dhcp6_parser.yy"
+#line 3143 "dhcp6_parser.yy"
{
ctx.warnAboutExtraCommas(yystack_[0].location);
}
-#line 4906 "dhcp6_parser.cc"
+#line 4910 "dhcp6_parser.cc"
break;
case 898: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3145 "dhcp6_parser.yy"
+#line 3152 "dhcp6_parser.yy"
{
ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location));
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("lenient-option-parsing", b);
}
-#line 4916 "dhcp6_parser.cc"
+#line 4920 "dhcp6_parser.cc"
break;
-#line 4920 "dhcp6_parser.cc"
+#line 4924 "dhcp6_parser.cc"
default:
break;
579, 582, 582, 591, 597, 603, 609, 615, 621, 627,
633, 639, 645, 651, 657, 663, 669, 675, 681, 687,
693, 693, 702, 705, 708, 711, 714, 720, 720, 729,
- 729, 738, 744, 750, 750, 759, 762, 765, 768, 773,
- 779, 779, 788, 788, 797, 803, 809, 815, 815, 824,
- 830, 830, 839, 839, 848, 854, 860, 866, 866, 878,
- 878, 887, 888, 889, 894, 895, 896, 897, 898, 899,
- 900, 901, 904, 904, 915, 921, 927, 933, 939, 939,
- 952, 952, 965, 965, 976, 977, 980, 981, 982, 987,
- 987, 997, 998, 999, 1004, 1005, 1006, 1007, 1008, 1009,
- 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
- 1020, 1021, 1022, 1023, 1024, 1025, 1028, 1028, 1036, 1037,
- 1038, 1041, 1041, 1050, 1050, 1059, 1059, 1068, 1074, 1074,
- 1083, 1089, 1095, 1101, 1107, 1113, 1119, 1126, 1132, 1132,
- 1140, 1141, 1142, 1145, 1151, 1157, 1157, 1166, 1166, 1175,
- 1175, 1184, 1184, 1193, 1193, 1204, 1205, 1206, 1211, 1212,
- 1215, 1215, 1234, 1234, 1252, 1252, 1263, 1264, 1265, 1270,
- 1271, 1274, 1279, 1284, 1284, 1295, 1296, 1297, 1302, 1303,
- 1304, 1307, 1312, 1319, 1319, 1332, 1332, 1345, 1346, 1347,
- 1352, 1353, 1354, 1355, 1356, 1357, 1360, 1366, 1372, 1378,
- 1378, 1389, 1390, 1393, 1394, 1395, 1400, 1400, 1410, 1410,
- 1420, 1421, 1422, 1425, 1428, 1429, 1432, 1432, 1441, 1441,
- 1450, 1450, 1462, 1463, 1464, 1469, 1470, 1471, 1472, 1473,
- 1474, 1477, 1483, 1489, 1495, 1501, 1507, 1516, 1516, 1530,
- 1531, 1534, 1535, 1536, 1545, 1545, 1571, 1571, 1582, 1583,
- 1584, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598,
- 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608,
- 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
- 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
- 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1639, 1639,
- 1648, 1648, 1657, 1657, 1666, 1666, 1675, 1675, 1686, 1692,
- 1698, 1704, 1704, 1712, 1713, 1714, 1715, 1718, 1724, 1732,
- 1732, 1744, 1745, 1749, 1750, 1751, 1756, 1756, 1764, 1765,
- 1766, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779,
- 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789,
- 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799,
- 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809,
- 1810, 1811, 1812, 1813, 1814, 1821, 1821, 1835, 1835, 1844,
- 1845, 1848, 1849, 1850, 1857, 1857, 1872, 1872, 1886, 1887,
- 1890, 1891, 1892, 1897, 1898, 1899, 1900, 1901, 1902, 1903,
- 1904, 1905, 1906, 1909, 1911, 1917, 1919, 1919, 1928, 1928,
- 1937, 1937, 1946, 1948, 1948, 1957, 1967, 1967, 1980, 1981,
- 1986, 1987, 1988, 1995, 1995, 2007, 2007, 2019, 2020, 2025,
- 2026, 2027, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041,
- 2042, 2043, 2046, 2048, 2048, 2057, 2059, 2061, 2067, 2073,
- 2082, 2082, 2095, 2096, 2099, 2100, 2101, 2106, 2106, 2116,
- 2116, 2126, 2127, 2128, 2133, 2134, 2135, 2136, 2137, 2138,
- 2139, 2140, 2143, 2143, 2152, 2158, 2158, 2183, 2183, 2213,
- 2213, 2226, 2227, 2230, 2231, 2232, 2237, 2237, 2249, 2249,
- 2261, 2262, 2263, 2268, 2269, 2270, 2271, 2272, 2273, 2274,
- 2275, 2276, 2277, 2278, 2281, 2281, 2290, 2296, 2296, 2305,
- 2311, 2320, 2320, 2331, 2332, 2335, 2336, 2337, 2342, 2342,
- 2351, 2351, 2360, 2361, 2364, 2365, 2366, 2372, 2373, 2374,
- 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2385, 2385,
- 2396, 2396, 2407, 2407, 2416, 2416, 2425, 2425, 2434, 2434,
- 2443, 2443, 2457, 2457, 2468, 2469, 2472, 2472, 2484, 2484,
- 2495, 2496, 2497, 2502, 2502, 2512, 2513, 2516, 2517, 2518,
- 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532,
- 2533, 2534, 2535, 2536, 2539, 2541, 2541, 2550, 2550, 2559,
- 2568, 2568, 2581, 2582, 2583, 2588, 2589, 2590, 2591, 2592,
- 2593, 2594, 2595, 2596, 2599, 2599, 2607, 2608, 2609, 2612,
- 2618, 2618, 2627, 2633, 2641, 2649, 2649, 2660, 2661, 2662,
- 2667, 2668, 2669, 2670, 2671, 2674, 2674, 2683, 2683, 2695,
- 2695, 2708, 2709, 2710, 2715, 2716, 2717, 2718, 2719, 2720,
- 2723, 2729, 2729, 2738, 2744, 2744, 2754, 2754, 2767, 2767,
- 2777, 2778, 2779, 2784, 2785, 2786, 2787, 2788, 2789, 2790,
- 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800,
- 2801, 2804, 2811, 2811, 2820, 2820, 2829, 2835, 2835, 2844,
- 2850, 2856, 2856, 2865, 2866, 2869, 2869, 2879, 2886, 2893,
- 2893, 2902, 2902, 2912, 2912, 2922, 2922, 2934, 2934, 2946,
- 2946, 2956, 2957, 2958, 2964, 2965, 2968, 2968, 2979, 2987,
- 2987, 3000, 3001, 3002, 3008, 3008, 3016, 3017, 3018, 3023,
- 3024, 3025, 3026, 3027, 3028, 3029, 3032, 3038, 3038, 3047,
- 3047, 3058, 3059, 3060, 3065, 3065, 3073, 3074, 3075, 3080,
- 3081, 3082, 3083, 3084, 3087, 3087, 3096, 3102, 3108, 3114,
- 3114, 3123, 3123, 3134, 3135, 3136, 3141, 3142, 3145
+ 729, 738, 747, 757, 757, 766, 769, 772, 775, 780,
+ 786, 786, 795, 795, 804, 810, 816, 822, 822, 831,
+ 837, 837, 846, 846, 855, 861, 867, 873, 873, 885,
+ 885, 894, 895, 896, 901, 902, 903, 904, 905, 906,
+ 907, 908, 911, 911, 922, 928, 934, 940, 946, 946,
+ 959, 959, 972, 972, 983, 984, 987, 988, 989, 994,
+ 994, 1004, 1005, 1006, 1011, 1012, 1013, 1014, 1015, 1016,
+ 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026,
+ 1027, 1028, 1029, 1030, 1031, 1032, 1035, 1035, 1043, 1044,
+ 1045, 1048, 1048, 1057, 1057, 1066, 1066, 1075, 1081, 1081,
+ 1090, 1096, 1102, 1108, 1114, 1120, 1126, 1133, 1139, 1139,
+ 1147, 1148, 1149, 1152, 1158, 1164, 1164, 1173, 1173, 1182,
+ 1182, 1191, 1191, 1200, 1200, 1211, 1212, 1213, 1218, 1219,
+ 1222, 1222, 1241, 1241, 1259, 1259, 1270, 1271, 1272, 1277,
+ 1278, 1281, 1286, 1291, 1291, 1302, 1303, 1304, 1309, 1310,
+ 1311, 1314, 1319, 1326, 1326, 1339, 1339, 1352, 1353, 1354,
+ 1359, 1360, 1361, 1362, 1363, 1364, 1367, 1373, 1379, 1385,
+ 1385, 1396, 1397, 1400, 1401, 1402, 1407, 1407, 1417, 1417,
+ 1427, 1428, 1429, 1432, 1435, 1436, 1439, 1439, 1448, 1448,
+ 1457, 1457, 1469, 1470, 1471, 1476, 1477, 1478, 1479, 1480,
+ 1481, 1484, 1490, 1496, 1502, 1508, 1514, 1523, 1523, 1537,
+ 1538, 1541, 1542, 1543, 1552, 1552, 1578, 1578, 1589, 1590,
+ 1591, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605,
+ 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615,
+ 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625,
+ 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635,
+ 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1646, 1646,
+ 1655, 1655, 1664, 1664, 1673, 1673, 1682, 1682, 1693, 1699,
+ 1705, 1711, 1711, 1719, 1720, 1721, 1722, 1725, 1731, 1739,
+ 1739, 1751, 1752, 1756, 1757, 1758, 1763, 1763, 1771, 1772,
+ 1773, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786,
+ 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796,
+ 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806,
+ 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816,
+ 1817, 1818, 1819, 1820, 1821, 1828, 1828, 1842, 1842, 1851,
+ 1852, 1855, 1856, 1857, 1864, 1864, 1879, 1879, 1893, 1894,
+ 1897, 1898, 1899, 1904, 1905, 1906, 1907, 1908, 1909, 1910,
+ 1911, 1912, 1913, 1916, 1918, 1924, 1926, 1926, 1935, 1935,
+ 1944, 1944, 1953, 1955, 1955, 1964, 1974, 1974, 1987, 1988,
+ 1993, 1994, 1995, 2002, 2002, 2014, 2014, 2026, 2027, 2032,
+ 2033, 2034, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048,
+ 2049, 2050, 2053, 2055, 2055, 2064, 2066, 2068, 2074, 2080,
+ 2089, 2089, 2102, 2103, 2106, 2107, 2108, 2113, 2113, 2123,
+ 2123, 2133, 2134, 2135, 2140, 2141, 2142, 2143, 2144, 2145,
+ 2146, 2147, 2150, 2150, 2159, 2165, 2165, 2190, 2190, 2220,
+ 2220, 2233, 2234, 2237, 2238, 2239, 2244, 2244, 2256, 2256,
+ 2268, 2269, 2270, 2275, 2276, 2277, 2278, 2279, 2280, 2281,
+ 2282, 2283, 2284, 2285, 2288, 2288, 2297, 2303, 2303, 2312,
+ 2318, 2327, 2327, 2338, 2339, 2342, 2343, 2344, 2349, 2349,
+ 2358, 2358, 2367, 2368, 2371, 2372, 2373, 2379, 2380, 2381,
+ 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2392, 2392,
+ 2403, 2403, 2414, 2414, 2423, 2423, 2432, 2432, 2441, 2441,
+ 2450, 2450, 2464, 2464, 2475, 2476, 2479, 2479, 2491, 2491,
+ 2502, 2503, 2504, 2509, 2509, 2519, 2520, 2523, 2524, 2525,
+ 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539,
+ 2540, 2541, 2542, 2543, 2546, 2548, 2548, 2557, 2557, 2566,
+ 2575, 2575, 2588, 2589, 2590, 2595, 2596, 2597, 2598, 2599,
+ 2600, 2601, 2602, 2603, 2606, 2606, 2614, 2615, 2616, 2619,
+ 2625, 2625, 2634, 2640, 2648, 2656, 2656, 2667, 2668, 2669,
+ 2674, 2675, 2676, 2677, 2678, 2681, 2681, 2690, 2690, 2702,
+ 2702, 2715, 2716, 2717, 2722, 2723, 2724, 2725, 2726, 2727,
+ 2730, 2736, 2736, 2745, 2751, 2751, 2761, 2761, 2774, 2774,
+ 2784, 2785, 2786, 2791, 2792, 2793, 2794, 2795, 2796, 2797,
+ 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2805, 2806, 2807,
+ 2808, 2811, 2818, 2818, 2827, 2827, 2836, 2842, 2842, 2851,
+ 2857, 2863, 2863, 2872, 2873, 2876, 2876, 2886, 2893, 2900,
+ 2900, 2909, 2909, 2919, 2919, 2929, 2929, 2941, 2941, 2953,
+ 2953, 2963, 2964, 2965, 2971, 2972, 2975, 2975, 2986, 2994,
+ 2994, 3007, 3008, 3009, 3015, 3015, 3023, 3024, 3025, 3030,
+ 3031, 3032, 3033, 3034, 3035, 3036, 3039, 3045, 3045, 3054,
+ 3054, 3065, 3066, 3067, 3072, 3072, 3080, 3081, 3082, 3087,
+ 3088, 3089, 3090, 3091, 3094, 3094, 3103, 3109, 3115, 3121,
+ 3121, 3130, 3130, 3141, 3142, 3143, 3148, 3149, 3152
};
void
#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 6613 "dhcp6_parser.cc"
+#line 6617 "dhcp6_parser.cc"
-#line 3151 "dhcp6_parser.yy"
+#line 3158 "dhcp6_parser.yy"
void
ctx.stack_.back()->set("ddns-update-on-renew", b);
};
+// ddns-use-conflict-resolutions is deprecated. We translate it
+// to ddns-conflict-resolution-mode. If they happen to specify
+// both the server parsing should detect it.
ddns_use_conflict_resolution: DDNS_USE_CONFLICT_RESOLUTION COLON BOOLEAN {
ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(@1));
ElementPtr b(new BoolElement($3, ctx.loc2pos(@3)));
- ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+ ctx.warning(@2, "ddns-use-conflict-resolution is deprecated. "
+ "Substituting ddns-conflict-resolution-mode");
+ ElementPtr mode(new StringElement(b->boolValue() ? "check-with-dhcid"
+ : "no-check-with-dhcid"));
+ ctx.stack_.back()->set("ddns-conflict-resolution-mode", mode);
};
ddns_conflict_resolution_mode: DDNS_CONFLICT_RESOLUTION_MODE {
{ "ip-reservations-unique", IP_RESERVATIONS_UNIQUE },
{ "reservations-lookup-first", RESERVATIONS_LOOKUP_FIRST },
{ "ddns-update-on-renew", DDNS_UPDATE_ON_RENEW },
- { "ddns-use-conflict-resolution", DDNS_USE_CONFLICT_RESOLUTION },
{ "parked-packet-limit", PARKED_PACKET_LIMIT },
{ "allocator", ALLOCATOR },
{ "ddns-ttl-percent", DDNS_TTL_PERCENT },
if (it == nameToIndex.cend()) {
isc_throw(NotFound, "invalid global parameter name '" << name << "'");
}
+
set(it->second, value);
}
IP_RESERVATIONS_UNIQUE,
RESERVATIONS_LOOKUP_FIRST,
DDNS_UPDATE_ON_RENEW,
- DDNS_USE_CONFLICT_RESOLUTION,
PARKED_PACKET_LIMIT,
ALLOCATOR,
DDNS_TTL_PERCENT,
network->setDdnsTtlPercent(getDouble(network_data, "ddns-ttl-percent"));
}
+ // For backward compatibility, ddns-conflict-resolution-mode is optional.
if (network_data->contains("ddns-conflict-resolution-mode")) {
network->setDdnsConflictResolutionMode(getString(network_data,
"ddns-conflict-resolution-mode"));
- } else {
- // For backward compatibility, look for ddns-use-conflict-resolution.
- // We might consider emitting a debug log?
- if (network_data->contains("ddns-use-conflict-resolution")) {
- auto value = getBoolean(network_data, "ddns-use-conflict-resolution");
- network->setDdnsConflictResolutionMode(value ? "check-with-dhcid"
- : "no-check_with-dhcid");
- }
}
}
{ "ip-reservations-unique", Element::boolean },
{ "reservations-lookup-first", Element::boolean },
{ "ddns-update-on-renew", Element::boolean },
- { "ddns-use-conflict-resolution", Element::boolean }, // deprecated
{ "compatibility", Element::map },
{ "parked-packet-limit", Element::integer },
{ "allocator", Element::string },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "ddns-update-on-renew", Element::boolean },
- { "ddns-use-conflict-resolution", Element::boolean }, // deprecated
{ "allocator", Element::string },
{ "offer-lifetime", Element::integer },
{ "ddns-ttl-percent", Element::real },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "ddns-update-on-renew", Element::boolean },
- { "ddns-use-conflict-resolution", Element::boolean }, // deprecated
{ "allocator", Element::string },
{ "offer-lifetime", Element::integer },
{ "ddns-ttl-percent", Element::real },
{ "ip-reservations-unique", Element::boolean },
{ "reservations-lookup-first", Element::boolean },
{ "ddns-update-on-renew", Element::boolean },
- { "ddns-use-conflict-resolution", Element::boolean }, // deprecated
{ "compatibility", Element::map },
{ "parked-packet-limit", Element::integer },
{ "allocator", Element::string },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "ddns-update-on-renew", Element::boolean },
- { "ddns-use-conflict-resolution", Element::boolean }, // deprecated
{ "allocator", Element::string },
{ "pd-allocator", Element::string },
{ "ddns-ttl-percent", Element::real },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "ddns-update-on-renew", Element::boolean },
- { "ddns-use-conflict-resolution", Element::boolean }, // deprecated
{ "allocator", Element::string },
{ "pd-allocator", Element::string },
{ "ddns-ttl-percent", Element::real },
conf.addConfiguredGlobal("hostname-char-set", Element::create("[^A-Z]"));
conf.addConfiguredGlobal("hostname-char-replacement", Element::create("x"));
conf.addConfiguredGlobal("ddns-update-on-renew", Element::create(true));
- conf.addConfiguredGlobal("ddns-use-conflict-resolution", Element::create(false));
+ conf.addConfiguredGlobal("ddns-conflict-resolution-mode",
+ Element::create("no-check-with-dhcid"));
conf.addConfiguredGlobal("ddns-ttl-percent", Element::create(77.0));
// Get DDNS params for no subnet.