-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
{
switch (that.kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
break;
{
switch (that.kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (YY_MOVE (that.value));
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (that.value));
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (that.value));
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (that.value));
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (that.value));
break;
state = that.state;
switch (that.kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.copy< ElementPtr > (that.value);
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (that.value);
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (that.value);
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (that.value);
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (that.value);
break;
state = that.state;
switch (that.kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (that.value);
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (that.value);
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (that.value);
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (that.value);
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (that.value);
break;
<< yysym.location << ": ";
switch (yykind)
{
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 384 "agent_parser.cc"
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
#line 390 "agent_parser.cc"
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
#line 396 "agent_parser.cc"
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
#line 402 "agent_parser.cc"
break;
- case 50: // value
+ case symbol_kind::S_value: // value
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 408 "agent_parser.cc"
break;
- case 53: // map_value
+ case symbol_kind::S_map_value: // map_value
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 414 "agent_parser.cc"
break;
- case 104: // socket_type_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
#line 99 "agent_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 420 "agent_parser.cc"
when using variants. */
switch (yyr1_[yyn])
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
yylhs.value.emplace< ElementPtr > ();
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
yylhs.value.emplace< bool > ();
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
yylhs.value.emplace< double > ();
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
yylhs.value.emplace< int64_t > ();
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
yylhs.value.emplace< std::string > ();
break;
{
switch (yyn)
{
- case 2:
+ case 2: // $@1: %empty
#line 110 "agent_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORDS; }
#line 695 "agent_parser.cc"
break;
- case 4:
+ case 4: // $@2: %empty
#line 111 "agent_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
#line 701 "agent_parser.cc"
break;
- case 6:
+ case 6: // $@3: %empty
#line 112 "agent_parser.yy"
{ ctx.ctx_ = ctx.AGENT; }
#line 707 "agent_parser.cc"
break;
- case 8:
+ case 8: // $@4: %empty
#line 120 "agent_parser.yy"
{
// Parse the Control-agent map
#line 717 "agent_parser.cc"
break;
- case 9:
+ case 9: // sub_agent: "{" $@4 global_params "}"
#line 124 "agent_parser.yy"
{
// parsing completed
#line 725 "agent_parser.cc"
break;
- case 10:
+ case 10: // json: value
#line 131 "agent_parser.yy"
{
// Push back the JSON value on the stack
#line 734 "agent_parser.cc"
break;
- case 11:
+ case 11: // value: "integer"
#line 137 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
#line 740 "agent_parser.cc"
break;
- case 12:
+ case 12: // value: "floating point"
#line 138 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
#line 746 "agent_parser.cc"
break;
- case 13:
+ case 13: // value: "boolean"
#line 139 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
#line 752 "agent_parser.cc"
break;
- case 14:
+ case 14: // value: "constant string"
#line 140 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
#line 758 "agent_parser.cc"
break;
- case 15:
+ case 15: // value: "null"
#line 141 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
#line 764 "agent_parser.cc"
break;
- case 16:
+ case 16: // value: map
#line 142 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 770 "agent_parser.cc"
break;
- case 17:
+ case 17: // value: list_generic
#line 143 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 776 "agent_parser.cc"
break;
- case 18:
+ case 18: // $@5: %empty
#line 147 "agent_parser.yy"
{
// This code is executed when we're about to start parsing
#line 787 "agent_parser.cc"
break;
- case 19:
+ case 19: // map: "{" $@5 map_content "}"
#line 152 "agent_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 797 "agent_parser.cc"
break;
- case 20:
+ case 20: // map_value: map
#line 158 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 803 "agent_parser.cc"
break;
- case 23:
+ case 23: // not_empty_map: "constant string" ":" value
#line 172 "agent_parser.yy"
{
// map containing a single entry
#line 812 "agent_parser.cc"
break;
- case 24:
+ case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
#line 176 "agent_parser.yy"
{
// map consisting of a shorter map followed by
#line 822 "agent_parser.cc"
break;
- case 25:
+ case 25: // $@6: %empty
#line 183 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 831 "agent_parser.cc"
break;
- case 26:
+ case 26: // list_generic: "[" $@6 list_content "]"
#line 186 "agent_parser.yy"
{
}
#line 838 "agent_parser.cc"
break;
- case 29:
+ case 29: // not_empty_list: value
#line 193 "agent_parser.yy"
{
// List consisting of a single element.
#line 847 "agent_parser.cc"
break;
- case 30:
+ case 30: // not_empty_list: not_empty_list "," value
#line 197 "agent_parser.yy"
{
// List ending with , and a value.
#line 856 "agent_parser.cc"
break;
- case 31:
+ case 31: // unknown_map_entry: "constant string" ":"
#line 210 "agent_parser.yy"
{
const std::string& where = ctx.contextName();
#line 867 "agent_parser.cc"
break;
- case 32:
+ case 32: // $@7: %empty
#line 218 "agent_parser.yy"
{
// This code is executed when we're about to start parsing
#line 878 "agent_parser.cc"
break;
- case 33:
+ case 33: // agent_syntax_map: "{" $@7 global_objects "}"
#line 223 "agent_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 888 "agent_parser.cc"
break;
- case 36:
+ case 36: // $@8: %empty
#line 238 "agent_parser.yy"
{
#line 904 "agent_parser.cc"
break;
- case 37:
+ case 37: // agent_object: "Control-agent" $@8 ":" "{" global_params "}"
#line 248 "agent_parser.yy"
{
// Ok, we're done with parsing control-agent. Let's take the map
#line 915 "agent_parser.cc"
break;
- case 48:
+ case 48: // $@9: %empty
#line 271 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 923 "agent_parser.cc"
break;
- case 49:
+ case 49: // http_host: "http-host" $@9 ":" "constant string"
#line 273 "agent_parser.yy"
{
ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 933 "agent_parser.cc"
break;
- case 50:
+ case 50: // http_port: "http-port" ":" "integer"
#line 279 "agent_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 942 "agent_parser.cc"
break;
- case 51:
+ case 51: // $@10: %empty
#line 284 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 950 "agent_parser.cc"
break;
- case 52:
+ case 52: // user_context: "user-context" $@10 ":" map_value
#line 286 "agent_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 977 "agent_parser.cc"
break;
- case 53:
+ case 53: // $@11: %empty
#line 309 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 985 "agent_parser.cc"
break;
- case 54:
+ case 54: // comment: "comment" $@11 ":" "constant string"
#line 311 "agent_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 1014 "agent_parser.cc"
break;
- case 55:
+ case 55: // $@12: %empty
#line 337 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1025 "agent_parser.cc"
break;
- case 56:
+ case 56: // hooks_libraries: "hooks-libraries" $@12 ":" "[" hooks_libraries_list "]"
#line 342 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1034 "agent_parser.cc"
break;
- case 61:
+ case 61: // $@13: %empty
#line 355 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1044 "agent_parser.cc"
break;
- case 62:
+ case 62: // hooks_library: "{" $@13 hooks_params "}"
#line 359 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1052 "agent_parser.cc"
break;
- case 68:
+ case 68: // $@14: %empty
#line 372 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1060 "agent_parser.cc"
break;
- case 69:
+ case 69: // library: "library" $@14 ":" "constant string"
#line 374 "agent_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1070 "agent_parser.cc"
break;
- case 70:
+ case 70: // $@15: %empty
#line 380 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1078 "agent_parser.cc"
break;
- case 71:
+ case 71: // parameters: "parameters" $@15 ":" map_value
#line 382 "agent_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
#line 1087 "agent_parser.cc"
break;
- case 72:
+ case 72: // $@16: %empty
#line 390 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
#line 1098 "agent_parser.cc"
break;
- case 73:
+ case 73: // control_sockets: "control-sockets" ":" "{" $@16 control_sockets_params "}"
#line 395 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1107 "agent_parser.cc"
break;
- case 80:
+ case 80: // $@17: %empty
#line 416 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1118 "agent_parser.cc"
break;
- case 81:
+ case 81: // dhcp4_server_socket: "dhcp4" $@17 ":" "{" control_socket_params "}"
#line 421 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1127 "agent_parser.cc"
break;
- case 82:
+ case 82: // $@18: %empty
#line 427 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1138 "agent_parser.cc"
break;
- case 83:
+ case 83: // dhcp6_server_socket: "dhcp6" $@18 ":" "{" control_socket_params "}"
#line 432 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1147 "agent_parser.cc"
break;
- case 84:
+ case 84: // $@19: %empty
#line 438 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1158 "agent_parser.cc"
break;
- case 85:
+ case 85: // d2_server_socket: "d2" $@19 ":" "{" control_socket_params "}"
#line 443 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1167 "agent_parser.cc"
break;
- case 93:
+ case 93: // $@20: %empty
#line 462 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1175 "agent_parser.cc"
break;
- case 94:
+ case 94: // socket_name: "socket-name" $@20 ":" "constant string"
#line 464 "agent_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1185 "agent_parser.cc"
break;
- case 95:
+ case 95: // $@21: %empty
#line 471 "agent_parser.yy"
{
ctx.enter(ctx.SOCKET_TYPE);
#line 1193 "agent_parser.cc"
break;
- case 96:
+ case 96: // socket_type: "socket-type" $@21 ":" socket_type_value
#line 473 "agent_parser.yy"
{
ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
#line 1202 "agent_parser.cc"
break;
- case 97:
+ case 97: // socket_type_value: "unix"
#line 479 "agent_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
#line 1208 "agent_parser.cc"
break;
- case 98:
+ case 98: // $@22: %empty
#line 486 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1219 "agent_parser.cc"
break;
- case 99:
+ case 99: // loggers: "loggers" $@22 ":" "[" loggers_entries "]"
#line 491 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1228 "agent_parser.cc"
break;
- case 102:
+ case 102: // $@23: %empty
#line 503 "agent_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1238 "agent_parser.cc"
break;
- case 103:
+ case 103: // logger_entry: "{" $@23 logger_params "}"
#line 507 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1246 "agent_parser.cc"
break;
- case 113:
+ case 113: // $@24: %empty
#line 524 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1254 "agent_parser.cc"
break;
- case 114:
+ case 114: // name: "name" $@24 ":" "constant string"
#line 526 "agent_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1264 "agent_parser.cc"
break;
- case 115:
+ case 115: // debuglevel: "debuglevel" ":" "integer"
#line 532 "agent_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1273 "agent_parser.cc"
break;
- case 116:
+ case 116: // $@25: %empty
#line 537 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1281 "agent_parser.cc"
break;
- case 117:
+ case 117: // severity: "severity" $@25 ":" "constant string"
#line 539 "agent_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1291 "agent_parser.cc"
break;
- case 118:
+ case 118: // $@26: %empty
#line 545 "agent_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1302 "agent_parser.cc"
break;
- case 119:
+ case 119: // output_options_list: "output_options" $@26 ":" "[" output_options_list_content "]"
#line 550 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1311 "agent_parser.cc"
break;
- case 122:
+ case 122: // $@27: %empty
#line 559 "agent_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1321 "agent_parser.cc"
break;
- case 123:
+ case 123: // output_entry: "{" $@27 output_params_list "}"
#line 563 "agent_parser.yy"
{
ctx.stack_.pop_back();
#line 1329 "agent_parser.cc"
break;
- case 131:
+ case 131: // $@28: %empty
#line 578 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1337 "agent_parser.cc"
break;
- case 132:
+ case 132: // output: "output" $@28 ":" "constant string"
#line 580 "agent_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1347 "agent_parser.cc"
break;
- case 133:
+ case 133: // flush: "flush" ":" "boolean"
#line 586 "agent_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1356 "agent_parser.cc"
break;
- case 134:
+ case 134: // maxsize: "maxsize" ":" "integer"
#line 591 "agent_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1365 "agent_parser.cc"
break;
- case 135:
+ case 135: // maxver: "maxver" ":" "integer"
#line 596 "agent_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1374 "agent_parser.cc"
break;
- case 136:
+ case 136: // $@29: %empty
#line 601 "agent_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1382 "agent_parser.cc"
break;
- case 137:
+ case 137: // pattern: "pattern" $@29 ":" "constant string"
#line 603 "agent_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton interface for Bison LALR(1) parsers in C++
{
switch (this->kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (std::move (that.value));
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (std::move (that.value));
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (std::move (that.value));
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (std::move (that.value));
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (std::move (that.value));
break;
// Value type destructor.
switch (yykind)
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.template destroy< ElementPtr > ();
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.template destroy< bool > ();
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.template destroy< double > ();
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.template destroy< int64_t > ();
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.template destroy< std::string > ();
break;
void move (by_state& that);
/// The symbol kind (corresponding to \a state).
- /// \a S_YYEMPTY when empty.
+ /// \a symbol_kind::S_YYEMPTY when empty.
symbol_kind_type kind () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41
};
- const int user_token_number_max_ = 296;
+ // Last valid token kind.
+ const int code_max = 296;
if (t <= 0)
return symbol_kind::S_YYEOF;
- else if (t <= user_token_number_max_)
+ else if (t <= code_max)
return YY_CAST (symbol_kind_type, translate_table[t]);
else
return symbol_kind::S_YYUNDEF;
{
switch (this->kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.copy< ElementPtr > (YY_MOVE (that.value));
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (YY_MOVE (that.value));
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (YY_MOVE (that.value));
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (YY_MOVE (that.value));
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (YY_MOVE (that.value));
break;
super_type::move (s);
switch (this->kind ())
{
- case 50: // value
- case 53: // map_value
- case 104: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (YY_MOVE (s.value));
break;
- case 41: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (s.value));
break;
- case 40: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (s.value));
break;
- case 39: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (s.value));
break;
- case 38: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (s.value));
break;
#line 14 "agent_parser.yy"
} } // isc::agent
-#line 2228 "agent_parser.h"
-
+#line 2229 "agent_parser.h"
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
// Locations for Bison parsers in C++
class position
{
public:
+ /// Type for file name.
+ typedef const std::string filename_type;
/// Type for line and column numbers.
typedef int counter_type;
/// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
+ explicit position (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
: filename (f)
/// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
+ void initialize (filename_type* fn = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
/** \} */
/// File name to which this position refers.
- std::string* filename;
+ filename_type* filename;
/// Current line number.
counter_type line;
/// Current column number.
return res -= width;
}
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
class location
{
public:
+ /// Type for file name.
+ typedef position::filename_type filename_type;
/// Type for line and column numbers.
typedef position::counter_type counter_type;
{}
/// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
+ explicit location (filename_type* f,
counter_type l = 1,
counter_type c = 1)
: begin (f, l, c)
/// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
+ void initialize (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
return res -= width;
}
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param loc a reference to the location to redirect
#line 14 "agent_parser.yy"
} } // isc::agent
-#line 333 "location.hh"
+#line 305 "location.hh"
#endif // !YY_AGENT_LOCATION_HH_INCLUDED
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
{
switch (that.kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
break;
{
switch (that.kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (YY_MOVE (that.value));
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (that.value));
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (that.value));
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (that.value));
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (that.value));
break;
state = that.state;
switch (that.kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.copy< ElementPtr > (that.value);
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (that.value);
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (that.value);
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (that.value);
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (that.value);
break;
state = that.state;
switch (that.kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (that.value);
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (that.value);
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (that.value);
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (that.value);
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (that.value);
break;
<< yysym.location << ": ";
switch (yykind)
{
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 384 "d2_parser.cc"
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
#line 390 "d2_parser.cc"
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
#line 396 "d2_parser.cc"
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
#line 402 "d2_parser.cc"
break;
- case 68: // value
+ case symbol_kind::S_value: // value
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 408 "d2_parser.cc"
break;
- case 72: // map_value
+ case symbol_kind::S_map_value: // map_value
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 414 "d2_parser.cc"
break;
- case 96: // ncr_protocol_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
#line 111 "d2_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 420 "d2_parser.cc"
when using variants. */
switch (yyr1_[yyn])
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
yylhs.value.emplace< ElementPtr > ();
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
yylhs.value.emplace< bool > ();
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
yylhs.value.emplace< double > ();
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
yylhs.value.emplace< int64_t > ();
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
yylhs.value.emplace< std::string > ();
break;
{
switch (yyn)
{
- case 2:
+ case 2: // $@1: %empty
#line 120 "d2_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORD; }
#line 695 "d2_parser.cc"
break;
- case 4:
+ case 4: // $@2: %empty
#line 121 "d2_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
#line 701 "d2_parser.cc"
break;
- case 6:
+ case 6: // $@3: %empty
#line 122 "d2_parser.yy"
{ ctx.ctx_ = ctx.DHCPDDNS; }
#line 707 "d2_parser.cc"
break;
- case 8:
+ case 8: // $@4: %empty
#line 123 "d2_parser.yy"
{ ctx.ctx_ = ctx.TSIG_KEY; }
#line 713 "d2_parser.cc"
break;
- case 10:
+ case 10: // $@5: %empty
#line 124 "d2_parser.yy"
{ ctx.ctx_ = ctx.TSIG_KEYS; }
#line 719 "d2_parser.cc"
break;
- case 12:
+ case 12: // $@6: %empty
#line 125 "d2_parser.yy"
{ ctx.ctx_ = ctx.DDNS_DOMAIN; }
#line 725 "d2_parser.cc"
break;
- case 14:
+ case 14: // $@7: %empty
#line 126 "d2_parser.yy"
{ ctx.ctx_ = ctx.DDNS_DOMAINS; }
#line 731 "d2_parser.cc"
break;
- case 16:
+ case 16: // $@8: %empty
#line 127 "d2_parser.yy"
{ ctx.ctx_ = ctx.DNS_SERVERS; }
#line 737 "d2_parser.cc"
break;
- case 18:
+ case 18: // $@9: %empty
#line 128 "d2_parser.yy"
{ ctx.ctx_ = ctx.DNS_SERVERS; }
#line 743 "d2_parser.cc"
break;
- case 20:
+ case 20: // value: "integer"
#line 136 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
#line 749 "d2_parser.cc"
break;
- case 21:
+ case 21: // value: "floating point"
#line 137 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
#line 755 "d2_parser.cc"
break;
- case 22:
+ case 22: // value: "boolean"
#line 138 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
#line 761 "d2_parser.cc"
break;
- case 23:
+ case 23: // value: "constant string"
#line 139 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
#line 767 "d2_parser.cc"
break;
- case 24:
+ case 24: // value: "null"
#line 140 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
#line 773 "d2_parser.cc"
break;
- case 25:
+ case 25: // value: map2
#line 141 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 779 "d2_parser.cc"
break;
- case 26:
+ case 26: // value: list_generic
#line 142 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 785 "d2_parser.cc"
break;
- case 27:
+ case 27: // sub_json: value
#line 145 "d2_parser.yy"
{
// Push back the JSON value on the stack
#line 794 "d2_parser.cc"
break;
- case 28:
+ case 28: // $@10: %empty
#line 150 "d2_parser.yy"
{
// This code is executed when we're about to start parsing
#line 805 "d2_parser.cc"
break;
- case 29:
+ case 29: // map2: "{" $@10 map_content "}"
#line 155 "d2_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 815 "d2_parser.cc"
break;
- case 30:
+ case 30: // map_value: map2
#line 161 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 821 "d2_parser.cc"
break;
- case 33:
+ case 33: // not_empty_map: "constant string" ":" value
#line 168 "d2_parser.yy"
{
// map containing a single entry
#line 830 "d2_parser.cc"
break;
- case 34:
+ case 34: // not_empty_map: not_empty_map "," "constant string" ":" value
#line 172 "d2_parser.yy"
{
// map consisting of a shorter map followed by
#line 840 "d2_parser.cc"
break;
- case 35:
+ case 35: // $@11: %empty
#line 179 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 849 "d2_parser.cc"
break;
- case 36:
+ case 36: // list_generic: "[" $@11 list_content "]"
#line 182 "d2_parser.yy"
{
// list parsing complete. Put any sanity checking here
#line 857 "d2_parser.cc"
break;
- case 39:
+ case 39: // not_empty_list: value
#line 190 "d2_parser.yy"
{
// List consisting of a single element.
#line 866 "d2_parser.cc"
break;
- case 40:
+ case 40: // not_empty_list: not_empty_list "," value
#line 194 "d2_parser.yy"
{
// List ending with , and a value.
#line 875 "d2_parser.cc"
break;
- case 41:
+ case 41: // unknown_map_entry: "constant string" ":"
#line 205 "d2_parser.yy"
{
const std::string& where = ctx.contextName();
#line 886 "d2_parser.cc"
break;
- case 42:
+ case 42: // $@12: %empty
#line 214 "d2_parser.yy"
{
// This code is executed when we're about to start parsing
#line 897 "d2_parser.cc"
break;
- case 43:
+ case 43: // syntax_map: "{" $@12 global_objects "}"
#line 219 "d2_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 907 "d2_parser.cc"
break;
- case 46:
+ case 46: // $@13: %empty
#line 235 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 918 "d2_parser.cc"
break;
- case 47:
+ case 47: // dhcpddns_object: "DhcpDdns" $@13 ":" "{" dhcpddns_params "}"
#line 240 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 927 "d2_parser.cc"
break;
- case 48:
+ case 48: // $@14: %empty
#line 245 "d2_parser.yy"
{
// Parse the dhcpddns map
#line 937 "d2_parser.cc"
break;
- case 49:
+ case 49: // sub_dhcpddns: "{" $@14 dhcpddns_params "}"
#line 249 "d2_parser.yy"
{
// parsing completed
#line 945 "d2_parser.cc"
break;
- case 65:
+ case 65: // $@15: %empty
#line 273 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 953 "d2_parser.cc"
break;
- case 66:
+ case 66: // ip_address: "ip-address" $@15 ":" "constant string"
#line 275 "d2_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 963 "d2_parser.cc"
break;
- case 67:
+ case 67: // port: "port" ":" "integer"
#line 281 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
#line 975 "d2_parser.cc"
break;
- case 68:
+ case 68: // dns_server_timeout: "dns-server-timeout" ":" "integer"
#line 289 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () <= 0) {
#line 988 "d2_parser.cc"
break;
- case 69:
+ case 69: // $@16: %empty
#line 298 "d2_parser.yy"
{
ctx.enter(ctx.NCR_PROTOCOL);
#line 996 "d2_parser.cc"
break;
- case 70:
+ case 70: // ncr_protocol: "ncr-protocol" $@16 ":" ncr_protocol_value
#line 300 "d2_parser.yy"
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
#line 1005 "d2_parser.cc"
break;
- case 71:
+ case 71: // ncr_protocol_value: "UDP"
#line 306 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
#line 1011 "d2_parser.cc"
break;
- case 72:
+ case 72: // ncr_protocol_value: "TCP"
#line 307 "d2_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
#line 1017 "d2_parser.cc"
break;
- case 73:
+ case 73: // $@17: %empty
#line 310 "d2_parser.yy"
{
ctx.enter(ctx.NCR_FORMAT);
#line 1025 "d2_parser.cc"
break;
- case 74:
+ case 74: // ncr_format: "ncr-format" $@17 ":" "JSON"
#line 312 "d2_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
#line 1035 "d2_parser.cc"
break;
- case 75:
+ case 75: // $@18: %empty
#line 318 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1043 "d2_parser.cc"
break;
- case 76:
+ case 76: // user_context: "user-context" $@18 ":" map_value
#line 320 "d2_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 1070 "d2_parser.cc"
break;
- case 77:
+ case 77: // $@19: %empty
#line 343 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1078 "d2_parser.cc"
break;
- case 78:
+ case 78: // comment: "comment" $@19 ":" "constant string"
#line 345 "d2_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 1107 "d2_parser.cc"
break;
- case 79:
+ case 79: // $@20: %empty
#line 370 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1118 "d2_parser.cc"
break;
- case 80:
+ case 80: // forward_ddns: "forward-ddns" $@20 ":" "{" ddns_mgr_params "}"
#line 375 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1127 "d2_parser.cc"
break;
- case 81:
+ case 81: // $@21: %empty
#line 380 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1138 "d2_parser.cc"
break;
- case 82:
+ case 82: // reverse_ddns: "reverse-ddns" $@21 ":" "{" ddns_mgr_params "}"
#line 385 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1147 "d2_parser.cc"
break;
- case 89:
+ case 89: // $@22: %empty
#line 404 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1158 "d2_parser.cc"
break;
- case 90:
+ case 90: // ddns_domains: "ddns-domains" $@22 ":" "[" ddns_domain_list "]"
#line 409 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1167 "d2_parser.cc"
break;
- case 91:
+ case 91: // $@23: %empty
#line 414 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1176 "d2_parser.cc"
break;
- case 92:
+ case 92: // sub_ddns_domains: "[" $@23 ddns_domain_list "]"
#line 417 "d2_parser.yy"
{
// parsing completed
#line 1184 "d2_parser.cc"
break;
- case 97:
+ case 97: // $@24: %empty
#line 429 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1194 "d2_parser.cc"
break;
- case 98:
+ case 98: // ddns_domain: "{" $@24 ddns_domain_params "}"
#line 433 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1202 "d2_parser.cc"
break;
- case 99:
+ case 99: // $@25: %empty
#line 437 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1211 "d2_parser.cc"
break;
- case 100:
+ case 100: // sub_ddns_domain: "{" $@25 ddns_domain_params "}"
#line 440 "d2_parser.yy"
{
// parsing completed
#line 1219 "d2_parser.cc"
break;
- case 109:
+ case 109: // $@26: %empty
#line 457 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1227 "d2_parser.cc"
break;
- case 110:
+ case 110: // ddns_domain_name: "name" $@26 ":" "constant string"
#line 459 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
#line 1241 "d2_parser.cc"
break;
- case 111:
+ case 111: // $@27: %empty
#line 469 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1249 "d2_parser.cc"
break;
- case 112:
+ case 112: // ddns_domain_key_name: "key-name" $@27 ":" "constant string"
#line 471 "d2_parser.yy"
{
ElementPtr elem(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1260 "d2_parser.cc"
break;
- case 113:
+ case 113: // $@28: %empty
#line 481 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1271 "d2_parser.cc"
break;
- case 114:
+ case 114: // dns_servers: "dns-servers" $@28 ":" "[" dns_server_list "]"
#line 486 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1280 "d2_parser.cc"
break;
- case 115:
+ case 115: // $@29: %empty
#line 491 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1289 "d2_parser.cc"
break;
- case 116:
+ case 116: // sub_dns_servers: "[" $@29 dns_server_list "]"
#line 494 "d2_parser.yy"
{
// parsing completed
#line 1297 "d2_parser.cc"
break;
- case 119:
+ case 119: // $@30: %empty
#line 502 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1307 "d2_parser.cc"
break;
- case 120:
+ case 120: // dns_server: "{" $@30 dns_server_params "}"
#line 506 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1315 "d2_parser.cc"
break;
- case 121:
+ case 121: // $@31: %empty
#line 510 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1324 "d2_parser.cc"
break;
- case 122:
+ case 122: // sub_dns_server: "{" $@31 dns_server_params "}"
#line 513 "d2_parser.yy"
{
// parsing completed
#line 1332 "d2_parser.cc"
break;
- case 131:
+ case 131: // $@32: %empty
#line 529 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1340 "d2_parser.cc"
break;
- case 132:
+ case 132: // dns_server_hostname: "hostname" $@32 ":" "constant string"
#line 531 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () != "") {
#line 1354 "d2_parser.cc"
break;
- case 133:
+ case 133: // $@33: %empty
#line 541 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1362 "d2_parser.cc"
break;
- case 134:
+ case 134: // dns_server_ip_address: "ip-address" $@33 ":" "constant string"
#line 543 "d2_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1372 "d2_parser.cc"
break;
- case 135:
+ case 135: // dns_server_port: "port" ":" "integer"
#line 549 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
#line 1384 "d2_parser.cc"
break;
- case 136:
+ case 136: // $@34: %empty
#line 563 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1395 "d2_parser.cc"
break;
- case 137:
+ case 137: // tsig_keys: "tsig-keys" $@34 ":" "[" tsig_keys_list "]"
#line 568 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1404 "d2_parser.cc"
break;
- case 138:
+ case 138: // $@35: %empty
#line 573 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1413 "d2_parser.cc"
break;
- case 139:
+ case 139: // sub_tsig_keys: "[" $@35 tsig_keys_list "]"
#line 576 "d2_parser.yy"
{
// parsing completed
#line 1421 "d2_parser.cc"
break;
- case 144:
+ case 144: // $@36: %empty
#line 588 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1431 "d2_parser.cc"
break;
- case 145:
+ case 145: // tsig_key: "{" $@36 tsig_key_params "}"
#line 592 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1439 "d2_parser.cc"
break;
- case 146:
+ case 146: // $@37: %empty
#line 596 "d2_parser.yy"
{
// Parse tsig key list entry map
#line 1449 "d2_parser.cc"
break;
- case 147:
+ case 147: // sub_tsig_key: "{" $@37 tsig_key_params "}"
#line 600 "d2_parser.yy"
{
// parsing completed
#line 1457 "d2_parser.cc"
break;
- case 157:
+ case 157: // $@38: %empty
#line 618 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1465 "d2_parser.cc"
break;
- case 158:
+ case 158: // tsig_key_name: "name" $@38 ":" "constant string"
#line 620 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
#line 1479 "d2_parser.cc"
break;
- case 159:
+ case 159: // $@39: %empty
#line 630 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1487 "d2_parser.cc"
break;
- case 160:
+ case 160: // tsig_key_algorithm: "algorithm" $@39 ":" "constant string"
#line 632 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
#line 1500 "d2_parser.cc"
break;
- case 161:
+ case 161: // tsig_key_digest_bits: "digest-bits" ":" "integer"
#line 641 "d2_parser.yy"
{
if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0 && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
#line 1512 "d2_parser.cc"
break;
- case 162:
+ case 162: // $@40: %empty
#line 649 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1520 "d2_parser.cc"
break;
- case 163:
+ case 163: // tsig_key_secret: "secret" $@40 ":" "constant string"
#line 651 "d2_parser.yy"
{
if (yystack_[0].value.as < std::string > () == "") {
#line 1533 "d2_parser.cc"
break;
- case 164:
+ case 164: // $@41: %empty
#line 665 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1544 "d2_parser.cc"
break;
- case 165:
+ case 165: // control_socket: "control-socket" $@41 ":" "{" control_socket_params "}"
#line 670 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1553 "d2_parser.cc"
break;
- case 173:
+ case 173: // $@42: %empty
#line 686 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1561 "d2_parser.cc"
break;
- case 174:
+ case 174: // control_socket_type: "socket-type" $@42 ":" "constant string"
#line 688 "d2_parser.yy"
{
ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1571 "d2_parser.cc"
break;
- case 175:
+ case 175: // $@43: %empty
#line 694 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1579 "d2_parser.cc"
break;
- case 176:
+ case 176: // control_socket_name: "socket-name" $@43 ":" "constant string"
#line 696 "d2_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1589 "d2_parser.cc"
break;
- case 177:
+ case 177: // $@44: %empty
#line 704 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1600 "d2_parser.cc"
break;
- case 178:
+ case 178: // loggers: "loggers" $@44 ":" "[" loggers_entries "]"
#line 709 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1609 "d2_parser.cc"
break;
- case 181:
+ case 181: // $@45: %empty
#line 721 "d2_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1619 "d2_parser.cc"
break;
- case 182:
+ case 182: // logger_entry: "{" $@45 logger_params "}"
#line 725 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1627 "d2_parser.cc"
break;
- case 192:
+ case 192: // $@46: %empty
#line 742 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1635 "d2_parser.cc"
break;
- case 193:
+ case 193: // name: "name" $@46 ":" "constant string"
#line 744 "d2_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1645 "d2_parser.cc"
break;
- case 194:
+ case 194: // debuglevel: "debuglevel" ":" "integer"
#line 750 "d2_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1654 "d2_parser.cc"
break;
- case 195:
+ case 195: // $@47: %empty
#line 754 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1662 "d2_parser.cc"
break;
- case 196:
+ case 196: // severity: "severity" $@47 ":" "constant string"
#line 756 "d2_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1672 "d2_parser.cc"
break;
- case 197:
+ case 197: // $@48: %empty
#line 762 "d2_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1683 "d2_parser.cc"
break;
- case 198:
+ case 198: // output_options_list: "output_options" $@48 ":" "[" output_options_list_content "]"
#line 767 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1692 "d2_parser.cc"
break;
- case 201:
+ case 201: // $@49: %empty
#line 776 "d2_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1702 "d2_parser.cc"
break;
- case 202:
+ case 202: // output_entry: "{" $@49 output_params_list "}"
#line 780 "d2_parser.yy"
{
ctx.stack_.pop_back();
#line 1710 "d2_parser.cc"
break;
- case 210:
+ case 210: // $@50: %empty
#line 795 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1718 "d2_parser.cc"
break;
- case 211:
+ case 211: // output: "output" $@50 ":" "constant string"
#line 797 "d2_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1728 "d2_parser.cc"
break;
- case 212:
+ case 212: // flush: "flush" ":" "boolean"
#line 803 "d2_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1737 "d2_parser.cc"
break;
- case 213:
+ case 213: // maxsize: "maxsize" ":" "integer"
#line 808 "d2_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1746 "d2_parser.cc"
break;
- case 214:
+ case 214: // maxver: "maxver" ":" "integer"
#line 813 "d2_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1755 "d2_parser.cc"
break;
- case 215:
+ case 215: // $@51: %empty
#line 818 "d2_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1763 "d2_parser.cc"
break;
- case 216:
+ case 216: // pattern: "pattern" $@51 ":" "constant string"
#line 820 "d2_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton interface for Bison LALR(1) parsers in C++
{
switch (this->kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (std::move (that.value));
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (std::move (that.value));
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (std::move (that.value));
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (std::move (that.value));
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (std::move (that.value));
break;
// Value type destructor.
switch (yykind)
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.template destroy< ElementPtr > ();
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.template destroy< bool > ();
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.template destroy< double > ();
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.template destroy< int64_t > ();
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.template destroy< std::string > ();
break;
void move (by_state& that);
/// The symbol kind (corresponding to \a state).
- /// \a S_YYEMPTY when empty.
+ /// \a symbol_kind::S_YYEMPTY when empty.
symbol_kind_type kind () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56
};
- const int user_token_number_max_ = 311;
+ // Last valid token kind.
+ const int code_max = 311;
if (t <= 0)
return symbol_kind::S_YYEOF;
- else if (t <= user_token_number_max_)
+ else if (t <= code_max)
return YY_CAST (symbol_kind_type, translate_table[t]);
else
return symbol_kind::S_YYUNDEF;
{
switch (this->kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.copy< ElementPtr > (YY_MOVE (that.value));
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (YY_MOVE (that.value));
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (YY_MOVE (that.value));
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (YY_MOVE (that.value));
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (YY_MOVE (that.value));
break;
super_type::move (s);
switch (this->kind ())
{
- case 68: // value
- case 72: // map_value
- case 96: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (YY_MOVE (s.value));
break;
- case 56: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (s.value));
break;
- case 55: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (s.value));
break;
- case 54: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (s.value));
break;
- case 53: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (s.value));
break;
#line 14 "d2_parser.yy"
} } // isc::d2
-#line 2535 "d2_parser.h"
-
+#line 2536 "d2_parser.h"
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Locations for Bison parsers in C++
class position
{
public:
+ /// Type for file name.
+ typedef const std::string filename_type;
/// Type for line and column numbers.
typedef int counter_type;
/// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
+ explicit position (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
: filename (f)
/// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
+ void initialize (filename_type* fn = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
/** \} */
/// File name to which this position refers.
- std::string* filename;
+ filename_type* filename;
/// Current line number.
counter_type line;
/// Current column number.
return res -= width;
}
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
class location
{
public:
+ /// Type for file name.
+ typedef position::filename_type filename_type;
/// Type for line and column numbers.
typedef position::counter_type counter_type;
{}
/// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
+ explicit location (filename_type* f,
counter_type l = 1,
counter_type c = 1)
: begin (f, l, c)
/// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
+ void initialize (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
return res -= width;
}
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param loc a reference to the location to redirect
#line 14 "d2_parser.yy"
} } // isc::d2
-#line 333 "location.hh"
+#line 305 "location.hh"
#endif // !YY_D2_PARSER_LOCATION_HH_INCLUDED
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
{
switch (that.kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
break;
{
switch (that.kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (YY_MOVE (that.value));
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (that.value));
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (that.value));
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (that.value));
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (that.value));
break;
state = that.state;
switch (that.kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.copy< ElementPtr > (that.value);
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (that.value);
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (that.value);
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (that.value);
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (that.value);
break;
state = that.state;
switch (that.kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (that.value);
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (that.value);
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (that.value);
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (that.value);
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (that.value);
break;
<< yysym.location << ": ";
switch (yykind)
{
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 404 "dhcp4_parser.cc"
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
#line 410 "dhcp4_parser.cc"
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
#line 416 "dhcp4_parser.cc"
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
#line 422 "dhcp4_parser.cc"
break;
- case 205: // value
+ case symbol_kind::S_value: // value
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 428 "dhcp4_parser.cc"
break;
- case 209: // map_value
+ case symbol_kind::S_map_value: // map_value
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 434 "dhcp4_parser.cc"
break;
- case 250: // ddns_replace_client_name_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 440 "dhcp4_parser.cc"
break;
- case 272: // socket_type
+ case symbol_kind::S_socket_type: // socket_type
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 446 "dhcp4_parser.cc"
break;
- case 275: // outbound_interface_value
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 452 "dhcp4_parser.cc"
break;
- case 297: // db_type
+ case symbol_kind::S_db_type: // db_type
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 458 "dhcp4_parser.cc"
break;
- case 391: // hr_mode
+ case symbol_kind::S_hr_mode: // hr_mode
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 464 "dhcp4_parser.cc"
break;
- case 546: // ncr_protocol_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
#line 268 "dhcp4_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 470 "dhcp4_parser.cc"
when using variants. */
switch (yyr1_[yyn])
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
yylhs.value.emplace< ElementPtr > ();
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
yylhs.value.emplace< bool > ();
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
yylhs.value.emplace< double > ();
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
yylhs.value.emplace< int64_t > ();
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
yylhs.value.emplace< std::string > ();
break;
{
switch (yyn)
{
- case 2:
+ case 2: // $@1: %empty
#line 277 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORD; }
#line 750 "dhcp4_parser.cc"
break;
- case 4:
+ case 4: // $@2: %empty
#line 278 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
#line 756 "dhcp4_parser.cc"
break;
- case 6:
+ case 6: // $@3: %empty
#line 279 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.DHCP4; }
#line 762 "dhcp4_parser.cc"
break;
- case 8:
+ case 8: // $@4: %empty
#line 280 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.INTERFACES_CONFIG; }
#line 768 "dhcp4_parser.cc"
break;
- case 10:
+ case 10: // $@5: %empty
#line 281 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.SUBNET4; }
#line 774 "dhcp4_parser.cc"
break;
- case 12:
+ case 12: // $@6: %empty
#line 282 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.POOLS; }
#line 780 "dhcp4_parser.cc"
break;
- case 14:
+ case 14: // $@7: %empty
#line 283 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.RESERVATIONS; }
#line 786 "dhcp4_parser.cc"
break;
- case 16:
+ case 16: // $@8: %empty
#line 284 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.DHCP4; }
#line 792 "dhcp4_parser.cc"
break;
- case 18:
+ case 18: // $@9: %empty
#line 285 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DEF; }
#line 798 "dhcp4_parser.cc"
break;
- case 20:
+ case 20: // $@10: %empty
#line 286 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DATA; }
#line 804 "dhcp4_parser.cc"
break;
- case 22:
+ case 22: // $@11: %empty
#line 287 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
#line 810 "dhcp4_parser.cc"
break;
- case 24:
+ case 24: // $@12: %empty
#line 288 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.DHCP_DDNS; }
#line 816 "dhcp4_parser.cc"
break;
- case 26:
+ case 26: // $@13: %empty
#line 289 "dhcp4_parser.yy"
{ ctx.ctx_ = ctx.CONFIG_CONTROL; }
#line 822 "dhcp4_parser.cc"
break;
- case 28:
+ case 28: // value: "integer"
#line 297 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
#line 828 "dhcp4_parser.cc"
break;
- case 29:
+ case 29: // value: "floating point"
#line 298 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
#line 834 "dhcp4_parser.cc"
break;
- case 30:
+ case 30: // value: "boolean"
#line 299 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
#line 840 "dhcp4_parser.cc"
break;
- case 31:
+ case 31: // value: "constant string"
#line 300 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
#line 846 "dhcp4_parser.cc"
break;
- case 32:
+ case 32: // value: "null"
#line 301 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
#line 852 "dhcp4_parser.cc"
break;
- case 33:
+ case 33: // value: map2
#line 302 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 858 "dhcp4_parser.cc"
break;
- case 34:
+ case 34: // value: list_generic
#line 303 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 864 "dhcp4_parser.cc"
break;
- case 35:
+ case 35: // sub_json: value
#line 306 "dhcp4_parser.yy"
{
// Push back the JSON value on the stack
#line 873 "dhcp4_parser.cc"
break;
- case 36:
+ case 36: // $@14: %empty
#line 311 "dhcp4_parser.yy"
{
// This code is executed when we're about to start parsing
#line 884 "dhcp4_parser.cc"
break;
- case 37:
+ case 37: // map2: "{" $@14 map_content "}"
#line 316 "dhcp4_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 894 "dhcp4_parser.cc"
break;
- case 38:
+ case 38: // map_value: map2
#line 322 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 900 "dhcp4_parser.cc"
break;
- case 41:
+ case 41: // not_empty_map: "constant string" ":" value
#line 329 "dhcp4_parser.yy"
{
// map containing a single entry
#line 909 "dhcp4_parser.cc"
break;
- case 42:
+ case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
#line 333 "dhcp4_parser.yy"
{
// map consisting of a shorter map followed by
#line 919 "dhcp4_parser.cc"
break;
- case 43:
+ case 43: // $@15: %empty
#line 340 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 928 "dhcp4_parser.cc"
break;
- case 44:
+ case 44: // list_generic: "[" $@15 list_content "]"
#line 343 "dhcp4_parser.yy"
{
// list parsing complete. Put any sanity checking here
#line 936 "dhcp4_parser.cc"
break;
- case 47:
+ case 47: // not_empty_list: value
#line 351 "dhcp4_parser.yy"
{
// List consisting of a single element.
#line 945 "dhcp4_parser.cc"
break;
- case 48:
+ case 48: // not_empty_list: not_empty_list "," value
#line 355 "dhcp4_parser.yy"
{
// List ending with , and a value.
#line 954 "dhcp4_parser.cc"
break;
- case 49:
+ case 49: // $@16: %empty
#line 362 "dhcp4_parser.yy"
{
// List parsing about to start
#line 962 "dhcp4_parser.cc"
break;
- case 50:
+ case 50: // list_strings: "[" $@16 list_strings_content "]"
#line 364 "dhcp4_parser.yy"
{
// list parsing complete. Put any sanity checking here
#line 971 "dhcp4_parser.cc"
break;
- case 53:
+ case 53: // not_empty_list_strings: "constant string"
#line 373 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 980 "dhcp4_parser.cc"
break;
- case 54:
+ case 54: // not_empty_list_strings: not_empty_list_strings "," "constant string"
#line 377 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 989 "dhcp4_parser.cc"
break;
- case 55:
+ case 55: // unknown_map_entry: "constant string" ":"
#line 388 "dhcp4_parser.yy"
{
const std::string& where = ctx.contextName();
#line 1000 "dhcp4_parser.cc"
break;
- case 56:
+ case 56: // $@17: %empty
#line 397 "dhcp4_parser.yy"
{
// This code is executed when we're about to start parsing
#line 1011 "dhcp4_parser.cc"
break;
- case 57:
+ case 57: // syntax_map: "{" $@17 global_objects "}"
#line 402 "dhcp4_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 1024 "dhcp4_parser.cc"
break;
- case 61:
+ case 61: // $@18: %empty
#line 420 "dhcp4_parser.yy"
{
// This code is executed when we're about to start parsing
#line 1039 "dhcp4_parser.cc"
break;
- case 62:
+ case 62: // dhcp4_object: "Dhcp4" $@18 ":" "{" global_params "}"
#line 429 "dhcp4_parser.yy"
{
// No global parameter is required
#line 1049 "dhcp4_parser.cc"
break;
- case 63:
+ case 63: // $@19: %empty
#line 437 "dhcp4_parser.yy"
{
// Parse the Dhcp4 map
#line 1059 "dhcp4_parser.cc"
break;
- case 64:
+ case 64: // sub_dhcp4: "{" $@19 global_params "}"
#line 441 "dhcp4_parser.yy"
{
// No global parameter is required
#line 1068 "dhcp4_parser.cc"
break;
- case 119:
+ case 119: // valid_lifetime: "valid-lifetime" ":" "integer"
#line 506 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1077 "dhcp4_parser.cc"
break;
- case 120:
+ case 120: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
#line 511 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1086 "dhcp4_parser.cc"
break;
- case 121:
+ case 121: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
#line 516 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1095 "dhcp4_parser.cc"
break;
- case 122:
+ case 122: // renew_timer: "renew-timer" ":" "integer"
#line 521 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1104 "dhcp4_parser.cc"
break;
- case 123:
+ case 123: // rebind_timer: "rebind-timer" ":" "integer"
#line 526 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1113 "dhcp4_parser.cc"
break;
- case 124:
+ case 124: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
#line 531 "dhcp4_parser.yy"
{
ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1122 "dhcp4_parser.cc"
break;
- case 125:
+ case 125: // t1_percent: "t1-percent" ":" "floating point"
#line 536 "dhcp4_parser.yy"
{
ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
#line 1131 "dhcp4_parser.cc"
break;
- case 126:
+ case 126: // t2_percent: "t2-percent" ":" "floating point"
#line 541 "dhcp4_parser.yy"
{
ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
#line 1140 "dhcp4_parser.cc"
break;
- case 127:
+ case 127: // decline_probation_period: "decline-probation-period" ":" "integer"
#line 546 "dhcp4_parser.yy"
{
ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1149 "dhcp4_parser.cc"
break;
- case 128:
+ case 128: // $@20: %empty
#line 551 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1157 "dhcp4_parser.cc"
break;
- case 129:
+ case 129: // server_tag: "server-tag" $@20 ":" "constant string"
#line 553 "dhcp4_parser.yy"
{
ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1167 "dhcp4_parser.cc"
break;
- case 130:
+ case 130: // echo_client_id: "echo-client-id" ":" "boolean"
#line 559 "dhcp4_parser.yy"
{
ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1176 "dhcp4_parser.cc"
break;
- case 131:
+ case 131: // match_client_id: "match-client-id" ":" "boolean"
#line 564 "dhcp4_parser.yy"
{
ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1185 "dhcp4_parser.cc"
break;
- case 132:
+ case 132: // authoritative: "authoritative" ":" "boolean"
#line 569 "dhcp4_parser.yy"
{
ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1194 "dhcp4_parser.cc"
break;
- case 133:
+ case 133: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
#line 574 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1203 "dhcp4_parser.cc"
break;
- case 134:
+ case 134: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
#line 579 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1212 "dhcp4_parser.cc"
break;
- case 135:
+ case 135: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
#line 584 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1221 "dhcp4_parser.cc"
break;
- case 136:
+ case 136: // $@21: %empty
#line 589 "dhcp4_parser.yy"
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
#line 1229 "dhcp4_parser.cc"
break;
- case 137:
+ case 137: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value
#line 591 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
#line 1238 "dhcp4_parser.cc"
break;
- case 138:
+ case 138: // ddns_replace_client_name_value: "when-present"
#line 597 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
#line 1246 "dhcp4_parser.cc"
break;
- case 139:
+ case 139: // ddns_replace_client_name_value: "never"
#line 600 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
#line 1254 "dhcp4_parser.cc"
break;
- case 140:
+ case 140: // ddns_replace_client_name_value: "always"
#line 603 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
#line 1262 "dhcp4_parser.cc"
break;
- case 141:
+ case 141: // ddns_replace_client_name_value: "when-not-present"
#line 606 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
#line 1270 "dhcp4_parser.cc"
break;
- case 142:
+ case 142: // ddns_replace_client_name_value: "boolean"
#line 609 "dhcp4_parser.yy"
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
#line 1279 "dhcp4_parser.cc"
break;
- case 143:
+ case 143: // $@22: %empty
#line 615 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1287 "dhcp4_parser.cc"
break;
- case 144:
+ case 144: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string"
#line 617 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1297 "dhcp4_parser.cc"
break;
- case 145:
+ case 145: // $@23: %empty
#line 623 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1305 "dhcp4_parser.cc"
break;
- case 146:
+ case 146: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string"
#line 625 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1315 "dhcp4_parser.cc"
break;
- case 147:
+ case 147: // $@24: %empty
#line 631 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1323 "dhcp4_parser.cc"
break;
- case 148:
+ case 148: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string"
#line 633 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1333 "dhcp4_parser.cc"
break;
- case 149:
+ case 149: // $@25: %empty
#line 639 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1341 "dhcp4_parser.cc"
break;
- case 150:
+ case 150: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string"
#line 641 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1351 "dhcp4_parser.cc"
break;
- case 151:
+ case 151: // store_extended_info: "store-extended-info" ":" "boolean"
#line 647 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1360 "dhcp4_parser.cc"
break;
- case 152:
+ case 152: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
#line 652 "dhcp4_parser.yy"
{
ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1369 "dhcp4_parser.cc"
break;
- case 153:
+ case 153: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
#line 657 "dhcp4_parser.yy"
{
ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1378 "dhcp4_parser.cc"
break;
- case 154:
+ case 154: // $@26: %empty
#line 662 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1389 "dhcp4_parser.cc"
break;
- case 155:
+ case 155: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}"
#line 667 "dhcp4_parser.yy"
{
// No interfaces config param is required
#line 1399 "dhcp4_parser.cc"
break;
- case 165:
+ case 165: // $@27: %empty
#line 686 "dhcp4_parser.yy"
{
// Parse the interfaces-config map
#line 1409 "dhcp4_parser.cc"
break;
- case 166:
+ case 166: // sub_interfaces4: "{" $@27 interfaces_config_params "}"
#line 690 "dhcp4_parser.yy"
{
// No interfaces config param is required
#line 1418 "dhcp4_parser.cc"
break;
- case 167:
+ case 167: // $@28: %empty
#line 695 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1429 "dhcp4_parser.cc"
break;
- case 168:
+ case 168: // interfaces_list: "interfaces" $@28 ":" list_strings
#line 700 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 1438 "dhcp4_parser.cc"
break;
- case 169:
+ case 169: // $@29: %empty
#line 705 "dhcp4_parser.yy"
{
ctx.enter(ctx.DHCP_SOCKET_TYPE);
#line 1446 "dhcp4_parser.cc"
break;
- case 170:
+ case 170: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type
#line 707 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
#line 1455 "dhcp4_parser.cc"
break;
- case 171:
+ case 171: // socket_type: "raw"
#line 712 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
#line 1461 "dhcp4_parser.cc"
break;
- case 172:
+ case 172: // socket_type: "udp"
#line 713 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
#line 1467 "dhcp4_parser.cc"
break;
- case 173:
+ case 173: // $@30: %empty
#line 716 "dhcp4_parser.yy"
{
ctx.enter(ctx.OUTBOUND_INTERFACE);
#line 1475 "dhcp4_parser.cc"
break;
- case 174:
+ case 174: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value
#line 718 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
#line 1484 "dhcp4_parser.cc"
break;
- case 175:
+ case 175: // outbound_interface_value: "same-as-inbound"
#line 723 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
#line 1492 "dhcp4_parser.cc"
break;
- case 176:
+ case 176: // outbound_interface_value: "use-routing"
#line 725 "dhcp4_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
#line 1500 "dhcp4_parser.cc"
break;
- case 177:
+ case 177: // re_detect: "re-detect" ":" "boolean"
#line 729 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1509 "dhcp4_parser.cc"
break;
- case 178:
+ case 178: // $@31: %empty
#line 735 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1520 "dhcp4_parser.cc"
break;
- case 179:
+ case 179: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
#line 740 "dhcp4_parser.yy"
{
// The type parameter is required
#line 1531 "dhcp4_parser.cc"
break;
- case 180:
+ case 180: // $@32: %empty
#line 747 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1542 "dhcp4_parser.cc"
break;
- case 181:
+ case 181: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}"
#line 752 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 1551 "dhcp4_parser.cc"
break;
- case 185:
+ case 185: // $@33: %empty
#line 762 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1559 "dhcp4_parser.cc"
break;
- case 186:
+ case 186: // lease_checks: "lease-checks" $@33 ":" "constant string"
#line 764 "dhcp4_parser.yy"
{
#line 1579 "dhcp4_parser.cc"
break;
- case 187:
+ case 187: // $@34: %empty
#line 780 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1590 "dhcp4_parser.cc"
break;
- case 188:
+ case 188: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}"
#line 785 "dhcp4_parser.yy"
{
// The type parameter is required
#line 1601 "dhcp4_parser.cc"
break;
- case 189:
+ case 189: // $@35: %empty
#line 792 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1612 "dhcp4_parser.cc"
break;
- case 190:
+ case 190: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]"
#line 797 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 1621 "dhcp4_parser.cc"
break;
- case 195:
+ case 195: // $@36: %empty
#line 810 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1631 "dhcp4_parser.cc"
break;
- case 196:
+ case 196: // database: "{" $@36 database_map_params "}"
#line 814 "dhcp4_parser.yy"
{
// The type parameter is required
#line 1641 "dhcp4_parser.cc"
break;
- case 220:
+ case 220: // $@37: %empty
#line 847 "dhcp4_parser.yy"
{
ctx.enter(ctx.DATABASE_TYPE);
#line 1649 "dhcp4_parser.cc"
break;
- case 221:
+ case 221: // database_type: "type" $@37 ":" db_type
#line 849 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
#line 1658 "dhcp4_parser.cc"
break;
- case 222:
+ case 222: // db_type: "memfile"
#line 854 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
#line 1664 "dhcp4_parser.cc"
break;
- case 223:
+ case 223: // db_type: "mysql"
#line 855 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
#line 1670 "dhcp4_parser.cc"
break;
- case 224:
+ case 224: // db_type: "postgresql"
#line 856 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
#line 1676 "dhcp4_parser.cc"
break;
- case 225:
+ case 225: // db_type: "cql"
#line 857 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
#line 1682 "dhcp4_parser.cc"
break;
- case 226:
+ case 226: // $@38: %empty
#line 860 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1690 "dhcp4_parser.cc"
break;
- case 227:
+ case 227: // user: "user" $@38 ":" "constant string"
#line 862 "dhcp4_parser.yy"
{
ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1700 "dhcp4_parser.cc"
break;
- case 228:
+ case 228: // $@39: %empty
#line 868 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1708 "dhcp4_parser.cc"
break;
- case 229:
+ case 229: // password: "password" $@39 ":" "constant string"
#line 870 "dhcp4_parser.yy"
{
ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1718 "dhcp4_parser.cc"
break;
- case 230:
+ case 230: // $@40: %empty
#line 876 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1726 "dhcp4_parser.cc"
break;
- case 231:
+ case 231: // host: "host" $@40 ":" "constant string"
#line 878 "dhcp4_parser.yy"
{
ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1736 "dhcp4_parser.cc"
break;
- case 232:
+ case 232: // port: "port" ":" "integer"
#line 884 "dhcp4_parser.yy"
{
ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1745 "dhcp4_parser.cc"
break;
- case 233:
+ case 233: // $@41: %empty
#line 889 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1753 "dhcp4_parser.cc"
break;
- case 234:
+ case 234: // name: "name" $@41 ":" "constant string"
#line 891 "dhcp4_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1763 "dhcp4_parser.cc"
break;
- case 235:
+ case 235: // persist: "persist" ":" "boolean"
#line 897 "dhcp4_parser.yy"
{
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1772 "dhcp4_parser.cc"
break;
- case 236:
+ case 236: // lfc_interval: "lfc-interval" ":" "integer"
#line 902 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1781 "dhcp4_parser.cc"
break;
- case 237:
+ case 237: // readonly: "readonly" ":" "boolean"
#line 907 "dhcp4_parser.yy"
{
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1790 "dhcp4_parser.cc"
break;
- case 238:
+ case 238: // connect_timeout: "connect-timeout" ":" "integer"
#line 912 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1799 "dhcp4_parser.cc"
break;
- case 239:
+ case 239: // request_timeout: "request-timeout" ":" "integer"
#line 917 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1808 "dhcp4_parser.cc"
break;
- case 240:
+ case 240: // tcp_keepalive: "tcp-keepalive" ":" "integer"
#line 922 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1817 "dhcp4_parser.cc"
break;
- case 241:
+ case 241: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
#line 927 "dhcp4_parser.yy"
{
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1826 "dhcp4_parser.cc"
break;
- case 242:
+ case 242: // $@42: %empty
#line 932 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1834 "dhcp4_parser.cc"
break;
- case 243:
+ case 243: // contact_points: "contact-points" $@42 ":" "constant string"
#line 934 "dhcp4_parser.yy"
{
ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1844 "dhcp4_parser.cc"
break;
- case 244:
+ case 244: // $@43: %empty
#line 940 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1852 "dhcp4_parser.cc"
break;
- case 245:
+ case 245: // keyspace: "keyspace" $@43 ":" "constant string"
#line 942 "dhcp4_parser.yy"
{
ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1862 "dhcp4_parser.cc"
break;
- case 246:
+ case 246: // $@44: %empty
#line 948 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1870 "dhcp4_parser.cc"
break;
- case 247:
+ case 247: // consistency: "consistency" $@44 ":" "constant string"
#line 950 "dhcp4_parser.yy"
{
ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1880 "dhcp4_parser.cc"
break;
- case 248:
+ case 248: // $@45: %empty
#line 956 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1888 "dhcp4_parser.cc"
break;
- case 249:
+ case 249: // serial_consistency: "serial-consistency" $@45 ":" "constant string"
#line 958 "dhcp4_parser.yy"
{
ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1898 "dhcp4_parser.cc"
break;
- case 250:
+ case 250: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
#line 964 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1907 "dhcp4_parser.cc"
break;
- case 251:
+ case 251: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
#line 969 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1916 "dhcp4_parser.cc"
break;
- case 252:
+ case 252: // max_row_errors: "max-row-errors" ":" "integer"
#line 974 "dhcp4_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1925 "dhcp4_parser.cc"
break;
- case 253:
+ case 253: // $@46: %empty
#line 980 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1936 "dhcp4_parser.cc"
break;
- case 254:
+ case 254: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]"
#line 985 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 1945 "dhcp4_parser.cc"
break;
- case 262:
+ case 262: // duid_id: "duid"
#line 1001 "dhcp4_parser.yy"
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
#line 1954 "dhcp4_parser.cc"
break;
- case 263:
+ case 263: // hw_address_id: "hw-address"
#line 1006 "dhcp4_parser.yy"
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
#line 1963 "dhcp4_parser.cc"
break;
- case 264:
+ case 264: // circuit_id: "circuit-id"
#line 1011 "dhcp4_parser.yy"
{
ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
#line 1972 "dhcp4_parser.cc"
break;
- case 265:
+ case 265: // client_id: "client-id"
#line 1016 "dhcp4_parser.yy"
{
ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
#line 1981 "dhcp4_parser.cc"
break;
- case 266:
+ case 266: // flex_id: "flex-id"
#line 1021 "dhcp4_parser.yy"
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
#line 1990 "dhcp4_parser.cc"
break;
- case 267:
+ case 267: // $@47: %empty
#line 1028 "dhcp4_parser.yy"
{
ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2001 "dhcp4_parser.cc"
break;
- case 268:
+ case 268: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}"
#line 1033 "dhcp4_parser.yy"
{
// The enable parameter is required.
#line 2012 "dhcp4_parser.cc"
break;
- case 277:
+ case 277: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
#line 1052 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2021 "dhcp4_parser.cc"
break;
- case 278:
+ case 278: // thread_pool_size: "thread-pool-size" ":" "integer"
#line 1057 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2030 "dhcp4_parser.cc"
break;
- case 279:
+ case 279: // packet_queue_size: "packet-queue-size" ":" "integer"
#line 1062 "dhcp4_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2039 "dhcp4_parser.cc"
break;
- case 280:
+ case 280: // $@48: %empty
#line 1067 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2050 "dhcp4_parser.cc"
break;
- case 281:
+ case 281: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]"
#line 1072 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2059 "dhcp4_parser.cc"
break;
- case 286:
+ case 286: // $@49: %empty
#line 1085 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2069 "dhcp4_parser.cc"
break;
- case 287:
+ case 287: // hooks_library: "{" $@49 hooks_params "}"
#line 1089 "dhcp4_parser.yy"
{
// The library hooks parameter is required
#line 2079 "dhcp4_parser.cc"
break;
- case 288:
+ case 288: // $@50: %empty
#line 1095 "dhcp4_parser.yy"
{
// Parse the hooks-libraries list entry map
#line 2089 "dhcp4_parser.cc"
break;
- case 289:
+ case 289: // sub_hooks_library: "{" $@50 hooks_params "}"
#line 1099 "dhcp4_parser.yy"
{
// The library hooks parameter is required
#line 2099 "dhcp4_parser.cc"
break;
- case 295:
+ case 295: // $@51: %empty
#line 1114 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2107 "dhcp4_parser.cc"
break;
- case 296:
+ case 296: // library: "library" $@51 ":" "constant string"
#line 1116 "dhcp4_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2117 "dhcp4_parser.cc"
break;
- case 297:
+ case 297: // $@52: %empty
#line 1122 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2125 "dhcp4_parser.cc"
break;
- case 298:
+ case 298: // parameters: "parameters" $@52 ":" map_value
#line 1124 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
#line 2134 "dhcp4_parser.cc"
break;
- case 299:
+ case 299: // $@53: %empty
#line 1130 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2145 "dhcp4_parser.cc"
break;
- case 300:
+ case 300: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}"
#line 1135 "dhcp4_parser.yy"
{
// No expired lease parameter is required
#line 2155 "dhcp4_parser.cc"
break;
- case 309:
+ case 309: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
#line 1153 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2164 "dhcp4_parser.cc"
break;
- case 310:
+ case 310: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
#line 1158 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2173 "dhcp4_parser.cc"
break;
- case 311:
+ case 311: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
#line 1163 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2182 "dhcp4_parser.cc"
break;
- case 312:
+ case 312: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
#line 1168 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2191 "dhcp4_parser.cc"
break;
- case 313:
+ case 313: // max_reclaim_time: "max-reclaim-time" ":" "integer"
#line 1173 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2200 "dhcp4_parser.cc"
break;
- case 314:
+ case 314: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
#line 1178 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2209 "dhcp4_parser.cc"
break;
- case 315:
+ case 315: // $@54: %empty
#line 1186 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2220 "dhcp4_parser.cc"
break;
- case 316:
+ case 316: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]"
#line 1191 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2229 "dhcp4_parser.cc"
break;
- case 321:
+ case 321: // $@55: %empty
#line 1211 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2239 "dhcp4_parser.cc"
break;
- case 322:
+ case 322: // subnet4: "{" $@55 subnet4_params "}"
#line 1215 "dhcp4_parser.yy"
{
// Once we reached this place, the subnet parsing is now complete.
#line 2265 "dhcp4_parser.cc"
break;
- case 323:
+ case 323: // $@56: %empty
#line 1237 "dhcp4_parser.yy"
{
// Parse the subnet4 list entry map
#line 2275 "dhcp4_parser.cc"
break;
- case 324:
+ case 324: // sub_subnet4: "{" $@56 subnet4_params "}"
#line 1241 "dhcp4_parser.yy"
{
// The subnet subnet4 parameter is required
#line 2285 "dhcp4_parser.cc"
break;
- case 365:
+ case 365: // $@57: %empty
#line 1293 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2293 "dhcp4_parser.cc"
break;
- case 366:
+ case 366: // subnet: "subnet" $@57 ":" "constant string"
#line 1295 "dhcp4_parser.yy"
{
ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2303 "dhcp4_parser.cc"
break;
- case 367:
+ case 367: // $@58: %empty
#line 1301 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2311 "dhcp4_parser.cc"
break;
- case 368:
+ case 368: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string"
#line 1303 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2321 "dhcp4_parser.cc"
break;
- case 369:
+ case 369: // $@59: %empty
#line 1309 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2329 "dhcp4_parser.cc"
break;
- case 370:
+ case 370: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string"
#line 1311 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2339 "dhcp4_parser.cc"
break;
- case 371:
+ case 371: // $@60: %empty
#line 1317 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2347 "dhcp4_parser.cc"
break;
- case 372:
+ case 372: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string"
#line 1319 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2357 "dhcp4_parser.cc"
break;
- case 373:
+ case 373: // $@61: %empty
#line 1325 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2365 "dhcp4_parser.cc"
break;
- case 374:
+ case 374: // interface: "interface" $@61 ":" "constant string"
#line 1327 "dhcp4_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2375 "dhcp4_parser.cc"
break;
- case 375:
+ case 375: // $@62: %empty
#line 1333 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2383 "dhcp4_parser.cc"
break;
- case 376:
+ case 376: // client_class: "client-class" $@62 ":" "constant string"
#line 1335 "dhcp4_parser.yy"
{
ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2393 "dhcp4_parser.cc"
break;
- case 377:
+ case 377: // $@63: %empty
#line 1341 "dhcp4_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2404 "dhcp4_parser.cc"
break;
- case 378:
+ case 378: // require_client_classes: "require-client-classes" $@63 ":" list_strings
#line 1346 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2413 "dhcp4_parser.cc"
break;
- case 379:
+ case 379: // $@64: %empty
#line 1351 "dhcp4_parser.yy"
{
ctx.enter(ctx.RESERVATION_MODE);
#line 2421 "dhcp4_parser.cc"
break;
- case 380:
+ case 380: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
#line 1353 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
#line 2430 "dhcp4_parser.cc"
break;
- case 381:
+ case 381: // hr_mode: "disabled"
#line 1358 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
#line 2436 "dhcp4_parser.cc"
break;
- case 382:
+ case 382: // hr_mode: "out-of-pool"
#line 1359 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
#line 2442 "dhcp4_parser.cc"
break;
- case 383:
+ case 383: // hr_mode: "global"
#line 1360 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
#line 2448 "dhcp4_parser.cc"
break;
- case 384:
+ case 384: // hr_mode: "all"
#line 1361 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
#line 2454 "dhcp4_parser.cc"
break;
- case 385:
+ case 385: // id: "id" ":" "integer"
#line 1364 "dhcp4_parser.yy"
{
ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2463 "dhcp4_parser.cc"
break;
- case 386:
+ case 386: // $@65: %empty
#line 1371 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2474 "dhcp4_parser.cc"
break;
- case 387:
+ case 387: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
#line 1376 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2483 "dhcp4_parser.cc"
break;
- case 392:
+ case 392: // $@66: %empty
#line 1391 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2493 "dhcp4_parser.cc"
break;
- case 393:
+ case 393: // shared_network: "{" $@66 shared_network_params "}"
#line 1395 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2501 "dhcp4_parser.cc"
break;
- case 429:
+ case 429: // $@67: %empty
#line 1442 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2512 "dhcp4_parser.cc"
break;
- case 430:
+ case 430: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
#line 1447 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2521 "dhcp4_parser.cc"
break;
- case 431:
+ case 431: // $@68: %empty
#line 1455 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2530 "dhcp4_parser.cc"
break;
- case 432:
+ case 432: // sub_option_def_list: "{" $@68 option_def_list "}"
#line 1458 "dhcp4_parser.yy"
{
// parsing completed
#line 2538 "dhcp4_parser.cc"
break;
- case 437:
+ case 437: // $@69: %empty
#line 1474 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2548 "dhcp4_parser.cc"
break;
- case 438:
+ case 438: // option_def_entry: "{" $@69 option_def_params "}"
#line 1478 "dhcp4_parser.yy"
{
// The name, code and type option def parameters are required.
#line 2560 "dhcp4_parser.cc"
break;
- case 439:
+ case 439: // $@70: %empty
#line 1489 "dhcp4_parser.yy"
{
// Parse the option-def list entry map
#line 2570 "dhcp4_parser.cc"
break;
- case 440:
+ case 440: // sub_option_def: "{" $@70 option_def_params "}"
#line 1493 "dhcp4_parser.yy"
{
// The name, code and type option def parameters are required.
#line 2582 "dhcp4_parser.cc"
break;
- case 456:
+ case 456: // code: "code" ":" "integer"
#line 1525 "dhcp4_parser.yy"
{
ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2591 "dhcp4_parser.cc"
break;
- case 458:
+ case 458: // $@71: %empty
#line 1532 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2599 "dhcp4_parser.cc"
break;
- case 459:
+ case 459: // option_def_type: "type" $@71 ":" "constant string"
#line 1534 "dhcp4_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2609 "dhcp4_parser.cc"
break;
- case 460:
+ case 460: // $@72: %empty
#line 1540 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2617 "dhcp4_parser.cc"
break;
- case 461:
+ case 461: // option_def_record_types: "record-types" $@72 ":" "constant string"
#line 1542 "dhcp4_parser.yy"
{
ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2627 "dhcp4_parser.cc"
break;
- case 462:
+ case 462: // $@73: %empty
#line 1548 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2635 "dhcp4_parser.cc"
break;
- case 463:
+ case 463: // space: "space" $@73 ":" "constant string"
#line 1550 "dhcp4_parser.yy"
{
ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2645 "dhcp4_parser.cc"
break;
- case 465:
+ case 465: // $@74: %empty
#line 1558 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2653 "dhcp4_parser.cc"
break;
- case 466:
+ case 466: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
#line 1560 "dhcp4_parser.yy"
{
ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2663 "dhcp4_parser.cc"
break;
- case 467:
+ case 467: // option_def_array: "array" ":" "boolean"
#line 1566 "dhcp4_parser.yy"
{
ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2672 "dhcp4_parser.cc"
break;
- case 468:
+ case 468: // $@75: %empty
#line 1575 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2683 "dhcp4_parser.cc"
break;
- case 469:
+ case 469: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
#line 1580 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2692 "dhcp4_parser.cc"
break;
- case 474:
+ case 474: // $@76: %empty
#line 1599 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2702 "dhcp4_parser.cc"
break;
- case 475:
+ case 475: // option_data_entry: "{" $@76 option_data_params "}"
#line 1603 "dhcp4_parser.yy"
{
/// @todo: the code or name parameters are required.
#line 2711 "dhcp4_parser.cc"
break;
- case 476:
+ case 476: // $@77: %empty
#line 1611 "dhcp4_parser.yy"
{
// Parse the option-data list entry map
#line 2721 "dhcp4_parser.cc"
break;
- case 477:
+ case 477: // sub_option_data: "{" $@77 option_data_params "}"
#line 1615 "dhcp4_parser.yy"
{
/// @todo: the code or name parameters are required.
#line 2730 "dhcp4_parser.cc"
break;
- case 492:
+ case 492: // $@78: %empty
#line 1648 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2738 "dhcp4_parser.cc"
break;
- case 493:
+ case 493: // option_data_data: "data" $@78 ":" "constant string"
#line 1650 "dhcp4_parser.yy"
{
ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2748 "dhcp4_parser.cc"
break;
- case 496:
+ case 496: // option_data_csv_format: "csv-format" ":" "boolean"
#line 1660 "dhcp4_parser.yy"
{
ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2757 "dhcp4_parser.cc"
break;
- case 497:
+ case 497: // option_data_always_send: "always-send" ":" "boolean"
#line 1665 "dhcp4_parser.yy"
{
ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2766 "dhcp4_parser.cc"
break;
- case 498:
+ case 498: // $@79: %empty
#line 1673 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2777 "dhcp4_parser.cc"
break;
- case 499:
+ case 499: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
#line 1678 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2786 "dhcp4_parser.cc"
break;
- case 504:
+ case 504: // $@80: %empty
#line 1693 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2796 "dhcp4_parser.cc"
break;
- case 505:
+ case 505: // pool_list_entry: "{" $@80 pool_params "}"
#line 1697 "dhcp4_parser.yy"
{
// The pool parameter is required.
#line 2806 "dhcp4_parser.cc"
break;
- case 506:
+ case 506: // $@81: %empty
#line 1703 "dhcp4_parser.yy"
{
// Parse the pool list entry map
#line 2816 "dhcp4_parser.cc"
break;
- case 507:
+ case 507: // sub_pool4: "{" $@81 pool_params "}"
#line 1707 "dhcp4_parser.yy"
{
// The pool parameter is required.
#line 2826 "dhcp4_parser.cc"
break;
- case 517:
+ case 517: // $@82: %empty
#line 1726 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2834 "dhcp4_parser.cc"
break;
- case 518:
+ case 518: // pool_entry: "pool" $@82 ":" "constant string"
#line 1728 "dhcp4_parser.yy"
{
ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2844 "dhcp4_parser.cc"
break;
- case 519:
+ case 519: // $@83: %empty
#line 1734 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2852 "dhcp4_parser.cc"
break;
- case 520:
+ case 520: // user_context: "user-context" $@83 ":" map_value
#line 1736 "dhcp4_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 2879 "dhcp4_parser.cc"
break;
- case 521:
+ case 521: // $@84: %empty
#line 1759 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2887 "dhcp4_parser.cc"
break;
- case 522:
+ case 522: // comment: "comment" $@84 ":" "constant string"
#line 1761 "dhcp4_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 2916 "dhcp4_parser.cc"
break;
- case 523:
+ case 523: // $@85: %empty
#line 1789 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2927 "dhcp4_parser.cc"
break;
- case 524:
+ case 524: // reservations: "reservations" $@85 ":" "[" reservations_list "]"
#line 1794 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 2936 "dhcp4_parser.cc"
break;
- case 529:
+ case 529: // $@86: %empty
#line 1807 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2946 "dhcp4_parser.cc"
break;
- case 530:
+ case 530: // reservation: "{" $@86 reservation_params "}"
#line 1811 "dhcp4_parser.yy"
{
/// @todo: an identifier parameter is required.
#line 2955 "dhcp4_parser.cc"
break;
- case 531:
+ case 531: // $@87: %empty
#line 1816 "dhcp4_parser.yy"
{
// Parse the reservations list entry map
#line 2965 "dhcp4_parser.cc"
break;
- case 532:
+ case 532: // sub_reservation: "{" $@87 reservation_params "}"
#line 1820 "dhcp4_parser.yy"
{
/// @todo: an identifier parameter is required.
#line 2974 "dhcp4_parser.cc"
break;
- case 552:
+ case 552: // $@88: %empty
#line 1851 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2982 "dhcp4_parser.cc"
break;
- case 553:
+ case 553: // next_server: "next-server" $@88 ":" "constant string"
#line 1853 "dhcp4_parser.yy"
{
ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2992 "dhcp4_parser.cc"
break;
- case 554:
+ case 554: // $@89: %empty
#line 1859 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3000 "dhcp4_parser.cc"
break;
- case 555:
+ case 555: // server_hostname: "server-hostname" $@89 ":" "constant string"
#line 1861 "dhcp4_parser.yy"
{
ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3010 "dhcp4_parser.cc"
break;
- case 556:
+ case 556: // $@90: %empty
#line 1867 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3018 "dhcp4_parser.cc"
break;
- case 557:
+ case 557: // boot_file_name: "boot-file-name" $@90 ":" "constant string"
#line 1869 "dhcp4_parser.yy"
{
ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3028 "dhcp4_parser.cc"
break;
- case 558:
+ case 558: // $@91: %empty
#line 1875 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3036 "dhcp4_parser.cc"
break;
- case 559:
+ case 559: // ip_address: "ip-address" $@91 ":" "constant string"
#line 1877 "dhcp4_parser.yy"
{
ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3046 "dhcp4_parser.cc"
break;
- case 560:
+ case 560: // $@92: %empty
#line 1883 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3057 "dhcp4_parser.cc"
break;
- case 561:
+ case 561: // ip_addresses: "ip-addresses" $@92 ":" list_strings
#line 1888 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3066 "dhcp4_parser.cc"
break;
- case 562:
+ case 562: // $@93: %empty
#line 1893 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3074 "dhcp4_parser.cc"
break;
- case 563:
+ case 563: // duid: "duid" $@93 ":" "constant string"
#line 1895 "dhcp4_parser.yy"
{
ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3084 "dhcp4_parser.cc"
break;
- case 564:
+ case 564: // $@94: %empty
#line 1901 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3092 "dhcp4_parser.cc"
break;
- case 565:
+ case 565: // hw_address: "hw-address" $@94 ":" "constant string"
#line 1903 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3102 "dhcp4_parser.cc"
break;
- case 566:
+ case 566: // $@95: %empty
#line 1909 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3110 "dhcp4_parser.cc"
break;
- case 567:
+ case 567: // client_id_value: "client-id" $@95 ":" "constant string"
#line 1911 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3120 "dhcp4_parser.cc"
break;
- case 568:
+ case 568: // $@96: %empty
#line 1917 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3128 "dhcp4_parser.cc"
break;
- case 569:
+ case 569: // circuit_id_value: "circuit-id" $@96 ":" "constant string"
#line 1919 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3138 "dhcp4_parser.cc"
break;
- case 570:
+ case 570: // $@97: %empty
#line 1925 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3146 "dhcp4_parser.cc"
break;
- case 571:
+ case 571: // flex_id_value: "flex-id" $@97 ":" "constant string"
#line 1927 "dhcp4_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3156 "dhcp4_parser.cc"
break;
- case 572:
+ case 572: // $@98: %empty
#line 1933 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3164 "dhcp4_parser.cc"
break;
- case 573:
+ case 573: // hostname: "hostname" $@98 ":" "constant string"
#line 1935 "dhcp4_parser.yy"
{
ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3174 "dhcp4_parser.cc"
break;
- case 574:
+ case 574: // $@99: %empty
#line 1941 "dhcp4_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3185 "dhcp4_parser.cc"
break;
- case 575:
+ case 575: // reservation_client_classes: "client-classes" $@99 ":" list_strings
#line 1946 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3194 "dhcp4_parser.cc"
break;
- case 576:
+ case 576: // $@100: %empty
#line 1954 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3205 "dhcp4_parser.cc"
break;
- case 577:
+ case 577: // relay: "relay" $@100 ":" "{" relay_map "}"
#line 1959 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3214 "dhcp4_parser.cc"
break;
- case 580:
+ case 580: // $@101: %empty
#line 1971 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3225 "dhcp4_parser.cc"
break;
- case 581:
+ case 581: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]"
#line 1976 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3234 "dhcp4_parser.cc"
break;
- case 584:
+ case 584: // $@102: %empty
#line 1985 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3244 "dhcp4_parser.cc"
break;
- case 585:
+ case 585: // client_class_entry: "{" $@102 client_class_params "}"
#line 1989 "dhcp4_parser.yy"
{
// The name client class parameter is required.
#line 3254 "dhcp4_parser.cc"
break;
- case 602:
+ case 602: // $@103: %empty
#line 2018 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3262 "dhcp4_parser.cc"
break;
- case 603:
+ case 603: // client_class_test: "test" $@103 ":" "constant string"
#line 2020 "dhcp4_parser.yy"
{
ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3272 "dhcp4_parser.cc"
break;
- case 604:
+ case 604: // only_if_required: "only-if-required" ":" "boolean"
#line 2026 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3281 "dhcp4_parser.cc"
break;
- case 605:
+ case 605: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
#line 2033 "dhcp4_parser.yy"
{
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3290 "dhcp4_parser.cc"
break;
- case 606:
+ case 606: // $@104: %empty
#line 2040 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3301 "dhcp4_parser.cc"
break;
- case 607:
+ case 607: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}"
#line 2045 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3310 "dhcp4_parser.cc"
break;
- case 615:
+ case 615: // $@105: %empty
#line 2061 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3318 "dhcp4_parser.cc"
break;
- case 616:
+ case 616: // control_socket_type: "socket-type" $@105 ":" "constant string"
#line 2063 "dhcp4_parser.yy"
{
ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3328 "dhcp4_parser.cc"
break;
- case 617:
+ case 617: // $@106: %empty
#line 2069 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3336 "dhcp4_parser.cc"
break;
- case 618:
+ case 618: // control_socket_name: "socket-name" $@106 ":" "constant string"
#line 2071 "dhcp4_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3346 "dhcp4_parser.cc"
break;
- case 619:
+ case 619: // $@107: %empty
#line 2080 "dhcp4_parser.yy"
{
ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3357 "dhcp4_parser.cc"
break;
- case 620:
+ case 620: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}"
#line 2085 "dhcp4_parser.yy"
{
// The enable queue parameter is required.
#line 3368 "dhcp4_parser.cc"
break;
- case 629:
+ case 629: // enable_queue: "enable-queue" ":" "boolean"
#line 2104 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3377 "dhcp4_parser.cc"
break;
- case 630:
+ case 630: // $@108: %empty
#line 2109 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3385 "dhcp4_parser.cc"
break;
- case 631:
+ case 631: // queue_type: "queue-type" $@108 ":" "constant string"
#line 2111 "dhcp4_parser.yy"
{
ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3395 "dhcp4_parser.cc"
break;
- case 632:
+ case 632: // capacity: "capacity" ":" "integer"
#line 2117 "dhcp4_parser.yy"
{
ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3404 "dhcp4_parser.cc"
break;
- case 633:
+ case 633: // $@109: %empty
#line 2122 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3412 "dhcp4_parser.cc"
break;
- case 634:
+ case 634: // arbitrary_map_entry: "constant string" $@109 ":" value
#line 2124 "dhcp4_parser.yy"
{
ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
#line 3421 "dhcp4_parser.cc"
break;
- case 635:
+ case 635: // $@110: %empty
#line 2131 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3432 "dhcp4_parser.cc"
break;
- case 636:
+ case 636: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}"
#line 2136 "dhcp4_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
#line 3443 "dhcp4_parser.cc"
break;
- case 637:
+ case 637: // $@111: %empty
#line 2143 "dhcp4_parser.yy"
{
// Parse the dhcp-ddns map
#line 3453 "dhcp4_parser.cc"
break;
- case 638:
+ case 638: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}"
#line 2147 "dhcp4_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
#line 3463 "dhcp4_parser.cc"
break;
- case 659:
+ case 659: // enable_updates: "enable-updates" ":" "boolean"
#line 2177 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3472 "dhcp4_parser.cc"
break;
- case 660:
+ case 660: // $@112: %empty
#line 2182 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3480 "dhcp4_parser.cc"
break;
- case 661:
+ case 661: // server_ip: "server-ip" $@112 ":" "constant string"
#line 2184 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3490 "dhcp4_parser.cc"
break;
- case 662:
+ case 662: // server_port: "server-port" ":" "integer"
#line 2190 "dhcp4_parser.yy"
{
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3499 "dhcp4_parser.cc"
break;
- case 663:
+ case 663: // $@113: %empty
#line 2195 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3507 "dhcp4_parser.cc"
break;
- case 664:
+ case 664: // sender_ip: "sender-ip" $@113 ":" "constant string"
#line 2197 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3517 "dhcp4_parser.cc"
break;
- case 665:
+ case 665: // sender_port: "sender-port" ":" "integer"
#line 2203 "dhcp4_parser.yy"
{
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3526 "dhcp4_parser.cc"
break;
- case 666:
+ case 666: // max_queue_size: "max-queue-size" ":" "integer"
#line 2208 "dhcp4_parser.yy"
{
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3535 "dhcp4_parser.cc"
break;
- case 667:
+ case 667: // $@114: %empty
#line 2213 "dhcp4_parser.yy"
{
ctx.enter(ctx.NCR_PROTOCOL);
#line 3543 "dhcp4_parser.cc"
break;
- case 668:
+ case 668: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value
#line 2215 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
#line 3552 "dhcp4_parser.cc"
break;
- case 669:
+ case 669: // ncr_protocol_value: "udp"
#line 2221 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
#line 3558 "dhcp4_parser.cc"
break;
- case 670:
+ case 670: // ncr_protocol_value: "tcp"
#line 2222 "dhcp4_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
#line 3564 "dhcp4_parser.cc"
break;
- case 671:
+ case 671: // $@115: %empty
#line 2225 "dhcp4_parser.yy"
{
ctx.enter(ctx.NCR_FORMAT);
#line 3572 "dhcp4_parser.cc"
break;
- case 672:
+ case 672: // ncr_format: "ncr-format" $@115 ":" "JSON"
#line 2227 "dhcp4_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
#line 3582 "dhcp4_parser.cc"
break;
- case 673:
+ case 673: // $@116: %empty
#line 2234 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3590 "dhcp4_parser.cc"
break;
- case 674:
+ case 674: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
#line 2236 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3600 "dhcp4_parser.cc"
break;
- case 675:
+ case 675: // dep_override_no_update: "override-no-update" ":" "boolean"
#line 2243 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3609 "dhcp4_parser.cc"
break;
- case 676:
+ case 676: // dep_override_client_update: "override-client-update" ":" "boolean"
#line 2249 "dhcp4_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3618 "dhcp4_parser.cc"
break;
- case 677:
+ case 677: // $@117: %empty
#line 2255 "dhcp4_parser.yy"
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
#line 3626 "dhcp4_parser.cc"
break;
- case 678:
+ case 678: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value
#line 2257 "dhcp4_parser.yy"
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
#line 3635 "dhcp4_parser.cc"
break;
- case 679:
+ case 679: // $@118: %empty
#line 2263 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3643 "dhcp4_parser.cc"
break;
- case 680:
+ case 680: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string"
#line 2265 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3653 "dhcp4_parser.cc"
break;
- case 681:
+ case 681: // $@119: %empty
#line 2272 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3661 "dhcp4_parser.cc"
break;
- case 682:
+ case 682: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string"
#line 2274 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3671 "dhcp4_parser.cc"
break;
- case 683:
+ case 683: // $@120: %empty
#line 2281 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3679 "dhcp4_parser.cc"
break;
- case 684:
+ case 684: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string"
#line 2283 "dhcp4_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3689 "dhcp4_parser.cc"
break;
- case 685:
+ case 685: // $@121: %empty
#line 2292 "dhcp4_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3700 "dhcp4_parser.cc"
break;
- case 686:
+ case 686: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
#line 2297 "dhcp4_parser.yy"
{
// No config control params are required
#line 3710 "dhcp4_parser.cc"
break;
- case 687:
+ case 687: // $@122: %empty
#line 2303 "dhcp4_parser.yy"
{
// Parse the config-control map
#line 3720 "dhcp4_parser.cc"
break;
- case 688:
+ case 688: // sub_config_control: "{" $@122 config_control_params "}"
#line 2307 "dhcp4_parser.yy"
{
// No config_control params are required
#line 3729 "dhcp4_parser.cc"
break;
- case 693:
+ case 693: // $@123: %empty
#line 2322 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3740 "dhcp4_parser.cc"
break;
- case 694:
+ case 694: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
#line 2327 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3749 "dhcp4_parser.cc"
break;
- case 695:
+ case 695: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
#line 2332 "dhcp4_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3758 "dhcp4_parser.cc"
break;
- case 696:
+ case 696: // $@124: %empty
#line 2339 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3769 "dhcp4_parser.cc"
break;
- case 697:
+ case 697: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
#line 2344 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3778 "dhcp4_parser.cc"
break;
- case 700:
+ case 700: // $@125: %empty
#line 2356 "dhcp4_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3788 "dhcp4_parser.cc"
break;
- case 701:
+ case 701: // logger_entry: "{" $@125 logger_params "}"
#line 2360 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3796 "dhcp4_parser.cc"
break;
- case 711:
+ case 711: // debuglevel: "debuglevel" ":" "integer"
#line 2377 "dhcp4_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3805 "dhcp4_parser.cc"
break;
- case 712:
+ case 712: // $@126: %empty
#line 2382 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3813 "dhcp4_parser.cc"
break;
- case 713:
+ case 713: // severity: "severity" $@126 ":" "constant string"
#line 2384 "dhcp4_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3823 "dhcp4_parser.cc"
break;
- case 714:
+ case 714: // $@127: %empty
#line 2390 "dhcp4_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3834 "dhcp4_parser.cc"
break;
- case 715:
+ case 715: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]"
#line 2395 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3843 "dhcp4_parser.cc"
break;
- case 718:
+ case 718: // $@128: %empty
#line 2404 "dhcp4_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3853 "dhcp4_parser.cc"
break;
- case 719:
+ case 719: // output_entry: "{" $@128 output_params_list "}"
#line 2408 "dhcp4_parser.yy"
{
ctx.stack_.pop_back();
#line 3861 "dhcp4_parser.cc"
break;
- case 727:
+ case 727: // $@129: %empty
#line 2423 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3869 "dhcp4_parser.cc"
break;
- case 728:
+ case 728: // output: "output" $@129 ":" "constant string"
#line 2425 "dhcp4_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3879 "dhcp4_parser.cc"
break;
- case 729:
+ case 729: // flush: "flush" ":" "boolean"
#line 2431 "dhcp4_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3888 "dhcp4_parser.cc"
break;
- case 730:
+ case 730: // maxsize: "maxsize" ":" "integer"
#line 2436 "dhcp4_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3897 "dhcp4_parser.cc"
break;
- case 731:
+ case 731: // maxver: "maxver" ":" "integer"
#line 2441 "dhcp4_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3906 "dhcp4_parser.cc"
break;
- case 732:
+ case 732: // $@130: %empty
#line 2446 "dhcp4_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3914 "dhcp4_parser.cc"
break;
- case 733:
+ case 733: // pattern: "pattern" $@130 ":" "constant string"
#line 2448 "dhcp4_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton interface for Bison LALR(1) parsers in C++
{
switch (this->kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (std::move (that.value));
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (std::move (that.value));
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (std::move (that.value));
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (std::move (that.value));
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (std::move (that.value));
break;
// Value type destructor.
switch (yykind)
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.template destroy< ElementPtr > ();
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.template destroy< bool > ();
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.template destroy< double > ();
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.template destroy< int64_t > ();
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.template destroy< std::string > ();
break;
void move (by_state& that);
/// The symbol kind (corresponding to \a state).
- /// \a S_YYEMPTY when empty.
+ /// \a symbol_kind::S_YYEMPTY when empty.
symbol_kind_type kind () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
185, 186, 187, 188, 189
};
- const int user_token_number_max_ = 444;
+ // Last valid token kind.
+ const int code_max = 444;
if (t <= 0)
return symbol_kind::S_YYEOF;
- else if (t <= user_token_number_max_)
+ else if (t <= code_max)
return YY_CAST (symbol_kind_type, translate_table[t]);
else
return symbol_kind::S_YYUNDEF;
{
switch (this->kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.copy< ElementPtr > (YY_MOVE (that.value));
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (YY_MOVE (that.value));
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (YY_MOVE (that.value));
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (YY_MOVE (that.value));
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (YY_MOVE (that.value));
break;
super_type::move (s);
switch (this->kind ())
{
- case 205: // value
- case 209: // map_value
- case 250: // ddns_replace_client_name_value
- case 272: // socket_type
- case 275: // outbound_interface_value
- case 297: // db_type
- case 391: // hr_mode
- case 546: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_socket_type: // socket_type
+ case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (YY_MOVE (s.value));
break;
- case 189: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (s.value));
break;
- case 188: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (s.value));
break;
- case 187: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (s.value));
break;
- case 186: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (s.value));
break;
#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 5100 "dhcp4_parser.h"
-
+#line 5101 "dhcp4_parser.h"
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Locations for Bison parsers in C++
class position
{
public:
+ /// Type for file name.
+ typedef const std::string filename_type;
/// Type for line and column numbers.
typedef int counter_type;
/// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
+ explicit position (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
: filename (f)
/// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
+ void initialize (filename_type* fn = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
/** \} */
/// File name to which this position refers.
- std::string* filename;
+ filename_type* filename;
/// Current line number.
counter_type line;
/// Current column number.
return res -= width;
}
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
class location
{
public:
+ /// Type for file name.
+ typedef position::filename_type filename_type;
/// Type for line and column numbers.
typedef position::counter_type counter_type;
{}
/// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
+ explicit location (filename_type* f,
counter_type l = 1,
counter_type c = 1)
: begin (f, l, c)
/// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
+ void initialize (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
return res -= width;
}
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param loc a reference to the location to redirect
#line 14 "dhcp4_parser.yy"
} } // isc::dhcp
-#line 333 "location.hh"
+#line 305 "location.hh"
#endif // !YY_PARSER4_LOCATION_HH_INCLUDED
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
{
switch (that.kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
break;
{
switch (that.kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (YY_MOVE (that.value));
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (that.value));
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (that.value));
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (that.value));
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (that.value));
break;
state = that.state;
switch (that.kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.copy< ElementPtr > (that.value);
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (that.value);
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (that.value);
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (that.value);
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (that.value);
break;
state = that.state;
switch (that.kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (that.value);
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (that.value);
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (that.value);
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (that.value);
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (that.value);
break;
<< yysym.location << ": ";
switch (yykind)
{
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 400 "dhcp6_parser.cc"
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
#line 406 "dhcp6_parser.cc"
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
#line 412 "dhcp6_parser.cc"
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
#line 418 "dhcp6_parser.cc"
break;
- case 214: // value
+ case symbol_kind::S_value: // value
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 424 "dhcp6_parser.cc"
break;
- case 218: // map_value
+ case symbol_kind::S_map_value: // map_value
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 430 "dhcp6_parser.cc"
break;
- case 259: // ddns_replace_client_name_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 436 "dhcp6_parser.cc"
break;
- case 296: // db_type
+ case symbol_kind::S_db_type: // db_type
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 442 "dhcp6_parser.cc"
break;
- case 397: // hr_mode
+ case symbol_kind::S_hr_mode: // hr_mode
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 448 "dhcp6_parser.cc"
break;
- case 533: // duid_type
+ case symbol_kind::S_duid_type: // duid_type
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 454 "dhcp6_parser.cc"
break;
- case 576: // ncr_protocol_value
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
#line 274 "dhcp6_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 460 "dhcp6_parser.cc"
when using variants. */
switch (yyr1_[yyn])
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
yylhs.value.emplace< ElementPtr > ();
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
yylhs.value.emplace< bool > ();
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
yylhs.value.emplace< double > ();
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
yylhs.value.emplace< int64_t > ();
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
yylhs.value.emplace< std::string > ();
break;
{
switch (yyn)
{
- case 2:
+ case 2: // $@1: %empty
#line 283 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORD; }
#line 739 "dhcp6_parser.cc"
break;
- case 4:
+ case 4: // $@2: %empty
#line 284 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
#line 745 "dhcp6_parser.cc"
break;
- case 6:
+ case 6: // $@3: %empty
#line 285 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.DHCP6; }
#line 751 "dhcp6_parser.cc"
break;
- case 8:
+ case 8: // $@4: %empty
#line 286 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.INTERFACES_CONFIG; }
#line 757 "dhcp6_parser.cc"
break;
- case 10:
+ case 10: // $@5: %empty
#line 287 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.SUBNET6; }
#line 763 "dhcp6_parser.cc"
break;
- case 12:
+ case 12: // $@6: %empty
#line 288 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.POOLS; }
#line 769 "dhcp6_parser.cc"
break;
- case 14:
+ case 14: // $@7: %empty
#line 289 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.PD_POOLS; }
#line 775 "dhcp6_parser.cc"
break;
- case 16:
+ case 16: // $@8: %empty
#line 290 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.RESERVATIONS; }
#line 781 "dhcp6_parser.cc"
break;
- case 18:
+ case 18: // $@9: %empty
#line 291 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.DHCP6; }
#line 787 "dhcp6_parser.cc"
break;
- case 20:
+ case 20: // $@10: %empty
#line 292 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DEF; }
#line 793 "dhcp6_parser.cc"
break;
- case 22:
+ case 22: // $@11: %empty
#line 293 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.OPTION_DATA; }
#line 799 "dhcp6_parser.cc"
break;
- case 24:
+ case 24: // $@12: %empty
#line 294 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
#line 805 "dhcp6_parser.cc"
break;
- case 26:
+ case 26: // $@13: %empty
#line 295 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.DHCP_DDNS; }
#line 811 "dhcp6_parser.cc"
break;
- case 28:
+ case 28: // $@14: %empty
#line 296 "dhcp6_parser.yy"
{ ctx.ctx_ = ctx.CONFIG_CONTROL; }
#line 817 "dhcp6_parser.cc"
break;
- case 30:
+ case 30: // value: "integer"
#line 304 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
#line 823 "dhcp6_parser.cc"
break;
- case 31:
+ case 31: // value: "floating point"
#line 305 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
#line 829 "dhcp6_parser.cc"
break;
- case 32:
+ case 32: // value: "boolean"
#line 306 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
#line 835 "dhcp6_parser.cc"
break;
- case 33:
+ case 33: // value: "constant string"
#line 307 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
#line 841 "dhcp6_parser.cc"
break;
- case 34:
+ case 34: // value: "null"
#line 308 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
#line 847 "dhcp6_parser.cc"
break;
- case 35:
+ case 35: // value: map2
#line 309 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 853 "dhcp6_parser.cc"
break;
- case 36:
+ case 36: // value: list_generic
#line 310 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 859 "dhcp6_parser.cc"
break;
- case 37:
+ case 37: // sub_json: value
#line 313 "dhcp6_parser.yy"
{
// Push back the JSON value on the stack
#line 868 "dhcp6_parser.cc"
break;
- case 38:
+ case 38: // $@15: %empty
#line 318 "dhcp6_parser.yy"
{
// This code is executed when we're about to start parsing
#line 879 "dhcp6_parser.cc"
break;
- case 39:
+ case 39: // map2: "{" $@15 map_content "}"
#line 323 "dhcp6_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 889 "dhcp6_parser.cc"
break;
- case 40:
+ case 40: // map_value: map2
#line 329 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 895 "dhcp6_parser.cc"
break;
- case 43:
+ case 43: // not_empty_map: "constant string" ":" value
#line 336 "dhcp6_parser.yy"
{
// map containing a single entry
#line 904 "dhcp6_parser.cc"
break;
- case 44:
+ case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
#line 340 "dhcp6_parser.yy"
{
// map consisting of a shorter map followed by
#line 914 "dhcp6_parser.cc"
break;
- case 45:
+ case 45: // $@16: %empty
#line 347 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 923 "dhcp6_parser.cc"
break;
- case 46:
+ case 46: // list_generic: "[" $@16 list_content "]"
#line 350 "dhcp6_parser.yy"
{
// list parsing complete. Put any sanity checking here
#line 931 "dhcp6_parser.cc"
break;
- case 49:
+ case 49: // not_empty_list: value
#line 358 "dhcp6_parser.yy"
{
// List consisting of a single element.
#line 940 "dhcp6_parser.cc"
break;
- case 50:
+ case 50: // not_empty_list: not_empty_list "," value
#line 362 "dhcp6_parser.yy"
{
// List ending with , and a value.
#line 949 "dhcp6_parser.cc"
break;
- case 51:
+ case 51: // $@17: %empty
#line 369 "dhcp6_parser.yy"
{
// List parsing about to start
#line 957 "dhcp6_parser.cc"
break;
- case 52:
+ case 52: // list_strings: "[" $@17 list_strings_content "]"
#line 371 "dhcp6_parser.yy"
{
// list parsing complete. Put any sanity checking here
#line 966 "dhcp6_parser.cc"
break;
- case 55:
+ case 55: // not_empty_list_strings: "constant string"
#line 380 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 975 "dhcp6_parser.cc"
break;
- case 56:
+ case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
#line 384 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 984 "dhcp6_parser.cc"
break;
- case 57:
+ case 57: // unknown_map_entry: "constant string" ":"
#line 395 "dhcp6_parser.yy"
{
const std::string& where = ctx.contextName();
#line 995 "dhcp6_parser.cc"
break;
- case 58:
+ case 58: // $@18: %empty
#line 404 "dhcp6_parser.yy"
{
// This code is executed when we're about to start parsing
#line 1006 "dhcp6_parser.cc"
break;
- case 59:
+ case 59: // syntax_map: "{" $@18 global_objects "}"
#line 409 "dhcp6_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 1019 "dhcp6_parser.cc"
break;
- case 63:
+ case 63: // $@19: %empty
#line 427 "dhcp6_parser.yy"
{
// This code is executed when we're about to start parsing
#line 1034 "dhcp6_parser.cc"
break;
- case 64:
+ case 64: // dhcp6_object: "Dhcp6" $@19 ":" "{" global_params "}"
#line 436 "dhcp6_parser.yy"
{
// No global parameter is required
#line 1044 "dhcp6_parser.cc"
break;
- case 65:
+ case 65: // $@20: %empty
#line 444 "dhcp6_parser.yy"
{
// Parse the Dhcp6 map
#line 1054 "dhcp6_parser.cc"
break;
- case 66:
+ case 66: // sub_dhcp6: "{" $@20 global_params "}"
#line 448 "dhcp6_parser.yy"
{
// No global parameter is required
#line 1063 "dhcp6_parser.cc"
break;
- case 122:
+ case 122: // $@21: %empty
#line 514 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1071 "dhcp6_parser.cc"
break;
- case 123:
+ case 123: // data_directory: "data-directory" $@21 ":" "constant string"
#line 516 "dhcp6_parser.yy"
{
ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1081 "dhcp6_parser.cc"
break;
- case 124:
+ case 124: // preferred_lifetime: "preferred-lifetime" ":" "integer"
#line 522 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1090 "dhcp6_parser.cc"
break;
- case 125:
+ case 125: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
#line 527 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1099 "dhcp6_parser.cc"
break;
- case 126:
+ case 126: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
#line 532 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1108 "dhcp6_parser.cc"
break;
- case 127:
+ case 127: // valid_lifetime: "valid-lifetime" ":" "integer"
#line 537 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1117 "dhcp6_parser.cc"
break;
- case 128:
+ case 128: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
#line 542 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1126 "dhcp6_parser.cc"
break;
- case 129:
+ case 129: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
#line 547 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1135 "dhcp6_parser.cc"
break;
- case 130:
+ case 130: // renew_timer: "renew-timer" ":" "integer"
#line 552 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1144 "dhcp6_parser.cc"
break;
- case 131:
+ case 131: // rebind_timer: "rebind-timer" ":" "integer"
#line 557 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1153 "dhcp6_parser.cc"
break;
- case 132:
+ case 132: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
#line 562 "dhcp6_parser.yy"
{
ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1162 "dhcp6_parser.cc"
break;
- case 133:
+ case 133: // t1_percent: "t1-percent" ":" "floating point"
#line 567 "dhcp6_parser.yy"
{
ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
#line 1171 "dhcp6_parser.cc"
break;
- case 134:
+ case 134: // t2_percent: "t2-percent" ":" "floating point"
#line 572 "dhcp6_parser.yy"
{
ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
#line 1180 "dhcp6_parser.cc"
break;
- case 135:
+ case 135: // decline_probation_period: "decline-probation-period" ":" "integer"
#line 577 "dhcp6_parser.yy"
{
ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1189 "dhcp6_parser.cc"
break;
- case 136:
+ case 136: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
#line 582 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1198 "dhcp6_parser.cc"
break;
- case 137:
+ case 137: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
#line 587 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1207 "dhcp6_parser.cc"
break;
- case 138:
+ case 138: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
#line 592 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1216 "dhcp6_parser.cc"
break;
- case 139:
+ case 139: // $@22: %empty
#line 597 "dhcp6_parser.yy"
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
#line 1224 "dhcp6_parser.cc"
break;
- case 140:
+ case 140: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
#line 599 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
#line 1233 "dhcp6_parser.cc"
break;
- case 141:
+ case 141: // ddns_replace_client_name_value: "when-present"
#line 605 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
#line 1241 "dhcp6_parser.cc"
break;
- case 142:
+ case 142: // ddns_replace_client_name_value: "never"
#line 608 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
#line 1249 "dhcp6_parser.cc"
break;
- case 143:
+ case 143: // ddns_replace_client_name_value: "always"
#line 611 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
#line 1257 "dhcp6_parser.cc"
break;
- case 144:
+ case 144: // ddns_replace_client_name_value: "when-not-present"
#line 614 "dhcp6_parser.yy"
{
yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
#line 1265 "dhcp6_parser.cc"
break;
- case 145:
+ case 145: // ddns_replace_client_name_value: "boolean"
#line 617 "dhcp6_parser.yy"
{
error(yystack_[0].location, "boolean values for the replace-client-name are "
#line 1274 "dhcp6_parser.cc"
break;
- case 146:
+ case 146: // $@23: %empty
#line 623 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1282 "dhcp6_parser.cc"
break;
- case 147:
+ case 147: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
#line 625 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1292 "dhcp6_parser.cc"
break;
- case 148:
+ case 148: // $@24: %empty
#line 631 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1300 "dhcp6_parser.cc"
break;
- case 149:
+ case 149: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
#line 633 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1310 "dhcp6_parser.cc"
break;
- case 150:
+ case 150: // $@25: %empty
#line 639 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1318 "dhcp6_parser.cc"
break;
- case 151:
+ case 151: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
#line 641 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1328 "dhcp6_parser.cc"
break;
- case 152:
+ case 152: // $@26: %empty
#line 647 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1336 "dhcp6_parser.cc"
break;
- case 153:
+ case 153: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
#line 649 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1346 "dhcp6_parser.cc"
break;
- case 154:
+ case 154: // store_extended_info: "store-extended-info" ":" "boolean"
#line 655 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1355 "dhcp6_parser.cc"
break;
- case 155:
+ case 155: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
#line 660 "dhcp6_parser.yy"
{
ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1364 "dhcp6_parser.cc"
break;
- case 156:
+ case 156: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
#line 665 "dhcp6_parser.yy"
{
ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1373 "dhcp6_parser.cc"
break;
- case 157:
+ case 157: // $@27: %empty
#line 670 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1381 "dhcp6_parser.cc"
break;
- case 158:
+ case 158: // server_tag: "server-tag" $@27 ":" "constant string"
#line 672 "dhcp6_parser.yy"
{
ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1391 "dhcp6_parser.cc"
break;
- case 159:
+ case 159: // $@28: %empty
#line 678 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1402 "dhcp6_parser.cc"
break;
- case 160:
+ case 160: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
#line 683 "dhcp6_parser.yy"
{
// No interfaces config param is required
#line 1412 "dhcp6_parser.cc"
break;
- case 161:
+ case 161: // $@29: %empty
#line 689 "dhcp6_parser.yy"
{
// Parse the interfaces-config map
#line 1422 "dhcp6_parser.cc"
break;
- case 162:
+ case 162: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
#line 693 "dhcp6_parser.yy"
{
// No interfaces config param is required
#line 1431 "dhcp6_parser.cc"
break;
- case 170:
+ case 170: // $@30: %empty
#line 709 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1442 "dhcp6_parser.cc"
break;
- case 171:
+ case 171: // interfaces_list: "interfaces" $@30 ":" list_strings
#line 714 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 1451 "dhcp6_parser.cc"
break;
- case 172:
+ case 172: // re_detect: "re-detect" ":" "boolean"
#line 719 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1460 "dhcp6_parser.cc"
break;
- case 173:
+ case 173: // $@31: %empty
#line 724 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1471 "dhcp6_parser.cc"
break;
- case 174:
+ case 174: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
#line 729 "dhcp6_parser.yy"
{
// The type parameter is required
#line 1482 "dhcp6_parser.cc"
break;
- case 175:
+ case 175: // $@32: %empty
#line 736 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1493 "dhcp6_parser.cc"
break;
- case 176:
+ case 176: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
#line 741 "dhcp6_parser.yy"
{
// The type parameter is required
#line 1504 "dhcp6_parser.cc"
break;
- case 177:
+ case 177: // $@33: %empty
#line 748 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1515 "dhcp6_parser.cc"
break;
- case 178:
+ case 178: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
#line 753 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 1524 "dhcp6_parser.cc"
break;
- case 183:
+ case 183: // $@34: %empty
#line 766 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1534 "dhcp6_parser.cc"
break;
- case 184:
+ case 184: // database: "{" $@34 database_map_params "}"
#line 770 "dhcp6_parser.yy"
{
// The type parameter is required
#line 1544 "dhcp6_parser.cc"
break;
- case 208:
+ case 208: // $@35: %empty
#line 803 "dhcp6_parser.yy"
{
ctx.enter(ctx.DATABASE_TYPE);
#line 1552 "dhcp6_parser.cc"
break;
- case 209:
+ case 209: // database_type: "type" $@35 ":" db_type
#line 805 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
#line 1561 "dhcp6_parser.cc"
break;
- case 210:
+ case 210: // db_type: "memfile"
#line 810 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
#line 1567 "dhcp6_parser.cc"
break;
- case 211:
+ case 211: // db_type: "mysql"
#line 811 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
#line 1573 "dhcp6_parser.cc"
break;
- case 212:
+ case 212: // db_type: "postgresql"
#line 812 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
#line 1579 "dhcp6_parser.cc"
break;
- case 213:
+ case 213: // db_type: "cql"
#line 813 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
#line 1585 "dhcp6_parser.cc"
break;
- case 214:
+ case 214: // $@36: %empty
#line 816 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1593 "dhcp6_parser.cc"
break;
- case 215:
+ case 215: // user: "user" $@36 ":" "constant string"
#line 818 "dhcp6_parser.yy"
{
ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1603 "dhcp6_parser.cc"
break;
- case 216:
+ case 216: // $@37: %empty
#line 824 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1611 "dhcp6_parser.cc"
break;
- case 217:
+ case 217: // password: "password" $@37 ":" "constant string"
#line 826 "dhcp6_parser.yy"
{
ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1621 "dhcp6_parser.cc"
break;
- case 218:
+ case 218: // $@38: %empty
#line 832 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1629 "dhcp6_parser.cc"
break;
- case 219:
+ case 219: // host: "host" $@38 ":" "constant string"
#line 834 "dhcp6_parser.yy"
{
ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1639 "dhcp6_parser.cc"
break;
- case 220:
+ case 220: // port: "port" ":" "integer"
#line 840 "dhcp6_parser.yy"
{
ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1648 "dhcp6_parser.cc"
break;
- case 221:
+ case 221: // $@39: %empty
#line 845 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1656 "dhcp6_parser.cc"
break;
- case 222:
+ case 222: // name: "name" $@39 ":" "constant string"
#line 847 "dhcp6_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1666 "dhcp6_parser.cc"
break;
- case 223:
+ case 223: // persist: "persist" ":" "boolean"
#line 853 "dhcp6_parser.yy"
{
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1675 "dhcp6_parser.cc"
break;
- case 224:
+ case 224: // lfc_interval: "lfc-interval" ":" "integer"
#line 858 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1684 "dhcp6_parser.cc"
break;
- case 225:
+ case 225: // readonly: "readonly" ":" "boolean"
#line 863 "dhcp6_parser.yy"
{
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1693 "dhcp6_parser.cc"
break;
- case 226:
+ case 226: // connect_timeout: "connect-timeout" ":" "integer"
#line 868 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1702 "dhcp6_parser.cc"
break;
- case 227:
+ case 227: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
#line 873 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1711 "dhcp6_parser.cc"
break;
- case 228:
+ case 228: // max_row_errors: "max-row-errors" ":" "integer"
#line 878 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1720 "dhcp6_parser.cc"
break;
- case 229:
+ case 229: // request_timeout: "request-timeout" ":" "integer"
#line 883 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1729 "dhcp6_parser.cc"
break;
- case 230:
+ case 230: // tcp_keepalive: "tcp-keepalive" ":" "integer"
#line 888 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1738 "dhcp6_parser.cc"
break;
- case 231:
+ case 231: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
#line 893 "dhcp6_parser.yy"
{
ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1747 "dhcp6_parser.cc"
break;
- case 232:
+ case 232: // $@40: %empty
#line 898 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1755 "dhcp6_parser.cc"
break;
- case 233:
+ case 233: // contact_points: "contact-points" $@40 ":" "constant string"
#line 900 "dhcp6_parser.yy"
{
ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1765 "dhcp6_parser.cc"
break;
- case 234:
+ case 234: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
#line 906 "dhcp6_parser.yy"
{
ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1774 "dhcp6_parser.cc"
break;
- case 235:
+ case 235: // $@41: %empty
#line 911 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1782 "dhcp6_parser.cc"
break;
- case 236:
+ case 236: // keyspace: "keyspace" $@41 ":" "constant string"
#line 913 "dhcp6_parser.yy"
{
ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1792 "dhcp6_parser.cc"
break;
- case 237:
+ case 237: // $@42: %empty
#line 919 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1800 "dhcp6_parser.cc"
break;
- case 238:
+ case 238: // consistency: "consistency" $@42 ":" "constant string"
#line 921 "dhcp6_parser.yy"
{
ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1810 "dhcp6_parser.cc"
break;
- case 239:
+ case 239: // $@43: %empty
#line 927 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1818 "dhcp6_parser.cc"
break;
- case 240:
+ case 240: // serial_consistency: "serial-consistency" $@43 ":" "constant string"
#line 929 "dhcp6_parser.yy"
{
ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1828 "dhcp6_parser.cc"
break;
- case 241:
+ case 241: // $@44: %empty
#line 935 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1839 "dhcp6_parser.cc"
break;
- case 242:
+ case 242: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}"
#line 940 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 1848 "dhcp6_parser.cc"
break;
- case 246:
+ case 246: // $@45: %empty
#line 950 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 1856 "dhcp6_parser.cc"
break;
- case 247:
+ case 247: // lease_checks: "lease-checks" $@45 ":" "constant string"
#line 952 "dhcp6_parser.yy"
{
#line 1876 "dhcp6_parser.cc"
break;
- case 248:
+ case 248: // $@46: %empty
#line 968 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1887 "dhcp6_parser.cc"
break;
- case 249:
+ case 249: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]"
#line 973 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 1896 "dhcp6_parser.cc"
break;
- case 254:
+ case 254: // duid_id: "duid"
#line 986 "dhcp6_parser.yy"
{
ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
#line 1905 "dhcp6_parser.cc"
break;
- case 255:
+ case 255: // string_id: "constant string"
#line 991 "dhcp6_parser.yy"
{
ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1914 "dhcp6_parser.cc"
break;
- case 256:
+ case 256: // $@47: %empty
#line 996 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1925 "dhcp6_parser.cc"
break;
- case 257:
+ case 257: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]"
#line 1001 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 1934 "dhcp6_parser.cc"
break;
- case 263:
+ case 263: // hw_address_id: "hw-address"
#line 1015 "dhcp6_parser.yy"
{
ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
#line 1943 "dhcp6_parser.cc"
break;
- case 264:
+ case 264: // flex_id: "flex-id"
#line 1020 "dhcp6_parser.yy"
{
ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
#line 1952 "dhcp6_parser.cc"
break;
- case 265:
+ case 265: // $@48: %empty
#line 1027 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1963 "dhcp6_parser.cc"
break;
- case 266:
+ case 266: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]"
#line 1032 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 1972 "dhcp6_parser.cc"
break;
- case 267:
+ case 267: // $@49: %empty
#line 1039 "dhcp6_parser.yy"
{
ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1983 "dhcp6_parser.cc"
break;
- case 268:
+ case 268: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}"
#line 1044 "dhcp6_parser.yy"
{
// The enable parameter is required.
#line 1994 "dhcp6_parser.cc"
break;
- case 277:
+ case 277: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
#line 1063 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2003 "dhcp6_parser.cc"
break;
- case 278:
+ case 278: // thread_pool_size: "thread-pool-size" ":" "integer"
#line 1068 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2012 "dhcp6_parser.cc"
break;
- case 279:
+ case 279: // packet_queue_size: "packet-queue-size" ":" "integer"
#line 1073 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2021 "dhcp6_parser.cc"
break;
- case 280:
+ case 280: // $@50: %empty
#line 1078 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2032 "dhcp6_parser.cc"
break;
- case 281:
+ case 281: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]"
#line 1083 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2041 "dhcp6_parser.cc"
break;
- case 286:
+ case 286: // $@51: %empty
#line 1096 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2051 "dhcp6_parser.cc"
break;
- case 287:
+ case 287: // hooks_library: "{" $@51 hooks_params "}"
#line 1100 "dhcp6_parser.yy"
{
// The library hooks parameter is required
#line 2061 "dhcp6_parser.cc"
break;
- case 288:
+ case 288: // $@52: %empty
#line 1106 "dhcp6_parser.yy"
{
// Parse the hooks-libraries list entry map
#line 2071 "dhcp6_parser.cc"
break;
- case 289:
+ case 289: // sub_hooks_library: "{" $@52 hooks_params "}"
#line 1110 "dhcp6_parser.yy"
{
// The library hooks parameter is required
#line 2081 "dhcp6_parser.cc"
break;
- case 295:
+ case 295: // $@53: %empty
#line 1125 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2089 "dhcp6_parser.cc"
break;
- case 296:
+ case 296: // library: "library" $@53 ":" "constant string"
#line 1127 "dhcp6_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2099 "dhcp6_parser.cc"
break;
- case 297:
+ case 297: // $@54: %empty
#line 1133 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2107 "dhcp6_parser.cc"
break;
- case 298:
+ case 298: // parameters: "parameters" $@54 ":" map_value
#line 1135 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
#line 2116 "dhcp6_parser.cc"
break;
- case 299:
+ case 299: // $@55: %empty
#line 1141 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2127 "dhcp6_parser.cc"
break;
- case 300:
+ case 300: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}"
#line 1146 "dhcp6_parser.yy"
{
// No expired lease parameter is required
#line 2137 "dhcp6_parser.cc"
break;
- case 309:
+ case 309: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
#line 1164 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2146 "dhcp6_parser.cc"
break;
- case 310:
+ case 310: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
#line 1169 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2155 "dhcp6_parser.cc"
break;
- case 311:
+ case 311: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
#line 1174 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2164 "dhcp6_parser.cc"
break;
- case 312:
+ case 312: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
#line 1179 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2173 "dhcp6_parser.cc"
break;
- case 313:
+ case 313: // max_reclaim_time: "max-reclaim-time" ":" "integer"
#line 1184 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2182 "dhcp6_parser.cc"
break;
- case 314:
+ case 314: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
#line 1189 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2191 "dhcp6_parser.cc"
break;
- case 315:
+ case 315: // $@56: %empty
#line 1197 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2202 "dhcp6_parser.cc"
break;
- case 316:
+ case 316: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]"
#line 1202 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2211 "dhcp6_parser.cc"
break;
- case 321:
+ case 321: // $@57: %empty
#line 1222 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2221 "dhcp6_parser.cc"
break;
- case 322:
+ case 322: // subnet6: "{" $@57 subnet6_params "}"
#line 1226 "dhcp6_parser.yy"
{
// Once we reached this place, the subnet parsing is now complete.
#line 2247 "dhcp6_parser.cc"
break;
- case 323:
+ case 323: // $@58: %empty
#line 1248 "dhcp6_parser.yy"
{
// Parse the subnet6 list entry map
#line 2257 "dhcp6_parser.cc"
break;
- case 324:
+ case 324: // sub_subnet6: "{" $@58 subnet6_params "}"
#line 1252 "dhcp6_parser.yy"
{
// The subnet subnet6 parameter is required
#line 2267 "dhcp6_parser.cc"
break;
- case 363:
+ case 363: // $@59: %empty
#line 1302 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2275 "dhcp6_parser.cc"
break;
- case 364:
+ case 364: // subnet: "subnet" $@59 ":" "constant string"
#line 1304 "dhcp6_parser.yy"
{
ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2285 "dhcp6_parser.cc"
break;
- case 365:
+ case 365: // $@60: %empty
#line 1310 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2293 "dhcp6_parser.cc"
break;
- case 366:
+ case 366: // interface: "interface" $@60 ":" "constant string"
#line 1312 "dhcp6_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2303 "dhcp6_parser.cc"
break;
- case 367:
+ case 367: // $@61: %empty
#line 1318 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2311 "dhcp6_parser.cc"
break;
- case 368:
+ case 368: // interface_id: "interface-id" $@61 ":" "constant string"
#line 1320 "dhcp6_parser.yy"
{
ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2321 "dhcp6_parser.cc"
break;
- case 369:
+ case 369: // $@62: %empty
#line 1326 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2329 "dhcp6_parser.cc"
break;
- case 370:
+ case 370: // client_class: "client-class" $@62 ":" "constant string"
#line 1328 "dhcp6_parser.yy"
{
ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2339 "dhcp6_parser.cc"
break;
- case 371:
+ case 371: // $@63: %empty
#line 1334 "dhcp6_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2350 "dhcp6_parser.cc"
break;
- case 372:
+ case 372: // require_client_classes: "require-client-classes" $@63 ":" list_strings
#line 1339 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2359 "dhcp6_parser.cc"
break;
- case 373:
+ case 373: // $@64: %empty
#line 1344 "dhcp6_parser.yy"
{
ctx.enter(ctx.RESERVATION_MODE);
#line 2367 "dhcp6_parser.cc"
break;
- case 374:
+ case 374: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
#line 1346 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
#line 2376 "dhcp6_parser.cc"
break;
- case 375:
+ case 375: // hr_mode: "disabled"
#line 1351 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
#line 2382 "dhcp6_parser.cc"
break;
- case 376:
+ case 376: // hr_mode: "out-of-pool"
#line 1352 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
#line 2388 "dhcp6_parser.cc"
break;
- case 377:
+ case 377: // hr_mode: "global"
#line 1353 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
#line 2394 "dhcp6_parser.cc"
break;
- case 378:
+ case 378: // hr_mode: "all"
#line 1354 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
#line 2400 "dhcp6_parser.cc"
break;
- case 379:
+ case 379: // id: "id" ":" "integer"
#line 1357 "dhcp6_parser.yy"
{
ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2409 "dhcp6_parser.cc"
break;
- case 380:
+ case 380: // rapid_commit: "rapid-commit" ":" "boolean"
#line 1362 "dhcp6_parser.yy"
{
ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2418 "dhcp6_parser.cc"
break;
- case 381:
+ case 381: // $@65: %empty
#line 1369 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2429 "dhcp6_parser.cc"
break;
- case 382:
+ case 382: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
#line 1374 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2438 "dhcp6_parser.cc"
break;
- case 387:
+ case 387: // $@66: %empty
#line 1389 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2448 "dhcp6_parser.cc"
break;
- case 388:
+ case 388: // shared_network: "{" $@66 shared_network_params "}"
#line 1393 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2456 "dhcp6_parser.cc"
break;
- case 424:
+ case 424: // $@67: %empty
#line 1440 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2467 "dhcp6_parser.cc"
break;
- case 425:
+ case 425: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
#line 1445 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2476 "dhcp6_parser.cc"
break;
- case 426:
+ case 426: // $@68: %empty
#line 1453 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2485 "dhcp6_parser.cc"
break;
- case 427:
+ case 427: // sub_option_def_list: "{" $@68 option_def_list "}"
#line 1456 "dhcp6_parser.yy"
{
// parsing completed
#line 2493 "dhcp6_parser.cc"
break;
- case 432:
+ case 432: // $@69: %empty
#line 1472 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2503 "dhcp6_parser.cc"
break;
- case 433:
+ case 433: // option_def_entry: "{" $@69 option_def_params "}"
#line 1476 "dhcp6_parser.yy"
{
// The name, code and type option def parameters are required.
#line 2515 "dhcp6_parser.cc"
break;
- case 434:
+ case 434: // $@70: %empty
#line 1487 "dhcp6_parser.yy"
{
// Parse the option-def list entry map
#line 2525 "dhcp6_parser.cc"
break;
- case 435:
+ case 435: // sub_option_def: "{" $@70 option_def_params "}"
#line 1491 "dhcp6_parser.yy"
{
// The name, code and type option def parameters are required.
#line 2537 "dhcp6_parser.cc"
break;
- case 451:
+ case 451: // code: "code" ":" "integer"
#line 1523 "dhcp6_parser.yy"
{
ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2546 "dhcp6_parser.cc"
break;
- case 453:
+ case 453: // $@71: %empty
#line 1530 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2554 "dhcp6_parser.cc"
break;
- case 454:
+ case 454: // option_def_type: "type" $@71 ":" "constant string"
#line 1532 "dhcp6_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2564 "dhcp6_parser.cc"
break;
- case 455:
+ case 455: // $@72: %empty
#line 1538 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2572 "dhcp6_parser.cc"
break;
- case 456:
+ case 456: // option_def_record_types: "record-types" $@72 ":" "constant string"
#line 1540 "dhcp6_parser.yy"
{
ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2582 "dhcp6_parser.cc"
break;
- case 457:
+ case 457: // $@73: %empty
#line 1546 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2590 "dhcp6_parser.cc"
break;
- case 458:
+ case 458: // space: "space" $@73 ":" "constant string"
#line 1548 "dhcp6_parser.yy"
{
ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2600 "dhcp6_parser.cc"
break;
- case 460:
+ case 460: // $@74: %empty
#line 1556 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2608 "dhcp6_parser.cc"
break;
- case 461:
+ case 461: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
#line 1558 "dhcp6_parser.yy"
{
ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2618 "dhcp6_parser.cc"
break;
- case 462:
+ case 462: // option_def_array: "array" ":" "boolean"
#line 1564 "dhcp6_parser.yy"
{
ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2627 "dhcp6_parser.cc"
break;
- case 463:
+ case 463: // $@75: %empty
#line 1573 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2638 "dhcp6_parser.cc"
break;
- case 464:
+ case 464: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
#line 1578 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2647 "dhcp6_parser.cc"
break;
- case 469:
+ case 469: // $@76: %empty
#line 1597 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2657 "dhcp6_parser.cc"
break;
- case 470:
+ case 470: // option_data_entry: "{" $@76 option_data_params "}"
#line 1601 "dhcp6_parser.yy"
{
/// @todo: the code or name parameters are required.
#line 2666 "dhcp6_parser.cc"
break;
- case 471:
+ case 471: // $@77: %empty
#line 1609 "dhcp6_parser.yy"
{
// Parse the option-data list entry map
#line 2676 "dhcp6_parser.cc"
break;
- case 472:
+ case 472: // sub_option_data: "{" $@77 option_data_params "}"
#line 1613 "dhcp6_parser.yy"
{
/// @todo: the code or name parameters are required.
#line 2685 "dhcp6_parser.cc"
break;
- case 487:
+ case 487: // $@78: %empty
#line 1646 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2693 "dhcp6_parser.cc"
break;
- case 488:
+ case 488: // option_data_data: "data" $@78 ":" "constant string"
#line 1648 "dhcp6_parser.yy"
{
ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2703 "dhcp6_parser.cc"
break;
- case 491:
+ case 491: // option_data_csv_format: "csv-format" ":" "boolean"
#line 1658 "dhcp6_parser.yy"
{
ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2712 "dhcp6_parser.cc"
break;
- case 492:
+ case 492: // option_data_always_send: "always-send" ":" "boolean"
#line 1663 "dhcp6_parser.yy"
{
ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 2721 "dhcp6_parser.cc"
break;
- case 493:
+ case 493: // $@79: %empty
#line 1671 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2732 "dhcp6_parser.cc"
break;
- case 494:
+ case 494: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
#line 1676 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2741 "dhcp6_parser.cc"
break;
- case 499:
+ case 499: // $@80: %empty
#line 1691 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2751 "dhcp6_parser.cc"
break;
- case 500:
+ case 500: // pool_list_entry: "{" $@80 pool_params "}"
#line 1695 "dhcp6_parser.yy"
{
// The pool parameter is required.
#line 2761 "dhcp6_parser.cc"
break;
- case 501:
+ case 501: // $@81: %empty
#line 1701 "dhcp6_parser.yy"
{
// Parse the pool list entry map
#line 2771 "dhcp6_parser.cc"
break;
- case 502:
+ case 502: // sub_pool6: "{" $@81 pool_params "}"
#line 1705 "dhcp6_parser.yy"
{
// The pool parameter is required.
#line 2781 "dhcp6_parser.cc"
break;
- case 512:
+ case 512: // $@82: %empty
#line 1724 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2789 "dhcp6_parser.cc"
break;
- case 513:
+ case 513: // pool_entry: "pool" $@82 ":" "constant string"
#line 1726 "dhcp6_parser.yy"
{
ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2799 "dhcp6_parser.cc"
break;
- case 514:
+ case 514: // $@83: %empty
#line 1732 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2807 "dhcp6_parser.cc"
break;
- case 515:
+ case 515: // user_context: "user-context" $@83 ":" map_value
#line 1734 "dhcp6_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 2834 "dhcp6_parser.cc"
break;
- case 516:
+ case 516: // $@84: %empty
#line 1757 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2842 "dhcp6_parser.cc"
break;
- case 517:
+ case 517: // comment: "comment" $@84 ":" "constant string"
#line 1759 "dhcp6_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 2871 "dhcp6_parser.cc"
break;
- case 518:
+ case 518: // $@85: %empty
#line 1787 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 2882 "dhcp6_parser.cc"
break;
- case 519:
+ case 519: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]"
#line 1792 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 2891 "dhcp6_parser.cc"
break;
- case 524:
+ case 524: // $@86: %empty
#line 1807 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 2901 "dhcp6_parser.cc"
break;
- case 525:
+ case 525: // pd_pool_entry: "{" $@86 pd_pool_params "}"
#line 1811 "dhcp6_parser.yy"
{
// The prefix, prefix len and delegated len parameters are required.
#line 2913 "dhcp6_parser.cc"
break;
- case 526:
+ case 526: // $@87: %empty
#line 1819 "dhcp6_parser.yy"
{
// Parse the pd-pool list entry map
#line 2923 "dhcp6_parser.cc"
break;
- case 527:
+ case 527: // sub_pd_pool: "{" $@87 pd_pool_params "}"
#line 1823 "dhcp6_parser.yy"
{
// The prefix, prefix len and delegated len parameters are required.
#line 2935 "dhcp6_parser.cc"
break;
- case 541:
+ case 541: // $@88: %empty
#line 1848 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2943 "dhcp6_parser.cc"
break;
- case 542:
+ case 542: // pd_prefix: "prefix" $@88 ":" "constant string"
#line 1850 "dhcp6_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2953 "dhcp6_parser.cc"
break;
- case 543:
+ case 543: // pd_prefix_len: "prefix-len" ":" "integer"
#line 1856 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2962 "dhcp6_parser.cc"
break;
- case 544:
+ case 544: // $@89: %empty
#line 1861 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 2970 "dhcp6_parser.cc"
break;
- case 545:
+ case 545: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string"
#line 1863 "dhcp6_parser.yy"
{
ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 2980 "dhcp6_parser.cc"
break;
- case 546:
+ case 546: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
#line 1869 "dhcp6_parser.yy"
{
ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2989 "dhcp6_parser.cc"
break;
- case 547:
+ case 547: // pd_delegated_len: "delegated-len" ":" "integer"
#line 1874 "dhcp6_parser.yy"
{
ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 2998 "dhcp6_parser.cc"
break;
- case 548:
+ case 548: // $@90: %empty
#line 1882 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3009 "dhcp6_parser.cc"
break;
- case 549:
+ case 549: // reservations: "reservations" $@90 ":" "[" reservations_list "]"
#line 1887 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3018 "dhcp6_parser.cc"
break;
- case 554:
+ case 554: // $@91: %empty
#line 1900 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3028 "dhcp6_parser.cc"
break;
- case 555:
+ case 555: // reservation: "{" $@91 reservation_params "}"
#line 1904 "dhcp6_parser.yy"
{
/// @todo: an identifier parameter is required.
#line 3037 "dhcp6_parser.cc"
break;
- case 556:
+ case 556: // $@92: %empty
#line 1909 "dhcp6_parser.yy"
{
// Parse the reservations list entry map
#line 3047 "dhcp6_parser.cc"
break;
- case 557:
+ case 557: // sub_reservation: "{" $@92 reservation_params "}"
#line 1913 "dhcp6_parser.yy"
{
/// @todo: an identifier parameter is required.
#line 3056 "dhcp6_parser.cc"
break;
- case 573:
+ case 573: // $@93: %empty
#line 1940 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3067 "dhcp6_parser.cc"
break;
- case 574:
+ case 574: // ip_addresses: "ip-addresses" $@93 ":" list_strings
#line 1945 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3076 "dhcp6_parser.cc"
break;
- case 575:
+ case 575: // $@94: %empty
#line 1950 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3087 "dhcp6_parser.cc"
break;
- case 576:
+ case 576: // prefixes: "prefixes" $@94 ":" list_strings
#line 1955 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3096 "dhcp6_parser.cc"
break;
- case 577:
+ case 577: // $@95: %empty
#line 1960 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3104 "dhcp6_parser.cc"
break;
- case 578:
+ case 578: // duid: "duid" $@95 ":" "constant string"
#line 1962 "dhcp6_parser.yy"
{
ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3114 "dhcp6_parser.cc"
break;
- case 579:
+ case 579: // $@96: %empty
#line 1968 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3122 "dhcp6_parser.cc"
break;
- case 580:
+ case 580: // hw_address: "hw-address" $@96 ":" "constant string"
#line 1970 "dhcp6_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3132 "dhcp6_parser.cc"
break;
- case 581:
+ case 581: // $@97: %empty
#line 1976 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3140 "dhcp6_parser.cc"
break;
- case 582:
+ case 582: // hostname: "hostname" $@97 ":" "constant string"
#line 1978 "dhcp6_parser.yy"
{
ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3150 "dhcp6_parser.cc"
break;
- case 583:
+ case 583: // $@98: %empty
#line 1984 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3158 "dhcp6_parser.cc"
break;
- case 584:
+ case 584: // flex_id_value: "flex-id" $@98 ":" "constant string"
#line 1986 "dhcp6_parser.yy"
{
ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3168 "dhcp6_parser.cc"
break;
- case 585:
+ case 585: // $@99: %empty
#line 1992 "dhcp6_parser.yy"
{
ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3179 "dhcp6_parser.cc"
break;
- case 586:
+ case 586: // reservation_client_classes: "client-classes" $@99 ":" list_strings
#line 1997 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3188 "dhcp6_parser.cc"
break;
- case 587:
+ case 587: // $@100: %empty
#line 2005 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3199 "dhcp6_parser.cc"
break;
- case 588:
+ case 588: // relay: "relay" $@100 ":" "{" relay_map "}"
#line 2010 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3208 "dhcp6_parser.cc"
break;
- case 591:
+ case 591: // $@101: %empty
#line 2019 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3216 "dhcp6_parser.cc"
break;
- case 592:
+ case 592: // ip_address: "ip-address" $@101 ":" "constant string"
#line 2021 "dhcp6_parser.yy"
{
ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3226 "dhcp6_parser.cc"
break;
- case 593:
+ case 593: // $@102: %empty
#line 2030 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 3237 "dhcp6_parser.cc"
break;
- case 594:
+ case 594: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]"
#line 2035 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3246 "dhcp6_parser.cc"
break;
- case 597:
+ case 597: // $@103: %empty
#line 2044 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3256 "dhcp6_parser.cc"
break;
- case 598:
+ case 598: // client_class_entry: "{" $@103 client_class_params "}"
#line 2048 "dhcp6_parser.yy"
{
// The name client class parameter is required.
#line 3266 "dhcp6_parser.cc"
break;
- case 611:
+ case 611: // $@104: %empty
#line 2073 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3274 "dhcp6_parser.cc"
break;
- case 612:
+ case 612: // client_class_test: "test" $@104 ":" "constant string"
#line 2075 "dhcp6_parser.yy"
{
ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3284 "dhcp6_parser.cc"
break;
- case 613:
+ case 613: // only_if_required: "only-if-required" ":" "boolean"
#line 2081 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3293 "dhcp6_parser.cc"
break;
- case 614:
+ case 614: // $@105: %empty
#line 2089 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3304 "dhcp6_parser.cc"
break;
- case 615:
+ case 615: // server_id: "server-id" $@105 ":" "{" server_id_params "}"
#line 2094 "dhcp6_parser.yy"
{
// The type parameter is required.
#line 3315 "dhcp6_parser.cc"
break;
- case 627:
+ case 627: // $@106: %empty
#line 2116 "dhcp6_parser.yy"
{
ctx.enter(ctx.DUID_TYPE);
#line 3323 "dhcp6_parser.cc"
break;
- case 628:
+ case 628: // server_id_type: "type" $@106 ":" duid_type
#line 2118 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
#line 3332 "dhcp6_parser.cc"
break;
- case 629:
+ case 629: // duid_type: "LLT"
#line 2123 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
#line 3338 "dhcp6_parser.cc"
break;
- case 630:
+ case 630: // duid_type: "EN"
#line 2124 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
#line 3344 "dhcp6_parser.cc"
break;
- case 631:
+ case 631: // duid_type: "LL"
#line 2125 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
#line 3350 "dhcp6_parser.cc"
break;
- case 632:
+ case 632: // htype: "htype" ":" "integer"
#line 2128 "dhcp6_parser.yy"
{
ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3359 "dhcp6_parser.cc"
break;
- case 633:
+ case 633: // $@107: %empty
#line 2133 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3367 "dhcp6_parser.cc"
break;
- case 634:
+ case 634: // identifier: "identifier" $@107 ":" "constant string"
#line 2135 "dhcp6_parser.yy"
{
ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3377 "dhcp6_parser.cc"
break;
- case 635:
+ case 635: // time: "time" ":" "integer"
#line 2141 "dhcp6_parser.yy"
{
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3386 "dhcp6_parser.cc"
break;
- case 636:
+ case 636: // enterprise_id: "enterprise-id" ":" "integer"
#line 2146 "dhcp6_parser.yy"
{
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3395 "dhcp6_parser.cc"
break;
- case 637:
+ case 637: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
#line 2153 "dhcp6_parser.yy"
{
ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3404 "dhcp6_parser.cc"
break;
- case 638:
+ case 638: // $@108: %empty
#line 2160 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3415 "dhcp6_parser.cc"
break;
- case 639:
+ case 639: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
#line 2165 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
#line 3424 "dhcp6_parser.cc"
break;
- case 647:
+ case 647: // $@109: %empty
#line 2181 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3432 "dhcp6_parser.cc"
break;
- case 648:
+ case 648: // socket_type: "socket-type" $@109 ":" "constant string"
#line 2183 "dhcp6_parser.yy"
{
ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3442 "dhcp6_parser.cc"
break;
- case 649:
+ case 649: // $@110: %empty
#line 2189 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3450 "dhcp6_parser.cc"
break;
- case 650:
+ case 650: // socket_name: "socket-name" $@110 ":" "constant string"
#line 2191 "dhcp6_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3460 "dhcp6_parser.cc"
break;
- case 651:
+ case 651: // $@111: %empty
#line 2200 "dhcp6_parser.yy"
{
ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3471 "dhcp6_parser.cc"
break;
- case 652:
+ case 652: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
#line 2205 "dhcp6_parser.yy"
{
// The enable queue parameter is required.
#line 3482 "dhcp6_parser.cc"
break;
- case 661:
+ case 661: // enable_queue: "enable-queue" ":" "boolean"
#line 2224 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3491 "dhcp6_parser.cc"
break;
- case 662:
+ case 662: // $@112: %empty
#line 2229 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3499 "dhcp6_parser.cc"
break;
- case 663:
+ case 663: // queue_type: "queue-type" $@112 ":" "constant string"
#line 2231 "dhcp6_parser.yy"
{
ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 3509 "dhcp6_parser.cc"
break;
- case 664:
+ case 664: // capacity: "capacity" ":" "integer"
#line 2237 "dhcp6_parser.yy"
{
ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 3518 "dhcp6_parser.cc"
break;
- case 665:
+ case 665: // $@113: %empty
#line 2242 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
#line 3526 "dhcp6_parser.cc"
break;
- case 666:
+ case 666: // arbitrary_map_entry: "constant string" $@113 ":" value
#line 2244 "dhcp6_parser.yy"
{
ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
#line 3535 "dhcp6_parser.cc"
break;
- case 667:
+ case 667: // $@114: %empty
#line 2251 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3546 "dhcp6_parser.cc"
break;
- case 668:
+ case 668: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
#line 2256 "dhcp6_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
#line 3557 "dhcp6_parser.cc"
break;
- case 669:
+ case 669: // $@115: %empty
#line 2263 "dhcp6_parser.yy"
{
// Parse the dhcp-ddns map
#line 3567 "dhcp6_parser.cc"
break;
- case 670:
+ case 670: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
#line 2267 "dhcp6_parser.yy"
{
// The enable updates DHCP DDNS parameter is required.
#line 3577 "dhcp6_parser.cc"
break;
- case 691:
+ case 691: // enable_updates: "enable-updates" ":" "boolean"
#line 2297 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 3586 "dhcp6_parser.cc"
break;
- case 692:
-#line 2302 "dhcp6_parser.yy"
- {
+ case 692: // $@116: %empty
+#line 2303 "dhcp6_parser.yy"
+ {
ctx.enter(ctx.NO_KEYWORD);
}
#line 3594 "dhcp6_parser.cc"
break;
- case 693:
-#line 2304 "dhcp6_parser.yy"
+ case 693: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
+#line 2305 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("qualifying-suffix", s);
#line 3604 "dhcp6_parser.cc"
break;
- case 694:
-#line 2310 "dhcp6_parser.yy"
+ case 694: // $@117: %empty
+#line 2311 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3612 "dhcp6_parser.cc"
break;
- case 695:
-#line 2312 "dhcp6_parser.yy"
+ case 695: // server_ip: "server-ip" $@117 ":" "constant string"
+#line 2313 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-ip", s);
#line 3622 "dhcp6_parser.cc"
break;
- case 696:
-#line 2318 "dhcp6_parser.yy"
+ case 696: // server_port: "server-port" ":" "integer"
+#line 2319 "dhcp6_parser.yy"
{
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("server-port", i);
#line 3631 "dhcp6_parser.cc"
break;
- case 697:
-#line 2323 "dhcp6_parser.yy"
+ case 697: // $@118: %empty
+#line 2324 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3639 "dhcp6_parser.cc"
break;
- case 698:
-#line 2325 "dhcp6_parser.yy"
+ case 698: // sender_ip: "sender-ip" $@118 ":" "constant string"
+#line 2326 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-ip", s);
#line 3649 "dhcp6_parser.cc"
break;
- case 699:
-#line 2331 "dhcp6_parser.yy"
+ case 699: // sender_port: "sender-port" ":" "integer"
+#line 2332 "dhcp6_parser.yy"
{
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("sender-port", i);
#line 3658 "dhcp6_parser.cc"
break;
- case 700:
-#line 2336 "dhcp6_parser.yy"
+ case 700: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2337 "dhcp6_parser.yy"
{
ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("max-queue-size", i);
#line 3667 "dhcp6_parser.cc"
break;
- case 701:
-#line 2341 "dhcp6_parser.yy"
+ case 701: // $@119: %empty
+#line 2342 "dhcp6_parser.yy"
{
ctx.enter(ctx.NCR_PROTOCOL);
}
#line 3675 "dhcp6_parser.cc"
break;
- case 702:
-#line 2343 "dhcp6_parser.yy"
+ case 702: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
+#line 2344 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
#line 3684 "dhcp6_parser.cc"
break;
- case 703:
-#line 2349 "dhcp6_parser.yy"
+ case 703: // ncr_protocol_value: "UDP"
+#line 2350 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
#line 3690 "dhcp6_parser.cc"
break;
- case 704:
-#line 2350 "dhcp6_parser.yy"
+ case 704: // ncr_protocol_value: "TCP"
+#line 2351 "dhcp6_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
#line 3696 "dhcp6_parser.cc"
break;
- case 705:
-#line 2353 "dhcp6_parser.yy"
+ case 705: // $@120: %empty
+#line 2354 "dhcp6_parser.yy"
{
ctx.enter(ctx.NCR_FORMAT);
}
#line 3704 "dhcp6_parser.cc"
break;
- case 706:
-#line 2355 "dhcp6_parser.yy"
+ case 706: // ncr_format: "ncr-format" $@120 ":" "JSON"
+#line 2356 "dhcp6_parser.yy"
{
ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("ncr-format", json);
#line 3714 "dhcp6_parser.cc"
break;
- case 707:
-#line 2362 "dhcp6_parser.yy"
+ case 707: // dep_override_no_update: "override-no-update" ":" "boolean"
+#line 2363 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-no-update", b);
#line 3723 "dhcp6_parser.cc"
break;
- case 708:
-#line 2368 "dhcp6_parser.yy"
+ case 708: // dep_override_client_update: "override-client-update" ":" "boolean"
+#line 2369 "dhcp6_parser.yy"
{
ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("override-client-update", b);
#line 3732 "dhcp6_parser.cc"
break;
- case 709:
-#line 2374 "dhcp6_parser.yy"
+ case 709: // $@121: %empty
+#line 2375 "dhcp6_parser.yy"
{
ctx.enter(ctx.REPLACE_CLIENT_NAME);
}
#line 3740 "dhcp6_parser.cc"
break;
- case 710:
-#line 2376 "dhcp6_parser.yy"
+ case 710: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
+#line 2377 "dhcp6_parser.yy"
{
ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
ctx.leave();
#line 3749 "dhcp6_parser.cc"
break;
- case 711:
-#line 2382 "dhcp6_parser.yy"
+ case 711: // $@122: %empty
+#line 2383 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3757 "dhcp6_parser.cc"
break;
- case 712:
-#line 2384 "dhcp6_parser.yy"
+ case 712: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
+#line 2385 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("generated-prefix", s);
#line 3767 "dhcp6_parser.cc"
break;
- case 713:
-#line 2391 "dhcp6_parser.yy"
+ case 713: // $@123: %empty
+#line 2392 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3775 "dhcp6_parser.cc"
break;
- case 714:
-#line 2393 "dhcp6_parser.yy"
+ case 714: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
+#line 2394 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-set", s);
#line 3785 "dhcp6_parser.cc"
break;
- case 715:
-#line 2400 "dhcp6_parser.yy"
+ case 715: // $@124: %empty
+#line 2401 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3793 "dhcp6_parser.cc"
break;
- case 716:
-#line 2402 "dhcp6_parser.yy"
+ case 716: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
+#line 2403 "dhcp6_parser.yy"
{
ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("hostname-char-replacement", s);
#line 3803 "dhcp6_parser.cc"
break;
- case 717:
-#line 2411 "dhcp6_parser.yy"
+ case 717: // $@125: %empty
+#line 2412 "dhcp6_parser.yy"
{
ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-control", i);
#line 3814 "dhcp6_parser.cc"
break;
- case 718:
-#line 2416 "dhcp6_parser.yy"
+ case 718: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
+#line 2417 "dhcp6_parser.yy"
{
// No config control params are required
ctx.stack_.pop_back();
#line 3824 "dhcp6_parser.cc"
break;
- case 719:
-#line 2422 "dhcp6_parser.yy"
+ case 719: // $@126: %empty
+#line 2423 "dhcp6_parser.yy"
{
// Parse the config-control map
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 3834 "dhcp6_parser.cc"
break;
- case 720:
-#line 2426 "dhcp6_parser.yy"
+ case 720: // sub_config_control: "{" $@126 config_control_params "}"
+#line 2427 "dhcp6_parser.yy"
{
// No config_control params are required
// parsing completed
#line 3843 "dhcp6_parser.cc"
break;
- case 725:
-#line 2441 "dhcp6_parser.yy"
+ case 725: // $@127: %empty
+#line 2442 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-databases", l);
#line 3854 "dhcp6_parser.cc"
break;
- case 726:
-#line 2446 "dhcp6_parser.yy"
+ case 726: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
+#line 2447 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
#line 3863 "dhcp6_parser.cc"
break;
- case 727:
-#line 2451 "dhcp6_parser.yy"
+ case 727: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2452 "dhcp6_parser.yy"
{
ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("config-fetch-wait-time", value);
#line 3872 "dhcp6_parser.cc"
break;
- case 728:
-#line 2458 "dhcp6_parser.yy"
+ case 728: // $@128: %empty
+#line 2459 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("loggers", l);
#line 3883 "dhcp6_parser.cc"
break;
- case 729:
-#line 2463 "dhcp6_parser.yy"
+ case 729: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
+#line 2464 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
#line 3892 "dhcp6_parser.cc"
break;
- case 732:
-#line 2475 "dhcp6_parser.yy"
+ case 732: // $@129: %empty
+#line 2476 "dhcp6_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(l);
#line 3902 "dhcp6_parser.cc"
break;
- case 733:
-#line 2479 "dhcp6_parser.yy"
+ case 733: // logger_entry: "{" $@129 logger_params "}"
+#line 2480 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
#line 3910 "dhcp6_parser.cc"
break;
- case 743:
-#line 2496 "dhcp6_parser.yy"
+ case 743: // debuglevel: "debuglevel" ":" "integer"
+#line 2497 "dhcp6_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("debuglevel", dl);
#line 3919 "dhcp6_parser.cc"
break;
- case 744:
-#line 2501 "dhcp6_parser.yy"
+ case 744: // $@130: %empty
+#line 2502 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3927 "dhcp6_parser.cc"
break;
- case 745:
-#line 2503 "dhcp6_parser.yy"
+ case 745: // severity: "severity" $@130 ":" "constant string"
+#line 2504 "dhcp6_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("severity", sev);
#line 3937 "dhcp6_parser.cc"
break;
- case 746:
-#line 2509 "dhcp6_parser.yy"
+ case 746: // $@131: %empty
+#line 2510 "dhcp6_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output_options", l);
#line 3948 "dhcp6_parser.cc"
break;
- case 747:
-#line 2514 "dhcp6_parser.yy"
+ case 747: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
+#line 2515 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
ctx.leave();
#line 3957 "dhcp6_parser.cc"
break;
- case 750:
-#line 2523 "dhcp6_parser.yy"
+ case 750: // $@132: %empty
+#line 2524 "dhcp6_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->add(m);
#line 3967 "dhcp6_parser.cc"
break;
- case 751:
-#line 2527 "dhcp6_parser.yy"
+ case 751: // output_entry: "{" $@132 output_params_list "}"
+#line 2528 "dhcp6_parser.yy"
{
ctx.stack_.pop_back();
}
#line 3975 "dhcp6_parser.cc"
break;
- case 759:
-#line 2542 "dhcp6_parser.yy"
+ case 759: // $@133: %empty
+#line 2543 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 3983 "dhcp6_parser.cc"
break;
- case 760:
-#line 2544 "dhcp6_parser.yy"
+ case 760: // output: "output" $@133 ":" "constant string"
+#line 2545 "dhcp6_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("output", sev);
#line 3993 "dhcp6_parser.cc"
break;
- case 761:
-#line 2550 "dhcp6_parser.yy"
+ case 761: // flush: "flush" ":" "boolean"
+#line 2551 "dhcp6_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("flush", flush);
#line 4002 "dhcp6_parser.cc"
break;
- case 762:
-#line 2555 "dhcp6_parser.yy"
+ case 762: // maxsize: "maxsize" ":" "integer"
+#line 2556 "dhcp6_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxsize", maxsize);
#line 4011 "dhcp6_parser.cc"
break;
- case 763:
-#line 2560 "dhcp6_parser.yy"
+ case 763: // maxver: "maxver" ":" "integer"
+#line 2561 "dhcp6_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("maxver", maxver);
#line 4020 "dhcp6_parser.cc"
break;
- case 764:
-#line 2565 "dhcp6_parser.yy"
+ case 764: // $@134: %empty
+#line 2566 "dhcp6_parser.yy"
{
ctx.enter(ctx.NO_KEYWORD);
}
#line 4028 "dhcp6_parser.cc"
break;
- case 765:
-#line 2567 "dhcp6_parser.yy"
+ case 765: // pattern: "pattern" $@134 ":" "constant string"
+#line 2568 "dhcp6_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
ctx.stack_.back()->set("pattern", sev);
475, 477, 478, 479, 480, 481, 482, 483, 484, 295,
297, 292, 0, 290, 293, 294, 0, 692, 694, 0,
697, 0, 0, 701, 705, 0, 0, 709, 711, 713,
- 715, 690, 688, 689, 0, 671, 673, 674, 675, 676,
- 677, 678, 679, 680, 681, 682, 683, 684, 685, 686,
+ 715, 690, 688, 689, 0, 671, 673, 685, 674, 675,
+ 676, 677, 678, 679, 680, 681, 682, 683, 684, 686,
687, 725, 0, 0, 721, 723, 724, 46, 0, 0,
39, 0, 0, 0, 59, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
"queue_control_params", "queue_control_param", "enable_queue",
"queue_type", "$@112", "capacity", "arbitrary_map_entry", "$@113",
"dhcp_ddns", "$@114", "sub_dhcp_ddns", "$@115", "dhcp_ddns_params",
- "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@116",
+ "dhcp_ddns_param", "enable_updates", "dep_qualifying_suffix", "$@116",
"server_ip", "$@117", "server_port", "sender_ip", "$@118", "sender_port",
"max_queue_size", "ncr_protocol", "$@119", "ncr_protocol_value",
"ncr_format", "$@120", "dep_override_no_update",
2221, 2224, 2229, 2229, 2237, 2242, 2242, 2251, 2251, 2263,
2263, 2273, 2274, 2277, 2278, 2279, 2280, 2281, 2282, 2283,
2284, 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293,
- 2294, 2297, 2302, 2302, 2310, 2310, 2318, 2323, 2323, 2331,
- 2336, 2341, 2341, 2349, 2350, 2353, 2353, 2362, 2368, 2374,
- 2374, 2382, 2382, 2391, 2391, 2400, 2400, 2411, 2411, 2422,
- 2422, 2432, 2433, 2437, 2438, 2441, 2441, 2451, 2458, 2458,
- 2470, 2471, 2475, 2475, 2483, 2484, 2487, 2488, 2489, 2490,
- 2491, 2492, 2493, 2496, 2501, 2501, 2509, 2509, 2519, 2520,
- 2523, 2523, 2531, 2532, 2535, 2536, 2537, 2538, 2539, 2542,
- 2542, 2550, 2555, 2560, 2565, 2565
+ 2294, 2297, 2303, 2303, 2311, 2311, 2319, 2324, 2324, 2332,
+ 2337, 2342, 2342, 2350, 2351, 2354, 2354, 2363, 2369, 2375,
+ 2375, 2383, 2383, 2392, 2392, 2401, 2401, 2412, 2412, 2423,
+ 2423, 2433, 2434, 2438, 2439, 2442, 2442, 2452, 2459, 2459,
+ 2471, 2472, 2476, 2476, 2484, 2485, 2488, 2489, 2490, 2491,
+ 2492, 2493, 2494, 2497, 2502, 2502, 2510, 2510, 2520, 2521,
+ 2524, 2524, 2532, 2533, 2536, 2537, 2538, 2539, 2540, 2543,
+ 2543, 2551, 2556, 2561, 2566, 2566
};
void
} } // isc::dhcp
#line 5582 "dhcp6_parser.cc"
-#line 2573 "dhcp6_parser.yy"
+#line 2574 "dhcp6_parser.yy"
void
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton interface for Bison LALR(1) parsers in C++
S_dhcp_ddns_params = 562, // dhcp_ddns_params
S_dhcp_ddns_param = 563, // dhcp_ddns_param
S_enable_updates = 564, // enable_updates
- S_qualifying_suffix = 565, // qualifying_suffix
+ S_dep_qualifying_suffix = 565, // dep_qualifying_suffix
S_566_116 = 566, // $@116
S_server_ip = 567, // server_ip
S_568_117 = 568, // $@117
{
switch (this->kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (std::move (that.value));
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (std::move (that.value));
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (std::move (that.value));
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (std::move (that.value));
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (std::move (that.value));
break;
// Value type destructor.
switch (yykind)
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.template destroy< ElementPtr > ();
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.template destroy< bool > ();
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.template destroy< double > ();
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.template destroy< int64_t > ();
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.template destroy< std::string > ();
break;
void move (by_state& that);
/// The symbol kind (corresponding to \a state).
- /// \a S_YYEMPTY when empty.
+ /// \a symbol_kind::S_YYEMPTY when empty.
symbol_kind_type kind () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197
};
- const int user_token_number_max_ = 452;
+ // Last valid token kind.
+ const int code_max = 452;
if (t <= 0)
return symbol_kind::S_YYEOF;
- else if (t <= user_token_number_max_)
+ else if (t <= code_max)
return YY_CAST (symbol_kind_type, translate_table[t]);
else
return symbol_kind::S_YYUNDEF;
{
switch (this->kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.copy< ElementPtr > (YY_MOVE (that.value));
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (YY_MOVE (that.value));
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (YY_MOVE (that.value));
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (YY_MOVE (that.value));
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (YY_MOVE (that.value));
break;
super_type::move (s);
switch (this->kind ())
{
- case 214: // value
- case 218: // map_value
- case 259: // ddns_replace_client_name_value
- case 296: // db_type
- case 397: // hr_mode
- case 533: // duid_type
- case 576: // ncr_protocol_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+ case symbol_kind::S_db_type: // db_type
+ case symbol_kind::S_hr_mode: // hr_mode
+ case symbol_kind::S_duid_type: // duid_type
+ case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
value.move< ElementPtr > (YY_MOVE (s.value));
break;
- case 197: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (s.value));
break;
- case 196: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (s.value));
break;
- case 195: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (s.value));
break;
- case 194: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (s.value));
break;
#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 5252 "dhcp6_parser.h"
-
+#line 5253 "dhcp6_parser.h"
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Locations for Bison parsers in C++
class position
{
public:
+ /// Type for file name.
+ typedef const std::string filename_type;
/// Type for line and column numbers.
typedef int counter_type;
/// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
+ explicit position (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
: filename (f)
/// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
+ void initialize (filename_type* fn = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
/** \} */
/// File name to which this position refers.
- std::string* filename;
+ filename_type* filename;
/// Current line number.
counter_type line;
/// Current column number.
return res -= width;
}
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
class location
{
public:
+ /// Type for file name.
+ typedef position::filename_type filename_type;
/// Type for line and column numbers.
typedef position::counter_type counter_type;
{}
/// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
+ explicit location (filename_type* f,
counter_type l = 1,
counter_type c = 1)
: begin (f, l, c)
/// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
+ void initialize (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
return res -= width;
}
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param loc a reference to the location to redirect
#line 14 "dhcp6_parser.yy"
} } // isc::dhcp
-#line 333 "location.hh"
+#line 305 "location.hh"
#endif // !YY_PARSER6_LOCATION_HH_INCLUDED
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
// Locations for Bison parsers in C++
class position
{
public:
+ /// Type for file name.
+ typedef const std::string filename_type;
/// Type for line and column numbers.
typedef int counter_type;
/// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
+ explicit position (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
: filename (f)
/// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
+ void initialize (filename_type* fn = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
/** \} */
/// File name to which this position refers.
- std::string* filename;
+ filename_type* filename;
/// Current line number.
counter_type line;
/// Current column number.
return res -= width;
}
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
class location
{
public:
+ /// Type for file name.
+ typedef position::filename_type filename_type;
/// Type for line and column numbers.
typedef position::counter_type counter_type;
{}
/// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
+ explicit location (filename_type* f,
counter_type l = 1,
counter_type c = 1)
: begin (f, l, c)
/// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
+ void initialize (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
return res -= width;
}
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param loc a reference to the location to redirect
#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 333 "location.hh"
+#line 305 "location.hh"
#endif // !YY_NETCONF_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
{
switch (that.kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
break;
{
switch (that.kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (YY_MOVE (that.value));
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (that.value));
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (that.value));
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (that.value));
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (that.value));
break;
state = that.state;
switch (that.kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.copy< ElementPtr > (that.value);
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (that.value);
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (that.value);
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (that.value);
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (that.value);
break;
state = that.state;
switch (that.kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (that.value);
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (that.value);
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (that.value);
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (that.value);
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (that.value);
break;
<< yysym.location << ": ";
switch (yykind)
{
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 384 "netconf_parser.cc"
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < int64_t > (); }
#line 390 "netconf_parser.cc"
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < double > (); }
#line 396 "netconf_parser.cc"
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < bool > (); }
#line 402 "netconf_parser.cc"
break;
- case 57: // value
+ case symbol_kind::S_value: // value
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 408 "netconf_parser.cc"
break;
- case 60: // map_value
+ case symbol_kind::S_map_value: // map_value
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 414 "netconf_parser.cc"
break;
- case 119: // socket_type_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
#line 107 "netconf_parser.yy"
{ yyoutput << yysym.value.template as < ElementPtr > (); }
#line 420 "netconf_parser.cc"
when using variants. */
switch (yyr1_[yyn])
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
yylhs.value.emplace< ElementPtr > ();
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
yylhs.value.emplace< bool > ();
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
yylhs.value.emplace< double > ();
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
yylhs.value.emplace< int64_t > ();
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
yylhs.value.emplace< std::string > ();
break;
{
switch (yyn)
{
- case 2:
+ case 2: // $@1: %empty
#line 118 "netconf_parser.yy"
{ ctx.ctx_ = ctx.NO_KEYWORDS; }
#line 695 "netconf_parser.cc"
break;
- case 4:
+ case 4: // $@2: %empty
#line 119 "netconf_parser.yy"
{ ctx.ctx_ = ctx.CONFIG; }
#line 701 "netconf_parser.cc"
break;
- case 6:
+ case 6: // $@3: %empty
#line 120 "netconf_parser.yy"
{ ctx.ctx_ = ctx.NETCONF; }
#line 707 "netconf_parser.cc"
break;
- case 8:
+ case 8: // $@4: %empty
#line 128 "netconf_parser.yy"
{
// Parse the Netconf map
#line 717 "netconf_parser.cc"
break;
- case 9:
+ case 9: // sub_netconf: "{" $@4 global_params "}"
#line 132 "netconf_parser.yy"
{
// parsing completed
#line 725 "netconf_parser.cc"
break;
- case 10:
+ case 10: // json: value
#line 139 "netconf_parser.yy"
{
// Push back the JSON value on the stack
#line 734 "netconf_parser.cc"
break;
- case 11:
+ case 11: // value: "integer"
#line 145 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
#line 740 "netconf_parser.cc"
break;
- case 12:
+ case 12: // value: "floating point"
#line 146 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
#line 746 "netconf_parser.cc"
break;
- case 13:
+ case 13: // value: "boolean"
#line 147 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
#line 752 "netconf_parser.cc"
break;
- case 14:
+ case 14: // value: "constant string"
#line 148 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
#line 758 "netconf_parser.cc"
break;
- case 15:
+ case 15: // value: "null"
#line 149 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
#line 764 "netconf_parser.cc"
break;
- case 16:
+ case 16: // value: map
#line 150 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 770 "netconf_parser.cc"
break;
- case 17:
+ case 17: // value: list_generic
#line 151 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 776 "netconf_parser.cc"
break;
- case 18:
+ case 18: // $@5: %empty
#line 155 "netconf_parser.yy"
{
// This code is executed when we're about to start parsing
#line 787 "netconf_parser.cc"
break;
- case 19:
+ case 19: // map: "{" $@5 map_content "}"
#line 160 "netconf_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 797 "netconf_parser.cc"
break;
- case 20:
+ case 20: // map_value: map
#line 166 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
#line 803 "netconf_parser.cc"
break;
- case 23:
+ case 23: // not_empty_map: "constant string" ":" value
#line 180 "netconf_parser.yy"
{
// map containing a single entry
#line 812 "netconf_parser.cc"
break;
- case 24:
+ case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
#line 184 "netconf_parser.yy"
{
// map consisting of a shorter map followed by
#line 822 "netconf_parser.cc"
break;
- case 25:
+ case 25: // $@6: %empty
#line 191 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 831 "netconf_parser.cc"
break;
- case 26:
+ case 26: // list_generic: "[" $@6 list_content "]"
#line 194 "netconf_parser.yy"
{
}
#line 838 "netconf_parser.cc"
break;
- case 29:
+ case 29: // not_empty_list: value
#line 201 "netconf_parser.yy"
{
// List consisting of a single element.
#line 847 "netconf_parser.cc"
break;
- case 30:
+ case 30: // not_empty_list: not_empty_list "," value
#line 205 "netconf_parser.yy"
{
// List ending with , and a value.
#line 856 "netconf_parser.cc"
break;
- case 31:
+ case 31: // unknown_map_entry: "constant string" ":"
#line 218 "netconf_parser.yy"
{
const std::string& where = ctx.contextName();
#line 867 "netconf_parser.cc"
break;
- case 32:
+ case 32: // $@7: %empty
#line 226 "netconf_parser.yy"
{
// This code is executed when we're about to start parsing
#line 878 "netconf_parser.cc"
break;
- case 33:
+ case 33: // netconf_syntax_map: "{" $@7 global_objects "}"
#line 231 "netconf_parser.yy"
{
// map parsing completed. If we ever want to do any wrap up
#line 888 "netconf_parser.cc"
break;
- case 37:
+ case 37: // $@8: %empty
#line 247 "netconf_parser.yy"
{
#line 907 "netconf_parser.cc"
break;
- case 38:
+ case 38: // netconf_object: "Netconf" $@8 ":" "{" global_params "}"
#line 260 "netconf_parser.yy"
{
// Ok, we're done with parsing Netconf. Let's take the map
#line 918 "netconf_parser.cc"
break;
- case 52:
+ case 52: // boot_update: "boot-update" ":" "boolean"
#line 288 "netconf_parser.yy"
{
ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 927 "netconf_parser.cc"
break;
- case 53:
+ case 53: // subscribe_changes: "subscribe-changes" ":" "boolean"
#line 293 "netconf_parser.yy"
{
ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 936 "netconf_parser.cc"
break;
- case 54:
+ case 54: // validate_changes: "validate-changes" ":" "boolean"
#line 298 "netconf_parser.yy"
{
ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 945 "netconf_parser.cc"
break;
- case 55:
+ case 55: // $@9: %empty
#line 303 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 953 "netconf_parser.cc"
break;
- case 56:
+ case 56: // user_context: "user-context" $@9 ":" map_value
#line 305 "netconf_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 980 "netconf_parser.cc"
break;
- case 57:
+ case 57: // $@10: %empty
#line 328 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 988 "netconf_parser.cc"
break;
- case 58:
+ case 58: // comment: "comment" $@10 ":" "constant string"
#line 330 "netconf_parser.yy"
{
ElementPtr parent = ctx.stack_.back();
#line 1017 "netconf_parser.cc"
break;
- case 59:
+ case 59: // $@11: %empty
#line 356 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1028 "netconf_parser.cc"
break;
- case 60:
+ case 60: // hooks_libraries: "hooks-libraries" $@11 ":" "[" hooks_libraries_list "]"
#line 361 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1037 "netconf_parser.cc"
break;
- case 65:
+ case 65: // $@12: %empty
#line 374 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1047 "netconf_parser.cc"
break;
- case 66:
+ case 66: // hooks_library: "{" $@12 hooks_params "}"
#line 378 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1055 "netconf_parser.cc"
break;
- case 72:
+ case 72: // $@13: %empty
#line 391 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1063 "netconf_parser.cc"
break;
- case 73:
+ case 73: // library: "library" $@13 ":" "constant string"
#line 393 "netconf_parser.yy"
{
ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1073 "netconf_parser.cc"
break;
- case 74:
+ case 74: // $@14: %empty
#line 399 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1081 "netconf_parser.cc"
break;
- case 75:
+ case 75: // parameters: "parameters" $@14 ":" map_value
#line 401 "netconf_parser.yy"
{
ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
#line 1090 "netconf_parser.cc"
break;
- case 76:
+ case 76: // $@15: %empty
#line 409 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
#line 1101 "netconf_parser.cc"
break;
- case 77:
+ case 77: // managed_servers: "managed-servers" ":" "{" $@15 servers_entries "}"
#line 414 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1110 "netconf_parser.cc"
break;
- case 87:
+ case 87: // $@16: %empty
#line 438 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1121 "netconf_parser.cc"
break;
- case 88:
+ case 88: // dhcp4_server: "dhcp4" $@16 ":" "{" managed_server_params "}"
#line 443 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1130 "netconf_parser.cc"
break;
- case 89:
+ case 89: // $@17: %empty
#line 449 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1141 "netconf_parser.cc"
break;
- case 90:
+ case 90: // dhcp6_server: "dhcp6" $@17 ":" "{" managed_server_params "}"
#line 454 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1150 "netconf_parser.cc"
break;
- case 91:
+ case 91: // $@18: %empty
#line 460 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1161 "netconf_parser.cc"
break;
- case 92:
+ case 92: // d2_server: "d2" $@18 ":" "{" managed_server_params "}"
#line 465 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1170 "netconf_parser.cc"
break;
- case 93:
+ case 93: // $@19: %empty
#line 471 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1181 "netconf_parser.cc"
break;
- case 94:
+ case 94: // ca_server: "ca" $@19 ":" "{" managed_server_params "}"
#line 476 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1190 "netconf_parser.cc"
break;
- case 105:
+ case 105: // $@20: %empty
#line 498 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1198 "netconf_parser.cc"
break;
- case 106:
+ case 106: // model: "model" $@20 ":" "constant string"
#line 500 "netconf_parser.yy"
{
ElementPtr model(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1208 "netconf_parser.cc"
break;
- case 107:
+ case 107: // $@21: %empty
#line 507 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1219 "netconf_parser.cc"
break;
- case 108:
+ case 108: // control_socket: "control-socket" $@21 ":" "{" control_socket_params "}"
#line 512 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1228 "netconf_parser.cc"
break;
- case 117:
+ case 117: // $@22: %empty
#line 530 "netconf_parser.yy"
{
ctx.enter(ctx.SOCKET_TYPE);
#line 1236 "netconf_parser.cc"
break;
- case 118:
+ case 118: // socket_type: "socket-type" $@22 ":" socket_type_value
#line 532 "netconf_parser.yy"
{
ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
#line 1245 "netconf_parser.cc"
break;
- case 119:
+ case 119: // socket_type_value: "unix"
#line 538 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
#line 1251 "netconf_parser.cc"
break;
- case 120:
+ case 120: // socket_type_value: "http"
#line 539 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
#line 1257 "netconf_parser.cc"
break;
- case 121:
+ case 121: // socket_type_value: "stdout"
#line 540 "netconf_parser.yy"
{ yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); }
#line 1263 "netconf_parser.cc"
break;
- case 122:
+ case 122: // $@23: %empty
#line 543 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1271 "netconf_parser.cc"
break;
- case 123:
+ case 123: // socket_name: "socket-name" $@23 ":" "constant string"
#line 545 "netconf_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1281 "netconf_parser.cc"
break;
- case 124:
+ case 124: // $@24: %empty
#line 552 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1289 "netconf_parser.cc"
break;
- case 125:
+ case 125: // socket_url: "socket-url" $@24 ":" "constant string"
#line 554 "netconf_parser.yy"
{
ElementPtr url(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1299 "netconf_parser.cc"
break;
- case 126:
+ case 126: // $@25: %empty
#line 564 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1310 "netconf_parser.cc"
break;
- case 127:
+ case 127: // loggers: "loggers" $@25 ":" "[" loggers_entries "]"
#line 569 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1319 "netconf_parser.cc"
break;
- case 130:
+ case 130: // $@26: %empty
#line 581 "netconf_parser.yy"
{
ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1329 "netconf_parser.cc"
break;
- case 131:
+ case 131: // logger_entry: "{" $@26 logger_params "}"
#line 585 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1337 "netconf_parser.cc"
break;
- case 141:
+ case 141: // $@27: %empty
#line 602 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1345 "netconf_parser.cc"
break;
- case 142:
+ case 142: // name: "name" $@27 ":" "constant string"
#line 604 "netconf_parser.yy"
{
ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1355 "netconf_parser.cc"
break;
- case 143:
+ case 143: // debuglevel: "debuglevel" ":" "integer"
#line 610 "netconf_parser.yy"
{
ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1364 "netconf_parser.cc"
break;
- case 144:
+ case 144: // $@28: %empty
#line 615 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1372 "netconf_parser.cc"
break;
- case 145:
+ case 145: // severity: "severity" $@28 ":" "constant string"
#line 617 "netconf_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1382 "netconf_parser.cc"
break;
- case 146:
+ case 146: // $@29: %empty
#line 623 "netconf_parser.yy"
{
ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
#line 1393 "netconf_parser.cc"
break;
- case 147:
+ case 147: // output_options_list: "output_options" $@29 ":" "[" output_options_list_content "]"
#line 628 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1402 "netconf_parser.cc"
break;
- case 150:
+ case 150: // $@30: %empty
#line 637 "netconf_parser.yy"
{
ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
#line 1412 "netconf_parser.cc"
break;
- case 151:
+ case 151: // output_entry: "{" $@30 output_params_list "}"
#line 641 "netconf_parser.yy"
{
ctx.stack_.pop_back();
#line 1420 "netconf_parser.cc"
break;
- case 159:
+ case 159: // $@31: %empty
#line 656 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1428 "netconf_parser.cc"
break;
- case 160:
+ case 160: // output: "output" $@31 ":" "constant string"
#line 658 "netconf_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
#line 1438 "netconf_parser.cc"
break;
- case 161:
+ case 161: // flush: "flush" ":" "boolean"
#line 664 "netconf_parser.yy"
{
ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
#line 1447 "netconf_parser.cc"
break;
- case 162:
+ case 162: // maxsize: "maxsize" ":" "integer"
#line 669 "netconf_parser.yy"
{
ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1456 "netconf_parser.cc"
break;
- case 163:
+ case 163: // maxver: "maxver" ":" "integer"
#line 674 "netconf_parser.yy"
{
ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
#line 1465 "netconf_parser.cc"
break;
- case 164:
+ case 164: // $@32: %empty
#line 679 "netconf_parser.yy"
{
ctx.enter(ctx.NO_KEYWORDS);
#line 1473 "netconf_parser.cc"
break;
- case 165:
+ case 165: // pattern: "pattern" $@32 ":" "constant string"
#line 681 "netconf_parser.yy"
{
ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton interface for Bison LALR(1) parsers in C++
{
switch (this->kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (std::move (that.value));
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (std::move (that.value));
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (std::move (that.value));
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (std::move (that.value));
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (std::move (that.value));
break;
// Value type destructor.
switch (yykind)
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.template destroy< ElementPtr > ();
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.template destroy< bool > ();
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.template destroy< double > ();
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.template destroy< int64_t > ();
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.template destroy< std::string > ();
break;
void move (by_state& that);
/// The symbol kind (corresponding to \a state).
- /// \a S_YYEMPTY when empty.
+ /// \a symbol_kind::S_YYEMPTY when empty.
symbol_kind_type kind () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48
};
- const int user_token_number_max_ = 303;
+ // Last valid token kind.
+ const int code_max = 303;
if (t <= 0)
return symbol_kind::S_YYEOF;
- else if (t <= user_token_number_max_)
+ else if (t <= code_max)
return YY_CAST (symbol_kind_type, translate_table[t]);
else
return symbol_kind::S_YYUNDEF;
{
switch (this->kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.copy< ElementPtr > (YY_MOVE (that.value));
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.copy< bool > (YY_MOVE (that.value));
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.copy< double > (YY_MOVE (that.value));
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.copy< int64_t > (YY_MOVE (that.value));
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.copy< std::string > (YY_MOVE (that.value));
break;
super_type::move (s);
switch (this->kind ())
{
- case 57: // value
- case 60: // map_value
- case 119: // socket_type_value
+ case symbol_kind::S_value: // value
+ case symbol_kind::S_map_value: // map_value
+ case symbol_kind::S_socket_type_value: // socket_type_value
value.move< ElementPtr > (YY_MOVE (s.value));
break;
- case 48: // "boolean"
+ case symbol_kind::S_BOOLEAN: // "boolean"
value.move< bool > (YY_MOVE (s.value));
break;
- case 47: // "floating point"
+ case symbol_kind::S_FLOAT: // "floating point"
value.move< double > (YY_MOVE (s.value));
break;
- case 46: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
value.move< int64_t > (YY_MOVE (s.value));
break;
- case 45: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
value.move< std::string > (YY_MOVE (s.value));
break;
#line 14 "netconf_parser.yy"
} } // isc::netconf
-#line 2360 "netconf_parser.h"
-
+#line 2361 "netconf_parser.h"
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021532
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Locations for Bison parsers in C++
class position
{
public:
+ /// Type for file name.
+ typedef const std::string filename_type;
/// Type for line and column numbers.
typedef int counter_type;
/// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
+ explicit position (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
: filename (f)
/// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
+ void initialize (filename_type* fn = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
/** \} */
/// File name to which this position refers.
- std::string* filename;
+ filename_type* filename;
/// Current line number.
counter_type line;
/// Current column number.
return res -= width;
}
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
class location
{
public:
+ /// Type for file name.
+ typedef position::filename_type filename_type;
/// Type for line and column numbers.
typedef position::counter_type counter_type;
{}
/// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
+ explicit location (filename_type* f,
counter_type l = 1,
counter_type c = 1)
: begin (f, l, c)
/// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
+ void initialize (filename_type* f = YY_NULLPTR,
counter_type l = 1,
counter_type c = 1)
{
return res -= width;
}
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
/** \brief Intercept output stream redirection.
** \param ostr the destination output stream
** \param loc a reference to the location to redirect
#line 14 "parser.yy"
} } // isc::eval
-#line 333 "location.hh"
+#line 305 "location.hh"
#endif // !YY_EVAL_LOCATION_HH_INCLUDED
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton implementation for Bison LALR(1) parsers in C++
{
switch (that.kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.YY_MOVE_OR_COPY< TokenOption::RepresentationType > (YY_MOVE (that.value));
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.YY_MOVE_OR_COPY< TokenPkt4::FieldType > (YY_MOVE (that.value));
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.YY_MOVE_OR_COPY< TokenPkt6::FieldType > (YY_MOVE (that.value));
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.YY_MOVE_OR_COPY< TokenPkt::MetadataType > (YY_MOVE (that.value));
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.YY_MOVE_OR_COPY< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.YY_MOVE_OR_COPY< int8_t > (YY_MOVE (that.value));
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.YY_MOVE_OR_COPY< uint16_t > (YY_MOVE (that.value));
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.YY_MOVE_OR_COPY< uint32_t > (YY_MOVE (that.value));
break;
{
switch (that.kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.move< TokenOption::RepresentationType > (YY_MOVE (that.value));
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.move< TokenPkt4::FieldType > (YY_MOVE (that.value));
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.move< TokenPkt6::FieldType > (YY_MOVE (that.value));
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.move< TokenPkt::MetadataType > (YY_MOVE (that.value));
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.move< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.move< int8_t > (YY_MOVE (that.value));
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.move< std::string > (YY_MOVE (that.value));
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.move< uint16_t > (YY_MOVE (that.value));
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.move< uint32_t > (YY_MOVE (that.value));
break;
state = that.state;
switch (that.kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.copy< TokenOption::RepresentationType > (that.value);
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.copy< TokenPkt4::FieldType > (that.value);
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.copy< TokenPkt6::FieldType > (that.value);
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.copy< TokenPkt::MetadataType > (that.value);
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.copy< TokenRelay6Field::FieldType > (that.value);
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.copy< int8_t > (that.value);
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.copy< std::string > (that.value);
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.copy< uint16_t > (that.value);
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.copy< uint32_t > (that.value);
break;
state = that.state;
switch (that.kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.move< TokenOption::RepresentationType > (that.value);
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.move< TokenPkt4::FieldType > (that.value);
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.move< TokenPkt6::FieldType > (that.value);
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.move< TokenPkt::MetadataType > (that.value);
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.move< TokenRelay6Field::FieldType > (that.value);
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.move< int8_t > (that.value);
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.move< std::string > (that.value);
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.move< uint16_t > (that.value);
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.move< uint32_t > (that.value);
break;
<< yysym.location << ": ";
switch (yykind)
{
- case 50: // "constant string"
+ case symbol_kind::S_STRING: // "constant string"
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 464 "parser.cc"
break;
- case 51: // "integer"
+ case symbol_kind::S_INTEGER: // "integer"
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 470 "parser.cc"
break;
- case 52: // "constant hexstring"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 476 "parser.cc"
break;
- case 53: // "option name"
+ case symbol_kind::S_OPTION_NAME: // "option name"
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 482 "parser.cc"
break;
- case 54: // "ip address"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < std::string > (); }
#line 488 "parser.cc"
break;
- case 60: // integer_expr
+ case symbol_kind::S_integer_expr: // integer_expr
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < uint32_t > (); }
#line 494 "parser.cc"
break;
- case 61: // option_code
+ case symbol_kind::S_option_code: // option_code
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < uint16_t > (); }
#line 500 "parser.cc"
break;
- case 62: // sub_option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < uint16_t > (); }
#line 506 "parser.cc"
break;
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); }
#line 512 "parser.cc"
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < int8_t > (); }
#line 518 "parser.cc"
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); }
#line 524 "parser.cc"
break;
- case 66: // enterprise_id
+ case symbol_kind::S_enterprise_id: // enterprise_id
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < uint32_t > (); }
#line 530 "parser.cc"
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); }
#line 536 "parser.cc"
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); }
#line 542 "parser.cc"
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
#line 112 "parser.yy"
{ yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); }
#line 548 "parser.cc"
when using variants. */
switch (yyr1_[yyn])
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
yylhs.value.emplace< TokenOption::RepresentationType > ();
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
yylhs.value.emplace< TokenPkt4::FieldType > ();
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
yylhs.value.emplace< TokenPkt6::FieldType > ();
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
yylhs.value.emplace< TokenPkt::MetadataType > ();
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
yylhs.value.emplace< TokenRelay6Field::FieldType > ();
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
yylhs.value.emplace< int8_t > ();
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
yylhs.value.emplace< std::string > ();
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
yylhs.value.emplace< uint16_t > ();
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
yylhs.value.emplace< uint32_t > ();
break;
{
switch (yyn)
{
- case 6:
+ case 6: // bool_expr: "not" bool_expr
#line 132 "parser.yy"
{
TokenPtr neg(new TokenNot());
#line 846 "parser.cc"
break;
- case 7:
+ case 7: // bool_expr: bool_expr "and" bool_expr
#line 137 "parser.yy"
{
TokenPtr neg(new TokenAnd());
#line 855 "parser.cc"
break;
- case 8:
+ case 8: // bool_expr: bool_expr "or" bool_expr
#line 142 "parser.yy"
{
TokenPtr neg(new TokenOr());
#line 864 "parser.cc"
break;
- case 9:
+ case 9: // bool_expr: string_expr "==" string_expr
#line 147 "parser.yy"
{
TokenPtr eq(new TokenEqual());
#line 873 "parser.cc"
break;
- case 10:
+ case 10: // bool_expr: "option" "[" option_code "]" "." "exists"
#line 152 "parser.yy"
{
TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
#line 882 "parser.cc"
break;
- case 11:
+ case 11: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists"
#line 157 "parser.yy"
{
TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
#line 891 "parser.cc"
break;
- case 12:
+ case 12: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists"
#line 162 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 915 "parser.cc"
break;
- case 13:
+ case 13: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists"
#line 182 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 933 "parser.cc"
break;
- case 14:
+ case 14: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists"
#line 196 "parser.yy"
{
// Expression: vendor-class[1234].exists
#line 946 "parser.cc"
break;
- case 15:
+ case 15: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists"
#line 205 "parser.yy"
{
// Expression: vendor[1234].exists
#line 959 "parser.cc"
break;
- case 16:
+ case 16: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists"
#line 214 "parser.yy"
{
// Expression vendor[1234].option[123].exists
#line 973 "parser.cc"
break;
- case 17:
+ case 17: // bool_expr: "member" "(" "constant string" ")"
#line 224 "parser.yy"
{
// Expression member('foo')
#line 992 "parser.cc"
break;
- case 18:
+ case 18: // string_expr: "constant string"
#line 241 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
#line 1001 "parser.cc"
break;
- case 19:
+ case 19: // string_expr: "constant hexstring"
#line 246 "parser.yy"
{
TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ()));
#line 1010 "parser.cc"
break;
- case 20:
+ case 20: // string_expr: "ip address"
#line 251 "parser.yy"
{
TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ()));
#line 1019 "parser.cc"
break;
- case 21:
+ case 21: // string_expr: "option" "[" option_code "]" "." option_repr_type
#line 256 "parser.yy"
{
TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
#line 1028 "parser.cc"
break;
- case 22:
+ case 22: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type
#line 261 "parser.yy"
{
TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
#line 1037 "parser.cc"
break;
- case 23:
+ case 23: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type
#line 266 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 1061 "parser.cc"
break;
- case 24:
+ case 24: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type
#line 287 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 1079 "parser.cc"
break;
- case 25:
+ case 25: // string_expr: "pkt" "." pkt_metadata
#line 302 "parser.yy"
{
TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ()));
#line 1088 "parser.cc"
break;
- case 26:
+ case 26: // string_expr: "pkt4" "." pkt4_field
#line 307 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 1106 "parser.cc"
break;
- case 27:
+ case 27: // string_expr: "pkt6" "." pkt6_field
#line 321 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 1124 "parser.cc"
break;
- case 28:
+ case 28: // string_expr: "relay6" "[" nest_level "]" "." relay6_field
#line 335 "parser.yy"
{
switch (ctx.getUniverse()) {
#line 1142 "parser.cc"
break;
- case 29:
+ case 29: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")"
#line 350 "parser.yy"
{
TokenPtr sub(new TokenSubstring());
#line 1151 "parser.cc"
break;
- case 30:
+ case 30: // string_expr: "concat" "(" string_expr "," string_expr ")"
#line 355 "parser.yy"
{
TokenPtr conc(new TokenConcat());
#line 1160 "parser.cc"
break;
- case 31:
+ case 31: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
#line 360 "parser.yy"
{
TokenPtr cond(new TokenIfElse());
#line 1169 "parser.cc"
break;
- case 32:
+ case 32: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
#line 365 "parser.yy"
{
TokenPtr tohex(new TokenToHexString());
#line 1178 "parser.cc"
break;
- case 33:
+ case 33: // string_expr: "vendor" "." "enterprise"
#line 370 "parser.yy"
{
// expression: vendor.enterprise
#line 1191 "parser.cc"
break;
- case 34:
+ case 34: // string_expr: "vendor-class" "." "enterprise"
#line 379 "parser.yy"
{
// expression: vendor-class.enterprise
#line 1205 "parser.cc"
break;
- case 35:
+ case 35: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
#line 389 "parser.yy"
{
// This token will search for vendor option with
#line 1218 "parser.cc"
break;
- case 36:
+ case 36: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
#line 398 "parser.yy"
{
// expression: vendor-class[1234].data
#line 1235 "parser.cc"
break;
- case 37:
+ case 37: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
#line 411 "parser.yy"
{
// expression: vendor-class[1234].data[5]
#line 1252 "parser.cc"
break;
- case 38:
+ case 38: // string_expr: integer_expr
#line 424 "parser.yy"
{
TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ()));
#line 1261 "parser.cc"
break;
- case 39:
+ case 39: // integer_expr: "integer"
#line 431 "parser.yy"
{
yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
#line 1269 "parser.cc"
break;
- case 40:
+ case 40: // option_code: "integer"
#line 437 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
#line 1277 "parser.cc"
break;
- case 41:
+ case 41: // option_code: "option name"
#line 441 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location);
#line 1285 "parser.cc"
break;
- case 42:
+ case 42: // sub_option_code: "integer"
#line 447 "parser.yy"
{
yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
#line 1293 "parser.cc"
break;
- case 43:
+ case 43: // option_repr_type: "text"
#line 453 "parser.yy"
{
yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
#line 1301 "parser.cc"
break;
- case 44:
+ case 44: // option_repr_type: "hex"
#line 457 "parser.yy"
{
yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
#line 1309 "parser.cc"
break;
- case 45:
+ case 45: // nest_level: "integer"
#line 463 "parser.yy"
{
yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location);
#line 1317 "parser.cc"
break;
- case 46:
+ case 46: // pkt_metadata: "iface"
#line 472 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE;
#line 1325 "parser.cc"
break;
- case 47:
+ case 47: // pkt_metadata: "src"
#line 476 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC;
#line 1333 "parser.cc"
break;
- case 48:
+ case 48: // pkt_metadata: "dst"
#line 480 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST;
#line 1341 "parser.cc"
break;
- case 49:
+ case 49: // pkt_metadata: "len"
#line 484 "parser.yy"
{
yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN;
#line 1349 "parser.cc"
break;
- case 50:
+ case 50: // enterprise_id: "integer"
#line 490 "parser.yy"
{
yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
#line 1357 "parser.cc"
break;
- case 51:
+ case 51: // enterprise_id: "*"
#line 494 "parser.yy"
{
yylhs.value.as < uint32_t > () = 0;
#line 1365 "parser.cc"
break;
- case 52:
+ case 52: // pkt4_field: "mac"
#line 500 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
#line 1373 "parser.cc"
break;
- case 53:
+ case 53: // pkt4_field: "hlen"
#line 504 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN;
#line 1381 "parser.cc"
break;
- case 54:
+ case 54: // pkt4_field: "htype"
#line 508 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
#line 1389 "parser.cc"
break;
- case 55:
+ case 55: // pkt4_field: "ciaddr"
#line 512 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
#line 1397 "parser.cc"
break;
- case 56:
+ case 56: // pkt4_field: "giaddr"
#line 516 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
#line 1405 "parser.cc"
break;
- case 57:
+ case 57: // pkt4_field: "yiaddr"
#line 520 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
#line 1413 "parser.cc"
break;
- case 58:
+ case 58: // pkt4_field: "siaddr"
#line 524 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
#line 1421 "parser.cc"
break;
- case 59:
+ case 59: // pkt4_field: "msgtype"
#line 528 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
#line 1429 "parser.cc"
break;
- case 60:
+ case 60: // pkt4_field: "transid"
#line 532 "parser.yy"
{
yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
#line 1437 "parser.cc"
break;
- case 61:
+ case 61: // pkt6_field: "msgtype"
#line 538 "parser.yy"
{
yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
#line 1445 "parser.cc"
break;
- case 62:
+ case 62: // pkt6_field: "transid"
#line 542 "parser.yy"
{
yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
#line 1453 "parser.cc"
break;
- case 63:
+ case 63: // relay6_field: "peeraddr"
#line 548 "parser.yy"
{
yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
#line 1461 "parser.cc"
break;
- case 64:
+ case 64: // relay6_field: "linkaddr"
#line 552 "parser.yy"
{
yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
#line 1469 "parser.cc"
break;
- case 65:
+ case 65: // start_expr: "integer"
#line 558 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
#line 1478 "parser.cc"
break;
- case 66:
+ case 66: // length_expr: "integer"
#line 565 "parser.yy"
{
TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
#line 1487 "parser.cc"
break;
- case 67:
+ case 67: // length_expr: "all"
#line 570 "parser.yy"
{
TokenPtr str(new TokenString("all"));
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.1.
// Skeleton interface for Bison LALR(1) parsers in C++
{
switch (this->kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.move< TokenOption::RepresentationType > (std::move (that.value));
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.move< TokenPkt4::FieldType > (std::move (that.value));
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.move< TokenPkt6::FieldType > (std::move (that.value));
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.move< TokenPkt::MetadataType > (std::move (that.value));
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.move< TokenRelay6Field::FieldType > (std::move (that.value));
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.move< int8_t > (std::move (that.value));
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.move< std::string > (std::move (that.value));
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.move< uint16_t > (std::move (that.value));
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.move< uint32_t > (std::move (that.value));
break;
// Value type destructor.
switch (yykind)
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.template destroy< TokenOption::RepresentationType > ();
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.template destroy< TokenPkt4::FieldType > ();
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.template destroy< TokenPkt6::FieldType > ();
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.template destroy< TokenPkt::MetadataType > ();
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.template destroy< TokenRelay6Field::FieldType > ();
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.template destroy< int8_t > ();
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.template destroy< std::string > ();
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.template destroy< uint16_t > ();
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.template destroy< uint32_t > ();
break;
void move (by_state& that);
/// The symbol kind (corresponding to \a state).
- /// \a S_YYEMPTY when empty.
+ /// \a symbol_kind::S_YYEMPTY when empty.
symbol_kind_type kind () const YY_NOEXCEPT;
/// The state number used to denote an empty symbol.
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54
};
- const int user_token_number_max_ = 309;
+ // Last valid token kind.
+ const int code_max = 309;
if (t <= 0)
return symbol_kind::S_YYEOF;
- else if (t <= user_token_number_max_)
+ else if (t <= code_max)
return YY_CAST (symbol_kind_type, translate_table[t]);
else
return symbol_kind::S_YYUNDEF;
{
switch (this->kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.copy< TokenOption::RepresentationType > (YY_MOVE (that.value));
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.copy< TokenPkt4::FieldType > (YY_MOVE (that.value));
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.copy< TokenPkt6::FieldType > (YY_MOVE (that.value));
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.copy< TokenPkt::MetadataType > (YY_MOVE (that.value));
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.copy< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.copy< int8_t > (YY_MOVE (that.value));
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.copy< std::string > (YY_MOVE (that.value));
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.copy< uint16_t > (YY_MOVE (that.value));
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.copy< uint32_t > (YY_MOVE (that.value));
break;
super_type::move (s);
switch (this->kind ())
{
- case 63: // option_repr_type
+ case symbol_kind::S_option_repr_type: // option_repr_type
value.move< TokenOption::RepresentationType > (YY_MOVE (s.value));
break;
- case 67: // pkt4_field
+ case symbol_kind::S_pkt4_field: // pkt4_field
value.move< TokenPkt4::FieldType > (YY_MOVE (s.value));
break;
- case 68: // pkt6_field
+ case symbol_kind::S_pkt6_field: // pkt6_field
value.move< TokenPkt6::FieldType > (YY_MOVE (s.value));
break;
- case 65: // pkt_metadata
+ case symbol_kind::S_pkt_metadata: // pkt_metadata
value.move< TokenPkt::MetadataType > (YY_MOVE (s.value));
break;
- case 69: // relay6_field
+ case symbol_kind::S_relay6_field: // relay6_field
value.move< TokenRelay6Field::FieldType > (YY_MOVE (s.value));
break;
- case 64: // nest_level
+ case symbol_kind::S_nest_level: // nest_level
value.move< int8_t > (YY_MOVE (s.value));
break;
- case 50: // "constant string"
- case 51: // "integer"
- case 52: // "constant hexstring"
- case 53: // "option name"
- case 54: // "ip address"
+ case symbol_kind::S_STRING: // "constant string"
+ case symbol_kind::S_INTEGER: // "integer"
+ case symbol_kind::S_HEXSTRING: // "constant hexstring"
+ case symbol_kind::S_OPTION_NAME: // "option name"
+ case symbol_kind::S_IP_ADDRESS: // "ip address"
value.move< std::string > (YY_MOVE (s.value));
break;
- case 61: // option_code
- case 62: // sub_option_code
+ case symbol_kind::S_option_code: // option_code
+ case symbol_kind::S_sub_option_code: // sub_option_code
value.move< uint16_t > (YY_MOVE (s.value));
break;
- case 60: // integer_expr
- case 66: // enterprise_id
+ case symbol_kind::S_integer_expr: // integer_expr
+ case symbol_kind::S_enterprise_id: // enterprise_id
value.move< uint32_t > (YY_MOVE (s.value));
break;
#line 14 "parser.yy"
} } // isc::eval
-#line 2487 "parser.h"
-
+#line 2488 "parser.h"
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined in "location.hh".
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// Generated 202009021531
+// A Bison parser, made by GNU Bison 3.7.1.
// Starting with Bison 3.2, this file is useless: the structure it
// used to define is now defined with the parser itself.