ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1659 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1681 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 211:
-#line 848 "dhcp4_parser.yy" // lalr1.cc:859
+ case 213:
+#line 866 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // The subnet subnet4 parameter is required
+ ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1667 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1691 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 236:
- #line 900 "dhcp4_parser.yy" // lalr1.cc:859
+ case 235:
+ #line 881 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1675 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1699 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 237:
- #line 902 "dhcp4_parser.yy" // lalr1.cc:859
+ case 236:
+ #line 883 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 1685 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1709 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 238:
- #line 908 "dhcp4_parser.yy" // lalr1.cc:859
+ case 237:
+ #line 889 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1693 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1717 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 239:
- #line 910 "dhcp4_parser.yy" // lalr1.cc:859
+ case 238:
+ #line 891 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface", iface);
ctx.leave();
}
-#line 1703 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1727 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 240:
- #line 916 "dhcp4_parser.yy" // lalr1.cc:859
+ case 239:
+ #line 897 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1711 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1735 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 241:
- #line 918 "dhcp4_parser.yy" // lalr1.cc:859
+ case 240:
+ #line 899 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-interface-id", iface);
ctx.leave();
}
-#line 1721 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1745 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 242:
- #line 924 "dhcp4_parser.yy" // lalr1.cc:859
+ case 241:
+ #line 905 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1729 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1753 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 243:
- #line 926 "dhcp4_parser.yy" // lalr1.cc:859
+ case 242:
+ #line 907 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("4o6-subnet", iface);
ctx.leave();
}
-#line 1739 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1763 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 244:
- #line 932 "dhcp4_parser.yy" // lalr1.cc:859
+ case 243:
+ #line 913 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1747 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1771 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 245:
- #line 934 "dhcp4_parser.yy" // lalr1.cc:859
+ case 244:
+ #line 915 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 1757 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1781 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 246:
- #line 940 "dhcp4_parser.yy" // lalr1.cc:859
+ case 245:
+ #line 921 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1765 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1789 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 247:
- #line 942 "dhcp4_parser.yy" // lalr1.cc:859
+ case 246:
+ #line 923 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface-id", iface);
ctx.leave();
}
-#line 1775 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1799 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 248:
- #line 948 "dhcp4_parser.yy" // lalr1.cc:859
+ case 247:
+ #line 929 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.CLIENT_CLASS);
}
-#line 1783 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1807 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 249:
- #line 950 "dhcp4_parser.yy" // lalr1.cc:859
+ case 248:
+ #line 931 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 1793 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1817 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 250:
- #line 956 "dhcp4_parser.yy" // lalr1.cc:859
+ case 249:
+ #line 937 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 1801 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1825 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 251:
- #line 958 "dhcp4_parser.yy" // lalr1.cc:859
+ case 250:
+ #line 939 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 1810 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1834 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 252:
- #line 963 "dhcp4_parser.yy" // lalr1.cc:859
+ case 251:
+ #line 944 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 1816 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1840 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 253:
- #line 964 "dhcp4_parser.yy" // lalr1.cc:859
+ case 252:
+ #line 945 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 1822 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1846 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 254:
- #line 965 "dhcp4_parser.yy" // lalr1.cc:859
+ case 253:
+ #line 946 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 1828 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1852 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 255:
- #line 968 "dhcp4_parser.yy" // lalr1.cc:859
+ case 254:
+ #line 949 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 1837 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1861 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 256:
- #line 973 "dhcp4_parser.yy" // lalr1.cc:859
+ case 255:
+ #line 954 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rapid-commit", rc);
}
-#line 1846 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1870 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 257:
- #line 982 "dhcp4_parser.yy" // lalr1.cc:859
+ case 256:
+ #line 963 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 1857 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1881 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 258:
- #line 987 "dhcp4_parser.yy" // lalr1.cc:859
+ case 257:
+ #line 968 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1890 "dhcp4_parser.cc" // lalr1.cc:859
+ break;
+
+ case 259:
+#line 995 "dhcp4_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.push_back(m);
+}
+#line 1899 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 260:
- #line 998 "dhcp4_parser.yy" // lalr1.cc:859
- {
- // parsing completed
- }
- #line 1907 "dhcp4_parser.cc" // lalr1.cc:859
- break;
-
- case 265:
- #line 1014 "dhcp4_parser.yy" // lalr1.cc:859
+ case 262:
+ #line 985 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1876 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1917 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 266:
- #line 1018 "dhcp4_parser.yy" // lalr1.cc:859
+ case 263:
+ #line 989 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // 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("code", 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 1884 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 267:
- #line 1029 "dhcp4_parser.yy" // lalr1.cc:859
+ case 264:
+ #line 996 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1894 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1939 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 268:
- #line 1033 "dhcp4_parser.yy" // lalr1.cc:859
+ case 265:
+ #line 1000 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // 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("code", 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 1902 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1951 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 282:
- #line 1063 "dhcp4_parser.yy" // lalr1.cc:859
+ case 279:
+ #line 1026 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 1911 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1960 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 284:
- #line 1070 "dhcp4_parser.yy" // lalr1.cc:859
+ case 281:
+ #line 1033 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1919 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1968 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 285:
- #line 1072 "dhcp4_parser.yy" // lalr1.cc:859
+ case 282:
+ #line 1035 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 1929 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1978 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 286:
- #line 1078 "dhcp4_parser.yy" // lalr1.cc:859
+ case 283:
+ #line 1041 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1937 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1986 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 287:
- #line 1080 "dhcp4_parser.yy" // lalr1.cc:859
+ case 284:
+ #line 1043 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1996 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 288:
- #line 1086 "dhcp4_parser.yy" // lalr1.cc:859
+ case 285:
+ #line 1049 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1955 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2004 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 289:
- #line 1088 "dhcp4_parser.yy" // lalr1.cc:859
+ case 286:
+ #line 1051 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 1965 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2014 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 291:
- #line 1096 "dhcp4_parser.yy" // lalr1.cc:859
+ case 288:
+ #line 1059 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1973 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2022 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 292:
- #line 1098 "dhcp4_parser.yy" // lalr1.cc:859
+ case 289:
+ #line 1061 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2032 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 293:
- #line 1104 "dhcp4_parser.yy" // lalr1.cc:859
+ case 290:
+ #line 1067 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 1992 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2041 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 294:
- #line 1113 "dhcp4_parser.yy" // lalr1.cc:859
+ case 291:
+ #line 1076 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 2003 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2052 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 295:
- #line 1118 "dhcp4_parser.yy" // lalr1.cc:859
+ case 292:
+ #line 1081 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2012 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2061 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 300:
- #line 1137 "dhcp4_parser.yy" // lalr1.cc:859
+ case 297:
+ #line 1100 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2022 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2071 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 301:
- #line 1141 "dhcp4_parser.yy" // lalr1.cc:859
+ case 298:
+ #line 1104 "dhcp4_parser.yy" // lalr1.cc:859
{
+ /// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 2030 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2080 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 302:
- #line 1149 "dhcp4_parser.yy" // lalr1.cc:859
+ case 299:
+ #line 1111 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2040 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2090 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 303:
- #line 1153 "dhcp4_parser.yy" // lalr1.cc:859
+ case 300:
+ #line 1115 "dhcp4_parser.yy" // lalr1.cc:859
{
+ /// @todo: the code or name parameters are required.
// parsing completed
}
-#line 2048 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2099 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 316:
- #line 1184 "dhcp4_parser.yy" // lalr1.cc:859
+ case 313:
+ #line 1145 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2056 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2107 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 317:
- #line 1186 "dhcp4_parser.yy" // lalr1.cc:859
+ case 314:
+ #line 1147 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2066 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2117 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 320:
- #line 1196 "dhcp4_parser.yy" // lalr1.cc:859
+ case 317:
+ #line 1157 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2075 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2126 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 321:
- #line 1201 "dhcp4_parser.yy" // lalr1.cc:859
+ case 318:
+ #line 1162 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2084 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2135 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 322:
- #line 1209 "dhcp4_parser.yy" // lalr1.cc:859
+ case 319:
+ #line 1170 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 2095 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2146 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 323:
- #line 1214 "dhcp4_parser.yy" // lalr1.cc:859
+ case 320:
+ #line 1175 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2104 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2155 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 328:
- #line 1229 "dhcp4_parser.yy" // lalr1.cc:859
+ case 325:
+ #line 1190 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2114 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2165 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 329:
- #line 1233 "dhcp4_parser.yy" // lalr1.cc:859
+ case 326:
+ #line 1194 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // The pool parameter is required.
+ ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2122 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2175 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 330:
- #line 1239 "dhcp4_parser.yy" // lalr1.cc:859
+ case 327:
+ #line 1198 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2132 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2185 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 331:
- #line 1243 "dhcp4_parser.yy" // lalr1.cc:859
+ case 328:
+ #line 1202 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // The pool parameter is required.
+ ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 2140 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2195 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 338:
- #line 1259 "dhcp4_parser.yy" // lalr1.cc:859
+ case 335:
+ #line 1216 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2148 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2203 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 339:
- #line 1261 "dhcp4_parser.yy" // lalr1.cc:859
+ case 336:
+ #line 1218 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2158 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 340:
- #line 1267 "dhcp4_parser.yy" // lalr1.cc:859
+ case 337:
+ #line 1224 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2166 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2221 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 341:
- #line 1269 "dhcp4_parser.yy" // lalr1.cc:859
+ case 338:
+ #line 1226 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2175 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 342:
- #line 1277 "dhcp4_parser.yy" // lalr1.cc:859
+ case 339:
+ #line 1234 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2241 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 343:
- #line 1282 "dhcp4_parser.yy" // lalr1.cc:859
+ case 340:
+ #line 1239 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2195 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2250 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 348:
- #line 1295 "dhcp4_parser.yy" // lalr1.cc:859
+ case 345:
+ #line 1252 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2205 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2260 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 349:
- #line 1299 "dhcp4_parser.yy" // lalr1.cc:859
+ case 346:
+ #line 1256 "dhcp4_parser.yy" // lalr1.cc:859
{
+ /// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2269 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 350:
- #line 1304 "dhcp4_parser.yy" // lalr1.cc:859
+ case 347:
+ #line 1260 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2223 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2279 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 351:
- #line 1308 "dhcp4_parser.yy" // lalr1.cc:859
+ case 348:
+ #line 1264 "dhcp4_parser.yy" // lalr1.cc:859
{
+ /// @todo: an identifier parameter is required.
// parsing completed
}
-#line 2231 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2288 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 369:
- #line 1337 "dhcp4_parser.yy" // lalr1.cc:859
+ case 366:
+ #line 1292 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2239 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2296 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 370:
- #line 1339 "dhcp4_parser.yy" // lalr1.cc:859
+ case 367:
+ #line 1294 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("next-server", next_server);
ctx.leave();
}
-#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2306 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 371:
- #line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+ case 368:
+ #line 1300 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2257 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2314 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 372:
- #line 1347 "dhcp4_parser.yy" // lalr1.cc:859
+ case 369:
+ #line 1302 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-hostname", srv);
ctx.leave();
}
-#line 2267 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2324 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 373:
- #line 1353 "dhcp4_parser.yy" // lalr1.cc:859
+ case 370:
+ #line 1308 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2275 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2332 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 374:
- #line 1355 "dhcp4_parser.yy" // lalr1.cc:859
+ case 371:
+ #line 1310 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("boot-file-name", bootfile);
ctx.leave();
}
-#line 2285 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2342 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 375:
- #line 1361 "dhcp4_parser.yy" // lalr1.cc:859
+ case 372:
+ #line 1316 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2293 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2350 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 376:
- #line 1363 "dhcp4_parser.yy" // lalr1.cc:859
+ case 373:
+ #line 1318 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", addr);
ctx.leave();
}
-#line 2303 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2360 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 377:
- #line 1369 "dhcp4_parser.yy" // lalr1.cc:859
+ case 374:
+ #line 1324 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2311 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2368 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 378:
- #line 1371 "dhcp4_parser.yy" // lalr1.cc:859
+ case 375:
+ #line 1326 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 2321 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2378 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 379:
- #line 1377 "dhcp4_parser.yy" // lalr1.cc:859
+ case 376:
+ #line 1332 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2329 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2386 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 380:
- #line 1379 "dhcp4_parser.yy" // lalr1.cc:859
+ case 377:
+ #line 1334 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 2339 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2396 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 381:
- #line 1385 "dhcp4_parser.yy" // lalr1.cc:859
+ case 378:
+ #line 1340 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2347 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2404 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 382:
- #line 1387 "dhcp4_parser.yy" // lalr1.cc:859
+ case 379:
+ #line 1342 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-id", hw);
ctx.leave();
}
-#line 2357 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2414 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 383:
- #line 1393 "dhcp4_parser.yy" // lalr1.cc:859
+ case 380:
+ #line 1348 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2365 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2422 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 384:
- #line 1395 "dhcp4_parser.yy" // lalr1.cc:859
+ case 381:
+ #line 1350 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("circuit-id", hw);
ctx.leave();
}
-#line 2375 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2432 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 385:
- #line 1401 "dhcp4_parser.yy" // lalr1.cc:859
+ case 382:
+ #line 1356 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2383 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2440 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 386:
- #line 1403 "dhcp4_parser.yy" // lalr1.cc:859
+ case 383:
+ #line 1358 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 2393 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2450 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 387:
- #line 1409 "dhcp4_parser.yy" // lalr1.cc:859
+ case 384:
+ #line 1364 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2401 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2458 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 388:
- #line 1411 "dhcp4_parser.yy" // lalr1.cc:859
+ case 385:
+ #line 1366 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 2411 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2468 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 389:
- #line 1417 "dhcp4_parser.yy" // lalr1.cc:859
+ case 386:
+ #line 1372 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2422 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2479 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 390:
- #line 1422 "dhcp4_parser.yy" // lalr1.cc:859
+ case 387:
+ #line 1377 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2431 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2488 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 391:
- #line 1430 "dhcp4_parser.yy" // lalr1.cc:859
+ case 388:
+ #line 1385 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 2442 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2499 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 392:
- #line 1435 "dhcp4_parser.yy" // lalr1.cc:859
+ case 389:
+ #line 1390 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2451 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2508 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 393:
- #line 1440 "dhcp4_parser.yy" // lalr1.cc:859
+ case 390:
+ #line 1395 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2459 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2516 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 394:
- #line 1442 "dhcp4_parser.yy" // lalr1.cc:859
+ case 391:
+ #line 1397 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", ip);
ctx.leave();
}
-#line 2469 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2526 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 395:
- #line 1451 "dhcp4_parser.yy" // lalr1.cc:859
+ case 392:
+ #line 1406 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 2480 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2537 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 396:
- #line 1456 "dhcp4_parser.yy" // lalr1.cc:859
+ case 393:
+ #line 1411 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2489 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2546 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 399:
- #line 1465 "dhcp4_parser.yy" // lalr1.cc:859
+ case 396:
+ #line 1420 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2499 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2556 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 400:
- #line 1469 "dhcp4_parser.yy" // lalr1.cc:859
+ case 397:
+ #line 1424 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // 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 2507 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2566 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 413:
- #line 1494 "dhcp4_parser.yy" // lalr1.cc:859
+ case 410:
+ #line 1447 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2515 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2574 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 414:
- #line 1496 "dhcp4_parser.yy" // lalr1.cc:859
+ case 411:
+ #line 1449 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 2525 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2584 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 415:
- #line 1506 "dhcp4_parser.yy" // lalr1.cc:859
+ case 412:
+ #line 1459 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 2534 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2593 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 416:
- #line 1513 "dhcp4_parser.yy" // lalr1.cc:859
+ case 413:
+ #line 1466 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 2545 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2604 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 417:
- #line 1518 "dhcp4_parser.yy" // lalr1.cc:859
+ case 414:
+ #line 1471 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2554 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2613 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 422:
- #line 1531 "dhcp4_parser.yy" // lalr1.cc:859
+ case 419:
+ #line 1484 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2562 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2621 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 423:
- #line 1533 "dhcp4_parser.yy" // lalr1.cc:859
+ case 420:
+ #line 1486 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 2572 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2631 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 424:
- #line 1539 "dhcp4_parser.yy" // lalr1.cc:859
+ case 421:
+ #line 1492 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2580 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2639 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 425:
- #line 1541 "dhcp4_parser.yy" // lalr1.cc:859
+ case 422:
+ #line 1494 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 2590 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2649 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 426:
- #line 1549 "dhcp4_parser.yy" // lalr1.cc:859
+ case 423:
+ #line 1502 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 2601 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2660 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 427:
- #line 1554 "dhcp4_parser.yy" // lalr1.cc:859
+ case 424:
+ #line 1507 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // 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 2610 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2671 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 428:
- #line 1561 "dhcp4_parser.yy" // lalr1.cc:859
+ case 425:
+ #line 1512 "dhcp4_parser.yy" // lalr1.cc:859
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2620 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2681 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 429:
- #line 1565 "dhcp4_parser.yy" // lalr1.cc:859
+ case 426:
+ #line 1516 "dhcp4_parser.yy" // lalr1.cc:859
{
+ // 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 2628 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2691 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 447:
- #line 1592 "dhcp4_parser.yy" // lalr1.cc:859
+ case 444:
+ #line 1541 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 2637 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2700 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 448:
- #line 1597 "dhcp4_parser.yy" // lalr1.cc:859
+ case 445:
+ #line 1546 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2645 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2708 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 449:
- #line 1599 "dhcp4_parser.yy" // lalr1.cc:859
+ case 446:
+ #line 1548 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2655 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2718 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 450:
- #line 1605 "dhcp4_parser.yy" // lalr1.cc:859
+ case 447:
+ #line 1554 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2663 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 451:
- #line 1607 "dhcp4_parser.yy" // lalr1.cc:859
+ case 448:
+ #line 1556 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2673 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2736 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 452:
- #line 1613 "dhcp4_parser.yy" // lalr1.cc:859
+ case 449:
+ #line 1562 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 2682 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2745 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 453:
- #line 1618 "dhcp4_parser.yy" // lalr1.cc:859
+ case 450:
+ #line 1567 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2690 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2753 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 454:
- #line 1620 "dhcp4_parser.yy" // lalr1.cc:859
+ case 451:
+ #line 1569 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2700 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2763 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 455:
- #line 1626 "dhcp4_parser.yy" // lalr1.cc:859
+ case 452:
+ #line 1575 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 2709 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2772 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 456:
- #line 1631 "dhcp4_parser.yy" // lalr1.cc:859
+ case 453:
+ #line 1580 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 2718 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2781 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 457:
- #line 1636 "dhcp4_parser.yy" // lalr1.cc:859
+ case 454:
+ #line 1585 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2789 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 458:
- #line 1638 "dhcp4_parser.yy" // lalr1.cc:859
+ case 455:
+ #line 1587 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2735 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2798 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 459:
- #line 1644 "dhcp4_parser.yy" // lalr1.cc:859
+ case 456:
+ #line 1593 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2741 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2804 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 460:
- #line 1645 "dhcp4_parser.yy" // lalr1.cc:859
+ case 457:
+ #line 1594 "dhcp4_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2747 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2810 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 461:
- #line 1648 "dhcp4_parser.yy" // lalr1.cc:859
+ case 458:
+ #line 1597 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_FORMAT);
}
-#line 2755 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2818 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 462:
- #line 1650 "dhcp4_parser.yy" // lalr1.cc:859
+ case 459:
+ #line 1599 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 2765 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2828 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 463:
- #line 1656 "dhcp4_parser.yy" // lalr1.cc:859
+ case 460:
+ #line 1605 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-include-fqdn", b);
}
-#line 2774 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2837 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 464:
- #line 1661 "dhcp4_parser.yy" // lalr1.cc:859
+ case 461:
+ #line 1610 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 2783 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2846 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 465:
- #line 1666 "dhcp4_parser.yy" // lalr1.cc:859
+ case 462:
+ #line 1615 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 2792 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2855 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 466:
- #line 1671 "dhcp4_parser.yy" // lalr1.cc:859
+ case 463:
+ #line 1620 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 2800 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2863 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 467:
- #line 1673 "dhcp4_parser.yy" // lalr1.cc:859
+ case 464:
+ #line 1622 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2809 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2872 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 468:
- #line 1679 "dhcp4_parser.yy" // lalr1.cc:859
+ case 465:
+ #line 1628 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 2817 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2880 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 469:
- #line 1682 "dhcp4_parser.yy" // lalr1.cc:859
+ case 466:
+ #line 1631 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 2825 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2888 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 470:
- #line 1685 "dhcp4_parser.yy" // lalr1.cc:859
+ case 467:
+ #line 1634 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 2833 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2896 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 471:
- #line 1688 "dhcp4_parser.yy" // lalr1.cc:859
+ case 468:
+ #line 1637 "dhcp4_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 2841 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2904 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 472:
- #line 1691 "dhcp4_parser.yy" // lalr1.cc:859
+ case 469:
+ #line 1640 "dhcp4_parser.yy" // lalr1.cc:859
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 2850 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2913 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 473:
- #line 1697 "dhcp4_parser.yy" // lalr1.cc:859
+ case 470:
+ #line 1646 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2858 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2921 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 474:
- #line 1699 "dhcp4_parser.yy" // lalr1.cc:859
+ case 471:
+ #line 1648 "dhcp4_parser.yy" // lalr1.cc:859
{
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 2868 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2931 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 475:
- #line 1707 "dhcp4_parser.yy" // lalr1.cc:859
+ case 472:
+ #line 1656 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2876 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2939 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 476:
- #line 1709 "dhcp4_parser.yy" // lalr1.cc:859
+ case 473:
+ #line 1658 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2885 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2948 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 477:
- #line 1714 "dhcp4_parser.yy" // lalr1.cc:859
+ case 474:
+ #line 1663 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2893 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2956 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 478:
- #line 1716 "dhcp4_parser.yy" // lalr1.cc:859
+ case 475:
+ #line 1665 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2902 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2965 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 479:
- #line 1721 "dhcp4_parser.yy" // lalr1.cc:859
+ case 476:
+ #line 1670 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2910 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2973 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 480:
- #line 1723 "dhcp4_parser.yy" // lalr1.cc:859
+ case 477:
+ #line 1672 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2919 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2982 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 481:
- #line 1733 "dhcp4_parser.yy" // lalr1.cc:859
+ case 478:
+ #line 1682 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 2930 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2993 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 482:
- #line 1738 "dhcp4_parser.yy" // lalr1.cc:859
+ case 479:
+ #line 1687 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2939 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3002 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 486:
- #line 1755 "dhcp4_parser.yy" // lalr1.cc:859
+ case 483:
+ #line 1704 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 2950 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3013 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 487:
- #line 1760 "dhcp4_parser.yy" // lalr1.cc:859
+ case 484:
+ #line 1709 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2959 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3022 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 490:
- #line 1772 "dhcp4_parser.yy" // lalr1.cc:859
+ case 487:
+ #line 1721 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 2969 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3032 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 491:
- #line 1776 "dhcp4_parser.yy" // lalr1.cc:859
+ case 488:
+ #line 1725 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 2977 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3040 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 499:
- #line 1791 "dhcp4_parser.yy" // lalr1.cc:859
+ case 496:
+ #line 1740 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 2986 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3049 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 500:
- #line 1796 "dhcp4_parser.yy" // lalr1.cc:859
+ case 497:
+ #line 1745 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2994 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3057 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 501:
- #line 1798 "dhcp4_parser.yy" // lalr1.cc:859
+ case 498:
+ #line 1747 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3004 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3067 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 502:
- #line 1804 "dhcp4_parser.yy" // lalr1.cc:859
+ case 499:
+ #line 1753 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 3015 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3078 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 503:
- #line 1809 "dhcp4_parser.yy" // lalr1.cc:859
+ case 500:
+ #line 1758 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3024 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3087 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 506:
- #line 1818 "dhcp4_parser.yy" // lalr1.cc:859
+ case 503:
+ #line 1767 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3034 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3097 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 507:
- #line 1822 "dhcp4_parser.yy" // lalr1.cc:859
+ case 504:
+ #line 1771 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3042 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3105 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 514:
- #line 1836 "dhcp4_parser.yy" // lalr1.cc:859
+ case 511:
+ #line 1785 "dhcp4_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3050 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3113 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 515:
- #line 1838 "dhcp4_parser.yy" // lalr1.cc:859
+ case 512:
+ #line 1787 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3060 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3123 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 516:
- #line 1844 "dhcp4_parser.yy" // lalr1.cc:859
+ case 513:
+ #line 1793 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3069 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3132 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 517:
- #line 1849 "dhcp4_parser.yy" // lalr1.cc:859
+ case 514:
+ #line 1798 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3078 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3141 "dhcp4_parser.cc" // lalr1.cc:859
break;
- case 518:
- #line 1854 "dhcp4_parser.yy" // lalr1.cc:859
+ case 515:
+ #line 1803 "dhcp4_parser.yy" // lalr1.cc:859
{
ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
{
0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
- 0, 3, 0, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 4, 1, 0, 1, 3, 5, 0,
- 4, 0, 1, 1, 3, 0, 4, 0, 1, 1,
- 3, 2, 0, 4, 1, 3, 1, 1, 1, 1,
- 1, 1, 0, 6, 0, 4, 1, 3, 1, 1,
+ 0, 3, 0, 3, 0, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 0, 4, 1, 0, 1, 3,
+ 5, 0, 4, 0, 1, 1, 3, 0, 4, 0,
+ 1, 1, 3, 2, 0, 4, 1, 3, 1, 1,
+ 1, 1, 1, 1, 0, 6, 0, 4, 1, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 3, 3, 3, 3, 3, 0, 6, 1, 3, 1,
- 1, 1, 0, 4, 0, 4, 0, 4, 1, 1,
- 3, 0, 6, 0, 6, 1, 3, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 0, 4, 1, 1, 1, 1, 0, 4, 0, 4,
- 0, 4, 3, 0, 4, 3, 3, 3, 3, 0,
- 4, 0, 4, 0, 6, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 6, 0,
- 1, 1, 3, 0, 4, 0, 4, 1, 3, 1,
- 1, 1, 0, 4, 0, 4, 0, 6, 1, 3,
- 1, 1, 1, 1, 1, 1, 3, 3, 3, 3,
- 3, 3, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 1, 3, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 3, 3, 3, 0, 6, 1,
+ 3, 1, 1, 1, 0, 4, 0, 4, 0, 4,
+ 1, 1, 3, 0, 6, 0, 6, 1, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 4, 1, 1, 1, 1, 0, 4,
- 0, 4, 0, 4, 3, 0, 4, 3, 3, 3,
- 3, 0, 4, 0, 4, 0, 6, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 1, 1, 1, 1, 1, 0, 4, 0, 4, 0,
+ 4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
+ 4, 1, 1, 1, 3, 3, 0, 6, 0, 1,
+ 1, 3, 0, 4, 0, 4, 0, 1, 1, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 1, 0, 4, 0, 4, 0, 4, 1, 0, 4,
+ 3, 0, 6, 0, 1, 1, 3, 0, 4, 0,
+ 4, 0, 1, 1, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 4, 1, 1, 3, 3, 0,
6, 0, 1, 1, 3, 0, 4, 0, 4, 1,
- 3, 1, 1, 1, 0, 4, 0, 4, 0, 6,
- 1, 3, 1, 1, 1, 1, 1, 1, 3, 3,
- 3, 3, 3, 3, 0, 6, 0, 1, 1, 3,
- 0, 4, 0, 4, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 0, 4, 0, 4, 0,
+ 6, 0, 1, 1, 3, 0, 4, 0, 4, 0,
+ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 0, 4, 0, 4,
0, 4, 0, 4, 0, 4, 0, 4, 0, 4,
- 0, 4, 1, 1, 1, 3, 3, 0, 6, 0,
- 4, 0, 1, 1, 3, 0, 4, 0, 4, 0,
- 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 1, 0, 4, 0, 4, 0, 4,
- 1, 0, 4, 3, 0, 6, 0, 1, 1, 3,
- 0, 4, 0, 4, 0, 1, 1, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 0, 4, 1, 1,
- 3, 3, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 1, 3, 1, 1, 1, 1, 0, 4,
- 0, 4, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 0, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
- 4, 0, 6, 0, 4, 0, 6, 1, 3, 0,
- 4, 0, 1, 1, 3, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 4, 3, 0, 6, 1, 3,
- 1, 1, 0, 4, 0, 4, 0, 6, 0, 4,
+ 0, 4, 0, 4, 0, 4, 0, 4, 0, 6,
+ 0, 4, 0, 6, 1, 3, 0, 4, 0, 1,
1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 0, 4,
- 0, 4, 3, 0, 4, 3, 3, 0, 4, 1,
- 1, 0, 4, 3, 3, 3, 0, 4, 1, 1,
- 1, 1, 1, 0, 4, 0, 4, 0, 4, 0,
- 4, 0, 6, 1, 3, 1, 0, 6, 1, 3,
- 0, 4, 1, 3, 1, 1, 1, 1, 1, 3,
- 0, 4, 0, 6, 1, 3, 0, 4, 1, 3,
- 1, 1, 1, 1, 0, 4, 3, 3, 3
+ 0, 4, 3, 0, 6, 1, 3, 1, 1, 0,
+ 4, 0, 4, 0, 6, 0, 4, 1, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 0, 4, 0, 4, 3,
+ 0, 4, 3, 3, 0, 4, 1, 1, 0, 4,
+ 3, 3, 3, 0, 4, 1, 1, 1, 1, 1,
+ 0, 4, 0, 4, 0, 4, 0, 4, 0, 6,
+ 1, 3, 1, 0, 6, 1, 3, 0, 4, 1,
+ 3, 1, 1, 1, 1, 1, 3, 0, 4, 0,
+ 6, 1, 3, 0, 4, 1, 3, 1, 1, 1,
+ 1, 0, 4, 3, 3, 3
};
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1658 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1680 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 213:
-#line 862 "dhcp6_parser.yy" // lalr1.cc:859
+ case 215:
+#line 880 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // The subnet subnet6 parameter is required
+ ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
// parsing completed
}
-#line 1666 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1690 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 235:
- #line 911 "dhcp6_parser.yy" // lalr1.cc:859
+ case 234:
+ #line 892 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1674 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1698 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 236:
- #line 913 "dhcp6_parser.yy" // lalr1.cc:859
+ case 235:
+ #line 894 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("subnet", subnet);
ctx.leave();
}
-#line 1684 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1708 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 237:
- #line 919 "dhcp6_parser.yy" // lalr1.cc:859
+ case 236:
+ #line 900 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1716 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 238:
- #line 921 "dhcp6_parser.yy" // lalr1.cc:859
+ case 237:
+ #line 902 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface", iface);
ctx.leave();
}
-#line 1702 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1726 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 239:
- #line 927 "dhcp6_parser.yy" // lalr1.cc:859
+ case 238:
+ #line 908 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1734 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 240:
- #line 929 "dhcp6_parser.yy" // lalr1.cc:859
+ case 239:
+ #line 910 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("interface-id", iface);
ctx.leave();
}
-#line 1720 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1744 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 241:
- #line 935 "dhcp6_parser.yy" // lalr1.cc:859
+ case 240:
+ #line 916 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.CLIENT_CLASS);
}
-#line 1728 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1752 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 242:
- #line 937 "dhcp6_parser.yy" // lalr1.cc:859
+ case 241:
+ #line 918 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-class", cls);
ctx.leave();
}
-#line 1738 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1762 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 243:
- #line 943 "dhcp6_parser.yy" // lalr1.cc:859
+ case 242:
+ #line 924 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.RESERVATION_MODE);
}
-#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1770 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 244:
- #line 945 "dhcp6_parser.yy" // lalr1.cc:859
+ case 243:
+ #line 926 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 1755 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1779 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 245:
- #line 950 "dhcp6_parser.yy" // lalr1.cc:859
+ case 244:
+ #line 931 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 1761 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1785 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 246:
- #line 951 "dhcp6_parser.yy" // lalr1.cc:859
+ case 245:
+ #line 932 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 1767 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1791 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 247:
- #line 952 "dhcp6_parser.yy" // lalr1.cc:859
+ case 246:
+ #line 933 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 1773 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1797 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 248:
- #line 955 "dhcp6_parser.yy" // lalr1.cc:859
+ case 247:
+ #line 936 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("id", id);
}
-#line 1782 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1806 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 249:
- #line 960 "dhcp6_parser.yy" // lalr1.cc:859
+ case 248:
+ #line 941 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("rapid-commit", rc);
}
-#line 1791 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1815 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 250:
- #line 969 "dhcp6_parser.yy" // lalr1.cc:859
+ case 249:
+ #line 950 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-def", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DEF);
}
-#line 1802 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1826 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 251:
- #line 974 "dhcp6_parser.yy" // lalr1.cc:859
+ case 250:
+ #line 955 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1835 "dhcp6_parser.cc" // lalr1.cc:859
+ break;
+
+ case 252:
+#line 982 "dhcp6_parser.yy" // lalr1.cc:859
+ {
+ ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
+ ctx.stack_.push_back(m);
+}
+#line 1844 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 253:
- #line 985 "dhcp6_parser.yy" // lalr1.cc:859
- {
- // parsing completed
- }
- #line 1852 "dhcp6_parser.cc" // lalr1.cc:859
- break;
-
- case 258:
- #line 1001 "dhcp6_parser.yy" // lalr1.cc:859
+ case 255:
+ #line 972 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1862 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 259:
- #line 1005 "dhcp6_parser.yy" // lalr1.cc:859
+ case 256:
+ #line 976 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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("code", 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 1829 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1874 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 260:
- #line 1016 "dhcp6_parser.yy" // lalr1.cc:859
+ case 257:
+ #line 983 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the option-def list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1839 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1884 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 261:
- #line 1020 "dhcp6_parser.yy" // lalr1.cc:859
+ case 258:
+ #line 987 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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("code", 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 1847 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1896 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 275:
- #line 1050 "dhcp6_parser.yy" // lalr1.cc:859
+ case 272:
+ #line 1013 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("code", code);
}
-#line 1856 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1905 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 277:
- #line 1057 "dhcp6_parser.yy" // lalr1.cc:859
+ case 274:
+ #line 1020 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1864 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1913 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 278:
- #line 1059 "dhcp6_parser.yy" // lalr1.cc:859
+ case 275:
+ #line 1022 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("type", prf);
ctx.leave();
}
-#line 1874 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1923 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 279:
- #line 1065 "dhcp6_parser.yy" // lalr1.cc:859
+ case 276:
+ #line 1028 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1882 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1931 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 280:
- #line 1067 "dhcp6_parser.yy" // lalr1.cc:859
+ case 277:
+ #line 1030 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("record-types", rtypes);
ctx.leave();
}
-#line 1892 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1941 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 281:
- #line 1073 "dhcp6_parser.yy" // lalr1.cc:859
+ case 278:
+ #line 1036 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1900 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1949 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 282:
- #line 1075 "dhcp6_parser.yy" // lalr1.cc:859
+ case 279:
+ #line 1038 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("space", space);
ctx.leave();
}
-#line 1910 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1959 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 284:
- #line 1083 "dhcp6_parser.yy" // lalr1.cc:859
+ case 281:
+ #line 1046 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 1918 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1967 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 285:
- #line 1085 "dhcp6_parser.yy" // lalr1.cc:859
+ case 282:
+ #line 1048 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("encapsulate", encap);
ctx.leave();
}
-#line 1928 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1977 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 286:
- #line 1091 "dhcp6_parser.yy" // lalr1.cc:859
+ case 283:
+ #line 1054 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("array", array);
}
-#line 1937 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1986 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 287:
- #line 1100 "dhcp6_parser.yy" // lalr1.cc:859
+ case 284:
+ #line 1063 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("option-data", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OPTION_DATA);
}
-#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1997 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 288:
- #line 1105 "dhcp6_parser.yy" // lalr1.cc:859
+ case 285:
+ #line 1068 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2006 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 293:
- #line 1124 "dhcp6_parser.yy" // lalr1.cc:859
+ case 290:
+ #line 1087 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 1967 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2016 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 294:
- #line 1128 "dhcp6_parser.yy" // lalr1.cc:859
+ case 291:
+ #line 1091 "dhcp6_parser.yy" // lalr1.cc:859
{
+ /// @todo: the code or name parameters are required.
ctx.stack_.pop_back();
}
-#line 1975 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2025 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 295:
- #line 1136 "dhcp6_parser.yy" // lalr1.cc:859
+ case 292:
+ #line 1098 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the option-data list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 1985 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2035 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 296:
- #line 1140 "dhcp6_parser.yy" // lalr1.cc:859
+ case 293:
+ #line 1102 "dhcp6_parser.yy" // lalr1.cc:859
{
+ /// @todo: the code or name parameters are required.
// parsing completed
}
-#line 1993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2044 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 309:
- #line 1171 "dhcp6_parser.yy" // lalr1.cc:859
+ case 306:
+ #line 1132 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2001 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2052 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 310:
- #line 1173 "dhcp6_parser.yy" // lalr1.cc:859
+ case 307:
+ #line 1134 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("data", data);
ctx.leave();
}
-#line 2011 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2062 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 313:
- #line 1183 "dhcp6_parser.yy" // lalr1.cc:859
+ case 310:
+ #line 1144 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("csv-format", space);
}
-#line 2020 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2071 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 314:
- #line 1188 "dhcp6_parser.yy" // lalr1.cc:859
+ case 311:
+ #line 1149 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-send", persist);
}
-#line 2029 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2080 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 315:
- #line 1196 "dhcp6_parser.yy" // lalr1.cc:859
+ case 312:
+ #line 1157 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.POOLS);
}
-#line 2040 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2091 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 316:
- #line 1201 "dhcp6_parser.yy" // lalr1.cc:859
+ case 313:
+ #line 1162 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2049 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2100 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 321:
- #line 1216 "dhcp6_parser.yy" // lalr1.cc:859
+ case 318:
+ #line 1177 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2059 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2110 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 322:
- #line 1220 "dhcp6_parser.yy" // lalr1.cc:859
+ case 319:
+ #line 1181 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // The pool parameter is required.
+ ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
ctx.stack_.pop_back();
}
-#line 2067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2120 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 323:
- #line 1226 "dhcp6_parser.yy" // lalr1.cc:859
+ case 320:
+ #line 1185 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2130 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 324:
- #line 1230 "dhcp6_parser.yy" // lalr1.cc:859
+ case 321:
+ #line 1189 "dhcp6_parser.yy" // lalr1.cc:859
{
- // parsing completed
+ // The pool parameter is required.
+ ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
}
-#line 2085 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2139 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 331:
- #line 1245 "dhcp6_parser.yy" // lalr1.cc:859
+ case 328:
+ #line 1203 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2093 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2147 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 332:
- #line 1247 "dhcp6_parser.yy" // lalr1.cc:859
+ case 329:
+ #line 1205 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pool", pool);
ctx.leave();
}
-#line 2103 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2157 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 333:
- #line 1253 "dhcp6_parser.yy" // lalr1.cc:859
+ case 330:
+ #line 1211 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2111 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2165 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 334:
- #line 1255 "dhcp6_parser.yy" // lalr1.cc:859
+ case 331:
+ #line 1213 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("user-context", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2120 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2174 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 335:
- #line 1263 "dhcp6_parser.yy" // lalr1.cc:859
+ case 332:
+ #line 1221 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pd-pools", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.PD_POOLS);
}
-#line 2131 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2185 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 336:
- #line 1268 "dhcp6_parser.yy" // lalr1.cc:859
+ case 333:
+ #line 1226 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2140 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 341:
- #line 1283 "dhcp6_parser.yy" // lalr1.cc:859
+ case 338:
+ #line 1241 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2150 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2204 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 342:
- #line 1287 "dhcp6_parser.yy" // lalr1.cc:859
+ case 339:
+ #line 1245 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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("prefix-len", 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 2158 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2216 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 343:
- #line 1295 "dhcp6_parser.yy" // lalr1.cc:859
+ case 340:
+ #line 1249 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the pd-pool list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2168 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2226 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 344:
- #line 1299 "dhcp6_parser.yy" // lalr1.cc:859
+ case 341:
+ #line 1253 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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("prefix-len", 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 2176 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2238 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 355:
- #line 1321 "dhcp6_parser.yy" // lalr1.cc:859
+ case 352:
+ #line 1271 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2184 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2246 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 356:
- #line 1323 "dhcp6_parser.yy" // lalr1.cc:859
+ case 353:
+ #line 1273 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix", prf);
ctx.leave();
}
-#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2256 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 357:
- #line 1329 "dhcp6_parser.yy" // lalr1.cc:859
+ case 354:
+ #line 1279 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefix-len", prf);
}
-#line 2203 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2265 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 358:
- #line 1334 "dhcp6_parser.yy" // lalr1.cc:859
+ case 355:
+ #line 1284 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2211 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2273 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 359:
- #line 1336 "dhcp6_parser.yy" // lalr1.cc:859
+ case 356:
+ #line 1286 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix", prf);
ctx.leave();
}
-#line 2221 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2283 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 360:
- #line 1342 "dhcp6_parser.yy" // lalr1.cc:859
+ case 357:
+ #line 1292 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("excluded-prefix-len", prf);
}
-#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2292 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 361:
- #line 1347 "dhcp6_parser.yy" // lalr1.cc:859
+ case 358:
+ #line 1297 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("delegated-len", deleg);
}
-#line 2239 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2301 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 362:
- #line 1355 "dhcp6_parser.yy" // lalr1.cc:859
+ case 359:
+ #line 1305 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("reservations", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.RESERVATIONS);
}
-#line 2250 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2312 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 363:
- #line 1360 "dhcp6_parser.yy" // lalr1.cc:859
+ case 360:
+ #line 1310 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2259 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2321 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 368:
- #line 1373 "dhcp6_parser.yy" // lalr1.cc:859
+ case 365:
+ #line 1323 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2269 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2331 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 369:
- #line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+ case 366:
+ #line 1327 "dhcp6_parser.yy" // lalr1.cc:859
{
+ /// @todo: an identifier parameter is required.
ctx.stack_.pop_back();
}
-#line 2277 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2340 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 370:
- #line 1382 "dhcp6_parser.yy" // lalr1.cc:859
+ case 367:
+ #line 1331 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the reservations list entry map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2287 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2350 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 371:
- #line 1386 "dhcp6_parser.yy" // lalr1.cc:859
+ case 368:
+ #line 1335 "dhcp6_parser.yy" // lalr1.cc:859
{
+ /// @todo: an identifier parameter is required.
// parsing completed
}
-#line 2295 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2359 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 385:
- #line 1411 "dhcp6_parser.yy" // lalr1.cc:859
+ case 382:
+ #line 1359 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-addresses", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2306 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2370 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 386:
- #line 1416 "dhcp6_parser.yy" // lalr1.cc:859
+ case 383:
+ #line 1364 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2315 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2379 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 387:
- #line 1421 "dhcp6_parser.yy" // lalr1.cc:859
+ case 384:
+ #line 1369 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("prefixes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2326 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2390 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 388:
- #line 1426 "dhcp6_parser.yy" // lalr1.cc:859
+ case 385:
+ #line 1374 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2335 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2399 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 389:
- #line 1431 "dhcp6_parser.yy" // lalr1.cc:859
+ case 386:
+ #line 1379 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2343 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2407 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 390:
- #line 1433 "dhcp6_parser.yy" // lalr1.cc:859
+ case 387:
+ #line 1381 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("duid", d);
ctx.leave();
}
-#line 2353 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2417 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 391:
- #line 1439 "dhcp6_parser.yy" // lalr1.cc:859
+ case 388:
+ #line 1387 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2361 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2425 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 392:
- #line 1441 "dhcp6_parser.yy" // lalr1.cc:859
+ case 389:
+ #line 1389 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hw-address", hw);
ctx.leave();
}
-#line 2371 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2435 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 393:
- #line 1447 "dhcp6_parser.yy" // lalr1.cc:859
+ case 390:
+ #line 1395 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2379 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2443 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 394:
- #line 1449 "dhcp6_parser.yy" // lalr1.cc:859
+ case 391:
+ #line 1397 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname", host);
ctx.leave();
}
-#line 2389 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2453 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 395:
- #line 1455 "dhcp6_parser.yy" // lalr1.cc:859
+ case 392:
+ #line 1403 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2397 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2461 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 396:
- #line 1457 "dhcp6_parser.yy" // lalr1.cc:859
+ case 393:
+ #line 1405 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flex-id", hw);
ctx.leave();
}
-#line 2407 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2471 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 397:
- #line 1463 "dhcp6_parser.yy" // lalr1.cc:859
+ case 394:
+ #line 1411 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", c);
ctx.stack_.push_back(c);
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2418 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2482 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 398:
- #line 1468 "dhcp6_parser.yy" // lalr1.cc:859
+ case 395:
+ #line 1416 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2427 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2491 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 399:
- #line 1476 "dhcp6_parser.yy" // lalr1.cc:859
+ case 396:
+ #line 1424 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("relay", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.RELAY);
}
-#line 2438 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2502 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 400:
- #line 1481 "dhcp6_parser.yy" // lalr1.cc:859
+ case 397:
+ #line 1429 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2447 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2511 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 401:
- #line 1486 "dhcp6_parser.yy" // lalr1.cc:859
+ case 398:
+ #line 1434 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2455 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2519 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 402:
- #line 1488 "dhcp6_parser.yy" // lalr1.cc:859
+ case 399:
+ #line 1436 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ip-address", ip);
ctx.leave();
}
-#line 2465 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2529 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 403:
- #line 1497 "dhcp6_parser.yy" // lalr1.cc:859
+ case 400:
+ #line 1445 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("client-classes", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.CLIENT_CLASSES);
}
-#line 2476 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2540 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 404:
- #line 1502 "dhcp6_parser.yy" // lalr1.cc:859
+ case 401:
+ #line 1450 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2485 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 407:
- #line 1511 "dhcp6_parser.yy" // lalr1.cc:859
+ case 404:
+ #line 1459 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 2495 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 408:
- #line 1515 "dhcp6_parser.yy" // lalr1.cc:859
+ case 405:
+ #line 1463 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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 2503 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2569 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 418:
- #line 1537 "dhcp6_parser.yy" // lalr1.cc:859
+ case 415:
+ #line 1483 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2511 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2577 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 419:
- #line 1539 "dhcp6_parser.yy" // lalr1.cc:859
+ case 416:
+ #line 1485 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("test", test);
ctx.leave();
}
-#line 2521 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2587 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 420:
- #line 1548 "dhcp6_parser.yy" // lalr1.cc:859
+ case 417:
+ #line 1494 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-id", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.SERVER_ID);
}
-#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2598 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 421:
- #line 1553 "dhcp6_parser.yy" // lalr1.cc:859
+ case 418:
+ #line 1499 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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 2541 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2609 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 431:
- #line 1573 "dhcp6_parser.yy" // lalr1.cc:859
+ case 428:
+ #line 1517 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.DUID_TYPE);
}
-#line 2549 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2617 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 432:
- #line 1575 "dhcp6_parser.yy" // lalr1.cc:859
+ case 429:
+ #line 1519 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2558 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2626 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 433:
- #line 1580 "dhcp6_parser.yy" // lalr1.cc:859
+ case 430:
+ #line 1524 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2564 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2632 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 434:
- #line 1581 "dhcp6_parser.yy" // lalr1.cc:859
+ case 431:
+ #line 1525 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2570 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2638 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 435:
- #line 1582 "dhcp6_parser.yy" // lalr1.cc:859
+ case 432:
+ #line 1526 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2576 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2644 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 436:
- #line 1585 "dhcp6_parser.yy" // lalr1.cc:859
+ case 433:
+ #line 1529 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("htype", htype);
}
-#line 2585 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2653 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 437:
- #line 1590 "dhcp6_parser.yy" // lalr1.cc:859
+ case 434:
+ #line 1534 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2593 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2661 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 438:
- #line 1592 "dhcp6_parser.yy" // lalr1.cc:859
+ case 435:
+ #line 1536 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("identifier", id);
ctx.leave();
}
-#line 2603 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2671 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 439:
- #line 1598 "dhcp6_parser.yy" // lalr1.cc:859
+ case 436:
+ #line 1542 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("time", time);
}
-#line 2612 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2680 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 440:
- #line 1603 "dhcp6_parser.yy" // lalr1.cc:859
+ case 437:
+ #line 1547 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enterprise-id", time);
}
-#line 2621 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2689 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 441:
- #line 1610 "dhcp6_parser.yy" // lalr1.cc:859
+ case 438:
+ #line 1554 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp4o6-port", time);
}
-#line 2630 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2698 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 442:
- #line 1617 "dhcp6_parser.yy" // lalr1.cc:859
+ case 439:
+ #line 1561 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("control-socket", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.CONTROL_SOCKET);
}
-#line 2641 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2709 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 443:
- #line 1622 "dhcp6_parser.yy" // lalr1.cc:859
+ case 440:
+ #line 1566 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 2650 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2718 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 448:
- #line 1635 "dhcp6_parser.yy" // lalr1.cc:859
+ case 445:
+ #line 1579 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2658 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2726 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 449:
- #line 1637 "dhcp6_parser.yy" // lalr1.cc:859
+ case 446:
+ #line 1581 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-type", stype);
ctx.leave();
}
-#line 2668 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2736 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 450:
- #line 1643 "dhcp6_parser.yy" // lalr1.cc:859
+ case 447:
+ #line 1587 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2676 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2744 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 451:
- #line 1645 "dhcp6_parser.yy" // lalr1.cc:859
+ case 448:
+ #line 1589 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("socket-name", name);
ctx.leave();
}
-#line 2686 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2754 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 452:
- #line 1653 "dhcp6_parser.yy" // lalr1.cc:859
+ case 449:
+ #line 1597 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("dhcp-ddns", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.DHCP_DDNS);
}
-#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2765 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 453:
- #line 1658 "dhcp6_parser.yy" // lalr1.cc:859
+ case 450:
+ #line 1602 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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 2706 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2776 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 454:
- #line 1665 "dhcp6_parser.yy" // lalr1.cc:859
+ case 451:
+ #line 1607 "dhcp6_parser.yy" // lalr1.cc:859
{
// Parse the dhcp-ddns map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.push_back(m);
}
-#line 2716 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2786 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 455:
- #line 1669 "dhcp6_parser.yy" // lalr1.cc:859
+ case 452:
+ #line 1611 "dhcp6_parser.yy" // lalr1.cc:859
{
+ // 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 2724 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2796 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 473:
- #line 1696 "dhcp6_parser.yy" // lalr1.cc:859
+ case 470:
+ #line 1636 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("enable-updates", b);
}
-#line 2733 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2805 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 474:
- #line 1701 "dhcp6_parser.yy" // lalr1.cc:859
+ case 471:
+ #line 1641 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2741 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2813 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 475:
- #line 1703 "dhcp6_parser.yy" // lalr1.cc:859
+ case 472:
+ #line 1643 "dhcp6_parser.yy" // lalr1.cc:859
{
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 2751 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2823 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 476:
- #line 1709 "dhcp6_parser.yy" // lalr1.cc:859
+ case 473:
+ #line 1649 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2759 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2831 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 477:
- #line 1711 "dhcp6_parser.yy" // lalr1.cc:859
+ case 474:
+ #line 1651 "dhcp6_parser.yy" // lalr1.cc:859
{
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 2769 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2841 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 478:
- #line 1717 "dhcp6_parser.yy" // lalr1.cc:859
+ case 475:
+ #line 1657 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
}
-#line 2778 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2850 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 479:
- #line 1722 "dhcp6_parser.yy" // lalr1.cc:859
+ case 476:
+ #line 1662 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2786 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2858 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 480:
- #line 1724 "dhcp6_parser.yy" // lalr1.cc:859
+ case 477:
+ #line 1664 "dhcp6_parser.yy" // lalr1.cc:859
{
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 2796 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2868 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 481:
- #line 1730 "dhcp6_parser.yy" // lalr1.cc:859
+ case 478:
+ #line 1670 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
}
-#line 2805 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2877 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 482:
- #line 1735 "dhcp6_parser.yy" // lalr1.cc:859
+ case 479:
+ #line 1675 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
}
-#line 2814 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2886 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 483:
- #line 1740 "dhcp6_parser.yy" // lalr1.cc:859
+ case 480:
+ #line 1680 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_PROTOCOL);
}
-#line 2822 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2894 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 484:
- #line 1742 "dhcp6_parser.yy" // lalr1.cc:859
+ case 481:
+ #line 1682 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2831 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2903 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 485:
- #line 1748 "dhcp6_parser.yy" // lalr1.cc:859
+ case 482:
+ #line 1688 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2837 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2909 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 486:
- #line 1749 "dhcp6_parser.yy" // lalr1.cc:859
+ case 483:
+ #line 1689 "dhcp6_parser.yy" // lalr1.cc:859
{ yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2843 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2915 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 487:
- #line 1752 "dhcp6_parser.yy" // lalr1.cc:859
+ case 484:
+ #line 1692 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NCR_FORMAT);
}
-#line 2851 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2923 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 488:
- #line 1754 "dhcp6_parser.yy" // lalr1.cc:859
+ case 485:
+ #line 1694 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
ctx.leave();
}
-#line 2861 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2933 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 489:
- #line 1760 "dhcp6_parser.yy" // lalr1.cc:859
+ case 486:
+ #line 1700 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("always-include-fqdn", b);
}
-#line 2870 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2942 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 490:
- #line 1765 "dhcp6_parser.yy" // lalr1.cc:859
+ case 487:
+ #line 1705 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
}
-#line 2879 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2951 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 491:
- #line 1770 "dhcp6_parser.yy" // lalr1.cc:859
+ case 488:
+ #line 1710 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
}
-#line 2888 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2960 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 492:
- #line 1775 "dhcp6_parser.yy" // lalr1.cc:859
+ case 489:
+ #line 1715 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
-#line 2896 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2968 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 493:
- #line 1777 "dhcp6_parser.yy" // lalr1.cc:859
+ case 490:
+ #line 1717 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2905 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2977 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 494:
- #line 1783 "dhcp6_parser.yy" // lalr1.cc:859
+ case 491:
+ #line 1723 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 2913 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2985 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 495:
- #line 1786 "dhcp6_parser.yy" // lalr1.cc:859
+ case 492:
+ #line 1726 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
}
-#line 2921 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 496:
- #line 1789 "dhcp6_parser.yy" // lalr1.cc:859
+ case 493:
+ #line 1729 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
}
-#line 2929 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3001 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 497:
- #line 1792 "dhcp6_parser.yy" // lalr1.cc:859
+ case 494:
+ #line 1732 "dhcp6_parser.yy" // lalr1.cc:859
{
yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
}
-#line 2937 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3009 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 498:
- #line 1795 "dhcp6_parser.yy" // lalr1.cc:859
+ case 495:
+ #line 1735 "dhcp6_parser.yy" // lalr1.cc:859
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
"no longer supported");
}
-#line 2946 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3018 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 499:
- #line 1801 "dhcp6_parser.yy" // lalr1.cc:859
+ case 496:
+ #line 1741 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2954 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3026 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 500:
- #line 1803 "dhcp6_parser.yy" // lalr1.cc:859
+ case 497:
+ #line 1743 "dhcp6_parser.yy" // lalr1.cc:859
{
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 2964 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3036 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 501:
- #line 1811 "dhcp6_parser.yy" // lalr1.cc:859
+ case 498:
+ #line 1751 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2972 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3044 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 502:
- #line 1813 "dhcp6_parser.yy" // lalr1.cc:859
+ case 499:
+ #line 1753 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2981 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3053 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 503:
- #line 1818 "dhcp6_parser.yy" // lalr1.cc:859
+ case 500:
+ #line 1758 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 2989 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3061 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 504:
- #line 1820 "dhcp6_parser.yy" // lalr1.cc:859
+ case 501:
+ #line 1760 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 2998 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3070 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 505:
- #line 1825 "dhcp6_parser.yy" // lalr1.cc:859
+ case 502:
+ #line 1765 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3006 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3078 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 506:
- #line 1827 "dhcp6_parser.yy" // lalr1.cc:859
+ case 503:
+ #line 1767 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
ctx.leave();
}
-#line 3015 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3087 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 507:
- #line 1838 "dhcp6_parser.yy" // lalr1.cc:859
+ case 504:
+ #line 1778 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("Logging", m);
ctx.stack_.push_back(m);
ctx.enter(ctx.LOGGING);
}
-#line 3026 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3098 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 508:
- #line 1843 "dhcp6_parser.yy" // lalr1.cc:859
+ case 505:
+ #line 1783 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3035 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3107 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 512:
- #line 1860 "dhcp6_parser.yy" // lalr1.cc:859
+ case 509:
+ #line 1800 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.LOGGERS);
}
-#line 3046 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3118 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 513:
- #line 1865 "dhcp6_parser.yy" // lalr1.cc:859
+ case 510:
+ #line 1805 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3055 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3127 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 516:
- #line 1877 "dhcp6_parser.yy" // lalr1.cc:859
+ case 513:
+ #line 1817 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
ctx.stack_.push_back(l);
}
-#line 3065 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3137 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 517:
- #line 1881 "dhcp6_parser.yy" // lalr1.cc:859
+ case 514:
+ #line 1821 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3073 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3145 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 525:
- #line 1896 "dhcp6_parser.yy" // lalr1.cc:859
+ case 522:
+ #line 1836 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
}
-#line 3082 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3154 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 526:
- #line 1901 "dhcp6_parser.yy" // lalr1.cc:859
+ case 523:
+ #line 1841 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3090 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3162 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 527:
- #line 1903 "dhcp6_parser.yy" // lalr1.cc:859
+ case 524:
+ #line 1843 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
ctx.leave();
}
-#line 3100 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3172 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 528:
- #line 1909 "dhcp6_parser.yy" // lalr1.cc:859
+ case 525:
+ #line 1849 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
ctx.stack_.push_back(l);
ctx.enter(ctx.OUTPUT_OPTIONS);
}
-#line 3111 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3183 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 529:
- #line 1914 "dhcp6_parser.yy" // lalr1.cc:859
+ case 526:
+ #line 1854 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
ctx.leave();
}
-#line 3120 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3192 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 532:
- #line 1923 "dhcp6_parser.yy" // lalr1.cc:859
+ case 529:
+ #line 1863 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
ctx.stack_.push_back(m);
}
-#line 3130 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3202 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 533:
- #line 1927 "dhcp6_parser.yy" // lalr1.cc:859
+ case 530:
+ #line 1867 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.stack_.pop_back();
}
-#line 3138 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3210 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 540:
- #line 1941 "dhcp6_parser.yy" // lalr1.cc:859
+ case 537:
+ #line 1881 "dhcp6_parser.yy" // lalr1.cc:859
{
ctx.enter(ctx.NO_KEYWORD);
}
-#line 3146 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3218 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 541:
- #line 1943 "dhcp6_parser.yy" // lalr1.cc:859
+ case 538:
+ #line 1883 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
ctx.leave();
}
-#line 3156 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3228 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 542:
- #line 1949 "dhcp6_parser.yy" // lalr1.cc:859
+ case 539:
+ #line 1889 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
}
-#line 3165 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3237 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 543:
- #line 1954 "dhcp6_parser.yy" // lalr1.cc:859
+ case 540:
+ #line 1894 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
}
-#line 3174 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3246 "dhcp6_parser.cc" // lalr1.cc:859
break;
- case 544:
- #line 1959 "dhcp6_parser.yy" // lalr1.cc:859
+ case 541:
+ #line 1899 "dhcp6_parser.yy" // lalr1.cc:859
{
ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
{
0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
- 0, 3, 0, 3, 0, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 0, 4, 1, 0, 1, 3,
- 5, 0, 4, 0, 1, 1, 3, 0, 4, 0,
- 1, 1, 3, 2, 0, 4, 1, 3, 1, 1,
- 1, 1, 1, 1, 0, 6, 0, 4, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 3, 0, 3, 0, 3, 0, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 4, 1, 0,
+ 1, 3, 5, 0, 4, 0, 1, 1, 3, 0,
+ 4, 0, 1, 1, 3, 2, 0, 4, 1, 3,
+ 1, 1, 1, 1, 1, 1, 0, 6, 0, 4,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 3, 3, 3, 3, 3, 0, 6, 0,
- 4, 1, 3, 1, 1, 0, 4, 3, 0, 6,
+ 1, 1, 1, 1, 3, 3, 3, 3, 3, 0,
+ 6, 0, 4, 1, 3, 1, 1, 0, 4, 3,
+ 0, 6, 0, 6, 1, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 4, 1, 1, 1, 1, 0, 4, 0, 4, 0,
+ 4, 3, 0, 4, 3, 3, 3, 3, 0, 4,
+ 0, 4, 0, 6, 1, 3, 1, 1, 1, 1,
+ 0, 6, 1, 3, 1, 1, 1, 1, 1, 0,
+ 6, 0, 6, 0, 1, 1, 3, 0, 4, 0,
+ 4, 1, 3, 1, 1, 1, 0, 4, 0, 4,
0, 6, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 4, 1,
- 1, 1, 1, 0, 4, 0, 4, 0, 4, 3,
- 0, 4, 3, 3, 3, 3, 0, 4, 0, 4,
- 0, 6, 1, 3, 1, 1, 1, 1, 0, 6,
- 1, 3, 1, 1, 1, 1, 1, 0, 6, 0,
- 6, 0, 1, 1, 3, 0, 4, 0, 4, 1,
- 3, 1, 1, 1, 0, 4, 0, 4, 0, 6,
- 1, 3, 1, 1, 1, 1, 1, 1, 3, 3,
- 3, 3, 3, 3, 0, 6, 0, 1, 1, 3,
- 0, 4, 0, 4, 1, 3, 1, 1, 1, 1,
+ 3, 3, 3, 3, 3, 3, 0, 6, 0, 1,
+ 1, 3, 0, 4, 0, 4, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 4, 1, 1, 1, 3, 3,
- 0, 6, 0, 4, 0, 1, 1, 3, 0, 4,
- 0, 4, 0, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 1, 0, 4, 0,
- 4, 0, 4, 1, 0, 4, 3, 0, 6, 0,
- 1, 1, 3, 0, 4, 0, 4, 0, 1, 1,
- 3, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 4, 1, 1, 3, 3, 0, 6, 0, 1, 1,
- 3, 0, 4, 0, 4, 1, 3, 1, 1, 1,
- 1, 0, 4, 0, 4, 0, 6, 0, 1, 1,
- 3, 0, 4, 0, 4, 1, 3, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 4, 3, 0, 4,
+ 1, 1, 1, 1, 0, 4, 0, 4, 0, 4,
+ 0, 4, 0, 4, 1, 1, 1, 3, 3, 0,
+ 6, 0, 1, 1, 3, 0, 4, 0, 4, 0,
+ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 3, 1, 0, 4, 0, 4, 0, 4,
+ 1, 0, 4, 3, 0, 6, 0, 1, 1, 3,
+ 0, 4, 0, 4, 0, 1, 1, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 4, 1, 1,
3, 3, 0, 6, 0, 1, 1, 3, 0, 4,
- 0, 4, 0, 1, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 4, 0, 4, 0,
- 4, 0, 4, 0, 4, 0, 4, 0, 4, 0,
- 6, 0, 4, 0, 6, 1, 3, 0, 4, 0,
- 1, 1, 3, 1, 1, 1, 1, 1, 0, 4,
- 0, 6, 1, 3, 1, 1, 1, 1, 1, 1,
- 1, 0, 4, 1, 1, 1, 3, 0, 4, 3,
- 3, 3, 0, 6, 1, 3, 1, 1, 0, 4,
- 0, 4, 0, 6, 0, 4, 1, 3, 1, 1,
+ 0, 4, 1, 3, 1, 1, 1, 1, 0, 4,
+ 0, 4, 0, 6, 0, 1, 1, 3, 0, 4,
+ 0, 4, 1, 3, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 4, 3, 0, 4, 3, 3, 0,
+ 6, 0, 1, 1, 3, 0, 4, 0, 4, 0,
+ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 4, 0, 4, 0, 4, 0, 4,
+ 0, 4, 0, 4, 0, 4, 0, 6, 0, 4,
+ 0, 6, 1, 3, 0, 4, 0, 1, 1, 3,
+ 1, 1, 1, 1, 1, 0, 4, 0, 6, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 0, 4,
+ 1, 1, 1, 3, 0, 4, 3, 3, 3, 0,
+ 6, 1, 3, 1, 1, 0, 4, 0, 4, 0,
+ 6, 0, 4, 1, 3, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 0, 4, 0, 4, 3, 0,
- 4, 3, 3, 0, 4, 1, 1, 0, 4, 3,
- 3, 3, 0, 4, 1, 1, 1, 1, 1, 0,
- 4, 0, 4, 0, 4, 0, 4, 0, 6, 1,
- 3, 1, 0, 6, 1, 3, 0, 4, 1, 3,
- 1, 1, 1, 1, 1, 3, 0, 4, 0, 6,
- 1, 3, 0, 4, 1, 3, 1, 1, 1, 1,
- 0, 4, 3, 3, 3
+ 3, 0, 4, 0, 4, 3, 0, 4, 3, 3,
+ 0, 4, 1, 1, 0, 4, 3, 3, 3, 0,
+ 4, 1, 1, 1, 1, 1, 0, 4, 0, 4,
+ 0, 4, 0, 4, 0, 6, 1, 3, 1, 0,
+ 6, 1, 3, 0, 4, 1, 3, 1, 1, 1,
+ 1, 1, 3, 0, 4, 0, 6, 1, 3, 0,
+ 4, 1, 3, 1, 1, 1, 1, 0, 4, 3,
+ 3, 3
};