From: Francis Dupont Date: Wed, 17 May 2023 12:53:19 +0000 (+0000) Subject: [#2862] Regen bison files X-Git-Tag: Kea-2.3.8~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5319dcf9782600f799bc28ca77047dc732da8fd1;p=thirdparty%2Fkea.git [#2862] Regen bison files --- diff --git a/src/bin/agent/agent_parser.cc b/src/bin/agent/agent_parser.cc index 29b82be156..9ec41583bf 100644 --- a/src/bin/agent/agent_parser.cc +++ b/src/bin/agent/agent_parser.cc @@ -48,7 +48,12 @@ #include -#line 52 "agent_parser.cc" +// Avoid warnings with the error counter. +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif + +#line 57 "agent_parser.cc" #ifndef YY_ @@ -141,7 +146,7 @@ #line 14 "agent_parser.yy" namespace isc { namespace agent { -#line 145 "agent_parser.cc" +#line 150 "agent_parser.cc" /// Build a parser object. AgentParser::AgentParser (isc::agent::ParserContext& ctx_yyarg) @@ -382,51 +387,51 @@ namespace isc { namespace agent { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 388 "agent_parser.cc" +#line 393 "agent_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } -#line 394 "agent_parser.cc" +#line 399 "agent_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < double > (); } -#line 400 "agent_parser.cc" +#line 405 "agent_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < bool > (); } -#line 406 "agent_parser.cc" +#line 411 "agent_parser.cc" break; case symbol_kind::S_value: // value -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 412 "agent_parser.cc" +#line 417 "agent_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 418 "agent_parser.cc" +#line 423 "agent_parser.cc" break; case symbol_kind::S_socket_type_value: // socket_type_value -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 424 "agent_parser.cc" +#line 429 "agent_parser.cc" break; case symbol_kind::S_auth_type_value: // auth_type_value -#line 116 "agent_parser.yy" +#line 121 "agent_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 430 "agent_parser.cc" +#line 435 "agent_parser.cc" break; default: @@ -700,224 +705,224 @@ namespace isc { namespace agent { switch (yyn) { case 2: // $@1: %empty -#line 127 "agent_parser.yy" +#line 132 "agent_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORDS; } -#line 706 "agent_parser.cc" +#line 711 "agent_parser.cc" break; case 4: // $@2: %empty -#line 128 "agent_parser.yy" +#line 133 "agent_parser.yy" { ctx.ctx_ = ctx.CONFIG; } -#line 712 "agent_parser.cc" +#line 717 "agent_parser.cc" break; case 6: // $@3: %empty -#line 129 "agent_parser.yy" +#line 134 "agent_parser.yy" { ctx.ctx_ = ctx.AGENT; } -#line 718 "agent_parser.cc" +#line 723 "agent_parser.cc" break; case 8: // $@4: %empty -#line 137 "agent_parser.yy" +#line 142 "agent_parser.yy" { // Parse the Control-agent map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 728 "agent_parser.cc" +#line 733 "agent_parser.cc" break; case 9: // sub_agent: "{" $@4 global_params "}" -#line 141 "agent_parser.yy" +#line 146 "agent_parser.yy" { // parsing completed } -#line 736 "agent_parser.cc" +#line 741 "agent_parser.cc" break; case 10: // json: value -#line 148 "agent_parser.yy" +#line 153 "agent_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); } -#line 745 "agent_parser.cc" +#line 750 "agent_parser.cc" break; case 11: // value: "integer" -#line 154 "agent_parser.yy" +#line 159 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 751 "agent_parser.cc" +#line 756 "agent_parser.cc" break; case 12: // value: "floating point" -#line 155 "agent_parser.yy" +#line 160 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 757 "agent_parser.cc" +#line 762 "agent_parser.cc" break; case 13: // value: "boolean" -#line 156 "agent_parser.yy" +#line 161 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 763 "agent_parser.cc" +#line 768 "agent_parser.cc" break; case 14: // value: "constant string" -#line 157 "agent_parser.yy" +#line 162 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 769 "agent_parser.cc" +#line 774 "agent_parser.cc" break; case 15: // value: "null" -#line 158 "agent_parser.yy" +#line 163 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 775 "agent_parser.cc" +#line 780 "agent_parser.cc" break; case 16: // value: map -#line 159 "agent_parser.yy" +#line 164 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 781 "agent_parser.cc" +#line 786 "agent_parser.cc" break; case 17: // value: list_generic -#line 160 "agent_parser.yy" +#line 165 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 787 "agent_parser.cc" +#line 792 "agent_parser.cc" break; case 18: // $@5: %empty -#line 164 "agent_parser.yy" +#line 169 "agent_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 798 "agent_parser.cc" +#line 803 "agent_parser.cc" break; case 19: // map: "{" $@5 map_content "}" -#line 169 "agent_parser.yy" +#line 174 "agent_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 808 "agent_parser.cc" +#line 813 "agent_parser.cc" break; case 20: // map_value: map -#line 175 "agent_parser.yy" +#line 180 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 814 "agent_parser.cc" +#line 819 "agent_parser.cc" break; case 23: // not_empty_map: "constant string" ":" value -#line 189 "agent_parser.yy" +#line 194 "agent_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 824 "agent_parser.cc" +#line 829 "agent_parser.cc" break; case 24: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 194 "agent_parser.yy" +#line 199 "agent_parser.yy" { // map consisting of a shorter map followed by // comma and string:value ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 835 "agent_parser.cc" +#line 840 "agent_parser.cc" break; case 25: // not_empty_map: not_empty_map "," -#line 200 "agent_parser.yy" +#line 205 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 843 "agent_parser.cc" +#line 848 "agent_parser.cc" break; case 26: // $@6: %empty -#line 205 "agent_parser.yy" +#line 210 "agent_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 852 "agent_parser.cc" +#line 857 "agent_parser.cc" break; case 27: // list_generic: "[" $@6 list_content "]" -#line 208 "agent_parser.yy" +#line 213 "agent_parser.yy" { } -#line 859 "agent_parser.cc" +#line 864 "agent_parser.cc" break; case 30: // not_empty_list: value -#line 215 "agent_parser.yy" +#line 220 "agent_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 868 "agent_parser.cc" +#line 873 "agent_parser.cc" break; case 31: // not_empty_list: not_empty_list "," value -#line 219 "agent_parser.yy" +#line 224 "agent_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 877 "agent_parser.cc" +#line 882 "agent_parser.cc" break; case 32: // not_empty_list: not_empty_list "," -#line 223 "agent_parser.yy" +#line 228 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 885 "agent_parser.cc" +#line 890 "agent_parser.cc" break; case 33: // unknown_map_entry: "constant string" ":" -#line 235 "agent_parser.yy" +#line 240 "agent_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 896 "agent_parser.cc" +#line 901 "agent_parser.cc" break; case 34: // $@7: %empty -#line 243 "agent_parser.yy" +#line 248 "agent_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 907 "agent_parser.cc" +#line 912 "agent_parser.cc" break; case 35: // agent_syntax_map: "{" $@7 global_object "}" -#line 248 "agent_parser.yy" +#line 253 "agent_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 917 "agent_parser.cc" +#line 922 "agent_parser.cc" break; case 36: // $@8: %empty -#line 255 "agent_parser.yy" +#line 260 "agent_parser.yy" { // Let's create a MapElement that will represent it, add it to the // top level map (that's already on the stack) and put the new map @@ -929,142 +934,142 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.AGENT); } -#line 933 "agent_parser.cc" +#line 938 "agent_parser.cc" break; case 37: // global_object: "Control-agent" $@8 ":" "{" global_params "}" -#line 265 "agent_parser.yy" +#line 270 "agent_parser.yy" { // Ok, we're done with parsing control-agent. Let's take the map // off the stack. ctx.stack_.pop_back(); ctx.leave(); } -#line 944 "agent_parser.cc" +#line 949 "agent_parser.cc" break; case 39: // global_object_comma: global_object "," -#line 274 "agent_parser.yy" +#line 279 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 952 "agent_parser.cc" +#line 957 "agent_parser.cc" break; case 42: // global_params: global_params "," -#line 280 "agent_parser.yy" +#line 285 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 960 "agent_parser.cc" +#line 965 "agent_parser.cc" break; case 56: // $@9: %empty -#line 302 "agent_parser.yy" +#line 307 "agent_parser.yy" { ctx.unique("http-host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 969 "agent_parser.cc" +#line 974 "agent_parser.cc" break; case 57: // http_host: "http-host" $@9 ":" "constant string" -#line 305 "agent_parser.yy" +#line 310 "agent_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("http-host", host); ctx.leave(); } -#line 979 "agent_parser.cc" +#line 984 "agent_parser.cc" break; case 58: // http_port: "http-port" ":" "integer" -#line 311 "agent_parser.yy" +#line 316 "agent_parser.yy" { ctx.unique("http-port", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("http-port", prf); } -#line 989 "agent_parser.cc" +#line 994 "agent_parser.cc" break; case 59: // $@10: %empty -#line 317 "agent_parser.yy" +#line 322 "agent_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 998 "agent_parser.cc" +#line 1003 "agent_parser.cc" break; case 60: // trust_anchor: "trust-anchor" $@10 ":" "constant string" -#line 320 "agent_parser.yy" +#line 325 "agent_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 1008 "agent_parser.cc" +#line 1013 "agent_parser.cc" break; case 61: // $@11: %empty -#line 326 "agent_parser.yy" +#line 331 "agent_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1017 "agent_parser.cc" +#line 1022 "agent_parser.cc" break; case 62: // cert_file: "cert-file" $@11 ":" "constant string" -#line 329 "agent_parser.yy" +#line 334 "agent_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 1027 "agent_parser.cc" +#line 1032 "agent_parser.cc" break; case 63: // $@12: %empty -#line 335 "agent_parser.yy" +#line 340 "agent_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1036 "agent_parser.cc" +#line 1041 "agent_parser.cc" break; case 64: // key_file: "key-file" $@12 ":" "constant string" -#line 338 "agent_parser.yy" +#line 343 "agent_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 1046 "agent_parser.cc" +#line 1051 "agent_parser.cc" break; case 65: // cert_required: "cert-required" ":" "boolean" -#line 344 "agent_parser.yy" +#line 349 "agent_parser.yy" { ctx.unique("cert-required", ctx.loc2pos(yystack_[2].location)); ElementPtr req(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-required", req); } -#line 1056 "agent_parser.cc" +#line 1061 "agent_parser.cc" break; case 66: // $@13: %empty -#line 350 "agent_parser.yy" +#line 355 "agent_parser.yy" { ctx.enter(ctx.NO_KEYWORDS); } -#line 1064 "agent_parser.cc" +#line 1069 "agent_parser.cc" break; case 67: // user_context: "user-context" $@13 ":" map_value -#line 352 "agent_parser.yy" +#line 357 "agent_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -1087,19 +1092,19 @@ namespace isc { namespace agent { parent->set("user-context", user_context); ctx.leave(); } -#line 1091 "agent_parser.cc" +#line 1096 "agent_parser.cc" break; case 68: // $@14: %empty -#line 375 "agent_parser.yy" +#line 380 "agent_parser.yy" { ctx.enter(ctx.NO_KEYWORDS); } -#line 1099 "agent_parser.cc" +#line 1104 "agent_parser.cc" break; case 69: // comment: "comment" $@14 ":" "constant string" -#line 377 "agent_parser.yy" +#line 382 "agent_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -1124,11 +1129,11 @@ namespace isc { namespace agent { parent->set("user-context", user_context); ctx.leave(); } -#line 1128 "agent_parser.cc" +#line 1133 "agent_parser.cc" break; case 70: // $@15: %empty -#line 403 "agent_parser.yy" +#line 408 "agent_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1136,91 +1141,91 @@ namespace isc { namespace agent { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 1140 "agent_parser.cc" +#line 1145 "agent_parser.cc" break; case 71: // hooks_libraries: "hooks-libraries" $@15 ":" "[" hooks_libraries_list "]" -#line 409 "agent_parser.yy" +#line 414 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1149 "agent_parser.cc" +#line 1154 "agent_parser.cc" break; case 76: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 420 "agent_parser.yy" +#line 425 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1157 "agent_parser.cc" +#line 1162 "agent_parser.cc" break; case 77: // $@16: %empty -#line 425 "agent_parser.yy" +#line 430 "agent_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1167 "agent_parser.cc" +#line 1172 "agent_parser.cc" break; case 78: // hooks_library: "{" $@16 hooks_params "}" -#line 429 "agent_parser.yy" +#line 434 "agent_parser.yy" { ctx.stack_.pop_back(); } -#line 1175 "agent_parser.cc" +#line 1180 "agent_parser.cc" break; case 81: // hooks_params: hooks_params "," -#line 435 "agent_parser.yy" +#line 440 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1183 "agent_parser.cc" +#line 1188 "agent_parser.cc" break; case 85: // $@17: %empty -#line 445 "agent_parser.yy" +#line 450 "agent_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1192 "agent_parser.cc" +#line 1197 "agent_parser.cc" break; case 86: // library: "library" $@17 ":" "constant string" -#line 448 "agent_parser.yy" +#line 453 "agent_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1202 "agent_parser.cc" +#line 1207 "agent_parser.cc" break; case 87: // $@18: %empty -#line 454 "agent_parser.yy" +#line 459 "agent_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1211 "agent_parser.cc" +#line 1216 "agent_parser.cc" break; case 88: // parameters: "parameters" $@18 ":" map_value -#line 457 "agent_parser.yy" +#line 462 "agent_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1220 "agent_parser.cc" +#line 1225 "agent_parser.cc" break; case 89: // $@19: %empty -#line 465 "agent_parser.yy" +#line 470 "agent_parser.yy" { ctx.unique("control-sockets", ctx.loc2pos(yystack_[2].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location))); @@ -1228,28 +1233,28 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKETS); } -#line 1232 "agent_parser.cc" +#line 1237 "agent_parser.cc" break; case 90: // control_sockets: "control-sockets" ":" "{" $@19 control_sockets_params "}" -#line 471 "agent_parser.yy" +#line 476 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1241 "agent_parser.cc" +#line 1246 "agent_parser.cc" break; case 93: // control_sockets_params: control_sockets_params "," -#line 481 "agent_parser.yy" +#line 486 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1249 "agent_parser.cc" +#line 1254 "agent_parser.cc" break; case 98: // $@20: %empty -#line 495 "agent_parser.yy" +#line 500 "agent_parser.yy" { ctx.unique("dhcp4", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1257,20 +1262,20 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1261 "agent_parser.cc" +#line 1266 "agent_parser.cc" break; case 99: // dhcp4_server_socket: "dhcp4" $@20 ":" "{" control_socket_params "}" -#line 501 "agent_parser.yy" +#line 506 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1270 "agent_parser.cc" +#line 1275 "agent_parser.cc" break; case 100: // $@21: %empty -#line 507 "agent_parser.yy" +#line 512 "agent_parser.yy" { ctx.unique("dhcp6", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1278,20 +1283,20 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1282 "agent_parser.cc" +#line 1287 "agent_parser.cc" break; case 101: // dhcp6_server_socket: "dhcp6" $@21 ":" "{" control_socket_params "}" -#line 513 "agent_parser.yy" +#line 518 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1291 "agent_parser.cc" +#line 1296 "agent_parser.cc" break; case 102: // $@22: %empty -#line 519 "agent_parser.yy" +#line 524 "agent_parser.yy" { ctx.unique("d2", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1299,71 +1304,71 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1303 "agent_parser.cc" +#line 1308 "agent_parser.cc" break; case 103: // d2_server_socket: "d2" $@22 ":" "{" control_socket_params "}" -#line 525 "agent_parser.yy" +#line 530 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1312 "agent_parser.cc" +#line 1317 "agent_parser.cc" break; case 106: // control_socket_params: control_socket_params "," -#line 533 "agent_parser.yy" +#line 538 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1320 "agent_parser.cc" +#line 1325 "agent_parser.cc" break; case 112: // $@23: %empty -#line 547 "agent_parser.yy" +#line 552 "agent_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1329 "agent_parser.cc" +#line 1334 "agent_parser.cc" break; case 113: // socket_name: "socket-name" $@23 ":" "constant string" -#line 550 "agent_parser.yy" +#line 555 "agent_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 1339 "agent_parser.cc" +#line 1344 "agent_parser.cc" break; case 114: // $@24: %empty -#line 557 "agent_parser.yy" +#line 562 "agent_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.SOCKET_TYPE); } -#line 1348 "agent_parser.cc" +#line 1353 "agent_parser.cc" break; case 115: // socket_type: "socket-type" $@24 ":" socket_type_value -#line 560 "agent_parser.yy" +#line 565 "agent_parser.yy" { ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1357 "agent_parser.cc" +#line 1362 "agent_parser.cc" break; case 116: // socket_type_value: "unix" -#line 566 "agent_parser.yy" +#line 571 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } -#line 1363 "agent_parser.cc" +#line 1368 "agent_parser.cc" break; case 117: // $@25: %empty -#line 573 "agent_parser.yy" +#line 578 "agent_parser.yy" { ctx.unique("authentication", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1371,92 +1376,92 @@ namespace isc { namespace agent { ctx.stack_.push_back(m); ctx.enter(ctx.AUTHENTICATION); } -#line 1375 "agent_parser.cc" +#line 1380 "agent_parser.cc" break; case 118: // authentication: "authentication" $@25 ":" "{" auth_params "}" -#line 579 "agent_parser.yy" +#line 584 "agent_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1386 "agent_parser.cc" +#line 1391 "agent_parser.cc" break; case 121: // auth_params: auth_params "," -#line 588 "agent_parser.yy" +#line 593 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1394 "agent_parser.cc" +#line 1399 "agent_parser.cc" break; case 129: // $@26: %empty -#line 602 "agent_parser.yy" +#line 607 "agent_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.AUTH_TYPE); } -#line 1403 "agent_parser.cc" +#line 1408 "agent_parser.cc" break; case 130: // auth_type: "type" $@26 ":" auth_type_value -#line 605 "agent_parser.yy" +#line 610 "agent_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1412 "agent_parser.cc" +#line 1417 "agent_parser.cc" break; case 131: // auth_type_value: "basic" -#line 610 "agent_parser.yy" +#line 615 "agent_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); } -#line 1418 "agent_parser.cc" +#line 1423 "agent_parser.cc" break; case 132: // $@27: %empty -#line 613 "agent_parser.yy" +#line 618 "agent_parser.yy" { ctx.unique("realm", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1427 "agent_parser.cc" +#line 1432 "agent_parser.cc" break; case 133: // realm: "realm" $@27 ":" "constant string" -#line 616 "agent_parser.yy" +#line 621 "agent_parser.yy" { ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("realm", realm); ctx.leave(); } -#line 1437 "agent_parser.cc" +#line 1442 "agent_parser.cc" break; case 134: // $@28: %empty -#line 622 "agent_parser.yy" +#line 627 "agent_parser.yy" { ctx.unique("directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1446 "agent_parser.cc" +#line 1451 "agent_parser.cc" break; case 135: // directory: "directory" $@28 ":" "constant string" -#line 625 "agent_parser.yy" +#line 630 "agent_parser.yy" { ElementPtr directory(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("directory", directory); ctx.leave(); } -#line 1456 "agent_parser.cc" +#line 1461 "agent_parser.cc" break; case 136: // $@29: %empty -#line 631 "agent_parser.yy" +#line 636 "agent_parser.yy" { ctx.unique("clients", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1464,130 +1469,130 @@ namespace isc { namespace agent { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENTS); } -#line 1468 "agent_parser.cc" +#line 1473 "agent_parser.cc" break; case 137: // clients: "clients" $@29 ":" "[" clients_list "]" -#line 637 "agent_parser.yy" +#line 642 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1477 "agent_parser.cc" +#line 1482 "agent_parser.cc" break; case 142: // not_empty_clients_list: not_empty_clients_list "," -#line 648 "agent_parser.yy" +#line 653 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1485 "agent_parser.cc" +#line 1490 "agent_parser.cc" break; case 143: // $@30: %empty -#line 653 "agent_parser.yy" +#line 658 "agent_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1495 "agent_parser.cc" +#line 1500 "agent_parser.cc" break; case 144: // basic_auth: "{" $@30 clients_params "}" -#line 657 "agent_parser.yy" +#line 662 "agent_parser.yy" { ctx.stack_.pop_back(); } -#line 1503 "agent_parser.cc" +#line 1508 "agent_parser.cc" break; case 147: // clients_params: clients_params "," -#line 663 "agent_parser.yy" +#line 668 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1511 "agent_parser.cc" +#line 1516 "agent_parser.cc" break; case 155: // $@31: %empty -#line 677 "agent_parser.yy" +#line 682 "agent_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1520 "agent_parser.cc" +#line 1525 "agent_parser.cc" break; case 156: // user: "user" $@31 ":" "constant string" -#line 680 "agent_parser.yy" +#line 685 "agent_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1530 "agent_parser.cc" +#line 1535 "agent_parser.cc" break; case 157: // $@32: %empty -#line 686 "agent_parser.yy" +#line 691 "agent_parser.yy" { ctx.unique("user-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1539 "agent_parser.cc" +#line 1544 "agent_parser.cc" break; case 158: // user_file: "user-file" $@32 ":" "constant string" -#line 689 "agent_parser.yy" +#line 694 "agent_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user-file", user); ctx.leave(); } -#line 1549 "agent_parser.cc" +#line 1554 "agent_parser.cc" break; case 159: // $@33: %empty -#line 695 "agent_parser.yy" +#line 700 "agent_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1558 "agent_parser.cc" +#line 1563 "agent_parser.cc" break; case 160: // password: "password" $@33 ":" "constant string" -#line 698 "agent_parser.yy" +#line 703 "agent_parser.yy" { ElementPtr password(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", password); ctx.leave(); } -#line 1568 "agent_parser.cc" +#line 1573 "agent_parser.cc" break; case 161: // $@34: %empty -#line 704 "agent_parser.yy" +#line 709 "agent_parser.yy" { ctx.unique("password-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1577 "agent_parser.cc" +#line 1582 "agent_parser.cc" break; case 162: // password_file: "password-file" $@34 ":" "constant string" -#line 707 "agent_parser.yy" +#line 712 "agent_parser.yy" { ElementPtr password(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password-file", password); ctx.leave(); } -#line 1587 "agent_parser.cc" +#line 1592 "agent_parser.cc" break; case 163: // $@35: %empty -#line 717 "agent_parser.yy" +#line 722 "agent_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1595,102 +1600,102 @@ namespace isc { namespace agent { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 1599 "agent_parser.cc" +#line 1604 "agent_parser.cc" break; case 164: // loggers: "loggers" $@35 ":" "[" loggers_entries "]" -#line 723 "agent_parser.yy" +#line 728 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1608 "agent_parser.cc" +#line 1613 "agent_parser.cc" break; case 167: // loggers_entries: loggers_entries "," -#line 732 "agent_parser.yy" +#line 737 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1616 "agent_parser.cc" +#line 1621 "agent_parser.cc" break; case 168: // $@36: %empty -#line 738 "agent_parser.yy" +#line 743 "agent_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 1626 "agent_parser.cc" +#line 1631 "agent_parser.cc" break; case 169: // logger_entry: "{" $@36 logger_params "}" -#line 742 "agent_parser.yy" +#line 747 "agent_parser.yy" { ctx.stack_.pop_back(); } -#line 1634 "agent_parser.cc" +#line 1639 "agent_parser.cc" break; case 172: // logger_params: logger_params "," -#line 748 "agent_parser.yy" +#line 753 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1642 "agent_parser.cc" +#line 1647 "agent_parser.cc" break; case 180: // $@37: %empty -#line 762 "agent_parser.yy" +#line 767 "agent_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1651 "agent_parser.cc" +#line 1656 "agent_parser.cc" break; case 181: // name: "name" $@37 ":" "constant string" -#line 765 "agent_parser.yy" +#line 770 "agent_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1661 "agent_parser.cc" +#line 1666 "agent_parser.cc" break; case 182: // debuglevel: "debuglevel" ":" "integer" -#line 771 "agent_parser.yy" +#line 776 "agent_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 1671 "agent_parser.cc" +#line 1676 "agent_parser.cc" break; case 183: // $@38: %empty -#line 777 "agent_parser.yy" +#line 782 "agent_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1680 "agent_parser.cc" +#line 1685 "agent_parser.cc" break; case 184: // severity: "severity" $@38 ":" "constant string" -#line 780 "agent_parser.yy" +#line 785 "agent_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 1690 "agent_parser.cc" +#line 1695 "agent_parser.cc" break; case 185: // $@39: %empty -#line 786 "agent_parser.yy" +#line 791 "agent_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1698,122 +1703,122 @@ namespace isc { namespace agent { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 1702 "agent_parser.cc" +#line 1707 "agent_parser.cc" break; case 186: // output_options_list: "output_options" $@39 ":" "[" output_options_list_content "]" -#line 792 "agent_parser.yy" +#line 797 "agent_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1711 "agent_parser.cc" +#line 1716 "agent_parser.cc" break; case 189: // output_options_list_content: output_options_list_content "," -#line 799 "agent_parser.yy" +#line 804 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1719 "agent_parser.cc" +#line 1724 "agent_parser.cc" break; case 190: // $@40: %empty -#line 804 "agent_parser.yy" +#line 809 "agent_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1729 "agent_parser.cc" +#line 1734 "agent_parser.cc" break; case 191: // output_entry: "{" $@40 output_params_list "}" -#line 808 "agent_parser.yy" +#line 813 "agent_parser.yy" { ctx.stack_.pop_back(); } -#line 1737 "agent_parser.cc" +#line 1742 "agent_parser.cc" break; case 194: // output_params_list: output_params_list "," -#line 814 "agent_parser.yy" +#line 819 "agent_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1745 "agent_parser.cc" +#line 1750 "agent_parser.cc" break; case 200: // $@41: %empty -#line 826 "agent_parser.yy" +#line 831 "agent_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1754 "agent_parser.cc" +#line 1759 "agent_parser.cc" break; case 201: // output: "output" $@41 ":" "constant string" -#line 829 "agent_parser.yy" +#line 834 "agent_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 1764 "agent_parser.cc" +#line 1769 "agent_parser.cc" break; case 202: // flush: "flush" ":" "boolean" -#line 835 "agent_parser.yy" +#line 840 "agent_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 1774 "agent_parser.cc" +#line 1779 "agent_parser.cc" break; case 203: // maxsize: "maxsize" ":" "integer" -#line 841 "agent_parser.yy" +#line 846 "agent_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 1784 "agent_parser.cc" +#line 1789 "agent_parser.cc" break; case 204: // maxver: "maxver" ":" "integer" -#line 847 "agent_parser.yy" +#line 852 "agent_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 1794 "agent_parser.cc" +#line 1799 "agent_parser.cc" break; case 205: // $@42: %empty -#line 853 "agent_parser.yy" +#line 858 "agent_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1803 "agent_parser.cc" +#line 1808 "agent_parser.cc" break; case 206: // pattern: "pattern" $@42 ":" "constant string" -#line 856 "agent_parser.yy" +#line 861 "agent_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 1813 "agent_parser.cc" +#line 1818 "agent_parser.cc" break; -#line 1817 "agent_parser.cc" +#line 1822 "agent_parser.cc" default: break; @@ -2486,27 +2491,27 @@ namespace isc { namespace agent { const short AgentParser::yyrline_[] = { - 0, 127, 127, 127, 128, 128, 129, 129, 137, 137, - 148, 154, 155, 156, 157, 158, 159, 160, 164, 164, - 175, 180, 181, 189, 194, 200, 205, 205, 211, 212, - 215, 219, 223, 235, 243, 243, 255, 255, 271, 274, - 278, 279, 280, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 302, 302, 311, 317, - 317, 326, 326, 335, 335, 344, 350, 350, 375, 375, - 403, 403, 414, 415, 418, 419, 420, 425, 425, 433, - 434, 435, 438, 441, 442, 445, 445, 454, 454, 465, - 465, 479, 480, 481, 488, 489, 490, 491, 495, 495, - 507, 507, 519, 519, 531, 532, 533, 539, 540, 541, - 542, 543, 547, 547, 557, 557, 566, 573, 573, 586, - 587, 588, 593, 594, 595, 596, 597, 598, 599, 602, - 602, 610, 613, 613, 622, 622, 631, 631, 642, 643, - 646, 647, 648, 653, 653, 661, 662, 663, 668, 669, - 670, 671, 672, 673, 674, 677, 677, 686, 686, 695, - 695, 704, 704, 717, 717, 730, 731, 732, 738, 738, - 746, 747, 748, 753, 754, 755, 756, 757, 758, 759, - 762, 762, 771, 777, 777, 786, 786, 797, 798, 799, - 804, 804, 812, 813, 814, 819, 820, 821, 822, 823, - 826, 826, 835, 841, 847, 853, 853 + 0, 132, 132, 132, 133, 133, 134, 134, 142, 142, + 153, 159, 160, 161, 162, 163, 164, 165, 169, 169, + 180, 185, 186, 194, 199, 205, 210, 210, 216, 217, + 220, 224, 228, 240, 248, 248, 260, 260, 276, 279, + 283, 284, 285, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 307, 307, 316, 322, + 322, 331, 331, 340, 340, 349, 355, 355, 380, 380, + 408, 408, 419, 420, 423, 424, 425, 430, 430, 438, + 439, 440, 443, 446, 447, 450, 450, 459, 459, 470, + 470, 484, 485, 486, 493, 494, 495, 496, 500, 500, + 512, 512, 524, 524, 536, 537, 538, 544, 545, 546, + 547, 548, 552, 552, 562, 562, 571, 578, 578, 591, + 592, 593, 598, 599, 600, 601, 602, 603, 604, 607, + 607, 615, 618, 618, 627, 627, 636, 636, 647, 648, + 651, 652, 653, 658, 658, 666, 667, 668, 673, 674, + 675, 676, 677, 678, 679, 682, 682, 691, 691, 700, + 700, 709, 709, 722, 722, 735, 736, 737, 743, 743, + 751, 752, 753, 758, 759, 760, 761, 762, 763, 764, + 767, 767, 776, 782, 782, 791, 791, 802, 803, 804, + 809, 809, 817, 818, 819, 824, 825, 826, 827, 828, + 831, 831, 840, 846, 852, 858, 858 }; void @@ -2539,9 +2544,9 @@ namespace isc { namespace agent { #line 14 "agent_parser.yy" } } // isc::agent -#line 2543 "agent_parser.cc" +#line 2548 "agent_parser.cc" -#line 862 "agent_parser.yy" +#line 867 "agent_parser.yy" void diff --git a/src/bin/agent/location.hh b/src/bin/agent/location.hh index 3f820cc25f..511289ae0e 100644 --- a/src/bin/agent/location.hh +++ b/src/bin/agent/location.hh @@ -1,3 +1,4 @@ +// Generated 202305171251 // A Bison parser, made by GNU Bison 3.8.2. // Locations for Bison parsers in C++ diff --git a/src/bin/d2/d2_parser.cc b/src/bin/d2/d2_parser.cc index ba6a862ea9..10bd6b2c86 100644 --- a/src/bin/d2/d2_parser.cc +++ b/src/bin/d2/d2_parser.cc @@ -48,7 +48,12 @@ #include -#line 52 "d2_parser.cc" +// Avoid warnings with the error counter. +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif + +#line 57 "d2_parser.cc" #ifndef YY_ @@ -141,7 +146,7 @@ #line 14 "d2_parser.yy" namespace isc { namespace d2 { -#line 145 "d2_parser.cc" +#line 150 "d2_parser.cc" /// Build a parser object. D2Parser::D2Parser (isc::d2::D2ParserContext& ctx_yyarg) @@ -378,45 +383,45 @@ namespace isc { namespace d2 { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 384 "d2_parser.cc" +#line 389 "d2_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } -#line 390 "d2_parser.cc" +#line 395 "d2_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < double > (); } -#line 396 "d2_parser.cc" +#line 401 "d2_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < bool > (); } -#line 402 "d2_parser.cc" +#line 407 "d2_parser.cc" break; case symbol_kind::S_value: // value -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 408 "d2_parser.cc" +#line 413 "d2_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 414 "d2_parser.cc" +#line 419 "d2_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 116 "d2_parser.yy" +#line 121 "d2_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 420 "d2_parser.cc" +#line 425 "d2_parser.cc" break; default: @@ -689,249 +694,249 @@ namespace isc { namespace d2 { switch (yyn) { case 2: // $@1: %empty -#line 125 "d2_parser.yy" +#line 130 "d2_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 695 "d2_parser.cc" +#line 700 "d2_parser.cc" break; case 4: // $@2: %empty -#line 126 "d2_parser.yy" +#line 131 "d2_parser.yy" { ctx.ctx_ = ctx.CONFIG; } -#line 701 "d2_parser.cc" +#line 706 "d2_parser.cc" break; case 6: // $@3: %empty -#line 127 "d2_parser.yy" +#line 132 "d2_parser.yy" { ctx.ctx_ = ctx.DHCPDDNS; } -#line 707 "d2_parser.cc" +#line 712 "d2_parser.cc" break; case 8: // $@4: %empty -#line 128 "d2_parser.yy" +#line 133 "d2_parser.yy" { ctx.ctx_ = ctx.TSIG_KEY; } -#line 713 "d2_parser.cc" +#line 718 "d2_parser.cc" break; case 10: // $@5: %empty -#line 129 "d2_parser.yy" +#line 134 "d2_parser.yy" { ctx.ctx_ = ctx.TSIG_KEYS; } -#line 719 "d2_parser.cc" +#line 724 "d2_parser.cc" break; case 12: // $@6: %empty -#line 130 "d2_parser.yy" +#line 135 "d2_parser.yy" { ctx.ctx_ = ctx.DDNS_DOMAIN; } -#line 725 "d2_parser.cc" +#line 730 "d2_parser.cc" break; case 14: // $@7: %empty -#line 131 "d2_parser.yy" +#line 136 "d2_parser.yy" { ctx.ctx_ = ctx.DDNS_DOMAINS; } -#line 731 "d2_parser.cc" +#line 736 "d2_parser.cc" break; case 16: // $@8: %empty -#line 132 "d2_parser.yy" +#line 137 "d2_parser.yy" { ctx.ctx_ = ctx.DNS_SERVERS; } -#line 737 "d2_parser.cc" +#line 742 "d2_parser.cc" break; case 18: // $@9: %empty -#line 133 "d2_parser.yy" +#line 138 "d2_parser.yy" { ctx.ctx_ = ctx.DNS_SERVERS; } -#line 743 "d2_parser.cc" +#line 748 "d2_parser.cc" break; case 20: // $@10: %empty -#line 134 "d2_parser.yy" +#line 139 "d2_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 749 "d2_parser.cc" +#line 754 "d2_parser.cc" break; case 22: // value: "integer" -#line 142 "d2_parser.yy" +#line 147 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 755 "d2_parser.cc" +#line 760 "d2_parser.cc" break; case 23: // value: "floating point" -#line 143 "d2_parser.yy" +#line 148 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 761 "d2_parser.cc" +#line 766 "d2_parser.cc" break; case 24: // value: "boolean" -#line 144 "d2_parser.yy" +#line 149 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 767 "d2_parser.cc" +#line 772 "d2_parser.cc" break; case 25: // value: "constant string" -#line 145 "d2_parser.yy" +#line 150 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 773 "d2_parser.cc" +#line 778 "d2_parser.cc" break; case 26: // value: "null" -#line 146 "d2_parser.yy" +#line 151 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 779 "d2_parser.cc" +#line 784 "d2_parser.cc" break; case 27: // value: map2 -#line 147 "d2_parser.yy" +#line 152 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 785 "d2_parser.cc" +#line 790 "d2_parser.cc" break; case 28: // value: list_generic -#line 148 "d2_parser.yy" +#line 153 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 791 "d2_parser.cc" +#line 796 "d2_parser.cc" break; case 29: // sub_json: value -#line 151 "d2_parser.yy" +#line 156 "d2_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); } -#line 800 "d2_parser.cc" +#line 805 "d2_parser.cc" break; case 30: // $@11: %empty -#line 156 "d2_parser.yy" +#line 161 "d2_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 811 "d2_parser.cc" +#line 816 "d2_parser.cc" break; case 31: // map2: "{" $@11 map_content "}" -#line 161 "d2_parser.yy" +#line 166 "d2_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 821 "d2_parser.cc" +#line 826 "d2_parser.cc" break; case 32: // map_value: map2 -#line 167 "d2_parser.yy" +#line 172 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 827 "d2_parser.cc" +#line 832 "d2_parser.cc" break; case 35: // not_empty_map: "constant string" ":" value -#line 174 "d2_parser.yy" +#line 179 "d2_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 837 "d2_parser.cc" +#line 842 "d2_parser.cc" break; case 36: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 179 "d2_parser.yy" +#line 184 "d2_parser.yy" { // map consisting of a shorter map followed by // comma and string:value ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 848 "d2_parser.cc" +#line 853 "d2_parser.cc" break; case 37: // not_empty_map: not_empty_map "," -#line 185 "d2_parser.yy" +#line 190 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 856 "d2_parser.cc" +#line 861 "d2_parser.cc" break; case 38: // $@12: %empty -#line 190 "d2_parser.yy" +#line 195 "d2_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 865 "d2_parser.cc" +#line 870 "d2_parser.cc" break; case 39: // list_generic: "[" $@12 list_content "]" -#line 193 "d2_parser.yy" +#line 198 "d2_parser.yy" { // list parsing complete. Put any sanity checking here } -#line 873 "d2_parser.cc" +#line 878 "d2_parser.cc" break; case 42: // not_empty_list: value -#line 201 "d2_parser.yy" +#line 206 "d2_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 882 "d2_parser.cc" +#line 887 "d2_parser.cc" break; case 43: // not_empty_list: not_empty_list "," value -#line 205 "d2_parser.yy" +#line 210 "d2_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 891 "d2_parser.cc" +#line 896 "d2_parser.cc" break; case 44: // not_empty_list: not_empty_list "," -#line 209 "d2_parser.yy" +#line 214 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 899 "d2_parser.cc" +#line 904 "d2_parser.cc" break; case 45: // unknown_map_entry: "constant string" ":" -#line 219 "d2_parser.yy" +#line 224 "d2_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 910 "d2_parser.cc" +#line 915 "d2_parser.cc" break; case 46: // $@13: %empty -#line 228 "d2_parser.yy" +#line 233 "d2_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 921 "d2_parser.cc" +#line 926 "d2_parser.cc" break; case 47: // syntax_map: "{" $@13 global_object "}" -#line 233 "d2_parser.yy" +#line 238 "d2_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 931 "d2_parser.cc" +#line 936 "d2_parser.cc" break; case 48: // $@14: %empty -#line 241 "d2_parser.yy" +#line 246 "d2_parser.yy" { ctx.unique("DhcpDdns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -939,73 +944,73 @@ namespace isc { namespace d2 { ctx.stack_.push_back(m); ctx.enter(ctx.DHCPDDNS); } -#line 943 "d2_parser.cc" +#line 948 "d2_parser.cc" break; case 49: // global_object: "DhcpDdns" $@14 ":" "{" dhcpddns_params "}" -#line 247 "d2_parser.yy" +#line 252 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 952 "d2_parser.cc" +#line 957 "d2_parser.cc" break; case 51: // global_object_comma: global_object "," -#line 254 "d2_parser.yy" +#line 259 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 960 "d2_parser.cc" +#line 965 "d2_parser.cc" break; case 52: // $@15: %empty -#line 258 "d2_parser.yy" +#line 263 "d2_parser.yy" { // Parse the dhcpddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 970 "d2_parser.cc" +#line 975 "d2_parser.cc" break; case 53: // sub_dhcpddns: "{" $@15 dhcpddns_params "}" -#line 262 "d2_parser.yy" +#line 267 "d2_parser.yy" { // parsing completed } -#line 978 "d2_parser.cc" +#line 983 "d2_parser.cc" break; case 56: // dhcpddns_params: dhcpddns_params "," -#line 268 "d2_parser.yy" +#line 273 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 986 "d2_parser.cc" +#line 991 "d2_parser.cc" break; case 71: // $@16: %empty -#line 290 "d2_parser.yy" +#line 295 "d2_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 995 "d2_parser.cc" +#line 1000 "d2_parser.cc" break; case 72: // ip_address: "ip-address" $@16 ":" "constant string" -#line 293 "d2_parser.yy" +#line 298 "d2_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", s); ctx.leave(); } -#line 1005 "d2_parser.cc" +#line 1010 "d2_parser.cc" break; case 73: // port: "port" ":" "integer" -#line 299 "d2_parser.yy" +#line 304 "d2_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) { @@ -1014,11 +1019,11 @@ namespace isc { namespace d2 { ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", i); } -#line 1018 "d2_parser.cc" +#line 1023 "d2_parser.cc" break; case 74: // dns_server_timeout: "dns-server-timeout" ":" "integer" -#line 308 "d2_parser.yy" +#line 313 "d2_parser.yy" { ctx.unique("dns-server-timeout", ctx.loc2pos(yystack_[2].location)); if (yystack_[0].value.as < int64_t > () <= 0) { @@ -1028,68 +1033,68 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("dns-server-timeout", i); } } -#line 1032 "d2_parser.cc" +#line 1037 "d2_parser.cc" break; case 75: // $@17: %empty -#line 318 "d2_parser.yy" +#line 323 "d2_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 1041 "d2_parser.cc" +#line 1046 "d2_parser.cc" break; case 76: // ncr_protocol: "ncr-protocol" $@17 ":" ncr_protocol_value -#line 321 "d2_parser.yy" +#line 326 "d2_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1050 "d2_parser.cc" +#line 1055 "d2_parser.cc" break; case 77: // ncr_protocol_value: "UDP" -#line 327 "d2_parser.yy" +#line 332 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 1056 "d2_parser.cc" +#line 1061 "d2_parser.cc" break; case 78: // ncr_protocol_value: "TCP" -#line 328 "d2_parser.yy" +#line 333 "d2_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 1062 "d2_parser.cc" +#line 1067 "d2_parser.cc" break; case 79: // $@18: %empty -#line 331 "d2_parser.yy" +#line 336 "d2_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 1071 "d2_parser.cc" +#line 1076 "d2_parser.cc" break; case 80: // ncr_format: "ncr-format" $@18 ":" "JSON" -#line 334 "d2_parser.yy" +#line 339 "d2_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 1081 "d2_parser.cc" +#line 1086 "d2_parser.cc" break; case 81: // $@19: %empty -#line 340 "d2_parser.yy" +#line 345 "d2_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 1089 "d2_parser.cc" +#line 1094 "d2_parser.cc" break; case 82: // user_context: "user-context" $@19 ":" map_value -#line 342 "d2_parser.yy" +#line 347 "d2_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -1112,19 +1117,19 @@ namespace isc { namespace d2 { parent->set("user-context", user_context); ctx.leave(); } -#line 1116 "d2_parser.cc" +#line 1121 "d2_parser.cc" break; case 83: // $@20: %empty -#line 365 "d2_parser.yy" +#line 370 "d2_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 1124 "d2_parser.cc" +#line 1129 "d2_parser.cc" break; case 84: // comment: "comment" $@20 ":" "constant string" -#line 367 "d2_parser.yy" +#line 372 "d2_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -1149,11 +1154,11 @@ namespace isc { namespace d2 { parent->set("user-context", user_context); ctx.leave(); } -#line 1153 "d2_parser.cc" +#line 1158 "d2_parser.cc" break; case 85: // $@21: %empty -#line 392 "d2_parser.yy" +#line 397 "d2_parser.yy" { ctx.unique("forward-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1161,20 +1166,20 @@ namespace isc { namespace d2 { ctx.stack_.push_back(m); ctx.enter(ctx.FORWARD_DDNS); } -#line 1165 "d2_parser.cc" +#line 1170 "d2_parser.cc" break; case 86: // forward_ddns: "forward-ddns" $@21 ":" "{" ddns_mgr_params "}" -#line 398 "d2_parser.yy" +#line 403 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1174 "d2_parser.cc" +#line 1179 "d2_parser.cc" break; case 87: // $@22: %empty -#line 403 "d2_parser.yy" +#line 408 "d2_parser.yy" { ctx.unique("reverse-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1182,28 +1187,28 @@ namespace isc { namespace d2 { ctx.stack_.push_back(m); ctx.enter(ctx.REVERSE_DDNS); } -#line 1186 "d2_parser.cc" +#line 1191 "d2_parser.cc" break; case 88: // reverse_ddns: "reverse-ddns" $@22 ":" "{" ddns_mgr_params "}" -#line 409 "d2_parser.yy" +#line 414 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1195 "d2_parser.cc" +#line 1200 "d2_parser.cc" break; case 93: // not_empty_ddns_mgr_params: ddns_mgr_params "," -#line 420 "d2_parser.yy" +#line 425 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1203 "d2_parser.cc" +#line 1208 "d2_parser.cc" break; case 96: // $@23: %empty -#line 431 "d2_parser.yy" +#line 436 "d2_parser.yy" { ctx.unique("ddns-domains", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1211,97 +1216,97 @@ namespace isc { namespace d2 { ctx.stack_.push_back(l); ctx.enter(ctx.DDNS_DOMAINS); } -#line 1215 "d2_parser.cc" +#line 1220 "d2_parser.cc" break; case 97: // ddns_domains: "ddns-domains" $@23 ":" "[" ddns_domain_list "]" -#line 437 "d2_parser.yy" +#line 442 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1224 "d2_parser.cc" +#line 1229 "d2_parser.cc" break; case 98: // $@24: %empty -#line 442 "d2_parser.yy" +#line 447 "d2_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 1233 "d2_parser.cc" +#line 1238 "d2_parser.cc" break; case 99: // sub_ddns_domains: "[" $@24 ddns_domain_list "]" -#line 445 "d2_parser.yy" +#line 450 "d2_parser.yy" { // parsing completed } -#line 1241 "d2_parser.cc" +#line 1246 "d2_parser.cc" break; case 104: // not_empty_ddns_domain_list: not_empty_ddns_domain_list "," -#line 455 "d2_parser.yy" +#line 460 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1249 "d2_parser.cc" +#line 1254 "d2_parser.cc" break; case 105: // $@25: %empty -#line 460 "d2_parser.yy" +#line 465 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1259 "d2_parser.cc" +#line 1264 "d2_parser.cc" break; case 106: // ddns_domain: "{" $@25 ddns_domain_params "}" -#line 464 "d2_parser.yy" +#line 469 "d2_parser.yy" { ctx.stack_.pop_back(); } -#line 1267 "d2_parser.cc" +#line 1272 "d2_parser.cc" break; case 107: // $@26: %empty -#line 468 "d2_parser.yy" +#line 473 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1276 "d2_parser.cc" +#line 1281 "d2_parser.cc" break; case 108: // sub_ddns_domain: "{" $@26 ddns_domain_params "}" -#line 471 "d2_parser.yy" +#line 476 "d2_parser.yy" { // parsing completed } -#line 1284 "d2_parser.cc" +#line 1289 "d2_parser.cc" break; case 111: // ddns_domain_params: ddns_domain_params "," -#line 477 "d2_parser.yy" +#line 482 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1292 "d2_parser.cc" +#line 1297 "d2_parser.cc" break; case 118: // $@27: %empty -#line 491 "d2_parser.yy" +#line 496 "d2_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1301 "d2_parser.cc" +#line 1306 "d2_parser.cc" break; case 119: // ddns_domain_name: "name" $@27 ":" "constant string" -#line 494 "d2_parser.yy" +#line 499 "d2_parser.yy" { if (yystack_[0].value.as < std::string > () == "") { error(yystack_[1].location, "Ddns domain name cannot be blank"); @@ -1311,31 +1316,31 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1315 "d2_parser.cc" +#line 1320 "d2_parser.cc" break; case 120: // $@28: %empty -#line 504 "d2_parser.yy" +#line 509 "d2_parser.yy" { ctx.unique("key-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1324 "d2_parser.cc" +#line 1329 "d2_parser.cc" break; case 121: // ddns_key_name: "key-name" $@28 ":" "constant string" -#line 507 "d2_parser.yy" +#line 512 "d2_parser.yy" { ElementPtr elem(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-name", name); ctx.leave(); } -#line 1335 "d2_parser.cc" +#line 1340 "d2_parser.cc" break; case 122: // $@29: %empty -#line 517 "d2_parser.yy" +#line 522 "d2_parser.yy" { ctx.unique("dns-servers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1343,97 +1348,97 @@ namespace isc { namespace d2 { ctx.stack_.push_back(l); ctx.enter(ctx.DNS_SERVERS); } -#line 1347 "d2_parser.cc" +#line 1352 "d2_parser.cc" break; case 123: // dns_servers: "dns-servers" $@29 ":" "[" dns_server_list "]" -#line 523 "d2_parser.yy" +#line 528 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1356 "d2_parser.cc" +#line 1361 "d2_parser.cc" break; case 124: // $@30: %empty -#line 528 "d2_parser.yy" +#line 533 "d2_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 1365 "d2_parser.cc" +#line 1370 "d2_parser.cc" break; case 125: // sub_dns_servers: "[" $@30 dns_server_list "]" -#line 531 "d2_parser.yy" +#line 536 "d2_parser.yy" { // parsing completed } -#line 1373 "d2_parser.cc" +#line 1378 "d2_parser.cc" break; case 128: // dns_server_list: dns_server_list "," -#line 537 "d2_parser.yy" +#line 542 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1381 "d2_parser.cc" +#line 1386 "d2_parser.cc" break; case 129: // $@31: %empty -#line 542 "d2_parser.yy" +#line 547 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1391 "d2_parser.cc" +#line 1396 "d2_parser.cc" break; case 130: // dns_server: "{" $@31 dns_server_params "}" -#line 546 "d2_parser.yy" +#line 551 "d2_parser.yy" { ctx.stack_.pop_back(); } -#line 1399 "d2_parser.cc" +#line 1404 "d2_parser.cc" break; case 131: // $@32: %empty -#line 550 "d2_parser.yy" +#line 555 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1408 "d2_parser.cc" +#line 1413 "d2_parser.cc" break; case 132: // sub_dns_server: "{" $@32 dns_server_params "}" -#line 553 "d2_parser.yy" +#line 558 "d2_parser.yy" { // parsing completed } -#line 1416 "d2_parser.cc" +#line 1421 "d2_parser.cc" break; case 135: // dns_server_params: dns_server_params "," -#line 559 "d2_parser.yy" +#line 564 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1424 "d2_parser.cc" +#line 1429 "d2_parser.cc" break; case 143: // $@33: %empty -#line 573 "d2_parser.yy" +#line 578 "d2_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1433 "d2_parser.cc" +#line 1438 "d2_parser.cc" break; case 144: // dns_server_hostname: "hostname" $@33 ":" "constant string" -#line 576 "d2_parser.yy" +#line 581 "d2_parser.yy" { if (yystack_[0].value.as < std::string > () != "") { error(yystack_[1].location, "hostname is not yet supported"); @@ -1443,30 +1448,30 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("hostname", name); ctx.leave(); } -#line 1447 "d2_parser.cc" +#line 1452 "d2_parser.cc" break; case 145: // $@34: %empty -#line 586 "d2_parser.yy" +#line 591 "d2_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1456 "d2_parser.cc" +#line 1461 "d2_parser.cc" break; case 146: // dns_server_ip_address: "ip-address" $@34 ":" "constant string" -#line 589 "d2_parser.yy" +#line 594 "d2_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", s); ctx.leave(); } -#line 1466 "d2_parser.cc" +#line 1471 "d2_parser.cc" break; case 147: // dns_server_port: "port" ":" "integer" -#line 595 "d2_parser.yy" +#line 600 "d2_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) { @@ -1475,11 +1480,11 @@ namespace isc { namespace d2 { ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", i); } -#line 1479 "d2_parser.cc" +#line 1484 "d2_parser.cc" break; case 148: // $@35: %empty -#line 610 "d2_parser.yy" +#line 615 "d2_parser.yy" { ctx.unique("tsig-keys", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1487,98 +1492,98 @@ namespace isc { namespace d2 { ctx.stack_.push_back(l); ctx.enter(ctx.TSIG_KEYS); } -#line 1491 "d2_parser.cc" +#line 1496 "d2_parser.cc" break; case 149: // tsig_keys: "tsig-keys" $@35 ":" "[" tsig_keys_list "]" -#line 616 "d2_parser.yy" +#line 621 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1500 "d2_parser.cc" +#line 1505 "d2_parser.cc" break; case 150: // $@36: %empty -#line 621 "d2_parser.yy" +#line 626 "d2_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 1509 "d2_parser.cc" +#line 1514 "d2_parser.cc" break; case 151: // sub_tsig_keys: "[" $@36 tsig_keys_list "]" -#line 624 "d2_parser.yy" +#line 629 "d2_parser.yy" { // parsing completed } -#line 1517 "d2_parser.cc" +#line 1522 "d2_parser.cc" break; case 156: // not_empty_tsig_keys_list: not_empty_tsig_keys_list "," -#line 634 "d2_parser.yy" +#line 639 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1525 "d2_parser.cc" +#line 1530 "d2_parser.cc" break; case 157: // $@37: %empty -#line 639 "d2_parser.yy" +#line 644 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1535 "d2_parser.cc" +#line 1540 "d2_parser.cc" break; case 158: // tsig_key: "{" $@37 tsig_key_params "}" -#line 643 "d2_parser.yy" +#line 648 "d2_parser.yy" { ctx.stack_.pop_back(); } -#line 1543 "d2_parser.cc" +#line 1548 "d2_parser.cc" break; case 159: // $@38: %empty -#line 647 "d2_parser.yy" +#line 652 "d2_parser.yy" { // Parse tsig key list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1553 "d2_parser.cc" +#line 1558 "d2_parser.cc" break; case 160: // sub_tsig_key: "{" $@38 tsig_key_params "}" -#line 651 "d2_parser.yy" +#line 656 "d2_parser.yy" { // parsing completed } -#line 1561 "d2_parser.cc" +#line 1566 "d2_parser.cc" break; case 163: // tsig_key_params: tsig_key_params "," -#line 658 "d2_parser.yy" +#line 663 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1569 "d2_parser.cc" +#line 1574 "d2_parser.cc" break; case 171: // $@39: %empty -#line 672 "d2_parser.yy" +#line 677 "d2_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1578 "d2_parser.cc" +#line 1583 "d2_parser.cc" break; case 172: // tsig_key_name: "name" $@39 ":" "constant string" -#line 675 "d2_parser.yy" +#line 680 "d2_parser.yy" { if (yystack_[0].value.as < std::string > () == "") { error(yystack_[1].location, "TSIG key name cannot be blank"); @@ -1588,20 +1593,20 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1592 "d2_parser.cc" +#line 1597 "d2_parser.cc" break; case 173: // $@40: %empty -#line 685 "d2_parser.yy" +#line 690 "d2_parser.yy" { ctx.unique("algorithm", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1601 "d2_parser.cc" +#line 1606 "d2_parser.cc" break; case 174: // tsig_key_algorithm: "algorithm" $@40 ":" "constant string" -#line 688 "d2_parser.yy" +#line 693 "d2_parser.yy" { if (yystack_[0].value.as < std::string > () == "") { error(yystack_[1].location, "TSIG key algorithm cannot be blank"); @@ -1610,11 +1615,11 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("algorithm", elem); ctx.leave(); } -#line 1614 "d2_parser.cc" +#line 1619 "d2_parser.cc" break; case 175: // tsig_key_digest_bits: "digest-bits" ":" "integer" -#line 697 "d2_parser.yy" +#line 702 "d2_parser.yy" { ctx.unique("digest-bits", ctx.loc2pos(yystack_[2].location)); if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0 && (yystack_[0].value.as < int64_t > () % 8 != 0))) { @@ -1623,20 +1628,20 @@ namespace isc { namespace d2 { ElementPtr elem(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("digest-bits", elem); } -#line 1627 "d2_parser.cc" +#line 1632 "d2_parser.cc" break; case 176: // $@41: %empty -#line 706 "d2_parser.yy" +#line 711 "d2_parser.yy" { ctx.unique("secret", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1636 "d2_parser.cc" +#line 1641 "d2_parser.cc" break; case 177: // tsig_key_secret: "secret" $@41 ":" "constant string" -#line 709 "d2_parser.yy" +#line 714 "d2_parser.yy" { if (yystack_[0].value.as < std::string > () == "") { error(yystack_[1].location, "TSIG key secret cannot be blank"); @@ -1645,11 +1650,11 @@ namespace isc { namespace d2 { ctx.stack_.back()->set("secret", elem); ctx.leave(); } -#line 1649 "d2_parser.cc" +#line 1654 "d2_parser.cc" break; case 178: // $@42: %empty -#line 723 "d2_parser.yy" +#line 728 "d2_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1657,66 +1662,66 @@ namespace isc { namespace d2 { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 1661 "d2_parser.cc" +#line 1666 "d2_parser.cc" break; case 179: // control_socket: "control-socket" $@42 ":" "{" control_socket_params "}" -#line 729 "d2_parser.yy" +#line 734 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1670 "d2_parser.cc" +#line 1675 "d2_parser.cc" break; case 182: // control_socket_params: control_socket_params "," -#line 736 "d2_parser.yy" +#line 741 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1678 "d2_parser.cc" +#line 1683 "d2_parser.cc" break; case 188: // $@43: %empty -#line 748 "d2_parser.yy" +#line 753 "d2_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1687 "d2_parser.cc" +#line 1692 "d2_parser.cc" break; case 189: // control_socket_type: "socket-type" $@43 ":" "constant string" -#line 751 "d2_parser.yy" +#line 756 "d2_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 1697 "d2_parser.cc" +#line 1702 "d2_parser.cc" break; case 190: // $@44: %empty -#line 757 "d2_parser.yy" +#line 762 "d2_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1706 "d2_parser.cc" +#line 1711 "d2_parser.cc" break; case 191: // control_socket_name: "socket-name" $@44 ":" "constant string" -#line 760 "d2_parser.yy" +#line 765 "d2_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 1716 "d2_parser.cc" +#line 1721 "d2_parser.cc" break; case 192: // $@45: %empty -#line 768 "d2_parser.yy" +#line 773 "d2_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1724,113 +1729,113 @@ namespace isc { namespace d2 { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 1728 "d2_parser.cc" +#line 1733 "d2_parser.cc" break; case 193: // hooks_libraries: "hooks-libraries" $@45 ":" "[" hooks_libraries_list "]" -#line 774 "d2_parser.yy" +#line 779 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1737 "d2_parser.cc" +#line 1742 "d2_parser.cc" break; case 198: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 785 "d2_parser.yy" +#line 790 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1745 "d2_parser.cc" +#line 1750 "d2_parser.cc" break; case 199: // $@46: %empty -#line 790 "d2_parser.yy" +#line 795 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1755 "d2_parser.cc" +#line 1760 "d2_parser.cc" break; case 200: // hooks_library: "{" $@46 hooks_params "}" -#line 794 "d2_parser.yy" +#line 799 "d2_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1765 "d2_parser.cc" +#line 1770 "d2_parser.cc" break; case 201: // $@47: %empty -#line 800 "d2_parser.yy" +#line 805 "d2_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1775 "d2_parser.cc" +#line 1780 "d2_parser.cc" break; case 202: // sub_hooks_library: "{" $@47 hooks_params "}" -#line 804 "d2_parser.yy" +#line 809 "d2_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 1785 "d2_parser.cc" +#line 1790 "d2_parser.cc" break; case 205: // hooks_params: hooks_params "," -#line 812 "d2_parser.yy" +#line 817 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1793 "d2_parser.cc" +#line 1798 "d2_parser.cc" break; case 209: // $@48: %empty -#line 822 "d2_parser.yy" +#line 827 "d2_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1802 "d2_parser.cc" +#line 1807 "d2_parser.cc" break; case 210: // library: "library" $@48 ":" "constant string" -#line 825 "d2_parser.yy" +#line 830 "d2_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1812 "d2_parser.cc" +#line 1817 "d2_parser.cc" break; case 211: // $@49: %empty -#line 831 "d2_parser.yy" +#line 836 "d2_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1821 "d2_parser.cc" +#line 1826 "d2_parser.cc" break; case 212: // parameters: "parameters" $@49 ":" map_value -#line 834 "d2_parser.yy" +#line 839 "d2_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1830 "d2_parser.cc" +#line 1835 "d2_parser.cc" break; case 213: // $@50: %empty -#line 841 "d2_parser.yy" +#line 846 "d2_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1838,102 +1843,102 @@ namespace isc { namespace d2 { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 1842 "d2_parser.cc" +#line 1847 "d2_parser.cc" break; case 214: // loggers: "loggers" $@50 ":" "[" loggers_entries "]" -#line 847 "d2_parser.yy" +#line 852 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1851 "d2_parser.cc" +#line 1856 "d2_parser.cc" break; case 217: // loggers_entries: loggers_entries "," -#line 856 "d2_parser.yy" +#line 861 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1859 "d2_parser.cc" +#line 1864 "d2_parser.cc" break; case 218: // $@51: %empty -#line 862 "d2_parser.yy" +#line 867 "d2_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 1869 "d2_parser.cc" +#line 1874 "d2_parser.cc" break; case 219: // logger_entry: "{" $@51 logger_params "}" -#line 866 "d2_parser.yy" +#line 871 "d2_parser.yy" { ctx.stack_.pop_back(); } -#line 1877 "d2_parser.cc" +#line 1882 "d2_parser.cc" break; case 222: // logger_params: logger_params "," -#line 872 "d2_parser.yy" +#line 877 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1885 "d2_parser.cc" +#line 1890 "d2_parser.cc" break; case 230: // $@52: %empty -#line 886 "d2_parser.yy" +#line 891 "d2_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1894 "d2_parser.cc" +#line 1899 "d2_parser.cc" break; case 231: // name: "name" $@52 ":" "constant string" -#line 889 "d2_parser.yy" +#line 894 "d2_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1904 "d2_parser.cc" +#line 1909 "d2_parser.cc" break; case 232: // debuglevel: "debuglevel" ":" "integer" -#line 895 "d2_parser.yy" +#line 900 "d2_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 1914 "d2_parser.cc" +#line 1919 "d2_parser.cc" break; case 233: // $@53: %empty -#line 901 "d2_parser.yy" +#line 906 "d2_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1923 "d2_parser.cc" +#line 1928 "d2_parser.cc" break; case 234: // severity: "severity" $@53 ":" "constant string" -#line 904 "d2_parser.yy" +#line 909 "d2_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 1933 "d2_parser.cc" +#line 1938 "d2_parser.cc" break; case 235: // $@54: %empty -#line 910 "d2_parser.yy" +#line 915 "d2_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1941,122 +1946,122 @@ namespace isc { namespace d2 { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 1945 "d2_parser.cc" +#line 1950 "d2_parser.cc" break; case 236: // output_options_list: "output_options" $@54 ":" "[" output_options_list_content "]" -#line 916 "d2_parser.yy" +#line 921 "d2_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1954 "d2_parser.cc" +#line 1959 "d2_parser.cc" break; case 239: // output_options_list_content: output_options_list_content "," -#line 923 "d2_parser.yy" +#line 928 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1962 "d2_parser.cc" +#line 1967 "d2_parser.cc" break; case 240: // $@55: %empty -#line 928 "d2_parser.yy" +#line 933 "d2_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1972 "d2_parser.cc" +#line 1977 "d2_parser.cc" break; case 241: // output_entry: "{" $@55 output_params_list "}" -#line 932 "d2_parser.yy" +#line 937 "d2_parser.yy" { ctx.stack_.pop_back(); } -#line 1980 "d2_parser.cc" +#line 1985 "d2_parser.cc" break; case 244: // output_params_list: output_params_list "," -#line 938 "d2_parser.yy" +#line 943 "d2_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1988 "d2_parser.cc" +#line 1993 "d2_parser.cc" break; case 250: // $@56: %empty -#line 950 "d2_parser.yy" +#line 955 "d2_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1997 "d2_parser.cc" +#line 2002 "d2_parser.cc" break; case 251: // output: "output" $@56 ":" "constant string" -#line 953 "d2_parser.yy" +#line 958 "d2_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 2007 "d2_parser.cc" +#line 2012 "d2_parser.cc" break; case 252: // flush: "flush" ":" "boolean" -#line 959 "d2_parser.yy" +#line 964 "d2_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 2017 "d2_parser.cc" +#line 2022 "d2_parser.cc" break; case 253: // maxsize: "maxsize" ":" "integer" -#line 965 "d2_parser.yy" +#line 970 "d2_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 2027 "d2_parser.cc" +#line 2032 "d2_parser.cc" break; case 254: // maxver: "maxver" ":" "integer" -#line 971 "d2_parser.yy" +#line 976 "d2_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 2037 "d2_parser.cc" +#line 2042 "d2_parser.cc" break; case 255: // $@57: %empty -#line 977 "d2_parser.yy" +#line 982 "d2_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2046 "d2_parser.cc" +#line 2051 "d2_parser.cc" break; case 256: // pattern: "pattern" $@57 ":" "constant string" -#line 980 "d2_parser.yy" +#line 985 "d2_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 2056 "d2_parser.cc" +#line 2061 "d2_parser.cc" break; -#line 2060 "d2_parser.cc" +#line 2065 "d2_parser.cc" default: break; @@ -2787,32 +2792,32 @@ namespace isc { namespace d2 { const short D2Parser::yyrline_[] = { - 0, 125, 125, 125, 126, 126, 127, 127, 128, 128, - 129, 129, 130, 130, 131, 131, 132, 132, 133, 133, - 134, 134, 142, 143, 144, 145, 146, 147, 148, 151, - 156, 156, 167, 170, 171, 174, 179, 185, 190, 190, - 197, 198, 201, 205, 209, 219, 228, 228, 241, 241, - 251, 254, 258, 258, 266, 267, 268, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 290, 290, 299, 308, 318, 318, 327, 328, 331, - 331, 340, 340, 365, 365, 392, 392, 403, 403, 414, - 415, 418, 419, 420, 425, 426, 431, 431, 442, 442, - 449, 450, 453, 454, 455, 460, 460, 468, 468, 475, - 476, 477, 482, 483, 484, 485, 486, 487, 491, 491, - 504, 504, 517, 517, 528, 528, 535, 536, 537, 542, - 542, 550, 550, 557, 558, 559, 564, 565, 566, 567, - 568, 569, 570, 573, 573, 586, 586, 595, 610, 610, - 621, 621, 628, 629, 632, 633, 634, 639, 639, 647, - 647, 656, 657, 658, 663, 664, 665, 666, 667, 668, - 669, 672, 672, 685, 685, 697, 706, 706, 723, 723, - 734, 735, 736, 741, 742, 743, 744, 745, 748, 748, - 757, 757, 768, 768, 779, 780, 783, 784, 785, 790, - 790, 800, 800, 810, 811, 812, 815, 818, 819, 822, - 822, 831, 831, 841, 841, 854, 855, 856, 862, 862, - 870, 871, 872, 877, 878, 879, 880, 881, 882, 883, - 886, 886, 895, 901, 901, 910, 910, 921, 922, 923, - 928, 928, 936, 937, 938, 943, 944, 945, 946, 947, - 950, 950, 959, 965, 971, 977, 977 + 0, 130, 130, 130, 131, 131, 132, 132, 133, 133, + 134, 134, 135, 135, 136, 136, 137, 137, 138, 138, + 139, 139, 147, 148, 149, 150, 151, 152, 153, 156, + 161, 161, 172, 175, 176, 179, 184, 190, 195, 195, + 202, 203, 206, 210, 214, 224, 233, 233, 246, 246, + 256, 259, 263, 263, 271, 272, 273, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 295, 295, 304, 313, 323, 323, 332, 333, 336, + 336, 345, 345, 370, 370, 397, 397, 408, 408, 419, + 420, 423, 424, 425, 430, 431, 436, 436, 447, 447, + 454, 455, 458, 459, 460, 465, 465, 473, 473, 480, + 481, 482, 487, 488, 489, 490, 491, 492, 496, 496, + 509, 509, 522, 522, 533, 533, 540, 541, 542, 547, + 547, 555, 555, 562, 563, 564, 569, 570, 571, 572, + 573, 574, 575, 578, 578, 591, 591, 600, 615, 615, + 626, 626, 633, 634, 637, 638, 639, 644, 644, 652, + 652, 661, 662, 663, 668, 669, 670, 671, 672, 673, + 674, 677, 677, 690, 690, 702, 711, 711, 728, 728, + 739, 740, 741, 746, 747, 748, 749, 750, 753, 753, + 762, 762, 773, 773, 784, 785, 788, 789, 790, 795, + 795, 805, 805, 815, 816, 817, 820, 823, 824, 827, + 827, 836, 836, 846, 846, 859, 860, 861, 867, 867, + 875, 876, 877, 882, 883, 884, 885, 886, 887, 888, + 891, 891, 900, 906, 906, 915, 915, 926, 927, 928, + 933, 933, 941, 942, 943, 948, 949, 950, 951, 952, + 955, 955, 964, 970, 976, 982, 982 }; void @@ -2845,9 +2850,9 @@ namespace isc { namespace d2 { #line 14 "d2_parser.yy" } } // isc::d2 -#line 2849 "d2_parser.cc" +#line 2854 "d2_parser.cc" -#line 986 "d2_parser.yy" +#line 991 "d2_parser.yy" void diff --git a/src/bin/d2/location.hh b/src/bin/d2/location.hh index 4145366614..23caf1b9d2 100644 --- a/src/bin/d2/location.hh +++ b/src/bin/d2/location.hh @@ -1,3 +1,4 @@ +// Generated 202305171251 // A Bison parser, made by GNU Bison 3.8.2. // Locations for Bison parsers in C++ diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index 83fec22863..00183ed75a 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -48,7 +48,12 @@ #include -#line 52 "dhcp4_parser.cc" +// Avoid warnings with the error counter. +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif + +#line 57 "dhcp4_parser.cc" #ifndef YY_ @@ -141,7 +146,7 @@ #line 14 "dhcp4_parser.yy" namespace isc { namespace dhcp { -#line 145 "dhcp4_parser.cc" +#line 150 "dhcp4_parser.cc" /// Build a parser object. Dhcp4Parser::Dhcp4Parser (isc::dhcp::Parser4Context& ctx_yyarg) @@ -402,81 +407,81 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 408 "dhcp4_parser.cc" +#line 413 "dhcp4_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } -#line 414 "dhcp4_parser.cc" +#line 419 "dhcp4_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < double > (); } -#line 420 "dhcp4_parser.cc" +#line 425 "dhcp4_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < bool > (); } -#line 426 "dhcp4_parser.cc" +#line 431 "dhcp4_parser.cc" break; case symbol_kind::S_value: // value -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 432 "dhcp4_parser.cc" +#line 437 "dhcp4_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 438 "dhcp4_parser.cc" +#line 443 "dhcp4_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 444 "dhcp4_parser.cc" +#line 449 "dhcp4_parser.cc" break; case symbol_kind::S_socket_type: // socket_type -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 450 "dhcp4_parser.cc" +#line 455 "dhcp4_parser.cc" break; case symbol_kind::S_outbound_interface_value: // outbound_interface_value -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 456 "dhcp4_parser.cc" +#line 461 "dhcp4_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 462 "dhcp4_parser.cc" +#line 467 "dhcp4_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 468 "dhcp4_parser.cc" +#line 473 "dhcp4_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 474 "dhcp4_parser.cc" +#line 479 "dhcp4_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 298 "dhcp4_parser.yy" +#line 303 "dhcp4_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 480 "dhcp4_parser.cc" +#line 485 "dhcp4_parser.cc" break; default: @@ -755,300 +760,300 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 307 "dhcp4_parser.yy" +#line 312 "dhcp4_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 761 "dhcp4_parser.cc" +#line 766 "dhcp4_parser.cc" break; case 4: // $@2: %empty -#line 308 "dhcp4_parser.yy" +#line 313 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG; } -#line 767 "dhcp4_parser.cc" +#line 772 "dhcp4_parser.cc" break; case 6: // $@3: %empty -#line 309 "dhcp4_parser.yy" +#line 314 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } -#line 773 "dhcp4_parser.cc" +#line 778 "dhcp4_parser.cc" break; case 8: // $@4: %empty -#line 310 "dhcp4_parser.yy" +#line 315 "dhcp4_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 779 "dhcp4_parser.cc" +#line 784 "dhcp4_parser.cc" break; case 10: // $@5: %empty -#line 311 "dhcp4_parser.yy" +#line 316 "dhcp4_parser.yy" { ctx.ctx_ = ctx.SUBNET4; } -#line 785 "dhcp4_parser.cc" +#line 790 "dhcp4_parser.cc" break; case 12: // $@6: %empty -#line 312 "dhcp4_parser.yy" +#line 317 "dhcp4_parser.yy" { ctx.ctx_ = ctx.POOLS; } -#line 791 "dhcp4_parser.cc" +#line 796 "dhcp4_parser.cc" break; case 14: // $@7: %empty -#line 313 "dhcp4_parser.yy" +#line 318 "dhcp4_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } -#line 797 "dhcp4_parser.cc" +#line 802 "dhcp4_parser.cc" break; case 16: // $@8: %empty -#line 314 "dhcp4_parser.yy" +#line 319 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP4; } -#line 803 "dhcp4_parser.cc" +#line 808 "dhcp4_parser.cc" break; case 18: // $@9: %empty -#line 315 "dhcp4_parser.yy" +#line 320 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } -#line 809 "dhcp4_parser.cc" +#line 814 "dhcp4_parser.cc" break; case 20: // $@10: %empty -#line 316 "dhcp4_parser.yy" +#line 321 "dhcp4_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } -#line 815 "dhcp4_parser.cc" +#line 820 "dhcp4_parser.cc" break; case 22: // $@11: %empty -#line 317 "dhcp4_parser.yy" +#line 322 "dhcp4_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 821 "dhcp4_parser.cc" +#line 826 "dhcp4_parser.cc" break; case 24: // $@12: %empty -#line 318 "dhcp4_parser.yy" +#line 323 "dhcp4_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 827 "dhcp4_parser.cc" +#line 832 "dhcp4_parser.cc" break; case 26: // $@13: %empty -#line 319 "dhcp4_parser.yy" +#line 324 "dhcp4_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 833 "dhcp4_parser.cc" +#line 838 "dhcp4_parser.cc" break; case 28: // value: "integer" -#line 327 "dhcp4_parser.yy" +#line 332 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 839 "dhcp4_parser.cc" +#line 844 "dhcp4_parser.cc" break; case 29: // value: "floating point" -#line 328 "dhcp4_parser.yy" +#line 333 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 845 "dhcp4_parser.cc" +#line 850 "dhcp4_parser.cc" break; case 30: // value: "boolean" -#line 329 "dhcp4_parser.yy" +#line 334 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 851 "dhcp4_parser.cc" +#line 856 "dhcp4_parser.cc" break; case 31: // value: "constant string" -#line 330 "dhcp4_parser.yy" +#line 335 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 857 "dhcp4_parser.cc" +#line 862 "dhcp4_parser.cc" break; case 32: // value: "null" -#line 331 "dhcp4_parser.yy" +#line 336 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 863 "dhcp4_parser.cc" +#line 868 "dhcp4_parser.cc" break; case 33: // value: map2 -#line 332 "dhcp4_parser.yy" +#line 337 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 869 "dhcp4_parser.cc" +#line 874 "dhcp4_parser.cc" break; case 34: // value: list_generic -#line 333 "dhcp4_parser.yy" +#line 338 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 875 "dhcp4_parser.cc" +#line 880 "dhcp4_parser.cc" break; case 35: // sub_json: value -#line 336 "dhcp4_parser.yy" +#line 341 "dhcp4_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); } -#line 884 "dhcp4_parser.cc" +#line 889 "dhcp4_parser.cc" break; case 36: // $@14: %empty -#line 341 "dhcp4_parser.yy" +#line 346 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 895 "dhcp4_parser.cc" +#line 900 "dhcp4_parser.cc" break; case 37: // map2: "{" $@14 map_content "}" -#line 346 "dhcp4_parser.yy" +#line 351 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 905 "dhcp4_parser.cc" +#line 910 "dhcp4_parser.cc" break; case 38: // map_value: map2 -#line 352 "dhcp4_parser.yy" +#line 357 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 911 "dhcp4_parser.cc" +#line 916 "dhcp4_parser.cc" break; case 41: // not_empty_map: "constant string" ":" value -#line 359 "dhcp4_parser.yy" +#line 364 "dhcp4_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 921 "dhcp4_parser.cc" +#line 926 "dhcp4_parser.cc" break; case 42: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 364 "dhcp4_parser.yy" +#line 369 "dhcp4_parser.yy" { // map consisting of a shorter map followed by // comma and string:value ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 932 "dhcp4_parser.cc" +#line 937 "dhcp4_parser.cc" break; case 43: // not_empty_map: not_empty_map "," -#line 370 "dhcp4_parser.yy" +#line 375 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 940 "dhcp4_parser.cc" +#line 945 "dhcp4_parser.cc" break; case 44: // $@15: %empty -#line 375 "dhcp4_parser.yy" +#line 380 "dhcp4_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 949 "dhcp4_parser.cc" +#line 954 "dhcp4_parser.cc" break; case 45: // list_generic: "[" $@15 list_content "]" -#line 378 "dhcp4_parser.yy" +#line 383 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here } -#line 957 "dhcp4_parser.cc" +#line 962 "dhcp4_parser.cc" break; case 48: // not_empty_list: value -#line 386 "dhcp4_parser.yy" +#line 391 "dhcp4_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 966 "dhcp4_parser.cc" +#line 971 "dhcp4_parser.cc" break; case 49: // not_empty_list: not_empty_list "," value -#line 390 "dhcp4_parser.yy" +#line 395 "dhcp4_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 975 "dhcp4_parser.cc" +#line 980 "dhcp4_parser.cc" break; case 50: // not_empty_list: not_empty_list "," -#line 394 "dhcp4_parser.yy" +#line 399 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 983 "dhcp4_parser.cc" +#line 988 "dhcp4_parser.cc" break; case 51: // $@16: %empty -#line 400 "dhcp4_parser.yy" +#line 405 "dhcp4_parser.yy" { // List parsing about to start } -#line 991 "dhcp4_parser.cc" +#line 996 "dhcp4_parser.cc" break; case 52: // list_strings: "[" $@16 list_strings_content "]" -#line 402 "dhcp4_parser.yy" +#line 407 "dhcp4_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 1000 "dhcp4_parser.cc" +#line 1005 "dhcp4_parser.cc" break; case 55: // not_empty_list_strings: "constant string" -#line 411 "dhcp4_parser.yy" +#line 416 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 1009 "dhcp4_parser.cc" +#line 1014 "dhcp4_parser.cc" break; case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 415 "dhcp4_parser.yy" +#line 420 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 1018 "dhcp4_parser.cc" +#line 1023 "dhcp4_parser.cc" break; case 57: // not_empty_list_strings: not_empty_list_strings "," -#line 419 "dhcp4_parser.yy" +#line 424 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1026 "dhcp4_parser.cc" +#line 1031 "dhcp4_parser.cc" break; case 58: // unknown_map_entry: "constant string" ":" -#line 429 "dhcp4_parser.yy" +#line 434 "dhcp4_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 1037 "dhcp4_parser.cc" +#line 1042 "dhcp4_parser.cc" break; case 59: // $@17: %empty -#line 438 "dhcp4_parser.yy" +#line 443 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1048 "dhcp4_parser.cc" +#line 1053 "dhcp4_parser.cc" break; case 60: // syntax_map: "{" $@17 global_object "}" -#line 443 "dhcp4_parser.yy" +#line 448 "dhcp4_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1057,11 +1062,11 @@ namespace isc { namespace dhcp { // Dhcp4 is required ctx.require("Dhcp4", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 1061 "dhcp4_parser.cc" +#line 1066 "dhcp4_parser.cc" break; case 61: // $@18: %empty -#line 453 "dhcp4_parser.yy" +#line 458 "dhcp4_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1072,509 +1077,509 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP4); } -#line 1076 "dhcp4_parser.cc" +#line 1081 "dhcp4_parser.cc" break; case 62: // global_object: "Dhcp4" $@18 ":" "{" global_params "}" -#line 462 "dhcp4_parser.yy" +#line 467 "dhcp4_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1086 "dhcp4_parser.cc" +#line 1091 "dhcp4_parser.cc" break; case 64: // global_object_comma: global_object "," -#line 470 "dhcp4_parser.yy" +#line 475 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1094 "dhcp4_parser.cc" +#line 1099 "dhcp4_parser.cc" break; case 65: // $@19: %empty -#line 476 "dhcp4_parser.yy" +#line 481 "dhcp4_parser.yy" { // Parse the Dhcp4 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1104 "dhcp4_parser.cc" +#line 1109 "dhcp4_parser.cc" break; case 66: // sub_dhcp4: "{" $@19 global_params "}" -#line 480 "dhcp4_parser.yy" +#line 485 "dhcp4_parser.yy" { // No global parameter is required // parsing completed } -#line 1113 "dhcp4_parser.cc" +#line 1118 "dhcp4_parser.cc" break; case 69: // global_params: global_params "," -#line 487 "dhcp4_parser.yy" +#line 492 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1121 "dhcp4_parser.cc" +#line 1126 "dhcp4_parser.cc" break; case 137: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 563 "dhcp4_parser.yy" +#line 568 "dhcp4_parser.yy" { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 1131 "dhcp4_parser.cc" +#line 1136 "dhcp4_parser.cc" break; case 138: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 569 "dhcp4_parser.yy" +#line 574 "dhcp4_parser.yy" { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("min-valid-lifetime", prf); } -#line 1141 "dhcp4_parser.cc" +#line 1146 "dhcp4_parser.cc" break; case 139: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 575 "dhcp4_parser.yy" +#line 580 "dhcp4_parser.yy" { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-valid-lifetime", prf); } -#line 1151 "dhcp4_parser.cc" +#line 1156 "dhcp4_parser.cc" break; case 140: // renew_timer: "renew-timer" ":" "integer" -#line 581 "dhcp4_parser.yy" +#line 586 "dhcp4_parser.yy" { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1161 "dhcp4_parser.cc" +#line 1166 "dhcp4_parser.cc" break; case 141: // rebind_timer: "rebind-timer" ":" "integer" -#line 587 "dhcp4_parser.yy" +#line 592 "dhcp4_parser.yy" { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1171 "dhcp4_parser.cc" +#line 1176 "dhcp4_parser.cc" break; case 142: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 593 "dhcp4_parser.yy" +#line 598 "dhcp4_parser.yy" { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("calculate-tee-times", ctt); } -#line 1181 "dhcp4_parser.cc" +#line 1186 "dhcp4_parser.cc" break; case 143: // t1_percent: "t1-percent" ":" "floating point" -#line 599 "dhcp4_parser.yy" +#line 604 "dhcp4_parser.yy" { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t1-percent", t1); } -#line 1191 "dhcp4_parser.cc" +#line 1196 "dhcp4_parser.cc" break; case 144: // t2_percent: "t2-percent" ":" "floating point" -#line 605 "dhcp4_parser.yy" +#line 610 "dhcp4_parser.yy" { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t2-percent", t2); } -#line 1201 "dhcp4_parser.cc" +#line 1206 "dhcp4_parser.cc" break; case 145: // cache_threshold: "cache-threshold" ":" "floating point" -#line 611 "dhcp4_parser.yy" +#line 616 "dhcp4_parser.yy" { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-threshold", ct); } -#line 1211 "dhcp4_parser.cc" +#line 1216 "dhcp4_parser.cc" break; case 146: // cache_max_age: "cache-max-age" ":" "integer" -#line 617 "dhcp4_parser.yy" +#line 622 "dhcp4_parser.yy" { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-max-age", cm); } -#line 1221 "dhcp4_parser.cc" +#line 1226 "dhcp4_parser.cc" break; case 147: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 623 "dhcp4_parser.yy" +#line 628 "dhcp4_parser.yy" { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1231 "dhcp4_parser.cc" +#line 1236 "dhcp4_parser.cc" break; case 148: // $@20: %empty -#line 629 "dhcp4_parser.yy" +#line 634 "dhcp4_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1240 "dhcp4_parser.cc" +#line 1245 "dhcp4_parser.cc" break; case 149: // server_tag: "server-tag" $@20 ":" "constant string" -#line 632 "dhcp4_parser.yy" +#line 637 "dhcp4_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); ctx.leave(); } -#line 1250 "dhcp4_parser.cc" +#line 1255 "dhcp4_parser.cc" break; case 150: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 638 "dhcp4_parser.yy" +#line 643 "dhcp4_parser.yy" { ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location)); ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("parked-packet-limit", ppl); } -#line 1260 "dhcp4_parser.cc" +#line 1265 "dhcp4_parser.cc" break; case 151: // $@21: %empty -#line 644 "dhcp4_parser.yy" +#line 649 "dhcp4_parser.yy" { ctx.unique("allocator", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1269 "dhcp4_parser.cc" +#line 1274 "dhcp4_parser.cc" break; case 152: // allocator: "allocator" $@21 ":" "constant string" -#line 647 "dhcp4_parser.yy" +#line 652 "dhcp4_parser.yy" { ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("allocator", al); ctx.leave(); } -#line 1279 "dhcp4_parser.cc" +#line 1284 "dhcp4_parser.cc" break; case 153: // echo_client_id: "echo-client-id" ":" "boolean" -#line 653 "dhcp4_parser.yy" +#line 658 "dhcp4_parser.yy" { ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("echo-client-id", echo); } -#line 1289 "dhcp4_parser.cc" +#line 1294 "dhcp4_parser.cc" break; case 154: // match_client_id: "match-client-id" ":" "boolean" -#line 659 "dhcp4_parser.yy" +#line 664 "dhcp4_parser.yy" { ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location)); ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("match-client-id", match); } -#line 1299 "dhcp4_parser.cc" +#line 1304 "dhcp4_parser.cc" break; case 155: // authoritative: "authoritative" ":" "boolean" -#line 665 "dhcp4_parser.yy" +#line 670 "dhcp4_parser.yy" { ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("authoritative", prf); } -#line 1309 "dhcp4_parser.cc" +#line 1314 "dhcp4_parser.cc" break; case 156: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 671 "dhcp4_parser.yy" +#line 676 "dhcp4_parser.yy" { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-send-updates", b); } -#line 1319 "dhcp4_parser.cc" +#line 1324 "dhcp4_parser.cc" break; case 157: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 677 "dhcp4_parser.yy" +#line 682 "dhcp4_parser.yy" { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-no-update", b); } -#line 1329 "dhcp4_parser.cc" +#line 1334 "dhcp4_parser.cc" break; case 158: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 683 "dhcp4_parser.yy" +#line 688 "dhcp4_parser.yy" { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-client-update", b); } -#line 1339 "dhcp4_parser.cc" +#line 1344 "dhcp4_parser.cc" break; case 159: // $@22: %empty -#line 689 "dhcp4_parser.yy" +#line 694 "dhcp4_parser.yy" { ctx.enter(ctx.REPLACE_CLIENT_NAME); ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); } -#line 1348 "dhcp4_parser.cc" +#line 1353 "dhcp4_parser.cc" break; case 160: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value -#line 692 "dhcp4_parser.yy" +#line 697 "dhcp4_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1357 "dhcp4_parser.cc" +#line 1362 "dhcp4_parser.cc" break; case 161: // ddns_replace_client_name_value: "when-present" -#line 698 "dhcp4_parser.yy" +#line 703 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 1365 "dhcp4_parser.cc" +#line 1370 "dhcp4_parser.cc" break; case 162: // ddns_replace_client_name_value: "never" -#line 701 "dhcp4_parser.yy" +#line 706 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 1373 "dhcp4_parser.cc" +#line 1378 "dhcp4_parser.cc" break; case 163: // ddns_replace_client_name_value: "always" -#line 704 "dhcp4_parser.yy" +#line 709 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 1381 "dhcp4_parser.cc" +#line 1386 "dhcp4_parser.cc" break; case 164: // ddns_replace_client_name_value: "when-not-present" -#line 707 "dhcp4_parser.yy" +#line 712 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 1389 "dhcp4_parser.cc" +#line 1394 "dhcp4_parser.cc" break; case 165: // ddns_replace_client_name_value: "boolean" -#line 710 "dhcp4_parser.yy" +#line 715 "dhcp4_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 1398 "dhcp4_parser.cc" +#line 1403 "dhcp4_parser.cc" break; case 166: // $@23: %empty -#line 716 "dhcp4_parser.yy" +#line 721 "dhcp4_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1407 "dhcp4_parser.cc" +#line 1412 "dhcp4_parser.cc" break; case 167: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" -#line 719 "dhcp4_parser.yy" +#line 724 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); ctx.leave(); } -#line 1417 "dhcp4_parser.cc" +#line 1422 "dhcp4_parser.cc" break; case 168: // $@24: %empty -#line 725 "dhcp4_parser.yy" +#line 730 "dhcp4_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1426 "dhcp4_parser.cc" +#line 1431 "dhcp4_parser.cc" break; case 169: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" -#line 728 "dhcp4_parser.yy" +#line 733 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); ctx.leave(); } -#line 1436 "dhcp4_parser.cc" +#line 1441 "dhcp4_parser.cc" break; case 170: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 734 "dhcp4_parser.yy" +#line 739 "dhcp4_parser.yy" { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-update-on-renew", b); } -#line 1446 "dhcp4_parser.cc" +#line 1451 "dhcp4_parser.cc" break; case 171: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 740 "dhcp4_parser.yy" +#line 745 "dhcp4_parser.yy" { ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-use-conflict-resolution", b); } -#line 1456 "dhcp4_parser.cc" +#line 1461 "dhcp4_parser.cc" break; case 172: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point" -#line 746 "dhcp4_parser.yy" +#line 751 "dhcp4_parser.yy" { ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-ttl-percent", ttl); } -#line 1466 "dhcp4_parser.cc" +#line 1471 "dhcp4_parser.cc" break; case 173: // $@25: %empty -#line 752 "dhcp4_parser.yy" +#line 757 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1475 "dhcp4_parser.cc" +#line 1480 "dhcp4_parser.cc" break; case 174: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" -#line 755 "dhcp4_parser.yy" +#line 760 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 1485 "dhcp4_parser.cc" +#line 1490 "dhcp4_parser.cc" break; case 175: // $@26: %empty -#line 761 "dhcp4_parser.yy" +#line 766 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1494 "dhcp4_parser.cc" +#line 1499 "dhcp4_parser.cc" break; case 176: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" -#line 764 "dhcp4_parser.yy" +#line 769 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 1504 "dhcp4_parser.cc" +#line 1509 "dhcp4_parser.cc" break; case 177: // store_extended_info: "store-extended-info" ":" "boolean" -#line 770 "dhcp4_parser.yy" +#line 775 "dhcp4_parser.yy" { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("store-extended-info", b); } -#line 1514 "dhcp4_parser.cc" +#line 1519 "dhcp4_parser.cc" break; case 178: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 776 "dhcp4_parser.yy" +#line 781 "dhcp4_parser.yy" { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-count", count); } -#line 1524 "dhcp4_parser.cc" +#line 1529 "dhcp4_parser.cc" break; case 179: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 782 "dhcp4_parser.yy" +#line 787 "dhcp4_parser.yy" { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-age", age); } -#line 1534 "dhcp4_parser.cc" +#line 1539 "dhcp4_parser.cc" break; case 180: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" -#line 788 "dhcp4_parser.yy" +#line 793 "dhcp4_parser.yy" { ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location)); ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("early-global-reservations-lookup", early); } -#line 1544 "dhcp4_parser.cc" +#line 1549 "dhcp4_parser.cc" break; case 181: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 794 "dhcp4_parser.yy" +#line 799 "dhcp4_parser.yy" { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-reservations-unique", unique); } -#line 1554 "dhcp4_parser.cc" +#line 1559 "dhcp4_parser.cc" break; case 182: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" -#line 800 "dhcp4_parser.yy" +#line 805 "dhcp4_parser.yy" { ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location)); ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-lookup-first", first); } -#line 1564 "dhcp4_parser.cc" +#line 1569 "dhcp4_parser.cc" break; case 183: // offer_lifetime: "offer-lifetime" ":" "integer" -#line 806 "dhcp4_parser.yy" +#line 811 "dhcp4_parser.yy" { ctx.unique("offer-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr offer_lifetime(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("offer-lifetime", offer_lifetime); } -#line 1574 "dhcp4_parser.cc" +#line 1579 "dhcp4_parser.cc" break; case 184: // $@27: %empty -#line 812 "dhcp4_parser.yy" +#line 817 "dhcp4_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1582,48 +1587,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1586 "dhcp4_parser.cc" +#line 1591 "dhcp4_parser.cc" break; case 185: // interfaces_config: "interfaces-config" $@27 ":" "{" interfaces_config_params "}" -#line 818 "dhcp4_parser.yy" +#line 823 "dhcp4_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1596 "dhcp4_parser.cc" +#line 1601 "dhcp4_parser.cc" break; case 188: // interfaces_config_params: interfaces_config_params "," -#line 826 "dhcp4_parser.yy" +#line 831 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1604 "dhcp4_parser.cc" +#line 1609 "dhcp4_parser.cc" break; case 199: // $@28: %empty -#line 843 "dhcp4_parser.yy" +#line 848 "dhcp4_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1614 "dhcp4_parser.cc" +#line 1619 "dhcp4_parser.cc" break; case 200: // sub_interfaces4: "{" $@28 interfaces_config_params "}" -#line 847 "dhcp4_parser.yy" +#line 852 "dhcp4_parser.yy" { // No interfaces config param is required // parsing completed } -#line 1623 "dhcp4_parser.cc" +#line 1628 "dhcp4_parser.cc" break; case 201: // $@29: %empty -#line 852 "dhcp4_parser.yy" +#line 857 "dhcp4_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1631,124 +1636,124 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1635 "dhcp4_parser.cc" +#line 1640 "dhcp4_parser.cc" break; case 202: // interfaces_list: "interfaces" $@29 ":" list_strings -#line 858 "dhcp4_parser.yy" +#line 863 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1644 "dhcp4_parser.cc" +#line 1649 "dhcp4_parser.cc" break; case 203: // $@30: %empty -#line 863 "dhcp4_parser.yy" +#line 868 "dhcp4_parser.yy" { ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DHCP_SOCKET_TYPE); } -#line 1653 "dhcp4_parser.cc" +#line 1658 "dhcp4_parser.cc" break; case 204: // dhcp_socket_type: "dhcp-socket-type" $@30 ":" socket_type -#line 866 "dhcp4_parser.yy" +#line 871 "dhcp4_parser.yy" { ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1662 "dhcp4_parser.cc" +#line 1667 "dhcp4_parser.cc" break; case 205: // socket_type: "raw" -#line 871 "dhcp4_parser.yy" +#line 876 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); } -#line 1668 "dhcp4_parser.cc" +#line 1673 "dhcp4_parser.cc" break; case 206: // socket_type: "udp" -#line 872 "dhcp4_parser.yy" +#line 877 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); } -#line 1674 "dhcp4_parser.cc" +#line 1679 "dhcp4_parser.cc" break; case 207: // $@31: %empty -#line 875 "dhcp4_parser.yy" +#line 880 "dhcp4_parser.yy" { ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.OUTBOUND_INTERFACE); } -#line 1683 "dhcp4_parser.cc" +#line 1688 "dhcp4_parser.cc" break; case 208: // outbound_interface: "outbound-interface" $@31 ":" outbound_interface_value -#line 878 "dhcp4_parser.yy" +#line 883 "dhcp4_parser.yy" { ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1692 "dhcp4_parser.cc" +#line 1697 "dhcp4_parser.cc" break; case 209: // outbound_interface_value: "same-as-inbound" -#line 883 "dhcp4_parser.yy" +#line 888 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location))); } -#line 1700 "dhcp4_parser.cc" +#line 1705 "dhcp4_parser.cc" break; case 210: // outbound_interface_value: "use-routing" -#line 885 "dhcp4_parser.yy" +#line 890 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location))); } -#line 1708 "dhcp4_parser.cc" +#line 1713 "dhcp4_parser.cc" break; case 211: // re_detect: "re-detect" ":" "boolean" -#line 889 "dhcp4_parser.yy" +#line 894 "dhcp4_parser.yy" { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1718 "dhcp4_parser.cc" +#line 1723 "dhcp4_parser.cc" break; case 212: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" -#line 895 "dhcp4_parser.yy" +#line 900 "dhcp4_parser.yy" { ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-require-all", b); } -#line 1728 "dhcp4_parser.cc" +#line 1733 "dhcp4_parser.cc" break; case 213: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" -#line 901 "dhcp4_parser.yy" +#line 906 "dhcp4_parser.yy" { ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-retry-wait-time", n); } -#line 1738 "dhcp4_parser.cc" +#line 1743 "dhcp4_parser.cc" break; case 214: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" -#line 907 "dhcp4_parser.yy" +#line 912 "dhcp4_parser.yy" { ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-max-retries", n); } -#line 1748 "dhcp4_parser.cc" +#line 1753 "dhcp4_parser.cc" break; case 215: // $@32: %empty -#line 913 "dhcp4_parser.yy" +#line 918 "dhcp4_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1756,22 +1761,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1760 "dhcp4_parser.cc" +#line 1765 "dhcp4_parser.cc" break; case 216: // lease_database: "lease-database" $@32 ":" "{" database_map_params "}" -#line 919 "dhcp4_parser.yy" +#line 924 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1771 "dhcp4_parser.cc" +#line 1776 "dhcp4_parser.cc" break; case 217: // $@33: %empty -#line 926 "dhcp4_parser.yy" +#line 931 "dhcp4_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1779,37 +1784,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 1783 "dhcp4_parser.cc" +#line 1788 "dhcp4_parser.cc" break; case 218: // sanity_checks: "sanity-checks" $@33 ":" "{" sanity_checks_params "}" -#line 932 "dhcp4_parser.yy" +#line 937 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1792 "dhcp4_parser.cc" +#line 1797 "dhcp4_parser.cc" break; case 221: // sanity_checks_params: sanity_checks_params "," -#line 939 "dhcp4_parser.yy" +#line 944 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1800 "dhcp4_parser.cc" +#line 1805 "dhcp4_parser.cc" break; case 224: // $@34: %empty -#line 948 "dhcp4_parser.yy" +#line 953 "dhcp4_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1809 "dhcp4_parser.cc" +#line 1814 "dhcp4_parser.cc" break; case 225: // lease_checks: "lease-checks" $@34 ":" "constant string" -#line 951 "dhcp4_parser.yy" +#line 956 "dhcp4_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -1825,20 +1830,20 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 1829 "dhcp4_parser.cc" +#line 1834 "dhcp4_parser.cc" break; case 226: // $@35: %empty -#line 967 "dhcp4_parser.yy" +#line 972 "dhcp4_parser.yy" { ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1838 "dhcp4_parser.cc" +#line 1843 "dhcp4_parser.cc" break; case 227: // extended_info_checks: "extended-info-checks" $@35 ":" "constant string" -#line 970 "dhcp4_parser.yy" +#line 975 "dhcp4_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -1853,11 +1858,11 @@ namespace isc { namespace dhcp { ", supported values are: none, fix, strict, pedantic"); } } -#line 1857 "dhcp4_parser.cc" +#line 1862 "dhcp4_parser.cc" break; case 228: // $@36: %empty -#line 985 "dhcp4_parser.yy" +#line 990 "dhcp4_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1865,22 +1870,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1869 "dhcp4_parser.cc" +#line 1874 "dhcp4_parser.cc" break; case 229: // hosts_database: "hosts-database" $@36 ":" "{" database_map_params "}" -#line 991 "dhcp4_parser.yy" +#line 996 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1880 "dhcp4_parser.cc" +#line 1885 "dhcp4_parser.cc" break; case 230: // $@37: %empty -#line 998 "dhcp4_parser.yy" +#line 1003 "dhcp4_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1888,390 +1893,390 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1892 "dhcp4_parser.cc" +#line 1897 "dhcp4_parser.cc" break; case 231: // hosts_databases: "hosts-databases" $@37 ":" "[" database_list "]" -#line 1004 "dhcp4_parser.yy" +#line 1009 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1901 "dhcp4_parser.cc" +#line 1906 "dhcp4_parser.cc" break; case 236: // not_empty_database_list: not_empty_database_list "," -#line 1015 "dhcp4_parser.yy" +#line 1020 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1909 "dhcp4_parser.cc" +#line 1914 "dhcp4_parser.cc" break; case 237: // $@38: %empty -#line 1020 "dhcp4_parser.yy" +#line 1025 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1919 "dhcp4_parser.cc" +#line 1924 "dhcp4_parser.cc" break; case 238: // database: "{" $@38 database_map_params "}" -#line 1024 "dhcp4_parser.yy" +#line 1029 "dhcp4_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1929 "dhcp4_parser.cc" +#line 1934 "dhcp4_parser.cc" break; case 241: // database_map_params: database_map_params "," -#line 1032 "dhcp4_parser.yy" +#line 1037 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1937 "dhcp4_parser.cc" +#line 1942 "dhcp4_parser.cc" break; case 264: // $@39: %empty -#line 1061 "dhcp4_parser.yy" +#line 1066 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1946 "dhcp4_parser.cc" +#line 1951 "dhcp4_parser.cc" break; case 265: // database_type: "type" $@39 ":" db_type -#line 1064 "dhcp4_parser.yy" +#line 1069 "dhcp4_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1955 "dhcp4_parser.cc" +#line 1960 "dhcp4_parser.cc" break; case 266: // db_type: "memfile" -#line 1069 "dhcp4_parser.yy" +#line 1074 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1961 "dhcp4_parser.cc" +#line 1966 "dhcp4_parser.cc" break; case 267: // db_type: "mysql" -#line 1070 "dhcp4_parser.yy" +#line 1075 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1967 "dhcp4_parser.cc" +#line 1972 "dhcp4_parser.cc" break; case 268: // db_type: "postgresql" -#line 1071 "dhcp4_parser.yy" +#line 1076 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1973 "dhcp4_parser.cc" +#line 1978 "dhcp4_parser.cc" break; case 269: // $@40: %empty -#line 1074 "dhcp4_parser.yy" +#line 1079 "dhcp4_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1982 "dhcp4_parser.cc" +#line 1987 "dhcp4_parser.cc" break; case 270: // user: "user" $@40 ":" "constant string" -#line 1077 "dhcp4_parser.yy" +#line 1082 "dhcp4_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1992 "dhcp4_parser.cc" +#line 1997 "dhcp4_parser.cc" break; case 271: // $@41: %empty -#line 1083 "dhcp4_parser.yy" +#line 1088 "dhcp4_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2001 "dhcp4_parser.cc" +#line 2006 "dhcp4_parser.cc" break; case 272: // password: "password" $@41 ":" "constant string" -#line 1086 "dhcp4_parser.yy" +#line 1091 "dhcp4_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 2011 "dhcp4_parser.cc" +#line 2016 "dhcp4_parser.cc" break; case 273: // $@42: %empty -#line 1092 "dhcp4_parser.yy" +#line 1097 "dhcp4_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2020 "dhcp4_parser.cc" +#line 2025 "dhcp4_parser.cc" break; case 274: // host: "host" $@42 ":" "constant string" -#line 1095 "dhcp4_parser.yy" +#line 1100 "dhcp4_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 2030 "dhcp4_parser.cc" +#line 2035 "dhcp4_parser.cc" break; case 275: // port: "port" ":" "integer" -#line 1101 "dhcp4_parser.yy" +#line 1106 "dhcp4_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 2040 "dhcp4_parser.cc" +#line 2045 "dhcp4_parser.cc" break; case 276: // $@43: %empty -#line 1107 "dhcp4_parser.yy" +#line 1112 "dhcp4_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2049 "dhcp4_parser.cc" +#line 2054 "dhcp4_parser.cc" break; case 277: // name: "name" $@43 ":" "constant string" -#line 1110 "dhcp4_parser.yy" +#line 1115 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 2059 "dhcp4_parser.cc" +#line 2064 "dhcp4_parser.cc" break; case 278: // persist: "persist" ":" "boolean" -#line 1116 "dhcp4_parser.yy" +#line 1121 "dhcp4_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 2069 "dhcp4_parser.cc" +#line 2074 "dhcp4_parser.cc" break; case 279: // lfc_interval: "lfc-interval" ":" "integer" -#line 1122 "dhcp4_parser.yy" +#line 1127 "dhcp4_parser.yy" { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 2079 "dhcp4_parser.cc" +#line 2084 "dhcp4_parser.cc" break; case 280: // readonly: "readonly" ":" "boolean" -#line 1128 "dhcp4_parser.yy" +#line 1133 "dhcp4_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 2089 "dhcp4_parser.cc" +#line 2094 "dhcp4_parser.cc" break; case 281: // connect_timeout: "connect-timeout" ":" "integer" -#line 1134 "dhcp4_parser.yy" +#line 1139 "dhcp4_parser.yy" { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 2099 "dhcp4_parser.cc" +#line 2104 "dhcp4_parser.cc" break; case 282: // read_timeout: "read-timeout" ":" "integer" -#line 1140 "dhcp4_parser.yy" +#line 1145 "dhcp4_parser.yy" { ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("read-timeout", n); } -#line 2109 "dhcp4_parser.cc" +#line 2114 "dhcp4_parser.cc" break; case 283: // write_timeout: "write-timeout" ":" "integer" -#line 1146 "dhcp4_parser.yy" +#line 1151 "dhcp4_parser.yy" { ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("write-timeout", n); } -#line 2119 "dhcp4_parser.cc" +#line 2124 "dhcp4_parser.cc" break; case 284: // tcp_user_timeout: "tcp-user-timeout" ":" "integer" -#line 1152 "dhcp4_parser.yy" +#line 1157 "dhcp4_parser.yy" { ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-user-timeout", n); } -#line 2129 "dhcp4_parser.cc" +#line 2134 "dhcp4_parser.cc" break; case 285: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1158 "dhcp4_parser.yy" +#line 1163 "dhcp4_parser.yy" { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 2139 "dhcp4_parser.cc" +#line 2144 "dhcp4_parser.cc" break; case 286: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1164 "dhcp4_parser.yy" +#line 1169 "dhcp4_parser.yy" { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 2149 "dhcp4_parser.cc" +#line 2154 "dhcp4_parser.cc" break; case 287: // $@44: %empty -#line 1170 "dhcp4_parser.yy" +#line 1175 "dhcp4_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 2158 "dhcp4_parser.cc" +#line 2163 "dhcp4_parser.cc" break; case 288: // on_fail: "on-fail" $@44 ":" on_fail_mode -#line 1173 "dhcp4_parser.yy" +#line 1178 "dhcp4_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2167 "dhcp4_parser.cc" +#line 2172 "dhcp4_parser.cc" break; case 289: // on_fail_mode: "stop-retry-exit" -#line 1178 "dhcp4_parser.yy" +#line 1183 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2173 "dhcp4_parser.cc" +#line 2178 "dhcp4_parser.cc" break; case 290: // on_fail_mode: "serve-retry-exit" -#line 1179 "dhcp4_parser.yy" +#line 1184 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2179 "dhcp4_parser.cc" +#line 2184 "dhcp4_parser.cc" break; case 291: // on_fail_mode: "serve-retry-continue" -#line 1180 "dhcp4_parser.yy" +#line 1185 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 2185 "dhcp4_parser.cc" +#line 2190 "dhcp4_parser.cc" break; case 292: // max_row_errors: "max-row-errors" ":" "integer" -#line 1183 "dhcp4_parser.yy" +#line 1188 "dhcp4_parser.yy" { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 2195 "dhcp4_parser.cc" +#line 2200 "dhcp4_parser.cc" break; case 293: // $@45: %empty -#line 1189 "dhcp4_parser.yy" +#line 1194 "dhcp4_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2204 "dhcp4_parser.cc" +#line 2209 "dhcp4_parser.cc" break; case 294: // trust_anchor: "trust-anchor" $@45 ":" "constant string" -#line 1192 "dhcp4_parser.yy" +#line 1197 "dhcp4_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 2214 "dhcp4_parser.cc" +#line 2219 "dhcp4_parser.cc" break; case 295: // $@46: %empty -#line 1198 "dhcp4_parser.yy" +#line 1203 "dhcp4_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2223 "dhcp4_parser.cc" +#line 2228 "dhcp4_parser.cc" break; case 296: // cert_file: "cert-file" $@46 ":" "constant string" -#line 1201 "dhcp4_parser.yy" +#line 1206 "dhcp4_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 2233 "dhcp4_parser.cc" +#line 2238 "dhcp4_parser.cc" break; case 297: // $@47: %empty -#line 1207 "dhcp4_parser.yy" +#line 1212 "dhcp4_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2242 "dhcp4_parser.cc" +#line 2247 "dhcp4_parser.cc" break; case 298: // key_file: "key-file" $@47 ":" "constant string" -#line 1210 "dhcp4_parser.yy" +#line 1215 "dhcp4_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 2252 "dhcp4_parser.cc" +#line 2257 "dhcp4_parser.cc" break; case 299: // $@48: %empty -#line 1216 "dhcp4_parser.yy" +#line 1221 "dhcp4_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2261 "dhcp4_parser.cc" +#line 2266 "dhcp4_parser.cc" break; case 300: // cipher_list: "cipher-list" $@48 ":" "constant string" -#line 1219 "dhcp4_parser.yy" +#line 1224 "dhcp4_parser.yy" { ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cipher-list", cl); ctx.leave(); } -#line 2271 "dhcp4_parser.cc" +#line 2276 "dhcp4_parser.cc" break; case 301: // $@49: %empty -#line 1225 "dhcp4_parser.yy" +#line 1230 "dhcp4_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2279,73 +2284,73 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2283 "dhcp4_parser.cc" +#line 2288 "dhcp4_parser.cc" break; case 302: // host_reservation_identifiers: "host-reservation-identifiers" $@49 ":" "[" host_reservation_identifiers_list "]" -#line 1231 "dhcp4_parser.yy" +#line 1236 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2292 "dhcp4_parser.cc" +#line 2297 "dhcp4_parser.cc" break; case 305: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1238 "dhcp4_parser.yy" +#line 1243 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2300 "dhcp4_parser.cc" +#line 2305 "dhcp4_parser.cc" break; case 311: // duid_id: "duid" -#line 1250 "dhcp4_parser.yy" +#line 1255 "dhcp4_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2309 "dhcp4_parser.cc" +#line 2314 "dhcp4_parser.cc" break; case 312: // hw_address_id: "hw-address" -#line 1255 "dhcp4_parser.yy" +#line 1260 "dhcp4_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2318 "dhcp4_parser.cc" +#line 2323 "dhcp4_parser.cc" break; case 313: // circuit_id: "circuit-id" -#line 1260 "dhcp4_parser.yy" +#line 1265 "dhcp4_parser.yy" { ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(circuit); } -#line 2327 "dhcp4_parser.cc" +#line 2332 "dhcp4_parser.cc" break; case 314: // client_id: "client-id" -#line 1265 "dhcp4_parser.yy" +#line 1270 "dhcp4_parser.yy" { ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(client); } -#line 2336 "dhcp4_parser.cc" +#line 2341 "dhcp4_parser.cc" break; case 315: // flex_id: "flex-id" -#line 1270 "dhcp4_parser.yy" +#line 1275 "dhcp4_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2345 "dhcp4_parser.cc" +#line 2350 "dhcp4_parser.cc" break; case 316: // $@50: %empty -#line 1277 "dhcp4_parser.yy" +#line 1282 "dhcp4_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2353,60 +2358,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2357 "dhcp4_parser.cc" +#line 2362 "dhcp4_parser.cc" break; case 317: // dhcp_multi_threading: "multi-threading" $@50 ":" "{" multi_threading_params "}" -#line 1283 "dhcp4_parser.yy" +#line 1288 "dhcp4_parser.yy" { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2368 "dhcp4_parser.cc" +#line 2373 "dhcp4_parser.cc" break; case 320: // multi_threading_params: multi_threading_params "," -#line 1292 "dhcp4_parser.yy" +#line 1297 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2376 "dhcp4_parser.cc" +#line 2381 "dhcp4_parser.cc" break; case 327: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1305 "dhcp4_parser.yy" +#line 1310 "dhcp4_parser.yy" { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2386 "dhcp4_parser.cc" +#line 2391 "dhcp4_parser.cc" break; case 328: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1311 "dhcp4_parser.yy" +#line 1316 "dhcp4_parser.yy" { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2396 "dhcp4_parser.cc" +#line 2401 "dhcp4_parser.cc" break; case 329: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1317 "dhcp4_parser.yy" +#line 1322 "dhcp4_parser.yy" { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2406 "dhcp4_parser.cc" +#line 2411 "dhcp4_parser.cc" break; case 330: // $@51: %empty -#line 1323 "dhcp4_parser.yy" +#line 1328 "dhcp4_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2414,113 +2419,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2418 "dhcp4_parser.cc" +#line 2423 "dhcp4_parser.cc" break; case 331: // hooks_libraries: "hooks-libraries" $@51 ":" "[" hooks_libraries_list "]" -#line 1329 "dhcp4_parser.yy" +#line 1334 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2427 "dhcp4_parser.cc" +#line 2432 "dhcp4_parser.cc" break; case 336: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1340 "dhcp4_parser.yy" +#line 1345 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2435 "dhcp4_parser.cc" +#line 2440 "dhcp4_parser.cc" break; case 337: // $@52: %empty -#line 1345 "dhcp4_parser.yy" +#line 1350 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2445 "dhcp4_parser.cc" +#line 2450 "dhcp4_parser.cc" break; case 338: // hooks_library: "{" $@52 hooks_params "}" -#line 1349 "dhcp4_parser.yy" +#line 1354 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2455 "dhcp4_parser.cc" +#line 2460 "dhcp4_parser.cc" break; case 339: // $@53: %empty -#line 1355 "dhcp4_parser.yy" +#line 1360 "dhcp4_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2465 "dhcp4_parser.cc" +#line 2470 "dhcp4_parser.cc" break; case 340: // sub_hooks_library: "{" $@53 hooks_params "}" -#line 1359 "dhcp4_parser.yy" +#line 1364 "dhcp4_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2475 "dhcp4_parser.cc" +#line 2480 "dhcp4_parser.cc" break; case 343: // hooks_params: hooks_params "," -#line 1367 "dhcp4_parser.yy" +#line 1372 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2483 "dhcp4_parser.cc" +#line 2488 "dhcp4_parser.cc" break; case 347: // $@54: %empty -#line 1377 "dhcp4_parser.yy" +#line 1382 "dhcp4_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2492 "dhcp4_parser.cc" +#line 2497 "dhcp4_parser.cc" break; case 348: // library: "library" $@54 ":" "constant string" -#line 1380 "dhcp4_parser.yy" +#line 1385 "dhcp4_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2502 "dhcp4_parser.cc" +#line 2507 "dhcp4_parser.cc" break; case 349: // $@55: %empty -#line 1386 "dhcp4_parser.yy" +#line 1391 "dhcp4_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2511 "dhcp4_parser.cc" +#line 2516 "dhcp4_parser.cc" break; case 350: // parameters: "parameters" $@55 ":" map_value -#line 1389 "dhcp4_parser.yy" +#line 1394 "dhcp4_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2520 "dhcp4_parser.cc" +#line 2525 "dhcp4_parser.cc" break; case 351: // $@56: %empty -#line 1395 "dhcp4_parser.yy" +#line 1400 "dhcp4_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2528,89 +2533,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2532 "dhcp4_parser.cc" +#line 2537 "dhcp4_parser.cc" break; case 352: // expired_leases_processing: "expired-leases-processing" $@56 ":" "{" expired_leases_params "}" -#line 1401 "dhcp4_parser.yy" +#line 1406 "dhcp4_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2542 "dhcp4_parser.cc" +#line 2547 "dhcp4_parser.cc" break; case 355: // expired_leases_params: expired_leases_params "," -#line 1409 "dhcp4_parser.yy" +#line 1414 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2550 "dhcp4_parser.cc" +#line 2555 "dhcp4_parser.cc" break; case 362: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1422 "dhcp4_parser.yy" +#line 1427 "dhcp4_parser.yy" { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2560 "dhcp4_parser.cc" +#line 2565 "dhcp4_parser.cc" break; case 363: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1428 "dhcp4_parser.yy" +#line 1433 "dhcp4_parser.yy" { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2570 "dhcp4_parser.cc" +#line 2575 "dhcp4_parser.cc" break; case 364: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1434 "dhcp4_parser.yy" +#line 1439 "dhcp4_parser.yy" { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2580 "dhcp4_parser.cc" +#line 2585 "dhcp4_parser.cc" break; case 365: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1440 "dhcp4_parser.yy" +#line 1445 "dhcp4_parser.yy" { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2590 "dhcp4_parser.cc" +#line 2595 "dhcp4_parser.cc" break; case 366: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1446 "dhcp4_parser.yy" +#line 1451 "dhcp4_parser.yy" { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2600 "dhcp4_parser.cc" +#line 2605 "dhcp4_parser.cc" break; case 367: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1452 "dhcp4_parser.yy" +#line 1457 "dhcp4_parser.yy" { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2610 "dhcp4_parser.cc" +#line 2615 "dhcp4_parser.cc" break; case 368: // $@57: %empty -#line 1461 "dhcp4_parser.yy" +#line 1466 "dhcp4_parser.yy" { ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2618,38 +2623,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET4); } -#line 2622 "dhcp4_parser.cc" +#line 2627 "dhcp4_parser.cc" break; case 369: // subnet4_list: "subnet4" $@57 ":" "[" subnet4_list_content "]" -#line 1467 "dhcp4_parser.yy" +#line 1472 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2631 "dhcp4_parser.cc" +#line 2636 "dhcp4_parser.cc" break; case 374: // not_empty_subnet4_list: not_empty_subnet4_list "," -#line 1481 "dhcp4_parser.yy" +#line 1486 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2639 "dhcp4_parser.cc" +#line 2644 "dhcp4_parser.cc" break; case 375: // $@58: %empty -#line 1490 "dhcp4_parser.yy" +#line 1495 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2649 "dhcp4_parser.cc" +#line 2654 "dhcp4_parser.cc" break; case 376: // subnet4: "{" $@58 subnet4_params "}" -#line 1494 "dhcp4_parser.yy" +#line 1499 "dhcp4_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2671,153 +2676,153 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2675 "dhcp4_parser.cc" +#line 2680 "dhcp4_parser.cc" break; case 377: // $@59: %empty -#line 1516 "dhcp4_parser.yy" +#line 1521 "dhcp4_parser.yy" { // Parse the subnet4 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2685 "dhcp4_parser.cc" +#line 2690 "dhcp4_parser.cc" break; case 378: // sub_subnet4: "{" $@59 subnet4_params "}" -#line 1520 "dhcp4_parser.yy" +#line 1525 "dhcp4_parser.yy" { // The subnet subnet4 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2695 "dhcp4_parser.cc" +#line 2700 "dhcp4_parser.cc" break; case 381: // subnet4_params: subnet4_params "," -#line 1529 "dhcp4_parser.yy" +#line 1534 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2703 "dhcp4_parser.cc" +#line 2708 "dhcp4_parser.cc" break; case 430: // $@60: %empty -#line 1585 "dhcp4_parser.yy" +#line 1590 "dhcp4_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2712 "dhcp4_parser.cc" +#line 2717 "dhcp4_parser.cc" break; case 431: // subnet: "subnet" $@60 ":" "constant string" -#line 1588 "dhcp4_parser.yy" +#line 1593 "dhcp4_parser.yy" { ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2722 "dhcp4_parser.cc" +#line 2727 "dhcp4_parser.cc" break; case 432: // $@61: %empty -#line 1594 "dhcp4_parser.yy" +#line 1599 "dhcp4_parser.yy" { ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2731 "dhcp4_parser.cc" +#line 2736 "dhcp4_parser.cc" break; case 433: // subnet_4o6_interface: "4o6-interface" $@61 ":" "constant string" -#line 1597 "dhcp4_parser.yy" +#line 1602 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface", iface); ctx.leave(); } -#line 2741 "dhcp4_parser.cc" +#line 2746 "dhcp4_parser.cc" break; case 434: // $@62: %empty -#line 1603 "dhcp4_parser.yy" +#line 1608 "dhcp4_parser.yy" { ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2750 "dhcp4_parser.cc" +#line 2755 "dhcp4_parser.cc" break; case 435: // subnet_4o6_interface_id: "4o6-interface-id" $@62 ":" "constant string" -#line 1606 "dhcp4_parser.yy" +#line 1611 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-interface-id", iface); ctx.leave(); } -#line 2760 "dhcp4_parser.cc" +#line 2765 "dhcp4_parser.cc" break; case 436: // $@63: %empty -#line 1612 "dhcp4_parser.yy" +#line 1617 "dhcp4_parser.yy" { ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2769 "dhcp4_parser.cc" +#line 2774 "dhcp4_parser.cc" break; case 437: // subnet_4o6_subnet: "4o6-subnet" $@63 ":" "constant string" -#line 1615 "dhcp4_parser.yy" +#line 1620 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("4o6-subnet", iface); ctx.leave(); } -#line 2779 "dhcp4_parser.cc" +#line 2784 "dhcp4_parser.cc" break; case 438: // $@64: %empty -#line 1621 "dhcp4_parser.yy" +#line 1626 "dhcp4_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2788 "dhcp4_parser.cc" +#line 2793 "dhcp4_parser.cc" break; case 439: // interface: "interface" $@64 ":" "constant string" -#line 1624 "dhcp4_parser.yy" +#line 1629 "dhcp4_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2798 "dhcp4_parser.cc" +#line 2803 "dhcp4_parser.cc" break; case 440: // $@65: %empty -#line 1630 "dhcp4_parser.yy" +#line 1635 "dhcp4_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2807 "dhcp4_parser.cc" +#line 2812 "dhcp4_parser.cc" break; case 441: // client_class: "client-class" $@65 ":" "constant string" -#line 1633 "dhcp4_parser.yy" +#line 1638 "dhcp4_parser.yy" { ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2817 "dhcp4_parser.cc" +#line 2822 "dhcp4_parser.cc" break; case 442: // $@66: %empty -#line 1639 "dhcp4_parser.yy" +#line 1644 "dhcp4_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2825,102 +2830,102 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2829 "dhcp4_parser.cc" +#line 2834 "dhcp4_parser.cc" break; case 443: // require_client_classes: "require-client-classes" $@66 ":" list_strings -#line 1645 "dhcp4_parser.yy" +#line 1650 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2838 "dhcp4_parser.cc" +#line 2843 "dhcp4_parser.cc" break; case 444: // reservations_global: "reservations-global" ":" "boolean" -#line 1650 "dhcp4_parser.yy" +#line 1655 "dhcp4_parser.yy" { ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-global", b); } -#line 2848 "dhcp4_parser.cc" +#line 2853 "dhcp4_parser.cc" break; case 445: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1656 "dhcp4_parser.yy" +#line 1661 "dhcp4_parser.yy" { ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-in-subnet", b); } -#line 2858 "dhcp4_parser.cc" +#line 2863 "dhcp4_parser.cc" break; case 446: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1662 "dhcp4_parser.yy" +#line 1667 "dhcp4_parser.yy" { ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-out-of-pool", b); } -#line 2868 "dhcp4_parser.cc" +#line 2873 "dhcp4_parser.cc" break; case 447: // $@67: %empty -#line 1668 "dhcp4_parser.yy" +#line 1673 "dhcp4_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2877 "dhcp4_parser.cc" +#line 2882 "dhcp4_parser.cc" break; case 448: // reservation_mode: "reservation-mode" $@67 ":" hr_mode -#line 1671 "dhcp4_parser.yy" +#line 1676 "dhcp4_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2886 "dhcp4_parser.cc" +#line 2891 "dhcp4_parser.cc" break; case 449: // hr_mode: "disabled" -#line 1676 "dhcp4_parser.yy" +#line 1681 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2892 "dhcp4_parser.cc" +#line 2897 "dhcp4_parser.cc" break; case 450: // hr_mode: "out-of-pool" -#line 1677 "dhcp4_parser.yy" +#line 1682 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2898 "dhcp4_parser.cc" +#line 2903 "dhcp4_parser.cc" break; case 451: // hr_mode: "global" -#line 1678 "dhcp4_parser.yy" +#line 1683 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2904 "dhcp4_parser.cc" +#line 2909 "dhcp4_parser.cc" break; case 452: // hr_mode: "all" -#line 1679 "dhcp4_parser.yy" +#line 1684 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2910 "dhcp4_parser.cc" +#line 2915 "dhcp4_parser.cc" break; case 453: // id: "id" ":" "integer" -#line 1682 "dhcp4_parser.yy" +#line 1687 "dhcp4_parser.yy" { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2920 "dhcp4_parser.cc" +#line 2925 "dhcp4_parser.cc" break; case 454: // $@68: %empty -#line 1690 "dhcp4_parser.yy" +#line 1695 "dhcp4_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2928,54 +2933,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2932 "dhcp4_parser.cc" +#line 2937 "dhcp4_parser.cc" break; case 455: // shared_networks: "shared-networks" $@68 ":" "[" shared_networks_content "]" -#line 1696 "dhcp4_parser.yy" +#line 1701 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2941 "dhcp4_parser.cc" +#line 2946 "dhcp4_parser.cc" break; case 460: // shared_networks_list: shared_networks_list "," -#line 1709 "dhcp4_parser.yy" +#line 1714 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2949 "dhcp4_parser.cc" +#line 2954 "dhcp4_parser.cc" break; case 461: // $@69: %empty -#line 1714 "dhcp4_parser.yy" +#line 1719 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2959 "dhcp4_parser.cc" +#line 2964 "dhcp4_parser.cc" break; case 462: // shared_network: "{" $@69 shared_network_params "}" -#line 1718 "dhcp4_parser.yy" +#line 1723 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 2967 "dhcp4_parser.cc" +#line 2972 "dhcp4_parser.cc" break; case 465: // shared_network_params: shared_network_params "," -#line 1724 "dhcp4_parser.yy" +#line 1729 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2975 "dhcp4_parser.cc" +#line 2980 "dhcp4_parser.cc" break; case 509: // $@70: %empty -#line 1778 "dhcp4_parser.yy" +#line 1783 "dhcp4_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2983,55 +2988,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2987 "dhcp4_parser.cc" +#line 2992 "dhcp4_parser.cc" break; case 510: // option_def_list: "option-def" $@70 ":" "[" option_def_list_content "]" -#line 1784 "dhcp4_parser.yy" +#line 1789 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2996 "dhcp4_parser.cc" +#line 3001 "dhcp4_parser.cc" break; case 511: // $@71: %empty -#line 1792 "dhcp4_parser.yy" +#line 1797 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3005 "dhcp4_parser.cc" +#line 3010 "dhcp4_parser.cc" break; case 512: // sub_option_def_list: "{" $@71 option_def_list "}" -#line 1795 "dhcp4_parser.yy" +#line 1800 "dhcp4_parser.yy" { // parsing completed } -#line 3013 "dhcp4_parser.cc" +#line 3018 "dhcp4_parser.cc" break; case 517: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1807 "dhcp4_parser.yy" +#line 1812 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3021 "dhcp4_parser.cc" +#line 3026 "dhcp4_parser.cc" break; case 518: // $@72: %empty -#line 1814 "dhcp4_parser.yy" +#line 1819 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3031 "dhcp4_parser.cc" +#line 3036 "dhcp4_parser.cc" break; case 519: // option_def_entry: "{" $@72 option_def_params "}" -#line 1818 "dhcp4_parser.yy" +#line 1823 "dhcp4_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3039,21 +3044,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3043 "dhcp4_parser.cc" +#line 3048 "dhcp4_parser.cc" break; case 520: // $@73: %empty -#line 1829 "dhcp4_parser.yy" +#line 1834 "dhcp4_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3053 "dhcp4_parser.cc" +#line 3058 "dhcp4_parser.cc" break; case 521: // sub_option_def: "{" $@73 option_def_params "}" -#line 1833 "dhcp4_parser.yy" +#line 1838 "dhcp4_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3061,115 +3066,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3065 "dhcp4_parser.cc" +#line 3070 "dhcp4_parser.cc" break; case 526: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1849 "dhcp4_parser.yy" +#line 1854 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3073 "dhcp4_parser.cc" +#line 3078 "dhcp4_parser.cc" break; case 538: // code: "code" ":" "integer" -#line 1868 "dhcp4_parser.yy" +#line 1873 "dhcp4_parser.yy" { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 3083 "dhcp4_parser.cc" +#line 3088 "dhcp4_parser.cc" break; case 540: // $@74: %empty -#line 1876 "dhcp4_parser.yy" +#line 1881 "dhcp4_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3092 "dhcp4_parser.cc" +#line 3097 "dhcp4_parser.cc" break; case 541: // option_def_type: "type" $@74 ":" "constant string" -#line 1879 "dhcp4_parser.yy" +#line 1884 "dhcp4_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 3102 "dhcp4_parser.cc" +#line 3107 "dhcp4_parser.cc" break; case 542: // $@75: %empty -#line 1885 "dhcp4_parser.yy" +#line 1890 "dhcp4_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3111 "dhcp4_parser.cc" +#line 3116 "dhcp4_parser.cc" break; case 543: // option_def_record_types: "record-types" $@75 ":" "constant string" -#line 1888 "dhcp4_parser.yy" +#line 1893 "dhcp4_parser.yy" { ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 3121 "dhcp4_parser.cc" +#line 3126 "dhcp4_parser.cc" break; case 544: // $@76: %empty -#line 1894 "dhcp4_parser.yy" +#line 1899 "dhcp4_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3130 "dhcp4_parser.cc" +#line 3135 "dhcp4_parser.cc" break; case 545: // space: "space" $@76 ":" "constant string" -#line 1897 "dhcp4_parser.yy" +#line 1902 "dhcp4_parser.yy" { ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 3140 "dhcp4_parser.cc" +#line 3145 "dhcp4_parser.cc" break; case 547: // $@77: %empty -#line 1905 "dhcp4_parser.yy" +#line 1910 "dhcp4_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3149 "dhcp4_parser.cc" +#line 3154 "dhcp4_parser.cc" break; case 548: // option_def_encapsulate: "encapsulate" $@77 ":" "constant string" -#line 1908 "dhcp4_parser.yy" +#line 1913 "dhcp4_parser.yy" { ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 3159 "dhcp4_parser.cc" +#line 3164 "dhcp4_parser.cc" break; case 549: // option_def_array: "array" ":" "boolean" -#line 1914 "dhcp4_parser.yy" +#line 1919 "dhcp4_parser.yy" { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 3169 "dhcp4_parser.cc" +#line 3174 "dhcp4_parser.cc" break; case 550: // $@78: %empty -#line 1924 "dhcp4_parser.yy" +#line 1929 "dhcp4_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3177,123 +3182,123 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3181 "dhcp4_parser.cc" +#line 3186 "dhcp4_parser.cc" break; case 551: // option_data_list: "option-data" $@78 ":" "[" option_data_list_content "]" -#line 1930 "dhcp4_parser.yy" +#line 1935 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3190 "dhcp4_parser.cc" +#line 3195 "dhcp4_parser.cc" break; case 556: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1945 "dhcp4_parser.yy" +#line 1950 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3198 "dhcp4_parser.cc" +#line 3203 "dhcp4_parser.cc" break; case 557: // $@79: %empty -#line 1952 "dhcp4_parser.yy" +#line 1957 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3208 "dhcp4_parser.cc" +#line 3213 "dhcp4_parser.cc" break; case 558: // option_data_entry: "{" $@79 option_data_params "}" -#line 1956 "dhcp4_parser.yy" +#line 1961 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3217 "dhcp4_parser.cc" +#line 3222 "dhcp4_parser.cc" break; case 559: // $@80: %empty -#line 1964 "dhcp4_parser.yy" +#line 1969 "dhcp4_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3227 "dhcp4_parser.cc" +#line 3232 "dhcp4_parser.cc" break; case 560: // sub_option_data: "{" $@80 option_data_params "}" -#line 1968 "dhcp4_parser.yy" +#line 1973 "dhcp4_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3236 "dhcp4_parser.cc" +#line 3241 "dhcp4_parser.cc" break; case 565: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1984 "dhcp4_parser.yy" +#line 1989 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3244 "dhcp4_parser.cc" +#line 3249 "dhcp4_parser.cc" break; case 577: // $@81: %empty -#line 2005 "dhcp4_parser.yy" +#line 2010 "dhcp4_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3253 "dhcp4_parser.cc" +#line 3258 "dhcp4_parser.cc" break; case 578: // option_data_data: "data" $@81 ":" "constant string" -#line 2008 "dhcp4_parser.yy" +#line 2013 "dhcp4_parser.yy" { ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 3263 "dhcp4_parser.cc" +#line 3268 "dhcp4_parser.cc" break; case 581: // option_data_csv_format: "csv-format" ":" "boolean" -#line 2018 "dhcp4_parser.yy" +#line 2023 "dhcp4_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", csv); } -#line 3273 "dhcp4_parser.cc" +#line 3278 "dhcp4_parser.cc" break; case 582: // option_data_always_send: "always-send" ":" "boolean" -#line 2024 "dhcp4_parser.yy" +#line 2029 "dhcp4_parser.yy" { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 3283 "dhcp4_parser.cc" +#line 3288 "dhcp4_parser.cc" break; case 583: // option_data_never_send: "never-send" ":" "boolean" -#line 2030 "dhcp4_parser.yy" +#line 2035 "dhcp4_parser.yy" { ctx.unique("never-send", ctx.loc2pos(yystack_[2].location)); ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("never-send", cancel); } -#line 3293 "dhcp4_parser.cc" +#line 3298 "dhcp4_parser.cc" break; case 584: // $@82: %empty -#line 2039 "dhcp4_parser.yy" +#line 2044 "dhcp4_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3301,103 +3306,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3305 "dhcp4_parser.cc" +#line 3310 "dhcp4_parser.cc" break; case 585: // pools_list: "pools" $@82 ":" "[" pools_list_content "]" -#line 2045 "dhcp4_parser.yy" +#line 2050 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3314 "dhcp4_parser.cc" +#line 3319 "dhcp4_parser.cc" break; case 590: // not_empty_pools_list: not_empty_pools_list "," -#line 2058 "dhcp4_parser.yy" +#line 2063 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3322 "dhcp4_parser.cc" +#line 3327 "dhcp4_parser.cc" break; case 591: // $@83: %empty -#line 2063 "dhcp4_parser.yy" +#line 2068 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3332 "dhcp4_parser.cc" +#line 3337 "dhcp4_parser.cc" break; case 592: // pool_list_entry: "{" $@83 pool_params "}" -#line 2067 "dhcp4_parser.yy" +#line 2072 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3342 "dhcp4_parser.cc" +#line 3347 "dhcp4_parser.cc" break; case 593: // $@84: %empty -#line 2073 "dhcp4_parser.yy" +#line 2078 "dhcp4_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3352 "dhcp4_parser.cc" +#line 3357 "dhcp4_parser.cc" break; case 594: // sub_pool4: "{" $@84 pool_params "}" -#line 2077 "dhcp4_parser.yy" +#line 2082 "dhcp4_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3362 "dhcp4_parser.cc" +#line 3367 "dhcp4_parser.cc" break; case 597: // pool_params: pool_params "," -#line 2085 "dhcp4_parser.yy" +#line 2090 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3370 "dhcp4_parser.cc" +#line 3375 "dhcp4_parser.cc" break; case 605: // $@85: %empty -#line 2099 "dhcp4_parser.yy" +#line 2104 "dhcp4_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3379 "dhcp4_parser.cc" +#line 3384 "dhcp4_parser.cc" break; case 606: // pool_entry: "pool" $@85 ":" "constant string" -#line 2102 "dhcp4_parser.yy" +#line 2107 "dhcp4_parser.yy" { ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 3389 "dhcp4_parser.cc" +#line 3394 "dhcp4_parser.cc" break; case 607: // $@86: %empty -#line 2108 "dhcp4_parser.yy" +#line 2113 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3397 "dhcp4_parser.cc" +#line 3402 "dhcp4_parser.cc" break; case 608: // user_context: "user-context" $@86 ":" map_value -#line 2110 "dhcp4_parser.yy" +#line 2115 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3420,19 +3425,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3424 "dhcp4_parser.cc" +#line 3429 "dhcp4_parser.cc" break; case 609: // $@87: %empty -#line 2133 "dhcp4_parser.yy" +#line 2138 "dhcp4_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3432 "dhcp4_parser.cc" +#line 3437 "dhcp4_parser.cc" break; case 610: // comment: "comment" $@87 ":" "constant string" -#line 2135 "dhcp4_parser.yy" +#line 2140 "dhcp4_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3457,11 +3462,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3461 "dhcp4_parser.cc" +#line 3466 "dhcp4_parser.cc" break; case 611: // $@88: %empty -#line 2163 "dhcp4_parser.yy" +#line 2168 "dhcp4_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3469,150 +3474,150 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3473 "dhcp4_parser.cc" +#line 3478 "dhcp4_parser.cc" break; case 612: // reservations: "reservations" $@88 ":" "[" reservations_list "]" -#line 2169 "dhcp4_parser.yy" +#line 2174 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3482 "dhcp4_parser.cc" +#line 3487 "dhcp4_parser.cc" break; case 617: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2180 "dhcp4_parser.yy" +#line 2185 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3490 "dhcp4_parser.cc" +#line 3495 "dhcp4_parser.cc" break; case 618: // $@89: %empty -#line 2185 "dhcp4_parser.yy" +#line 2190 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3500 "dhcp4_parser.cc" +#line 3505 "dhcp4_parser.cc" break; case 619: // reservation: "{" $@89 reservation_params "}" -#line 2189 "dhcp4_parser.yy" +#line 2194 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3509 "dhcp4_parser.cc" +#line 3514 "dhcp4_parser.cc" break; case 620: // $@90: %empty -#line 2194 "dhcp4_parser.yy" +#line 2199 "dhcp4_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3519 "dhcp4_parser.cc" +#line 3524 "dhcp4_parser.cc" break; case 621: // sub_reservation: "{" $@90 reservation_params "}" -#line 2198 "dhcp4_parser.yy" +#line 2203 "dhcp4_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3528 "dhcp4_parser.cc" +#line 3533 "dhcp4_parser.cc" break; case 626: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2209 "dhcp4_parser.yy" +#line 2214 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3536 "dhcp4_parser.cc" +#line 3541 "dhcp4_parser.cc" break; case 642: // $@91: %empty -#line 2232 "dhcp4_parser.yy" +#line 2237 "dhcp4_parser.yy" { ctx.unique("next-server", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3545 "dhcp4_parser.cc" +#line 3550 "dhcp4_parser.cc" break; case 643: // next_server: "next-server" $@91 ":" "constant string" -#line 2235 "dhcp4_parser.yy" +#line 2240 "dhcp4_parser.yy" { ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("next-server", next_server); ctx.leave(); } -#line 3555 "dhcp4_parser.cc" +#line 3560 "dhcp4_parser.cc" break; case 644: // $@92: %empty -#line 2241 "dhcp4_parser.yy" +#line 2246 "dhcp4_parser.yy" { ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3564 "dhcp4_parser.cc" +#line 3569 "dhcp4_parser.cc" break; case 645: // server_hostname: "server-hostname" $@92 ":" "constant string" -#line 2244 "dhcp4_parser.yy" +#line 2249 "dhcp4_parser.yy" { ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-hostname", srv); ctx.leave(); } -#line 3574 "dhcp4_parser.cc" +#line 3579 "dhcp4_parser.cc" break; case 646: // $@93: %empty -#line 2250 "dhcp4_parser.yy" +#line 2255 "dhcp4_parser.yy" { ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3583 "dhcp4_parser.cc" +#line 3588 "dhcp4_parser.cc" break; case 647: // boot_file_name: "boot-file-name" $@93 ":" "constant string" -#line 2253 "dhcp4_parser.yy" +#line 2258 "dhcp4_parser.yy" { ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-file-name", bootfile); ctx.leave(); } -#line 3593 "dhcp4_parser.cc" +#line 3598 "dhcp4_parser.cc" break; case 648: // $@94: %empty -#line 2259 "dhcp4_parser.yy" +#line 2264 "dhcp4_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3602 "dhcp4_parser.cc" +#line 3607 "dhcp4_parser.cc" break; case 649: // ip_address: "ip-address" $@94 ":" "constant string" -#line 2262 "dhcp4_parser.yy" +#line 2267 "dhcp4_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3612 "dhcp4_parser.cc" +#line 3617 "dhcp4_parser.cc" break; case 650: // $@95: %empty -#line 2268 "dhcp4_parser.yy" +#line 2273 "dhcp4_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3620,134 +3625,134 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3624 "dhcp4_parser.cc" +#line 3629 "dhcp4_parser.cc" break; case 651: // ip_addresses: "ip-addresses" $@95 ":" list_strings -#line 2274 "dhcp4_parser.yy" +#line 2279 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3633 "dhcp4_parser.cc" +#line 3638 "dhcp4_parser.cc" break; case 652: // $@96: %empty -#line 2279 "dhcp4_parser.yy" +#line 2284 "dhcp4_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3642 "dhcp4_parser.cc" +#line 3647 "dhcp4_parser.cc" break; case 653: // duid: "duid" $@96 ":" "constant string" -#line 2282 "dhcp4_parser.yy" +#line 2287 "dhcp4_parser.yy" { ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3652 "dhcp4_parser.cc" +#line 3657 "dhcp4_parser.cc" break; case 654: // $@97: %empty -#line 2288 "dhcp4_parser.yy" +#line 2293 "dhcp4_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3661 "dhcp4_parser.cc" +#line 3666 "dhcp4_parser.cc" break; case 655: // hw_address: "hw-address" $@97 ":" "constant string" -#line 2291 "dhcp4_parser.yy" +#line 2296 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3671 "dhcp4_parser.cc" +#line 3676 "dhcp4_parser.cc" break; case 656: // $@98: %empty -#line 2297 "dhcp4_parser.yy" +#line 2302 "dhcp4_parser.yy" { ctx.unique("client-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3680 "dhcp4_parser.cc" +#line 3685 "dhcp4_parser.cc" break; case 657: // client_id_value: "client-id" $@98 ":" "constant string" -#line 2300 "dhcp4_parser.yy" +#line 2305 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-id", hw); ctx.leave(); } -#line 3690 "dhcp4_parser.cc" +#line 3695 "dhcp4_parser.cc" break; case 658: // $@99: %empty -#line 2306 "dhcp4_parser.yy" +#line 2311 "dhcp4_parser.yy" { ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3699 "dhcp4_parser.cc" +#line 3704 "dhcp4_parser.cc" break; case 659: // circuit_id_value: "circuit-id" $@99 ":" "constant string" -#line 2309 "dhcp4_parser.yy" +#line 2314 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("circuit-id", hw); ctx.leave(); } -#line 3709 "dhcp4_parser.cc" +#line 3714 "dhcp4_parser.cc" break; case 660: // $@100: %empty -#line 2315 "dhcp4_parser.yy" +#line 2320 "dhcp4_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3718 "dhcp4_parser.cc" +#line 3723 "dhcp4_parser.cc" break; case 661: // flex_id_value: "flex-id" $@100 ":" "constant string" -#line 2318 "dhcp4_parser.yy" +#line 2323 "dhcp4_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3728 "dhcp4_parser.cc" +#line 3733 "dhcp4_parser.cc" break; case 662: // $@101: %empty -#line 2324 "dhcp4_parser.yy" +#line 2329 "dhcp4_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3737 "dhcp4_parser.cc" +#line 3742 "dhcp4_parser.cc" break; case 663: // hostname: "hostname" $@101 ":" "constant string" -#line 2327 "dhcp4_parser.yy" +#line 2332 "dhcp4_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3747 "dhcp4_parser.cc" +#line 3752 "dhcp4_parser.cc" break; case 664: // $@102: %empty -#line 2333 "dhcp4_parser.yy" +#line 2338 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3755,20 +3760,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3759 "dhcp4_parser.cc" +#line 3764 "dhcp4_parser.cc" break; case 665: // reservation_client_classes: "client-classes" $@102 ":" list_strings -#line 2339 "dhcp4_parser.yy" +#line 2344 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3768 "dhcp4_parser.cc" +#line 3773 "dhcp4_parser.cc" break; case 666: // $@103: %empty -#line 2347 "dhcp4_parser.yy" +#line 2352 "dhcp4_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3776,20 +3781,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3780 "dhcp4_parser.cc" +#line 3785 "dhcp4_parser.cc" break; case 667: // relay: "relay" $@103 ":" "{" relay_map "}" -#line 2353 "dhcp4_parser.yy" +#line 2358 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3789 "dhcp4_parser.cc" +#line 3794 "dhcp4_parser.cc" break; case 670: // $@104: %empty -#line 2365 "dhcp4_parser.yy" +#line 2370 "dhcp4_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3797,114 +3802,114 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3801 "dhcp4_parser.cc" +#line 3806 "dhcp4_parser.cc" break; case 671: // client_classes: "client-classes" $@104 ":" "[" client_classes_list "]" -#line 2371 "dhcp4_parser.yy" +#line 2376 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3810 "dhcp4_parser.cc" +#line 3815 "dhcp4_parser.cc" break; case 674: // client_classes_list: client_classes_list "," -#line 2378 "dhcp4_parser.yy" +#line 2383 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3818 "dhcp4_parser.cc" +#line 3823 "dhcp4_parser.cc" break; case 675: // $@105: %empty -#line 2383 "dhcp4_parser.yy" +#line 2388 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3828 "dhcp4_parser.cc" +#line 3833 "dhcp4_parser.cc" break; case 676: // client_class_entry: "{" $@105 client_class_params "}" -#line 2387 "dhcp4_parser.yy" +#line 2392 "dhcp4_parser.yy" { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3838 "dhcp4_parser.cc" +#line 3843 "dhcp4_parser.cc" break; case 681: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2399 "dhcp4_parser.yy" +#line 2404 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3846 "dhcp4_parser.cc" +#line 3851 "dhcp4_parser.cc" break; case 699: // $@106: %empty -#line 2424 "dhcp4_parser.yy" +#line 2429 "dhcp4_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3855 "dhcp4_parser.cc" +#line 3860 "dhcp4_parser.cc" break; case 700: // client_class_test: "test" $@106 ":" "constant string" -#line 2427 "dhcp4_parser.yy" +#line 2432 "dhcp4_parser.yy" { ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3865 "dhcp4_parser.cc" +#line 3870 "dhcp4_parser.cc" break; case 701: // $@107: %empty -#line 2433 "dhcp4_parser.yy" +#line 2438 "dhcp4_parser.yy" { ctx.unique("template-test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3874 "dhcp4_parser.cc" +#line 3879 "dhcp4_parser.cc" break; case 702: // client_class_template_test: "template-test" $@107 ":" "constant string" -#line 2436 "dhcp4_parser.yy" +#line 2441 "dhcp4_parser.yy" { ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("template-test", template_test); ctx.leave(); } -#line 3884 "dhcp4_parser.cc" +#line 3889 "dhcp4_parser.cc" break; case 703: // only_if_required: "only-if-required" ":" "boolean" -#line 2442 "dhcp4_parser.yy" +#line 2447 "dhcp4_parser.yy" { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3894 "dhcp4_parser.cc" +#line 3899 "dhcp4_parser.cc" break; case 704: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2450 "dhcp4_parser.yy" +#line 2455 "dhcp4_parser.yy" { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 3904 "dhcp4_parser.cc" +#line 3909 "dhcp4_parser.cc" break; case 705: // $@108: %empty -#line 2458 "dhcp4_parser.yy" +#line 2463 "dhcp4_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3912,66 +3917,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 3916 "dhcp4_parser.cc" +#line 3921 "dhcp4_parser.cc" break; case 706: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}" -#line 2464 "dhcp4_parser.yy" +#line 2469 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3925 "dhcp4_parser.cc" +#line 3930 "dhcp4_parser.cc" break; case 709: // control_socket_params: control_socket_params "," -#line 2471 "dhcp4_parser.yy" +#line 2476 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3933 "dhcp4_parser.cc" +#line 3938 "dhcp4_parser.cc" break; case 715: // $@109: %empty -#line 2483 "dhcp4_parser.yy" +#line 2488 "dhcp4_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3942 "dhcp4_parser.cc" +#line 3947 "dhcp4_parser.cc" break; case 716: // control_socket_type: "socket-type" $@109 ":" "constant string" -#line 2486 "dhcp4_parser.yy" +#line 2491 "dhcp4_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 3952 "dhcp4_parser.cc" +#line 3957 "dhcp4_parser.cc" break; case 717: // $@110: %empty -#line 2492 "dhcp4_parser.yy" +#line 2497 "dhcp4_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3961 "dhcp4_parser.cc" +#line 3966 "dhcp4_parser.cc" break; case 718: // control_socket_name: "socket-name" $@110 ":" "constant string" -#line 2495 "dhcp4_parser.yy" +#line 2500 "dhcp4_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 3971 "dhcp4_parser.cc" +#line 3976 "dhcp4_parser.cc" break; case 719: // $@111: %empty -#line 2504 "dhcp4_parser.yy" +#line 2509 "dhcp4_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3979,87 +3984,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 3983 "dhcp4_parser.cc" +#line 3988 "dhcp4_parser.cc" break; case 720: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}" -#line 2510 "dhcp4_parser.yy" +#line 2515 "dhcp4_parser.yy" { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3994 "dhcp4_parser.cc" +#line 3999 "dhcp4_parser.cc" break; case 723: // queue_control_params: queue_control_params "," -#line 2519 "dhcp4_parser.yy" +#line 2524 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4002 "dhcp4_parser.cc" +#line 4007 "dhcp4_parser.cc" break; case 730: // enable_queue: "enable-queue" ":" "boolean" -#line 2532 "dhcp4_parser.yy" +#line 2537 "dhcp4_parser.yy" { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 4012 "dhcp4_parser.cc" +#line 4017 "dhcp4_parser.cc" break; case 731: // $@112: %empty -#line 2538 "dhcp4_parser.yy" +#line 2543 "dhcp4_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4021 "dhcp4_parser.cc" +#line 4026 "dhcp4_parser.cc" break; case 732: // queue_type: "queue-type" $@112 ":" "constant string" -#line 2541 "dhcp4_parser.yy" +#line 2546 "dhcp4_parser.yy" { ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 4031 "dhcp4_parser.cc" +#line 4036 "dhcp4_parser.cc" break; case 733: // capacity: "capacity" ":" "integer" -#line 2547 "dhcp4_parser.yy" +#line 2552 "dhcp4_parser.yy" { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 4041 "dhcp4_parser.cc" +#line 4046 "dhcp4_parser.cc" break; case 734: // $@113: %empty -#line 2553 "dhcp4_parser.yy" +#line 2558 "dhcp4_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4050 "dhcp4_parser.cc" +#line 4055 "dhcp4_parser.cc" break; case 735: // arbitrary_map_entry: "constant string" $@113 ":" value -#line 2556 "dhcp4_parser.yy" +#line 2561 "dhcp4_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4059 "dhcp4_parser.cc" +#line 4064 "dhcp4_parser.cc" break; case 736: // $@114: %empty -#line 2563 "dhcp4_parser.yy" +#line 2568 "dhcp4_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4067,291 +4072,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 4071 "dhcp4_parser.cc" +#line 4076 "dhcp4_parser.cc" break; case 737: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}" -#line 2569 "dhcp4_parser.yy" +#line 2574 "dhcp4_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4082 "dhcp4_parser.cc" +#line 4087 "dhcp4_parser.cc" break; case 738: // $@115: %empty -#line 2576 "dhcp4_parser.yy" +#line 2581 "dhcp4_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4092 "dhcp4_parser.cc" +#line 4097 "dhcp4_parser.cc" break; case 739: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}" -#line 2580 "dhcp4_parser.yy" +#line 2585 "dhcp4_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 4102 "dhcp4_parser.cc" +#line 4107 "dhcp4_parser.cc" break; case 742: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2588 "dhcp4_parser.yy" +#line 2593 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4110 "dhcp4_parser.cc" +#line 4115 "dhcp4_parser.cc" break; case 761: // enable_updates: "enable-updates" ":" "boolean" -#line 2613 "dhcp4_parser.yy" +#line 2618 "dhcp4_parser.yy" { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 4120 "dhcp4_parser.cc" +#line 4125 "dhcp4_parser.cc" break; case 762: // $@116: %empty -#line 2619 "dhcp4_parser.yy" +#line 2624 "dhcp4_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4129 "dhcp4_parser.cc" +#line 4134 "dhcp4_parser.cc" break; case 763: // server_ip: "server-ip" $@116 ":" "constant string" -#line 2622 "dhcp4_parser.yy" +#line 2627 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 4139 "dhcp4_parser.cc" +#line 4144 "dhcp4_parser.cc" break; case 764: // server_port: "server-port" ":" "integer" -#line 2628 "dhcp4_parser.yy" +#line 2633 "dhcp4_parser.yy" { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 4149 "dhcp4_parser.cc" +#line 4154 "dhcp4_parser.cc" break; case 765: // $@117: %empty -#line 2634 "dhcp4_parser.yy" +#line 2639 "dhcp4_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4158 "dhcp4_parser.cc" +#line 4163 "dhcp4_parser.cc" break; case 766: // sender_ip: "sender-ip" $@117 ":" "constant string" -#line 2637 "dhcp4_parser.yy" +#line 2642 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 4168 "dhcp4_parser.cc" +#line 4173 "dhcp4_parser.cc" break; case 767: // sender_port: "sender-port" ":" "integer" -#line 2643 "dhcp4_parser.yy" +#line 2648 "dhcp4_parser.yy" { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 4178 "dhcp4_parser.cc" +#line 4183 "dhcp4_parser.cc" break; case 768: // max_queue_size: "max-queue-size" ":" "integer" -#line 2649 "dhcp4_parser.yy" +#line 2654 "dhcp4_parser.yy" { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 4188 "dhcp4_parser.cc" +#line 4193 "dhcp4_parser.cc" break; case 769: // $@118: %empty -#line 2655 "dhcp4_parser.yy" +#line 2660 "dhcp4_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4197 "dhcp4_parser.cc" +#line 4202 "dhcp4_parser.cc" break; case 770: // ncr_protocol: "ncr-protocol" $@118 ":" ncr_protocol_value -#line 2658 "dhcp4_parser.yy" +#line 2663 "dhcp4_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4206 "dhcp4_parser.cc" +#line 4211 "dhcp4_parser.cc" break; case 771: // ncr_protocol_value: "udp" -#line 2664 "dhcp4_parser.yy" +#line 2669 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4212 "dhcp4_parser.cc" +#line 4217 "dhcp4_parser.cc" break; case 772: // ncr_protocol_value: "tcp" -#line 2665 "dhcp4_parser.yy" +#line 2670 "dhcp4_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4218 "dhcp4_parser.cc" +#line 4223 "dhcp4_parser.cc" break; case 773: // $@119: %empty -#line 2668 "dhcp4_parser.yy" +#line 2673 "dhcp4_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4227 "dhcp4_parser.cc" +#line 4232 "dhcp4_parser.cc" break; case 774: // ncr_format: "ncr-format" $@119 ":" "JSON" -#line 2671 "dhcp4_parser.yy" +#line 2676 "dhcp4_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4237 "dhcp4_parser.cc" +#line 4242 "dhcp4_parser.cc" break; case 775: // $@120: %empty -#line 2678 "dhcp4_parser.yy" +#line 2683 "dhcp4_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4246 "dhcp4_parser.cc" +#line 4251 "dhcp4_parser.cc" break; case 776: // dep_qualifying_suffix: "qualifying-suffix" $@120 ":" "constant string" -#line 2681 "dhcp4_parser.yy" +#line 2686 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4256 "dhcp4_parser.cc" +#line 4261 "dhcp4_parser.cc" break; case 777: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2688 "dhcp4_parser.yy" +#line 2693 "dhcp4_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4266 "dhcp4_parser.cc" +#line 4271 "dhcp4_parser.cc" break; case 778: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2695 "dhcp4_parser.yy" +#line 2700 "dhcp4_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4276 "dhcp4_parser.cc" +#line 4281 "dhcp4_parser.cc" break; case 779: // $@121: %empty -#line 2702 "dhcp4_parser.yy" +#line 2707 "dhcp4_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4285 "dhcp4_parser.cc" +#line 4290 "dhcp4_parser.cc" break; case 780: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value -#line 2705 "dhcp4_parser.yy" +#line 2710 "dhcp4_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4294 "dhcp4_parser.cc" +#line 4299 "dhcp4_parser.cc" break; case 781: // $@122: %empty -#line 2711 "dhcp4_parser.yy" +#line 2716 "dhcp4_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4303 "dhcp4_parser.cc" +#line 4308 "dhcp4_parser.cc" break; case 782: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string" -#line 2714 "dhcp4_parser.yy" +#line 2719 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4313 "dhcp4_parser.cc" +#line 4318 "dhcp4_parser.cc" break; case 783: // $@123: %empty -#line 2721 "dhcp4_parser.yy" +#line 2726 "dhcp4_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4322 "dhcp4_parser.cc" +#line 4327 "dhcp4_parser.cc" break; case 784: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string" -#line 2724 "dhcp4_parser.yy" +#line 2729 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 4332 "dhcp4_parser.cc" +#line 4337 "dhcp4_parser.cc" break; case 785: // $@124: %empty -#line 2731 "dhcp4_parser.yy" +#line 2736 "dhcp4_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4341 "dhcp4_parser.cc" +#line 4346 "dhcp4_parser.cc" break; case 786: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string" -#line 2734 "dhcp4_parser.yy" +#line 2739 "dhcp4_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 4351 "dhcp4_parser.cc" +#line 4356 "dhcp4_parser.cc" break; case 787: // $@125: %empty -#line 2743 "dhcp4_parser.yy" +#line 2748 "dhcp4_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4359,48 +4364,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4363 "dhcp4_parser.cc" +#line 4368 "dhcp4_parser.cc" break; case 788: // config_control: "config-control" $@125 ":" "{" config_control_params "}" -#line 2749 "dhcp4_parser.yy" +#line 2754 "dhcp4_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4373 "dhcp4_parser.cc" +#line 4378 "dhcp4_parser.cc" break; case 789: // $@126: %empty -#line 2755 "dhcp4_parser.yy" +#line 2760 "dhcp4_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4383 "dhcp4_parser.cc" +#line 4388 "dhcp4_parser.cc" break; case 790: // sub_config_control: "{" $@126 config_control_params "}" -#line 2759 "dhcp4_parser.yy" +#line 2764 "dhcp4_parser.yy" { // No config_control params are required // parsing completed } -#line 4392 "dhcp4_parser.cc" +#line 4397 "dhcp4_parser.cc" break; case 793: // config_control_params: config_control_params "," -#line 2767 "dhcp4_parser.yy" +#line 2772 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4400 "dhcp4_parser.cc" +#line 4405 "dhcp4_parser.cc" break; case 796: // $@127: %empty -#line 2777 "dhcp4_parser.yy" +#line 2782 "dhcp4_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4408,30 +4413,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4412 "dhcp4_parser.cc" +#line 4417 "dhcp4_parser.cc" break; case 797: // config_databases: "config-databases" $@127 ":" "[" database_list "]" -#line 2783 "dhcp4_parser.yy" +#line 2788 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4421 "dhcp4_parser.cc" +#line 4426 "dhcp4_parser.cc" break; case 798: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2788 "dhcp4_parser.yy" +#line 2793 "dhcp4_parser.yy" { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 4431 "dhcp4_parser.cc" +#line 4436 "dhcp4_parser.cc" break; case 799: // $@128: %empty -#line 2796 "dhcp4_parser.yy" +#line 2801 "dhcp4_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4439,83 +4444,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4443 "dhcp4_parser.cc" +#line 4448 "dhcp4_parser.cc" break; case 800: // loggers: "loggers" $@128 ":" "[" loggers_entries "]" -#line 2802 "dhcp4_parser.yy" +#line 2807 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4452 "dhcp4_parser.cc" +#line 4457 "dhcp4_parser.cc" break; case 803: // loggers_entries: loggers_entries "," -#line 2811 "dhcp4_parser.yy" +#line 2816 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4460 "dhcp4_parser.cc" +#line 4465 "dhcp4_parser.cc" break; case 804: // $@129: %empty -#line 2817 "dhcp4_parser.yy" +#line 2822 "dhcp4_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4470 "dhcp4_parser.cc" +#line 4475 "dhcp4_parser.cc" break; case 805: // logger_entry: "{" $@129 logger_params "}" -#line 2821 "dhcp4_parser.yy" +#line 2826 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4478 "dhcp4_parser.cc" +#line 4483 "dhcp4_parser.cc" break; case 808: // logger_params: logger_params "," -#line 2827 "dhcp4_parser.yy" +#line 2832 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4486 "dhcp4_parser.cc" +#line 4491 "dhcp4_parser.cc" break; case 816: // debuglevel: "debuglevel" ":" "integer" -#line 2841 "dhcp4_parser.yy" +#line 2846 "dhcp4_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 4496 "dhcp4_parser.cc" +#line 4501 "dhcp4_parser.cc" break; case 817: // $@130: %empty -#line 2847 "dhcp4_parser.yy" +#line 2852 "dhcp4_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4505 "dhcp4_parser.cc" +#line 4510 "dhcp4_parser.cc" break; case 818: // severity: "severity" $@130 ":" "constant string" -#line 2850 "dhcp4_parser.yy" +#line 2855 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4515 "dhcp4_parser.cc" +#line 4520 "dhcp4_parser.cc" break; case 819: // $@131: %empty -#line 2856 "dhcp4_parser.yy" +#line 2861 "dhcp4_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4523,122 +4528,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4527 "dhcp4_parser.cc" +#line 4532 "dhcp4_parser.cc" break; case 820: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]" -#line 2862 "dhcp4_parser.yy" +#line 2867 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4536 "dhcp4_parser.cc" +#line 4541 "dhcp4_parser.cc" break; case 823: // output_options_list_content: output_options_list_content "," -#line 2869 "dhcp4_parser.yy" +#line 2874 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4544 "dhcp4_parser.cc" +#line 4549 "dhcp4_parser.cc" break; case 824: // $@132: %empty -#line 2874 "dhcp4_parser.yy" +#line 2879 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4554 "dhcp4_parser.cc" +#line 4559 "dhcp4_parser.cc" break; case 825: // output_entry: "{" $@132 output_params_list "}" -#line 2878 "dhcp4_parser.yy" +#line 2883 "dhcp4_parser.yy" { ctx.stack_.pop_back(); } -#line 4562 "dhcp4_parser.cc" +#line 4567 "dhcp4_parser.cc" break; case 828: // output_params_list: output_params_list "," -#line 2884 "dhcp4_parser.yy" +#line 2889 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4570 "dhcp4_parser.cc" +#line 4575 "dhcp4_parser.cc" break; case 834: // $@133: %empty -#line 2896 "dhcp4_parser.yy" +#line 2901 "dhcp4_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4579 "dhcp4_parser.cc" +#line 4584 "dhcp4_parser.cc" break; case 835: // output: "output" $@133 ":" "constant string" -#line 2899 "dhcp4_parser.yy" +#line 2904 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4589 "dhcp4_parser.cc" +#line 4594 "dhcp4_parser.cc" break; case 836: // flush: "flush" ":" "boolean" -#line 2905 "dhcp4_parser.yy" +#line 2910 "dhcp4_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4599 "dhcp4_parser.cc" +#line 4604 "dhcp4_parser.cc" break; case 837: // maxsize: "maxsize" ":" "integer" -#line 2911 "dhcp4_parser.yy" +#line 2916 "dhcp4_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4609 "dhcp4_parser.cc" +#line 4614 "dhcp4_parser.cc" break; case 838: // maxver: "maxver" ":" "integer" -#line 2917 "dhcp4_parser.yy" +#line 2922 "dhcp4_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4619 "dhcp4_parser.cc" +#line 4624 "dhcp4_parser.cc" break; case 839: // $@134: %empty -#line 2923 "dhcp4_parser.yy" +#line 2928 "dhcp4_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4628 "dhcp4_parser.cc" +#line 4633 "dhcp4_parser.cc" break; case 840: // pattern: "pattern" $@134 ":" "constant string" -#line 2926 "dhcp4_parser.yy" +#line 2931 "dhcp4_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4638 "dhcp4_parser.cc" +#line 4643 "dhcp4_parser.cc" break; case 841: // $@135: %empty -#line 2932 "dhcp4_parser.yy" +#line 2937 "dhcp4_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4646,68 +4651,68 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4650 "dhcp4_parser.cc" +#line 4655 "dhcp4_parser.cc" break; case 842: // compatibility: "compatibility" $@135 ":" "{" compatibility_params "}" -#line 2938 "dhcp4_parser.yy" +#line 2943 "dhcp4_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4659 "dhcp4_parser.cc" +#line 4664 "dhcp4_parser.cc" break; case 845: // compatibility_params: compatibility_params "," -#line 2945 "dhcp4_parser.yy" +#line 2950 "dhcp4_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4667 "dhcp4_parser.cc" +#line 4672 "dhcp4_parser.cc" break; case 851: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 2957 "dhcp4_parser.yy" +#line 2962 "dhcp4_parser.yy" { ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lenient-option-parsing", b); } -#line 4677 "dhcp4_parser.cc" +#line 4682 "dhcp4_parser.cc" break; case 852: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean" -#line 2963 "dhcp4_parser.yy" +#line 2968 "dhcp4_parser.yy" { ctx.unique("ignore-dhcp-server-identifier", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ignore-dhcp-server-identifier", b); } -#line 4687 "dhcp4_parser.cc" +#line 4692 "dhcp4_parser.cc" break; case 853: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean" -#line 2969 "dhcp4_parser.yy" +#line 2974 "dhcp4_parser.yy" { ctx.unique("ignore-rai-link-selection", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ignore-rai-link-selection", b); } -#line 4697 "dhcp4_parser.cc" +#line 4702 "dhcp4_parser.cc" break; case 854: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean" -#line 2975 "dhcp4_parser.yy" +#line 2980 "dhcp4_parser.yy" { ctx.unique("exclude-first-last-24", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("exclude-first-last-24", b); } -#line 4707 "dhcp4_parser.cc" +#line 4712 "dhcp4_parser.cc" break; -#line 4711 "dhcp4_parser.cc" +#line 4716 "dhcp4_parser.cc" default: break; @@ -6227,92 +6232,92 @@ namespace isc { namespace dhcp { const short Dhcp4Parser::yyrline_[] = { - 0, 307, 307, 307, 308, 308, 309, 309, 310, 310, - 311, 311, 312, 312, 313, 313, 314, 314, 315, 315, - 316, 316, 317, 317, 318, 318, 319, 319, 327, 328, - 329, 330, 331, 332, 333, 336, 341, 341, 352, 355, - 356, 359, 364, 370, 375, 375, 382, 383, 386, 390, - 394, 400, 400, 407, 408, 411, 415, 419, 429, 438, - 438, 453, 453, 467, 470, 476, 476, 485, 486, 487, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 563, 569, 575, - 581, 587, 593, 599, 605, 611, 617, 623, 629, 629, - 638, 644, 644, 653, 659, 665, 671, 677, 683, 689, - 689, 698, 701, 704, 707, 710, 716, 716, 725, 725, - 734, 740, 746, 752, 752, 761, 761, 770, 776, 782, - 788, 794, 800, 806, 812, 812, 824, 825, 826, 831, - 832, 833, 834, 835, 836, 837, 838, 839, 840, 843, - 843, 852, 852, 863, 863, 871, 872, 875, 875, 883, - 885, 889, 895, 901, 907, 913, 913, 926, 926, 937, - 938, 939, 944, 945, 948, 948, 967, 967, 985, 985, - 998, 998, 1009, 1010, 1013, 1014, 1015, 1020, 1020, 1030, - 1031, 1032, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, - 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, - 1055, 1056, 1057, 1058, 1061, 1061, 1069, 1070, 1071, 1074, - 1074, 1083, 1083, 1092, 1092, 1101, 1107, 1107, 1116, 1122, - 1128, 1134, 1140, 1146, 1152, 1158, 1164, 1170, 1170, 1178, - 1179, 1180, 1183, 1189, 1189, 1198, 1198, 1207, 1207, 1216, - 1216, 1225, 1225, 1236, 1237, 1238, 1243, 1244, 1245, 1246, - 1247, 1250, 1255, 1260, 1265, 1270, 1277, 1277, 1290, 1291, - 1292, 1297, 1298, 1299, 1300, 1301, 1302, 1305, 1311, 1317, - 1323, 1323, 1334, 1335, 1338, 1339, 1340, 1345, 1345, 1355, - 1355, 1365, 1366, 1367, 1370, 1373, 1374, 1377, 1377, 1386, - 1386, 1395, 1395, 1407, 1408, 1409, 1414, 1415, 1416, 1417, - 1418, 1419, 1422, 1428, 1434, 1440, 1446, 1452, 1461, 1461, - 1475, 1476, 1479, 1480, 1481, 1490, 1490, 1516, 1516, 1527, - 1528, 1529, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, - 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, - 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, - 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, - 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, - 1585, 1585, 1594, 1594, 1603, 1603, 1612, 1612, 1621, 1621, - 1630, 1630, 1639, 1639, 1650, 1656, 1662, 1668, 1668, 1676, - 1677, 1678, 1679, 1682, 1690, 1690, 1702, 1703, 1707, 1708, - 1709, 1714, 1714, 1722, 1723, 1724, 1729, 1730, 1731, 1732, - 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, - 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, - 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, - 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1778, - 1778, 1792, 1792, 1801, 1802, 1805, 1806, 1807, 1814, 1814, - 1829, 1829, 1843, 1844, 1847, 1848, 1849, 1854, 1855, 1856, - 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1866, 1868, 1874, - 1876, 1876, 1885, 1885, 1894, 1894, 1903, 1905, 1905, 1914, - 1924, 1924, 1937, 1938, 1943, 1944, 1945, 1952, 1952, 1964, - 1964, 1976, 1977, 1982, 1983, 1984, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2003, 2005, 2005, 2014, - 2016, 2018, 2024, 2030, 2039, 2039, 2052, 2053, 2056, 2057, - 2058, 2063, 2063, 2073, 2073, 2083, 2084, 2085, 2090, 2091, - 2092, 2093, 2094, 2095, 2096, 2099, 2099, 2108, 2108, 2133, - 2133, 2163, 2163, 2174, 2175, 2178, 2179, 2180, 2185, 2185, - 2194, 2194, 2203, 2204, 2207, 2208, 2209, 2215, 2216, 2217, - 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, - 2228, 2229, 2232, 2232, 2241, 2241, 2250, 2250, 2259, 2259, - 2268, 2268, 2279, 2279, 2288, 2288, 2297, 2297, 2306, 2306, - 2315, 2315, 2324, 2324, 2333, 2333, 2347, 2347, 2358, 2359, - 2365, 2365, 2376, 2377, 2378, 2383, 2383, 2393, 2394, 2397, - 2398, 2399, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, - 2412, 2413, 2414, 2415, 2416, 2417, 2418, 2419, 2422, 2424, - 2424, 2433, 2433, 2442, 2450, 2458, 2458, 2469, 2470, 2471, - 2476, 2477, 2478, 2479, 2480, 2483, 2483, 2492, 2492, 2504, - 2504, 2517, 2518, 2519, 2524, 2525, 2526, 2527, 2528, 2529, - 2532, 2538, 2538, 2547, 2553, 2553, 2563, 2563, 2576, 2576, - 2586, 2587, 2588, 2593, 2594, 2595, 2596, 2597, 2598, 2599, - 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, - 2610, 2613, 2619, 2619, 2628, 2634, 2634, 2643, 2649, 2655, - 2655, 2664, 2665, 2668, 2668, 2678, 2678, 2688, 2695, 2702, - 2702, 2711, 2711, 2721, 2721, 2731, 2731, 2743, 2743, 2755, - 2755, 2765, 2766, 2767, 2773, 2774, 2777, 2777, 2788, 2796, - 2796, 2809, 2810, 2811, 2817, 2817, 2825, 2826, 2827, 2832, - 2833, 2834, 2835, 2836, 2837, 2838, 2841, 2847, 2847, 2856, - 2856, 2867, 2868, 2869, 2874, 2874, 2882, 2883, 2884, 2889, - 2890, 2891, 2892, 2893, 2896, 2896, 2905, 2911, 2917, 2923, - 2923, 2932, 2932, 2943, 2944, 2945, 2950, 2951, 2952, 2953, - 2954, 2957, 2963, 2969, 2975 + 0, 312, 312, 312, 313, 313, 314, 314, 315, 315, + 316, 316, 317, 317, 318, 318, 319, 319, 320, 320, + 321, 321, 322, 322, 323, 323, 324, 324, 332, 333, + 334, 335, 336, 337, 338, 341, 346, 346, 357, 360, + 361, 364, 369, 375, 380, 380, 387, 388, 391, 395, + 399, 405, 405, 412, 413, 416, 420, 424, 434, 443, + 443, 458, 458, 472, 475, 481, 481, 490, 491, 492, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, + 559, 560, 561, 562, 563, 564, 565, 568, 574, 580, + 586, 592, 598, 604, 610, 616, 622, 628, 634, 634, + 643, 649, 649, 658, 664, 670, 676, 682, 688, 694, + 694, 703, 706, 709, 712, 715, 721, 721, 730, 730, + 739, 745, 751, 757, 757, 766, 766, 775, 781, 787, + 793, 799, 805, 811, 817, 817, 829, 830, 831, 836, + 837, 838, 839, 840, 841, 842, 843, 844, 845, 848, + 848, 857, 857, 868, 868, 876, 877, 880, 880, 888, + 890, 894, 900, 906, 912, 918, 918, 931, 931, 942, + 943, 944, 949, 950, 953, 953, 972, 972, 990, 990, + 1003, 1003, 1014, 1015, 1018, 1019, 1020, 1025, 1025, 1035, + 1036, 1037, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, + 1060, 1061, 1062, 1063, 1066, 1066, 1074, 1075, 1076, 1079, + 1079, 1088, 1088, 1097, 1097, 1106, 1112, 1112, 1121, 1127, + 1133, 1139, 1145, 1151, 1157, 1163, 1169, 1175, 1175, 1183, + 1184, 1185, 1188, 1194, 1194, 1203, 1203, 1212, 1212, 1221, + 1221, 1230, 1230, 1241, 1242, 1243, 1248, 1249, 1250, 1251, + 1252, 1255, 1260, 1265, 1270, 1275, 1282, 1282, 1295, 1296, + 1297, 1302, 1303, 1304, 1305, 1306, 1307, 1310, 1316, 1322, + 1328, 1328, 1339, 1340, 1343, 1344, 1345, 1350, 1350, 1360, + 1360, 1370, 1371, 1372, 1375, 1378, 1379, 1382, 1382, 1391, + 1391, 1400, 1400, 1412, 1413, 1414, 1419, 1420, 1421, 1422, + 1423, 1424, 1427, 1433, 1439, 1445, 1451, 1457, 1466, 1466, + 1480, 1481, 1484, 1485, 1486, 1495, 1495, 1521, 1521, 1532, + 1533, 1534, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, + 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, + 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, + 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, + 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, + 1590, 1590, 1599, 1599, 1608, 1608, 1617, 1617, 1626, 1626, + 1635, 1635, 1644, 1644, 1655, 1661, 1667, 1673, 1673, 1681, + 1682, 1683, 1684, 1687, 1695, 1695, 1707, 1708, 1712, 1713, + 1714, 1719, 1719, 1727, 1728, 1729, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, + 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1783, + 1783, 1797, 1797, 1806, 1807, 1810, 1811, 1812, 1819, 1819, + 1834, 1834, 1848, 1849, 1852, 1853, 1854, 1859, 1860, 1861, + 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1871, 1873, 1879, + 1881, 1881, 1890, 1890, 1899, 1899, 1908, 1910, 1910, 1919, + 1929, 1929, 1942, 1943, 1948, 1949, 1950, 1957, 1957, 1969, + 1969, 1981, 1982, 1987, 1988, 1989, 1996, 1997, 1998, 1999, + 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2010, 2010, 2019, + 2021, 2023, 2029, 2035, 2044, 2044, 2057, 2058, 2061, 2062, + 2063, 2068, 2068, 2078, 2078, 2088, 2089, 2090, 2095, 2096, + 2097, 2098, 2099, 2100, 2101, 2104, 2104, 2113, 2113, 2138, + 2138, 2168, 2168, 2179, 2180, 2183, 2184, 2185, 2190, 2190, + 2199, 2199, 2208, 2209, 2212, 2213, 2214, 2220, 2221, 2222, + 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, + 2233, 2234, 2237, 2237, 2246, 2246, 2255, 2255, 2264, 2264, + 2273, 2273, 2284, 2284, 2293, 2293, 2302, 2302, 2311, 2311, + 2320, 2320, 2329, 2329, 2338, 2338, 2352, 2352, 2363, 2364, + 2370, 2370, 2381, 2382, 2383, 2388, 2388, 2398, 2399, 2402, + 2403, 2404, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, + 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2427, 2429, + 2429, 2438, 2438, 2447, 2455, 2463, 2463, 2474, 2475, 2476, + 2481, 2482, 2483, 2484, 2485, 2488, 2488, 2497, 2497, 2509, + 2509, 2522, 2523, 2524, 2529, 2530, 2531, 2532, 2533, 2534, + 2537, 2543, 2543, 2552, 2558, 2558, 2568, 2568, 2581, 2581, + 2591, 2592, 2593, 2598, 2599, 2600, 2601, 2602, 2603, 2604, + 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, + 2615, 2618, 2624, 2624, 2633, 2639, 2639, 2648, 2654, 2660, + 2660, 2669, 2670, 2673, 2673, 2683, 2683, 2693, 2700, 2707, + 2707, 2716, 2716, 2726, 2726, 2736, 2736, 2748, 2748, 2760, + 2760, 2770, 2771, 2772, 2778, 2779, 2782, 2782, 2793, 2801, + 2801, 2814, 2815, 2816, 2822, 2822, 2830, 2831, 2832, 2837, + 2838, 2839, 2840, 2841, 2842, 2843, 2846, 2852, 2852, 2861, + 2861, 2872, 2873, 2874, 2879, 2879, 2887, 2888, 2889, 2894, + 2895, 2896, 2897, 2898, 2901, 2901, 2910, 2916, 2922, 2928, + 2928, 2937, 2937, 2948, 2949, 2950, 2955, 2956, 2957, 2958, + 2959, 2962, 2968, 2974, 2980 }; void @@ -6345,9 +6350,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" } } // isc::dhcp -#line 6349 "dhcp4_parser.cc" +#line 6354 "dhcp4_parser.cc" -#line 2981 "dhcp4_parser.yy" +#line 2986 "dhcp4_parser.yy" void diff --git a/src/bin/dhcp4/location.hh b/src/bin/dhcp4/location.hh index 860fbfa0c9..5af9d786cd 100644 --- a/src/bin/dhcp4/location.hh +++ b/src/bin/dhcp4/location.hh @@ -1,3 +1,4 @@ +// Generated 202305171251 // A Bison parser, made by GNU Bison 3.8.2. // Locations for Bison parsers in C++ diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 6036876ad1..9153be76a9 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -48,7 +48,12 @@ #include -#line 52 "dhcp6_parser.cc" +// Avoid warnings with the error counter. +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif + +#line 57 "dhcp6_parser.cc" #ifndef YY_ @@ -141,7 +146,7 @@ #line 14 "dhcp6_parser.yy" namespace isc { namespace dhcp { -#line 145 "dhcp6_parser.cc" +#line 150 "dhcp6_parser.cc" /// Build a parser object. Dhcp6Parser::Dhcp6Parser (isc::dhcp::Parser6Context& ctx_yyarg) @@ -398,75 +403,75 @@ namespace isc { namespace dhcp { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 404 "dhcp6_parser.cc" +#line 409 "dhcp6_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } -#line 410 "dhcp6_parser.cc" +#line 415 "dhcp6_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < double > (); } -#line 416 "dhcp6_parser.cc" +#line 421 "dhcp6_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < bool > (); } -#line 422 "dhcp6_parser.cc" +#line 427 "dhcp6_parser.cc" break; case symbol_kind::S_value: // value -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 428 "dhcp6_parser.cc" +#line 433 "dhcp6_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 434 "dhcp6_parser.cc" +#line 439 "dhcp6_parser.cc" break; case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 440 "dhcp6_parser.cc" +#line 445 "dhcp6_parser.cc" break; case symbol_kind::S_db_type: // db_type -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 446 "dhcp6_parser.cc" +#line 451 "dhcp6_parser.cc" break; case symbol_kind::S_on_fail_mode: // on_fail_mode -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 452 "dhcp6_parser.cc" +#line 457 "dhcp6_parser.cc" break; case symbol_kind::S_hr_mode: // hr_mode -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 458 "dhcp6_parser.cc" +#line 463 "dhcp6_parser.cc" break; case symbol_kind::S_duid_type: // duid_type -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 464 "dhcp6_parser.cc" +#line 469 "dhcp6_parser.cc" break; case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value -#line 302 "dhcp6_parser.yy" +#line 307 "dhcp6_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 470 "dhcp6_parser.cc" +#line 475 "dhcp6_parser.cc" break; default: @@ -744,306 +749,306 @@ namespace isc { namespace dhcp { switch (yyn) { case 2: // $@1: %empty -#line 311 "dhcp6_parser.yy" +#line 316 "dhcp6_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORD; } -#line 750 "dhcp6_parser.cc" +#line 755 "dhcp6_parser.cc" break; case 4: // $@2: %empty -#line 312 "dhcp6_parser.yy" +#line 317 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG; } -#line 756 "dhcp6_parser.cc" +#line 761 "dhcp6_parser.cc" break; case 6: // $@3: %empty -#line 313 "dhcp6_parser.yy" +#line 318 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } -#line 762 "dhcp6_parser.cc" +#line 767 "dhcp6_parser.cc" break; case 8: // $@4: %empty -#line 314 "dhcp6_parser.yy" +#line 319 "dhcp6_parser.yy" { ctx.ctx_ = ctx.INTERFACES_CONFIG; } -#line 768 "dhcp6_parser.cc" +#line 773 "dhcp6_parser.cc" break; case 10: // $@5: %empty -#line 315 "dhcp6_parser.yy" +#line 320 "dhcp6_parser.yy" { ctx.ctx_ = ctx.SUBNET6; } -#line 774 "dhcp6_parser.cc" +#line 779 "dhcp6_parser.cc" break; case 12: // $@6: %empty -#line 316 "dhcp6_parser.yy" +#line 321 "dhcp6_parser.yy" { ctx.ctx_ = ctx.POOLS; } -#line 780 "dhcp6_parser.cc" +#line 785 "dhcp6_parser.cc" break; case 14: // $@7: %empty -#line 317 "dhcp6_parser.yy" +#line 322 "dhcp6_parser.yy" { ctx.ctx_ = ctx.PD_POOLS; } -#line 786 "dhcp6_parser.cc" +#line 791 "dhcp6_parser.cc" break; case 16: // $@8: %empty -#line 318 "dhcp6_parser.yy" +#line 323 "dhcp6_parser.yy" { ctx.ctx_ = ctx.RESERVATIONS; } -#line 792 "dhcp6_parser.cc" +#line 797 "dhcp6_parser.cc" break; case 18: // $@9: %empty -#line 319 "dhcp6_parser.yy" +#line 324 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP6; } -#line 798 "dhcp6_parser.cc" +#line 803 "dhcp6_parser.cc" break; case 20: // $@10: %empty -#line 320 "dhcp6_parser.yy" +#line 325 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DEF; } -#line 804 "dhcp6_parser.cc" +#line 809 "dhcp6_parser.cc" break; case 22: // $@11: %empty -#line 321 "dhcp6_parser.yy" +#line 326 "dhcp6_parser.yy" { ctx.ctx_ = ctx.OPTION_DATA; } -#line 810 "dhcp6_parser.cc" +#line 815 "dhcp6_parser.cc" break; case 24: // $@12: %empty -#line 322 "dhcp6_parser.yy" +#line 327 "dhcp6_parser.yy" { ctx.ctx_ = ctx.HOOKS_LIBRARIES; } -#line 816 "dhcp6_parser.cc" +#line 821 "dhcp6_parser.cc" break; case 26: // $@13: %empty -#line 323 "dhcp6_parser.yy" +#line 328 "dhcp6_parser.yy" { ctx.ctx_ = ctx.DHCP_DDNS; } -#line 822 "dhcp6_parser.cc" +#line 827 "dhcp6_parser.cc" break; case 28: // $@14: %empty -#line 324 "dhcp6_parser.yy" +#line 329 "dhcp6_parser.yy" { ctx.ctx_ = ctx.CONFIG_CONTROL; } -#line 828 "dhcp6_parser.cc" +#line 833 "dhcp6_parser.cc" break; case 30: // value: "integer" -#line 332 "dhcp6_parser.yy" +#line 337 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); } -#line 834 "dhcp6_parser.cc" +#line 839 "dhcp6_parser.cc" break; case 31: // value: "floating point" -#line 333 "dhcp6_parser.yy" +#line 338 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); } -#line 840 "dhcp6_parser.cc" +#line 845 "dhcp6_parser.cc" break; case 32: // value: "boolean" -#line 334 "dhcp6_parser.yy" +#line 339 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); } -#line 846 "dhcp6_parser.cc" +#line 851 "dhcp6_parser.cc" break; case 33: // value: "constant string" -#line 335 "dhcp6_parser.yy" +#line 340 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); } -#line 852 "dhcp6_parser.cc" +#line 857 "dhcp6_parser.cc" break; case 34: // value: "null" -#line 336 "dhcp6_parser.yy" +#line 341 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 858 "dhcp6_parser.cc" +#line 863 "dhcp6_parser.cc" break; case 35: // value: map2 -#line 337 "dhcp6_parser.yy" +#line 342 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 864 "dhcp6_parser.cc" +#line 869 "dhcp6_parser.cc" break; case 36: // value: list_generic -#line 338 "dhcp6_parser.yy" +#line 343 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 870 "dhcp6_parser.cc" +#line 875 "dhcp6_parser.cc" break; case 37: // sub_json: value -#line 341 "dhcp6_parser.yy" +#line 346 "dhcp6_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); } -#line 879 "dhcp6_parser.cc" +#line 884 "dhcp6_parser.cc" break; case 38: // $@15: %empty -#line 346 "dhcp6_parser.yy" +#line 351 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 890 "dhcp6_parser.cc" +#line 895 "dhcp6_parser.cc" break; case 39: // map2: "{" $@15 map_content "}" -#line 351 "dhcp6_parser.yy" +#line 356 "dhcp6_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 900 "dhcp6_parser.cc" +#line 905 "dhcp6_parser.cc" break; case 40: // map_value: map2 -#line 357 "dhcp6_parser.yy" +#line 362 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 906 "dhcp6_parser.cc" +#line 911 "dhcp6_parser.cc" break; case 43: // not_empty_map: "constant string" ":" value -#line 364 "dhcp6_parser.yy" +#line 369 "dhcp6_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 916 "dhcp6_parser.cc" +#line 921 "dhcp6_parser.cc" break; case 44: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 369 "dhcp6_parser.yy" +#line 374 "dhcp6_parser.yy" { // map consisting of a shorter map followed by // comma and string:value ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 927 "dhcp6_parser.cc" +#line 932 "dhcp6_parser.cc" break; case 45: // not_empty_map: not_empty_map "," -#line 375 "dhcp6_parser.yy" +#line 380 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 935 "dhcp6_parser.cc" +#line 940 "dhcp6_parser.cc" break; case 46: // $@16: %empty -#line 380 "dhcp6_parser.yy" +#line 385 "dhcp6_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 944 "dhcp6_parser.cc" +#line 949 "dhcp6_parser.cc" break; case 47: // list_generic: "[" $@16 list_content "]" -#line 383 "dhcp6_parser.yy" +#line 388 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here } -#line 952 "dhcp6_parser.cc" +#line 957 "dhcp6_parser.cc" break; case 50: // not_empty_list: value -#line 391 "dhcp6_parser.yy" +#line 396 "dhcp6_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 961 "dhcp6_parser.cc" +#line 966 "dhcp6_parser.cc" break; case 51: // not_empty_list: not_empty_list "," value -#line 395 "dhcp6_parser.yy" +#line 400 "dhcp6_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 970 "dhcp6_parser.cc" +#line 975 "dhcp6_parser.cc" break; case 52: // not_empty_list: not_empty_list "," -#line 399 "dhcp6_parser.yy" +#line 404 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 978 "dhcp6_parser.cc" +#line 983 "dhcp6_parser.cc" break; case 53: // $@17: %empty -#line 405 "dhcp6_parser.yy" +#line 410 "dhcp6_parser.yy" { // List parsing about to start } -#line 986 "dhcp6_parser.cc" +#line 991 "dhcp6_parser.cc" break; case 54: // list_strings: "[" $@17 list_strings_content "]" -#line 407 "dhcp6_parser.yy" +#line 412 "dhcp6_parser.yy" { // list parsing complete. Put any sanity checking here //ctx.stack_.pop_back(); } -#line 995 "dhcp6_parser.cc" +#line 1000 "dhcp6_parser.cc" break; case 57: // not_empty_list_strings: "constant string" -#line 416 "dhcp6_parser.yy" +#line 421 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 1004 "dhcp6_parser.cc" +#line 1009 "dhcp6_parser.cc" break; case 58: // not_empty_list_strings: not_empty_list_strings "," "constant string" -#line 420 "dhcp6_parser.yy" +#line 425 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(s); } -#line 1013 "dhcp6_parser.cc" +#line 1018 "dhcp6_parser.cc" break; case 59: // not_empty_list_strings: not_empty_list_strings "," -#line 424 "dhcp6_parser.yy" +#line 429 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1021 "dhcp6_parser.cc" +#line 1026 "dhcp6_parser.cc" break; case 60: // unknown_map_entry: "constant string" ":" -#line 434 "dhcp6_parser.yy" +#line 439 "dhcp6_parser.yy" { const std::string& where = ctx.contextName(); const std::string& keyword = yystack_[1].value.as < std::string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 1032 "dhcp6_parser.cc" +#line 1037 "dhcp6_parser.cc" break; case 61: // $@18: %empty -#line 443 "dhcp6_parser.yy" +#line 448 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1043 "dhcp6_parser.cc" +#line 1048 "dhcp6_parser.cc" break; case 62: // syntax_map: "{" $@18 global_object "}" -#line 448 "dhcp6_parser.yy" +#line 453 "dhcp6_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place @@ -1052,11 +1057,11 @@ namespace isc { namespace dhcp { // Dhcp6 is required ctx.require("Dhcp6", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); } -#line 1056 "dhcp6_parser.cc" +#line 1061 "dhcp6_parser.cc" break; case 63: // $@19: %empty -#line 458 "dhcp6_parser.yy" +#line 463 "dhcp6_parser.yy" { // This code is executed when we're about to start parsing // the content of the map @@ -1067,537 +1072,537 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP6); } -#line 1071 "dhcp6_parser.cc" +#line 1076 "dhcp6_parser.cc" break; case 64: // global_object: "Dhcp6" $@19 ":" "{" global_params "}" -#line 467 "dhcp6_parser.yy" +#line 472 "dhcp6_parser.yy" { // No global parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1081 "dhcp6_parser.cc" +#line 1086 "dhcp6_parser.cc" break; case 66: // global_object_comma: global_object "," -#line 475 "dhcp6_parser.yy" +#line 480 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1089 "dhcp6_parser.cc" +#line 1094 "dhcp6_parser.cc" break; case 67: // $@20: %empty -#line 481 "dhcp6_parser.yy" +#line 486 "dhcp6_parser.yy" { // Parse the Dhcp6 map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1099 "dhcp6_parser.cc" +#line 1104 "dhcp6_parser.cc" break; case 68: // sub_dhcp6: "{" $@20 global_params "}" -#line 485 "dhcp6_parser.yy" +#line 490 "dhcp6_parser.yy" { // No global parameter is required // parsing completed } -#line 1108 "dhcp6_parser.cc" +#line 1113 "dhcp6_parser.cc" break; case 71: // global_params: global_params "," -#line 492 "dhcp6_parser.yy" +#line 497 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1116 "dhcp6_parser.cc" +#line 1121 "dhcp6_parser.cc" break; case 140: // $@21: %empty -#line 569 "dhcp6_parser.yy" +#line 574 "dhcp6_parser.yy" { ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1125 "dhcp6_parser.cc" +#line 1130 "dhcp6_parser.cc" break; case 141: // data_directory: "data-directory" $@21 ":" "constant string" -#line 572 "dhcp6_parser.yy" +#line 577 "dhcp6_parser.yy" { ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data-directory", datadir); ctx.leave(); } -#line 1135 "dhcp6_parser.cc" +#line 1140 "dhcp6_parser.cc" break; case 142: // preferred_lifetime: "preferred-lifetime" ":" "integer" -#line 578 "dhcp6_parser.yy" +#line 583 "dhcp6_parser.yy" { ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("preferred-lifetime", prf); } -#line 1145 "dhcp6_parser.cc" +#line 1150 "dhcp6_parser.cc" break; case 143: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer" -#line 584 "dhcp6_parser.yy" +#line 589 "dhcp6_parser.yy" { ctx.unique("min-preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("min-preferred-lifetime", prf); } -#line 1155 "dhcp6_parser.cc" +#line 1160 "dhcp6_parser.cc" break; case 144: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer" -#line 590 "dhcp6_parser.yy" +#line 595 "dhcp6_parser.yy" { ctx.unique("max-preferred-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-preferred-lifetime", prf); } -#line 1165 "dhcp6_parser.cc" +#line 1170 "dhcp6_parser.cc" break; case 145: // valid_lifetime: "valid-lifetime" ":" "integer" -#line 596 "dhcp6_parser.yy" +#line 601 "dhcp6_parser.yy" { ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("valid-lifetime", prf); } -#line 1175 "dhcp6_parser.cc" +#line 1180 "dhcp6_parser.cc" break; case 146: // min_valid_lifetime: "min-valid-lifetime" ":" "integer" -#line 602 "dhcp6_parser.yy" +#line 607 "dhcp6_parser.yy" { ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("min-valid-lifetime", prf); } -#line 1185 "dhcp6_parser.cc" +#line 1190 "dhcp6_parser.cc" break; case 147: // max_valid_lifetime: "max-valid-lifetime" ":" "integer" -#line 608 "dhcp6_parser.yy" +#line 613 "dhcp6_parser.yy" { ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-valid-lifetime", prf); } -#line 1195 "dhcp6_parser.cc" +#line 1200 "dhcp6_parser.cc" break; case 148: // renew_timer: "renew-timer" ":" "integer" -#line 614 "dhcp6_parser.yy" +#line 619 "dhcp6_parser.yy" { ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("renew-timer", prf); } -#line 1205 "dhcp6_parser.cc" +#line 1210 "dhcp6_parser.cc" break; case 149: // rebind_timer: "rebind-timer" ":" "integer" -#line 620 "dhcp6_parser.yy" +#line 625 "dhcp6_parser.yy" { ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rebind-timer", prf); } -#line 1215 "dhcp6_parser.cc" +#line 1220 "dhcp6_parser.cc" break; case 150: // calculate_tee_times: "calculate-tee-times" ":" "boolean" -#line 626 "dhcp6_parser.yy" +#line 631 "dhcp6_parser.yy" { ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location)); ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("calculate-tee-times", ctt); } -#line 1225 "dhcp6_parser.cc" +#line 1230 "dhcp6_parser.cc" break; case 151: // t1_percent: "t1-percent" ":" "floating point" -#line 632 "dhcp6_parser.yy" +#line 637 "dhcp6_parser.yy" { ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t1-percent", t1); } -#line 1235 "dhcp6_parser.cc" +#line 1240 "dhcp6_parser.cc" break; case 152: // t2_percent: "t2-percent" ":" "floating point" -#line 638 "dhcp6_parser.yy" +#line 643 "dhcp6_parser.yy" { ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("t2-percent", t2); } -#line 1245 "dhcp6_parser.cc" +#line 1250 "dhcp6_parser.cc" break; case 153: // cache_threshold: "cache-threshold" ":" "floating point" -#line 644 "dhcp6_parser.yy" +#line 649 "dhcp6_parser.yy" { ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location)); ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-threshold", ct); } -#line 1255 "dhcp6_parser.cc" +#line 1260 "dhcp6_parser.cc" break; case 154: // cache_max_age: "cache-max-age" ":" "integer" -#line 650 "dhcp6_parser.yy" +#line 655 "dhcp6_parser.yy" { ctx.unique("cache-max-age", ctx.loc2pos(yystack_[2].location)); ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cache-max-age", cm); } -#line 1265 "dhcp6_parser.cc" +#line 1270 "dhcp6_parser.cc" break; case 155: // decline_probation_period: "decline-probation-period" ":" "integer" -#line 656 "dhcp6_parser.yy" +#line 661 "dhcp6_parser.yy" { ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location)); ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("decline-probation-period", dpp); } -#line 1275 "dhcp6_parser.cc" +#line 1280 "dhcp6_parser.cc" break; case 156: // ddns_send_updates: "ddns-send-updates" ":" "boolean" -#line 662 "dhcp6_parser.yy" +#line 667 "dhcp6_parser.yy" { ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-send-updates", b); } -#line 1285 "dhcp6_parser.cc" +#line 1290 "dhcp6_parser.cc" break; case 157: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean" -#line 668 "dhcp6_parser.yy" +#line 673 "dhcp6_parser.yy" { ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-no-update", b); } -#line 1295 "dhcp6_parser.cc" +#line 1300 "dhcp6_parser.cc" break; case 158: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean" -#line 674 "dhcp6_parser.yy" +#line 679 "dhcp6_parser.yy" { ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-override-client-update", b); } -#line 1305 "dhcp6_parser.cc" +#line 1310 "dhcp6_parser.cc" break; case 159: // $@22: %empty -#line 680 "dhcp6_parser.yy" +#line 685 "dhcp6_parser.yy" { ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 1314 "dhcp6_parser.cc" +#line 1319 "dhcp6_parser.cc" break; case 160: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value -#line 683 "dhcp6_parser.yy" +#line 688 "dhcp6_parser.yy" { ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1323 "dhcp6_parser.cc" +#line 1328 "dhcp6_parser.cc" break; case 161: // ddns_replace_client_name_value: "when-present" -#line 689 "dhcp6_parser.yy" +#line 694 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } -#line 1331 "dhcp6_parser.cc" +#line 1336 "dhcp6_parser.cc" break; case 162: // ddns_replace_client_name_value: "never" -#line 692 "dhcp6_parser.yy" +#line 697 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } -#line 1339 "dhcp6_parser.cc" +#line 1344 "dhcp6_parser.cc" break; case 163: // ddns_replace_client_name_value: "always" -#line 695 "dhcp6_parser.yy" +#line 700 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } -#line 1347 "dhcp6_parser.cc" +#line 1352 "dhcp6_parser.cc" break; case 164: // ddns_replace_client_name_value: "when-not-present" -#line 698 "dhcp6_parser.yy" +#line 703 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } -#line 1355 "dhcp6_parser.cc" +#line 1360 "dhcp6_parser.cc" break; case 165: // ddns_replace_client_name_value: "boolean" -#line 701 "dhcp6_parser.yy" +#line 706 "dhcp6_parser.yy" { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); } -#line 1364 "dhcp6_parser.cc" +#line 1369 "dhcp6_parser.cc" break; case 166: // $@23: %empty -#line 707 "dhcp6_parser.yy" +#line 712 "dhcp6_parser.yy" { ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1373 "dhcp6_parser.cc" +#line 1378 "dhcp6_parser.cc" break; case 167: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string" -#line 710 "dhcp6_parser.yy" +#line 715 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-generated-prefix", s); ctx.leave(); } -#line 1383 "dhcp6_parser.cc" +#line 1388 "dhcp6_parser.cc" break; case 168: // $@24: %empty -#line 716 "dhcp6_parser.yy" +#line 721 "dhcp6_parser.yy" { ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1392 "dhcp6_parser.cc" +#line 1397 "dhcp6_parser.cc" break; case 169: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string" -#line 719 "dhcp6_parser.yy" +#line 724 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-qualifying-suffix", s); ctx.leave(); } -#line 1402 "dhcp6_parser.cc" +#line 1407 "dhcp6_parser.cc" break; case 170: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean" -#line 725 "dhcp6_parser.yy" +#line 730 "dhcp6_parser.yy" { ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-update-on-renew", b); } -#line 1412 "dhcp6_parser.cc" +#line 1417 "dhcp6_parser.cc" break; case 171: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean" -#line 731 "dhcp6_parser.yy" +#line 736 "dhcp6_parser.yy" { ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-use-conflict-resolution", b); } -#line 1422 "dhcp6_parser.cc" +#line 1427 "dhcp6_parser.cc" break; case 172: // ddns_ttl_percent: "ddns-ttl-percent" ":" "floating point" -#line 737 "dhcp6_parser.yy" +#line 742 "dhcp6_parser.yy" { ctx.unique("ddns-ttl-percent", ctx.loc2pos(yystack_[2].location)); ElementPtr ttl(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ddns-ttl-percent", ttl); } -#line 1432 "dhcp6_parser.cc" +#line 1437 "dhcp6_parser.cc" break; case 173: // $@25: %empty -#line 743 "dhcp6_parser.yy" +#line 748 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1441 "dhcp6_parser.cc" +#line 1446 "dhcp6_parser.cc" break; case 174: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string" -#line 746 "dhcp6_parser.yy" +#line 751 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 1451 "dhcp6_parser.cc" +#line 1456 "dhcp6_parser.cc" break; case 175: // $@26: %empty -#line 752 "dhcp6_parser.yy" +#line 757 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1460 "dhcp6_parser.cc" +#line 1465 "dhcp6_parser.cc" break; case 176: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string" -#line 755 "dhcp6_parser.yy" +#line 760 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 1470 "dhcp6_parser.cc" +#line 1475 "dhcp6_parser.cc" break; case 177: // store_extended_info: "store-extended-info" ":" "boolean" -#line 761 "dhcp6_parser.yy" +#line 766 "dhcp6_parser.yy" { ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("store-extended-info", b); } -#line 1480 "dhcp6_parser.cc" +#line 1485 "dhcp6_parser.cc" break; case 178: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer" -#line 767 "dhcp6_parser.yy" +#line 772 "dhcp6_parser.yy" { ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location)); ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-count", count); } -#line 1490 "dhcp6_parser.cc" +#line 1495 "dhcp6_parser.cc" break; case 179: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer" -#line 773 "dhcp6_parser.yy" +#line 778 "dhcp6_parser.yy" { ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location)); ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("statistic-default-sample-age", age); } -#line 1500 "dhcp6_parser.cc" +#line 1505 "dhcp6_parser.cc" break; case 180: // $@27: %empty -#line 779 "dhcp6_parser.yy" +#line 784 "dhcp6_parser.yy" { ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1509 "dhcp6_parser.cc" +#line 1514 "dhcp6_parser.cc" break; case 181: // server_tag: "server-tag" $@27 ":" "constant string" -#line 782 "dhcp6_parser.yy" +#line 787 "dhcp6_parser.yy" { ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-tag", stag); ctx.leave(); } -#line 1519 "dhcp6_parser.cc" +#line 1524 "dhcp6_parser.cc" break; case 182: // parked_packet_limit: "parked-packet-limit" ":" "integer" -#line 788 "dhcp6_parser.yy" +#line 793 "dhcp6_parser.yy" { ctx.unique("parked-packet-limit", ctx.loc2pos(yystack_[2].location)); ElementPtr ppl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("parked-packet-limit", ppl); } -#line 1529 "dhcp6_parser.cc" +#line 1534 "dhcp6_parser.cc" break; case 183: // $@28: %empty -#line 794 "dhcp6_parser.yy" +#line 799 "dhcp6_parser.yy" { ctx.unique("allocator", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1538 "dhcp6_parser.cc" +#line 1543 "dhcp6_parser.cc" break; case 184: // allocator: "allocator" $@28 ":" "constant string" -#line 797 "dhcp6_parser.yy" +#line 802 "dhcp6_parser.yy" { ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("allocator", al); ctx.leave(); } -#line 1548 "dhcp6_parser.cc" +#line 1553 "dhcp6_parser.cc" break; case 185: // $@29: %empty -#line 803 "dhcp6_parser.yy" +#line 808 "dhcp6_parser.yy" { ctx.unique("pd-allocator", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1557 "dhcp6_parser.cc" +#line 1562 "dhcp6_parser.cc" break; case 186: // pd_allocator: "pd-allocator" $@29 ":" "constant string" -#line 806 "dhcp6_parser.yy" +#line 811 "dhcp6_parser.yy" { ElementPtr al(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pd-allocator", al); ctx.leave(); } -#line 1567 "dhcp6_parser.cc" +#line 1572 "dhcp6_parser.cc" break; case 187: // early_global_reservations_lookup: "early-global-reservations-lookup" ":" "boolean" -#line 812 "dhcp6_parser.yy" +#line 817 "dhcp6_parser.yy" { ctx.unique("early-global-reservations-lookup", ctx.loc2pos(yystack_[2].location)); ElementPtr early(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("early-global-reservations-lookup", early); } -#line 1577 "dhcp6_parser.cc" +#line 1582 "dhcp6_parser.cc" break; case 188: // ip_reservations_unique: "ip-reservations-unique" ":" "boolean" -#line 818 "dhcp6_parser.yy" +#line 823 "dhcp6_parser.yy" { ctx.unique("ip-reservations-unique", ctx.loc2pos(yystack_[2].location)); ElementPtr unique(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-reservations-unique", unique); } -#line 1587 "dhcp6_parser.cc" +#line 1592 "dhcp6_parser.cc" break; case 189: // reservations_lookup_first: "reservations-lookup-first" ":" "boolean" -#line 824 "dhcp6_parser.yy" +#line 829 "dhcp6_parser.yy" { ctx.unique("reservations-lookup-first", ctx.loc2pos(yystack_[2].location)); ElementPtr first(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-lookup-first", first); } -#line 1597 "dhcp6_parser.cc" +#line 1602 "dhcp6_parser.cc" break; case 190: // $@30: %empty -#line 830 "dhcp6_parser.yy" +#line 835 "dhcp6_parser.yy" { ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1605,48 +1610,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.INTERFACES_CONFIG); } -#line 1609 "dhcp6_parser.cc" +#line 1614 "dhcp6_parser.cc" break; case 191: // interfaces_config: "interfaces-config" $@30 ":" "{" interfaces_config_params "}" -#line 836 "dhcp6_parser.yy" +#line 841 "dhcp6_parser.yy" { // No interfaces config param is required ctx.stack_.pop_back(); ctx.leave(); } -#line 1619 "dhcp6_parser.cc" +#line 1624 "dhcp6_parser.cc" break; case 192: // $@31: %empty -#line 842 "dhcp6_parser.yy" +#line 847 "dhcp6_parser.yy" { // Parse the interfaces-config map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 1629 "dhcp6_parser.cc" +#line 1634 "dhcp6_parser.cc" break; case 193: // sub_interfaces6: "{" $@31 interfaces_config_params "}" -#line 846 "dhcp6_parser.yy" +#line 851 "dhcp6_parser.yy" { // No interfaces config param is required // parsing completed } -#line 1638 "dhcp6_parser.cc" +#line 1643 "dhcp6_parser.cc" break; case 196: // interfaces_config_params: interfaces_config_params "," -#line 853 "dhcp6_parser.yy" +#line 858 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1646 "dhcp6_parser.cc" +#line 1651 "dhcp6_parser.cc" break; case 205: // $@32: %empty -#line 868 "dhcp6_parser.yy" +#line 873 "dhcp6_parser.yy" { ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1654,60 +1659,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 1658 "dhcp6_parser.cc" +#line 1663 "dhcp6_parser.cc" break; case 206: // interfaces_list: "interfaces" $@32 ":" list_strings -#line 874 "dhcp6_parser.yy" +#line 879 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1667 "dhcp6_parser.cc" +#line 1672 "dhcp6_parser.cc" break; case 207: // re_detect: "re-detect" ":" "boolean" -#line 879 "dhcp6_parser.yy" +#line 884 "dhcp6_parser.yy" { ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("re-detect", b); } -#line 1677 "dhcp6_parser.cc" +#line 1682 "dhcp6_parser.cc" break; case 208: // service_sockets_require_all: "service-sockets-require-all" ":" "boolean" -#line 885 "dhcp6_parser.yy" +#line 890 "dhcp6_parser.yy" { ctx.unique("service-sockets-require-all", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-require-all", b); } -#line 1687 "dhcp6_parser.cc" +#line 1692 "dhcp6_parser.cc" break; case 209: // service_sockets_retry_wait_time: "service-sockets-retry-wait-time" ":" "integer" -#line 891 "dhcp6_parser.yy" +#line 896 "dhcp6_parser.yy" { ctx.unique("service-sockets-retry-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-retry-wait-time", n); } -#line 1697 "dhcp6_parser.cc" +#line 1702 "dhcp6_parser.cc" break; case 210: // service_sockets_max_retries: "service-sockets-max-retries" ":" "integer" -#line 897 "dhcp6_parser.yy" +#line 902 "dhcp6_parser.yy" { ctx.unique("service-sockets-max-retries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("service-sockets-max-retries", n); } -#line 1707 "dhcp6_parser.cc" +#line 1712 "dhcp6_parser.cc" break; case 211: // $@33: %empty -#line 903 "dhcp6_parser.yy" +#line 908 "dhcp6_parser.yy" { ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1715,22 +1720,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.LEASE_DATABASE); } -#line 1719 "dhcp6_parser.cc" +#line 1724 "dhcp6_parser.cc" break; case 212: // lease_database: "lease-database" $@33 ":" "{" database_map_params "}" -#line 909 "dhcp6_parser.yy" +#line 914 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1730 "dhcp6_parser.cc" +#line 1735 "dhcp6_parser.cc" break; case 213: // $@34: %empty -#line 916 "dhcp6_parser.yy" +#line 921 "dhcp6_parser.yy" { ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1738,22 +1743,22 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1742 "dhcp6_parser.cc" +#line 1747 "dhcp6_parser.cc" break; case 214: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}" -#line 922 "dhcp6_parser.yy" +#line 927 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 1753 "dhcp6_parser.cc" +#line 1758 "dhcp6_parser.cc" break; case 215: // $@35: %empty -#line 929 "dhcp6_parser.yy" +#line 934 "dhcp6_parser.yy" { ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1761,390 +1766,390 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOSTS_DATABASE); } -#line 1765 "dhcp6_parser.cc" +#line 1770 "dhcp6_parser.cc" break; case 216: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]" -#line 935 "dhcp6_parser.yy" +#line 940 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1774 "dhcp6_parser.cc" +#line 1779 "dhcp6_parser.cc" break; case 221: // not_empty_database_list: not_empty_database_list "," -#line 946 "dhcp6_parser.yy" +#line 951 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1782 "dhcp6_parser.cc" +#line 1787 "dhcp6_parser.cc" break; case 222: // $@36: %empty -#line 951 "dhcp6_parser.yy" +#line 956 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1792 "dhcp6_parser.cc" +#line 1797 "dhcp6_parser.cc" break; case 223: // database: "{" $@36 database_map_params "}" -#line 955 "dhcp6_parser.yy" +#line 960 "dhcp6_parser.yy" { // The type parameter is required ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 1802 "dhcp6_parser.cc" +#line 1807 "dhcp6_parser.cc" break; case 226: // database_map_params: database_map_params "," -#line 963 "dhcp6_parser.yy" +#line 968 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1810 "dhcp6_parser.cc" +#line 1815 "dhcp6_parser.cc" break; case 249: // $@37: %empty -#line 992 "dhcp6_parser.yy" +#line 997 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_TYPE); } -#line 1819 "dhcp6_parser.cc" +#line 1824 "dhcp6_parser.cc" break; case 250: // database_type: "type" $@37 ":" db_type -#line 995 "dhcp6_parser.yy" +#line 1000 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1828 "dhcp6_parser.cc" +#line 1833 "dhcp6_parser.cc" break; case 251: // db_type: "memfile" -#line 1000 "dhcp6_parser.yy" +#line 1005 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); } -#line 1834 "dhcp6_parser.cc" +#line 1839 "dhcp6_parser.cc" break; case 252: // db_type: "mysql" -#line 1001 "dhcp6_parser.yy" +#line 1006 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); } -#line 1840 "dhcp6_parser.cc" +#line 1845 "dhcp6_parser.cc" break; case 253: // db_type: "postgresql" -#line 1002 "dhcp6_parser.yy" +#line 1007 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); } -#line 1846 "dhcp6_parser.cc" +#line 1851 "dhcp6_parser.cc" break; case 254: // $@38: %empty -#line 1005 "dhcp6_parser.yy" +#line 1010 "dhcp6_parser.yy" { ctx.unique("user", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1855 "dhcp6_parser.cc" +#line 1860 "dhcp6_parser.cc" break; case 255: // user: "user" $@38 ":" "constant string" -#line 1008 "dhcp6_parser.yy" +#line 1013 "dhcp6_parser.yy" { ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("user", user); ctx.leave(); } -#line 1865 "dhcp6_parser.cc" +#line 1870 "dhcp6_parser.cc" break; case 256: // $@39: %empty -#line 1014 "dhcp6_parser.yy" +#line 1019 "dhcp6_parser.yy" { ctx.unique("password", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1874 "dhcp6_parser.cc" +#line 1879 "dhcp6_parser.cc" break; case 257: // password: "password" $@39 ":" "constant string" -#line 1017 "dhcp6_parser.yy" +#line 1022 "dhcp6_parser.yy" { ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("password", pwd); ctx.leave(); } -#line 1884 "dhcp6_parser.cc" +#line 1889 "dhcp6_parser.cc" break; case 258: // $@40: %empty -#line 1023 "dhcp6_parser.yy" +#line 1028 "dhcp6_parser.yy" { ctx.unique("host", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1893 "dhcp6_parser.cc" +#line 1898 "dhcp6_parser.cc" break; case 259: // host: "host" $@40 ":" "constant string" -#line 1026 "dhcp6_parser.yy" +#line 1031 "dhcp6_parser.yy" { ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("host", h); ctx.leave(); } -#line 1903 "dhcp6_parser.cc" +#line 1908 "dhcp6_parser.cc" break; case 260: // port: "port" ":" "integer" -#line 1032 "dhcp6_parser.yy" +#line 1037 "dhcp6_parser.yy" { ctx.unique("port", ctx.loc2pos(yystack_[2].location)); ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("port", p); } -#line 1913 "dhcp6_parser.cc" +#line 1918 "dhcp6_parser.cc" break; case 261: // $@41: %empty -#line 1038 "dhcp6_parser.yy" +#line 1043 "dhcp6_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 1922 "dhcp6_parser.cc" +#line 1927 "dhcp6_parser.cc" break; case 262: // name: "name" $@41 ":" "constant string" -#line 1041 "dhcp6_parser.yy" +#line 1046 "dhcp6_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1932 "dhcp6_parser.cc" +#line 1937 "dhcp6_parser.cc" break; case 263: // persist: "persist" ":" "boolean" -#line 1047 "dhcp6_parser.yy" +#line 1052 "dhcp6_parser.yy" { ctx.unique("persist", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("persist", n); } -#line 1942 "dhcp6_parser.cc" +#line 1947 "dhcp6_parser.cc" break; case 264: // lfc_interval: "lfc-interval" ":" "integer" -#line 1053 "dhcp6_parser.yy" +#line 1058 "dhcp6_parser.yy" { ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lfc-interval", n); } -#line 1952 "dhcp6_parser.cc" +#line 1957 "dhcp6_parser.cc" break; case 265: // readonly: "readonly" ":" "boolean" -#line 1059 "dhcp6_parser.yy" +#line 1064 "dhcp6_parser.yy" { ctx.unique("readonly", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("readonly", n); } -#line 1962 "dhcp6_parser.cc" +#line 1967 "dhcp6_parser.cc" break; case 266: // connect_timeout: "connect-timeout" ":" "integer" -#line 1065 "dhcp6_parser.yy" +#line 1070 "dhcp6_parser.yy" { ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("connect-timeout", n); } -#line 1972 "dhcp6_parser.cc" +#line 1977 "dhcp6_parser.cc" break; case 267: // read_timeout: "read-timeout" ":" "integer" -#line 1071 "dhcp6_parser.yy" +#line 1076 "dhcp6_parser.yy" { ctx.unique("read-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("read-timeout", n); } -#line 1982 "dhcp6_parser.cc" +#line 1987 "dhcp6_parser.cc" break; case 268: // write_timeout: "write-timeout" ":" "integer" -#line 1077 "dhcp6_parser.yy" +#line 1082 "dhcp6_parser.yy" { ctx.unique("write-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("write-timeout", n); } -#line 1992 "dhcp6_parser.cc" +#line 1997 "dhcp6_parser.cc" break; case 269: // tcp_user_timeout: "tcp-user-timeout" ":" "integer" -#line 1083 "dhcp6_parser.yy" +#line 1088 "dhcp6_parser.yy" { ctx.unique("tcp-user-timeout", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("tcp-user-timeout", n); } -#line 2002 "dhcp6_parser.cc" +#line 2007 "dhcp6_parser.cc" break; case 270: // reconnect_wait_time: "reconnect-wait-time" ":" "integer" -#line 1090 "dhcp6_parser.yy" +#line 1095 "dhcp6_parser.yy" { ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reconnect-wait-time", n); } -#line 2012 "dhcp6_parser.cc" +#line 2017 "dhcp6_parser.cc" break; case 271: // $@42: %empty -#line 1096 "dhcp6_parser.yy" +#line 1101 "dhcp6_parser.yy" { ctx.unique("on-fail", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DATABASE_ON_FAIL); } -#line 2021 "dhcp6_parser.cc" +#line 2026 "dhcp6_parser.cc" break; case 272: // on_fail: "on-fail" $@42 ":" on_fail_mode -#line 1099 "dhcp6_parser.yy" +#line 1104 "dhcp6_parser.yy" { ctx.stack_.back()->set("on-fail", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2030 "dhcp6_parser.cc" +#line 2035 "dhcp6_parser.cc" break; case 273: // on_fail_mode: "stop-retry-exit" -#line 1104 "dhcp6_parser.yy" +#line 1109 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stop-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2036 "dhcp6_parser.cc" +#line 2041 "dhcp6_parser.cc" break; case 274: // on_fail_mode: "serve-retry-exit" -#line 1105 "dhcp6_parser.yy" +#line 1110 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-exit", ctx.loc2pos(yystack_[0].location))); } -#line 2042 "dhcp6_parser.cc" +#line 2047 "dhcp6_parser.cc" break; case 275: // on_fail_mode: "serve-retry-continue" -#line 1106 "dhcp6_parser.yy" +#line 1111 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("serve-retry-continue", ctx.loc2pos(yystack_[0].location))); } -#line 2048 "dhcp6_parser.cc" +#line 2053 "dhcp6_parser.cc" break; case 276: // max_row_errors: "max-row-errors" ":" "integer" -#line 1109 "dhcp6_parser.yy" +#line 1114 "dhcp6_parser.yy" { ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-row-errors", n); } -#line 2058 "dhcp6_parser.cc" +#line 2063 "dhcp6_parser.cc" break; case 277: // max_reconnect_tries: "max-reconnect-tries" ":" "integer" -#line 1115 "dhcp6_parser.yy" +#line 1120 "dhcp6_parser.yy" { ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location)); ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reconnect-tries", n); } -#line 2068 "dhcp6_parser.cc" +#line 2073 "dhcp6_parser.cc" break; case 278: // $@43: %empty -#line 1121 "dhcp6_parser.yy" +#line 1126 "dhcp6_parser.yy" { ctx.unique("trust-anchor", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2077 "dhcp6_parser.cc" +#line 2082 "dhcp6_parser.cc" break; case 279: // trust_anchor: "trust-anchor" $@43 ":" "constant string" -#line 1124 "dhcp6_parser.yy" +#line 1129 "dhcp6_parser.yy" { ElementPtr ca(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("trust-anchor", ca); ctx.leave(); } -#line 2087 "dhcp6_parser.cc" +#line 2092 "dhcp6_parser.cc" break; case 280: // $@44: %empty -#line 1130 "dhcp6_parser.yy" +#line 1135 "dhcp6_parser.yy" { ctx.unique("cert-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2096 "dhcp6_parser.cc" +#line 2101 "dhcp6_parser.cc" break; case 281: // cert_file: "cert-file" $@44 ":" "constant string" -#line 1133 "dhcp6_parser.yy" +#line 1138 "dhcp6_parser.yy" { ElementPtr cert(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cert-file", cert); ctx.leave(); } -#line 2106 "dhcp6_parser.cc" +#line 2111 "dhcp6_parser.cc" break; case 282: // $@45: %empty -#line 1139 "dhcp6_parser.yy" +#line 1144 "dhcp6_parser.yy" { ctx.unique("key-file", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2115 "dhcp6_parser.cc" +#line 2120 "dhcp6_parser.cc" break; case 283: // key_file: "key-file" $@45 ":" "constant string" -#line 1142 "dhcp6_parser.yy" +#line 1147 "dhcp6_parser.yy" { ElementPtr key(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("key-file", key); ctx.leave(); } -#line 2125 "dhcp6_parser.cc" +#line 2130 "dhcp6_parser.cc" break; case 284: // $@46: %empty -#line 1148 "dhcp6_parser.yy" +#line 1153 "dhcp6_parser.yy" { ctx.unique("cipher-list", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2134 "dhcp6_parser.cc" +#line 2139 "dhcp6_parser.cc" break; case 285: // cipher_list: "cipher-list" $@46 ":" "constant string" -#line 1151 "dhcp6_parser.yy" +#line 1156 "dhcp6_parser.yy" { ElementPtr cl(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("cipher-list", cl); ctx.leave(); } -#line 2144 "dhcp6_parser.cc" +#line 2149 "dhcp6_parser.cc" break; case 286: // $@47: %empty -#line 1157 "dhcp6_parser.yy" +#line 1162 "dhcp6_parser.yy" { ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2152,37 +2157,37 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SANITY_CHECKS); } -#line 2156 "dhcp6_parser.cc" +#line 2161 "dhcp6_parser.cc" break; case 287: // sanity_checks: "sanity-checks" $@47 ":" "{" sanity_checks_params "}" -#line 1163 "dhcp6_parser.yy" +#line 1168 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2165 "dhcp6_parser.cc" +#line 2170 "dhcp6_parser.cc" break; case 290: // sanity_checks_params: sanity_checks_params "," -#line 1170 "dhcp6_parser.yy" +#line 1175 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2173 "dhcp6_parser.cc" +#line 2178 "dhcp6_parser.cc" break; case 293: // $@48: %empty -#line 1179 "dhcp6_parser.yy" +#line 1184 "dhcp6_parser.yy" { ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2182 "dhcp6_parser.cc" +#line 2187 "dhcp6_parser.cc" break; case 294: // lease_checks: "lease-checks" $@48 ":" "constant string" -#line 1182 "dhcp6_parser.yy" +#line 1187 "dhcp6_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -2198,20 +2203,20 @@ namespace isc { namespace dhcp { ", supported values are: none, warn, fix, fix-del, del"); } } -#line 2202 "dhcp6_parser.cc" +#line 2207 "dhcp6_parser.cc" break; case 295: // $@49: %empty -#line 1198 "dhcp6_parser.yy" +#line 1203 "dhcp6_parser.yy" { ctx.unique("extended-info-checks", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2211 "dhcp6_parser.cc" +#line 2216 "dhcp6_parser.cc" break; case 296: // extended_info_checks: "extended-info-checks" $@49 ":" "constant string" -#line 1201 "dhcp6_parser.yy" +#line 1206 "dhcp6_parser.yy" { if ( (string(yystack_[0].value.as < std::string > ()) == "none") || @@ -2226,11 +2231,11 @@ namespace isc { namespace dhcp { ", supported values are: none, fix, strict, pedantic"); } } -#line 2230 "dhcp6_parser.cc" +#line 2235 "dhcp6_parser.cc" break; case 297: // $@50: %empty -#line 1216 "dhcp6_parser.yy" +#line 1221 "dhcp6_parser.yy" { ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2238,46 +2243,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.MAC_SOURCES); } -#line 2242 "dhcp6_parser.cc" +#line 2247 "dhcp6_parser.cc" break; case 298: // mac_sources: "mac-sources" $@50 ":" "[" mac_sources_list "]" -#line 1222 "dhcp6_parser.yy" +#line 1227 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2251 "dhcp6_parser.cc" +#line 2256 "dhcp6_parser.cc" break; case 301: // mac_sources_list: mac_sources_list "," -#line 1229 "dhcp6_parser.yy" +#line 1234 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2259 "dhcp6_parser.cc" +#line 2264 "dhcp6_parser.cc" break; case 304: // duid_id: "duid" -#line 1238 "dhcp6_parser.yy" +#line 1243 "dhcp6_parser.yy" { ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2268 "dhcp6_parser.cc" +#line 2273 "dhcp6_parser.cc" break; case 305: // string_id: "constant string" -#line 1243 "dhcp6_parser.yy" +#line 1248 "dhcp6_parser.yy" { ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(duid); } -#line 2277 "dhcp6_parser.cc" +#line 2282 "dhcp6_parser.cc" break; case 306: // $@51: %empty -#line 1248 "dhcp6_parser.yy" +#line 1253 "dhcp6_parser.yy" { ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2285,46 +2290,46 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS); } -#line 2289 "dhcp6_parser.cc" +#line 2294 "dhcp6_parser.cc" break; case 307: // host_reservation_identifiers: "host-reservation-identifiers" $@51 ":" "[" host_reservation_identifiers_list "]" -#line 1254 "dhcp6_parser.yy" +#line 1259 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2298 "dhcp6_parser.cc" +#line 2303 "dhcp6_parser.cc" break; case 310: // host_reservation_identifiers_list: host_reservation_identifiers_list "," -#line 1261 "dhcp6_parser.yy" +#line 1266 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2306 "dhcp6_parser.cc" +#line 2311 "dhcp6_parser.cc" break; case 314: // hw_address_id: "hw-address" -#line 1271 "dhcp6_parser.yy" +#line 1276 "dhcp6_parser.yy" { ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(hwaddr); } -#line 2315 "dhcp6_parser.cc" +#line 2320 "dhcp6_parser.cc" break; case 315: // flex_id: "flex-id" -#line 1276 "dhcp6_parser.yy" +#line 1281 "dhcp6_parser.yy" { ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(flex_id); } -#line 2324 "dhcp6_parser.cc" +#line 2329 "dhcp6_parser.cc" break; case 316: // $@52: %empty -#line 1283 "dhcp6_parser.yy" +#line 1288 "dhcp6_parser.yy" { ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2332,20 +2337,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 2336 "dhcp6_parser.cc" +#line 2341 "dhcp6_parser.cc" break; case 317: // relay_supplied_options: "relay-supplied-options" $@52 ":" "[" list_content "]" -#line 1289 "dhcp6_parser.yy" +#line 1294 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2345 "dhcp6_parser.cc" +#line 2350 "dhcp6_parser.cc" break; case 318: // $@53: %empty -#line 1296 "dhcp6_parser.yy" +#line 1301 "dhcp6_parser.yy" { ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location)); ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2353,60 +2358,60 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(mt); ctx.enter(ctx.DHCP_MULTI_THREADING); } -#line 2357 "dhcp6_parser.cc" +#line 2362 "dhcp6_parser.cc" break; case 319: // dhcp_multi_threading: "multi-threading" $@53 ":" "{" multi_threading_params "}" -#line 1302 "dhcp6_parser.yy" +#line 1307 "dhcp6_parser.yy" { // The enable parameter is required. ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 2368 "dhcp6_parser.cc" +#line 2373 "dhcp6_parser.cc" break; case 322: // multi_threading_params: multi_threading_params "," -#line 1311 "dhcp6_parser.yy" +#line 1316 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2376 "dhcp6_parser.cc" +#line 2381 "dhcp6_parser.cc" break; case 329: // enable_multi_threading: "enable-multi-threading" ":" "boolean" -#line 1324 "dhcp6_parser.yy" +#line 1329 "dhcp6_parser.yy" { ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-multi-threading", b); } -#line 2386 "dhcp6_parser.cc" +#line 2391 "dhcp6_parser.cc" break; case 330: // thread_pool_size: "thread-pool-size" ":" "integer" -#line 1330 "dhcp6_parser.yy" +#line 1335 "dhcp6_parser.yy" { ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("thread-pool-size", prf); } -#line 2396 "dhcp6_parser.cc" +#line 2401 "dhcp6_parser.cc" break; case 331: // packet_queue_size: "packet-queue-size" ":" "integer" -#line 1336 "dhcp6_parser.yy" +#line 1341 "dhcp6_parser.yy" { ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("packet-queue-size", prf); } -#line 2406 "dhcp6_parser.cc" +#line 2411 "dhcp6_parser.cc" break; case 332: // $@54: %empty -#line 1342 "dhcp6_parser.yy" +#line 1347 "dhcp6_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2414,113 +2419,113 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 2418 "dhcp6_parser.cc" +#line 2423 "dhcp6_parser.cc" break; case 333: // hooks_libraries: "hooks-libraries" $@54 ":" "[" hooks_libraries_list "]" -#line 1348 "dhcp6_parser.yy" +#line 1353 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2427 "dhcp6_parser.cc" +#line 2432 "dhcp6_parser.cc" break; case 338: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 1359 "dhcp6_parser.yy" +#line 1364 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2435 "dhcp6_parser.cc" +#line 2440 "dhcp6_parser.cc" break; case 339: // $@55: %empty -#line 1364 "dhcp6_parser.yy" +#line 1369 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2445 "dhcp6_parser.cc" +#line 2450 "dhcp6_parser.cc" break; case 340: // hooks_library: "{" $@55 hooks_params "}" -#line 1368 "dhcp6_parser.yy" +#line 1373 "dhcp6_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2455 "dhcp6_parser.cc" +#line 2460 "dhcp6_parser.cc" break; case 341: // $@56: %empty -#line 1374 "dhcp6_parser.yy" +#line 1379 "dhcp6_parser.yy" { // Parse the hooks-libraries list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2465 "dhcp6_parser.cc" +#line 2470 "dhcp6_parser.cc" break; case 342: // sub_hooks_library: "{" $@56 hooks_params "}" -#line 1378 "dhcp6_parser.yy" +#line 1383 "dhcp6_parser.yy" { // The library hooks parameter is required ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2475 "dhcp6_parser.cc" +#line 2480 "dhcp6_parser.cc" break; case 345: // hooks_params: hooks_params "," -#line 1386 "dhcp6_parser.yy" +#line 1391 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2483 "dhcp6_parser.cc" +#line 2488 "dhcp6_parser.cc" break; case 349: // $@57: %empty -#line 1396 "dhcp6_parser.yy" +#line 1401 "dhcp6_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2492 "dhcp6_parser.cc" +#line 2497 "dhcp6_parser.cc" break; case 350: // library: "library" $@57 ":" "constant string" -#line 1399 "dhcp6_parser.yy" +#line 1404 "dhcp6_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 2502 "dhcp6_parser.cc" +#line 2507 "dhcp6_parser.cc" break; case 351: // $@58: %empty -#line 1405 "dhcp6_parser.yy" +#line 1410 "dhcp6_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2511 "dhcp6_parser.cc" +#line 2516 "dhcp6_parser.cc" break; case 352: // parameters: "parameters" $@58 ":" map_value -#line 1408 "dhcp6_parser.yy" +#line 1413 "dhcp6_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2520 "dhcp6_parser.cc" +#line 2525 "dhcp6_parser.cc" break; case 353: // $@59: %empty -#line 1414 "dhcp6_parser.yy" +#line 1419 "dhcp6_parser.yy" { ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -2528,89 +2533,89 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.EXPIRED_LEASES_PROCESSING); } -#line 2532 "dhcp6_parser.cc" +#line 2537 "dhcp6_parser.cc" break; case 354: // expired_leases_processing: "expired-leases-processing" $@59 ":" "{" expired_leases_params "}" -#line 1420 "dhcp6_parser.yy" +#line 1425 "dhcp6_parser.yy" { // No expired lease parameter is required ctx.stack_.pop_back(); ctx.leave(); } -#line 2542 "dhcp6_parser.cc" +#line 2547 "dhcp6_parser.cc" break; case 357: // expired_leases_params: expired_leases_params "," -#line 1428 "dhcp6_parser.yy" +#line 1433 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2550 "dhcp6_parser.cc" +#line 2555 "dhcp6_parser.cc" break; case 364: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer" -#line 1441 "dhcp6_parser.yy" +#line 1446 "dhcp6_parser.yy" { ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reclaim-timer-wait-time", value); } -#line 2560 "dhcp6_parser.cc" +#line 2565 "dhcp6_parser.cc" break; case 365: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer" -#line 1447 "dhcp6_parser.yy" +#line 1452 "dhcp6_parser.yy" { ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value); } -#line 2570 "dhcp6_parser.cc" +#line 2575 "dhcp6_parser.cc" break; case 366: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer" -#line 1453 "dhcp6_parser.yy" +#line 1458 "dhcp6_parser.yy" { ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hold-reclaimed-time", value); } -#line 2580 "dhcp6_parser.cc" +#line 2585 "dhcp6_parser.cc" break; case 367: // max_reclaim_leases: "max-reclaim-leases" ":" "integer" -#line 1459 "dhcp6_parser.yy" +#line 1464 "dhcp6_parser.yy" { ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-leases", value); } -#line 2590 "dhcp6_parser.cc" +#line 2595 "dhcp6_parser.cc" break; case 368: // max_reclaim_time: "max-reclaim-time" ":" "integer" -#line 1465 "dhcp6_parser.yy" +#line 1470 "dhcp6_parser.yy" { ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-reclaim-time", value); } -#line 2600 "dhcp6_parser.cc" +#line 2605 "dhcp6_parser.cc" break; case 369: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer" -#line 1471 "dhcp6_parser.yy" +#line 1476 "dhcp6_parser.yy" { ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("unwarned-reclaim-cycles", value); } -#line 2610 "dhcp6_parser.cc" +#line 2615 "dhcp6_parser.cc" break; case 370: // $@60: %empty -#line 1480 "dhcp6_parser.yy" +#line 1485 "dhcp6_parser.yy" { ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2618,38 +2623,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SUBNET6); } -#line 2622 "dhcp6_parser.cc" +#line 2627 "dhcp6_parser.cc" break; case 371: // subnet6_list: "subnet6" $@60 ":" "[" subnet6_list_content "]" -#line 1486 "dhcp6_parser.yy" +#line 1491 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2631 "dhcp6_parser.cc" +#line 2636 "dhcp6_parser.cc" break; case 376: // not_empty_subnet6_list: not_empty_subnet6_list "," -#line 1500 "dhcp6_parser.yy" +#line 1505 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2639 "dhcp6_parser.cc" +#line 2644 "dhcp6_parser.cc" break; case 377: // $@61: %empty -#line 1509 "dhcp6_parser.yy" +#line 1514 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2649 "dhcp6_parser.cc" +#line 2654 "dhcp6_parser.cc" break; case 378: // subnet6: "{" $@61 subnet6_params "}" -#line 1513 "dhcp6_parser.yy" +#line 1518 "dhcp6_parser.yy" { // Once we reached this place, the subnet parsing is now complete. // If we want to, we can implement default values here. @@ -2671,115 +2676,115 @@ namespace isc { namespace dhcp { ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 2675 "dhcp6_parser.cc" +#line 2680 "dhcp6_parser.cc" break; case 379: // $@62: %empty -#line 1535 "dhcp6_parser.yy" +#line 1540 "dhcp6_parser.yy" { // Parse the subnet6 list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2685 "dhcp6_parser.cc" +#line 2690 "dhcp6_parser.cc" break; case 380: // sub_subnet6: "{" $@62 subnet6_params "}" -#line 1539 "dhcp6_parser.yy" +#line 1544 "dhcp6_parser.yy" { // The subnet subnet6 parameter is required ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 2695 "dhcp6_parser.cc" +#line 2700 "dhcp6_parser.cc" break; case 383: // subnet6_params: subnet6_params "," -#line 1548 "dhcp6_parser.yy" +#line 1553 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2703 "dhcp6_parser.cc" +#line 2708 "dhcp6_parser.cc" break; case 430: // $@63: %empty -#line 1602 "dhcp6_parser.yy" +#line 1607 "dhcp6_parser.yy" { ctx.unique("subnet", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2712 "dhcp6_parser.cc" +#line 2717 "dhcp6_parser.cc" break; case 431: // subnet: "subnet" $@63 ":" "constant string" -#line 1605 "dhcp6_parser.yy" +#line 1610 "dhcp6_parser.yy" { ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subnet", subnet); ctx.leave(); } -#line 2722 "dhcp6_parser.cc" +#line 2727 "dhcp6_parser.cc" break; case 432: // $@64: %empty -#line 1611 "dhcp6_parser.yy" +#line 1616 "dhcp6_parser.yy" { ctx.unique("interface", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2731 "dhcp6_parser.cc" +#line 2736 "dhcp6_parser.cc" break; case 433: // interface: "interface" $@64 ":" "constant string" -#line 1614 "dhcp6_parser.yy" +#line 1619 "dhcp6_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface", iface); ctx.leave(); } -#line 2741 "dhcp6_parser.cc" +#line 2746 "dhcp6_parser.cc" break; case 434: // $@65: %empty -#line 1620 "dhcp6_parser.yy" +#line 1625 "dhcp6_parser.yy" { ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2750 "dhcp6_parser.cc" +#line 2755 "dhcp6_parser.cc" break; case 435: // interface_id: "interface-id" $@65 ":" "constant string" -#line 1623 "dhcp6_parser.yy" +#line 1628 "dhcp6_parser.yy" { ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("interface-id", iface); ctx.leave(); } -#line 2760 "dhcp6_parser.cc" +#line 2765 "dhcp6_parser.cc" break; case 436: // $@66: %empty -#line 1629 "dhcp6_parser.yy" +#line 1634 "dhcp6_parser.yy" { ctx.unique("client-class", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 2769 "dhcp6_parser.cc" +#line 2774 "dhcp6_parser.cc" break; case 437: // client_class: "client-class" $@66 ":" "constant string" -#line 1632 "dhcp6_parser.yy" +#line 1637 "dhcp6_parser.yy" { ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("client-class", cls); ctx.leave(); } -#line 2779 "dhcp6_parser.cc" +#line 2784 "dhcp6_parser.cc" break; case 438: // $@67: %empty -#line 1638 "dhcp6_parser.yy" +#line 1643 "dhcp6_parser.yy" { ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2787,112 +2792,112 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 2791 "dhcp6_parser.cc" +#line 2796 "dhcp6_parser.cc" break; case 439: // require_client_classes: "require-client-classes" $@67 ":" list_strings -#line 1644 "dhcp6_parser.yy" +#line 1649 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2800 "dhcp6_parser.cc" +#line 2805 "dhcp6_parser.cc" break; case 440: // reservations_global: "reservations-global" ":" "boolean" -#line 1649 "dhcp6_parser.yy" +#line 1654 "dhcp6_parser.yy" { ctx.unique("reservations-global", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-global", b); } -#line 2810 "dhcp6_parser.cc" +#line 2815 "dhcp6_parser.cc" break; case 441: // reservations_in_subnet: "reservations-in-subnet" ":" "boolean" -#line 1655 "dhcp6_parser.yy" +#line 1660 "dhcp6_parser.yy" { ctx.unique("reservations-in-subnet", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-in-subnet", b); } -#line 2820 "dhcp6_parser.cc" +#line 2825 "dhcp6_parser.cc" break; case 442: // reservations_out_of_pool: "reservations-out-of-pool" ":" "boolean" -#line 1661 "dhcp6_parser.yy" +#line 1666 "dhcp6_parser.yy" { ctx.unique("reservations-out-of-pool", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("reservations-out-of-pool", b); } -#line 2830 "dhcp6_parser.cc" +#line 2835 "dhcp6_parser.cc" break; case 443: // $@68: %empty -#line 1667 "dhcp6_parser.yy" +#line 1672 "dhcp6_parser.yy" { ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.RESERVATION_MODE); } -#line 2839 "dhcp6_parser.cc" +#line 2844 "dhcp6_parser.cc" break; case 444: // reservation_mode: "reservation-mode" $@68 ":" hr_mode -#line 1670 "dhcp6_parser.yy" +#line 1675 "dhcp6_parser.yy" { ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 2848 "dhcp6_parser.cc" +#line 2853 "dhcp6_parser.cc" break; case 445: // hr_mode: "disabled" -#line 1675 "dhcp6_parser.yy" +#line 1680 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); } -#line 2854 "dhcp6_parser.cc" +#line 2859 "dhcp6_parser.cc" break; case 446: // hr_mode: "out-of-pool" -#line 1676 "dhcp6_parser.yy" +#line 1681 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); } -#line 2860 "dhcp6_parser.cc" +#line 2865 "dhcp6_parser.cc" break; case 447: // hr_mode: "global" -#line 1677 "dhcp6_parser.yy" +#line 1682 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); } -#line 2866 "dhcp6_parser.cc" +#line 2871 "dhcp6_parser.cc" break; case 448: // hr_mode: "all" -#line 1678 "dhcp6_parser.yy" +#line 1683 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); } -#line 2872 "dhcp6_parser.cc" +#line 2877 "dhcp6_parser.cc" break; case 449: // id: "id" ":" "integer" -#line 1681 "dhcp6_parser.yy" +#line 1686 "dhcp6_parser.yy" { ctx.unique("id", ctx.loc2pos(yystack_[2].location)); ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("id", id); } -#line 2882 "dhcp6_parser.cc" +#line 2887 "dhcp6_parser.cc" break; case 450: // rapid_commit: "rapid-commit" ":" "boolean" -#line 1687 "dhcp6_parser.yy" +#line 1692 "dhcp6_parser.yy" { ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location)); ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("rapid-commit", rc); } -#line 2892 "dhcp6_parser.cc" +#line 2897 "dhcp6_parser.cc" break; case 451: // $@69: %empty -#line 1695 "dhcp6_parser.yy" +#line 1700 "dhcp6_parser.yy" { ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2900,54 +2905,54 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.SHARED_NETWORK); } -#line 2904 "dhcp6_parser.cc" +#line 2909 "dhcp6_parser.cc" break; case 452: // shared_networks: "shared-networks" $@69 ":" "[" shared_networks_content "]" -#line 1701 "dhcp6_parser.yy" +#line 1706 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2913 "dhcp6_parser.cc" +#line 2918 "dhcp6_parser.cc" break; case 457: // shared_networks_list: shared_networks_list "," -#line 1714 "dhcp6_parser.yy" +#line 1719 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2921 "dhcp6_parser.cc" +#line 2926 "dhcp6_parser.cc" break; case 458: // $@70: %empty -#line 1719 "dhcp6_parser.yy" +#line 1724 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 2931 "dhcp6_parser.cc" +#line 2936 "dhcp6_parser.cc" break; case 459: // shared_network: "{" $@70 shared_network_params "}" -#line 1723 "dhcp6_parser.yy" +#line 1728 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 2939 "dhcp6_parser.cc" +#line 2944 "dhcp6_parser.cc" break; case 462: // shared_network_params: shared_network_params "," -#line 1729 "dhcp6_parser.yy" +#line 1734 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2947 "dhcp6_parser.cc" +#line 2952 "dhcp6_parser.cc" break; case 506: // $@71: %empty -#line 1783 "dhcp6_parser.yy" +#line 1788 "dhcp6_parser.yy" { ctx.unique("option-def", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -2955,55 +2960,55 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DEF); } -#line 2959 "dhcp6_parser.cc" +#line 2964 "dhcp6_parser.cc" break; case 507: // option_def_list: "option-def" $@71 ":" "[" option_def_list_content "]" -#line 1789 "dhcp6_parser.yy" +#line 1794 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 2968 "dhcp6_parser.cc" +#line 2973 "dhcp6_parser.cc" break; case 508: // $@72: %empty -#line 1797 "dhcp6_parser.yy" +#line 1802 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 2977 "dhcp6_parser.cc" +#line 2982 "dhcp6_parser.cc" break; case 509: // sub_option_def_list: "{" $@72 option_def_list "}" -#line 1800 "dhcp6_parser.yy" +#line 1805 "dhcp6_parser.yy" { // parsing completed } -#line 2985 "dhcp6_parser.cc" +#line 2990 "dhcp6_parser.cc" break; case 514: // not_empty_option_def_list: not_empty_option_def_list "," -#line 1812 "dhcp6_parser.yy" +#line 1817 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 2993 "dhcp6_parser.cc" +#line 2998 "dhcp6_parser.cc" break; case 515: // $@73: %empty -#line 1819 "dhcp6_parser.yy" +#line 1824 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3003 "dhcp6_parser.cc" +#line 3008 "dhcp6_parser.cc" break; case 516: // option_def_entry: "{" $@73 option_def_params "}" -#line 1823 "dhcp6_parser.yy" +#line 1828 "dhcp6_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3011,21 +3016,21 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3015 "dhcp6_parser.cc" +#line 3020 "dhcp6_parser.cc" break; case 517: // $@74: %empty -#line 1834 "dhcp6_parser.yy" +#line 1839 "dhcp6_parser.yy" { // Parse the option-def list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3025 "dhcp6_parser.cc" +#line 3030 "dhcp6_parser.cc" break; case 518: // sub_option_def: "{" $@74 option_def_params "}" -#line 1838 "dhcp6_parser.yy" +#line 1843 "dhcp6_parser.yy" { // The name, code and type option def parameters are required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3033,115 +3038,115 @@ namespace isc { namespace dhcp { ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3037 "dhcp6_parser.cc" +#line 3042 "dhcp6_parser.cc" break; case 523: // not_empty_option_def_params: not_empty_option_def_params "," -#line 1854 "dhcp6_parser.yy" +#line 1859 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3045 "dhcp6_parser.cc" +#line 3050 "dhcp6_parser.cc" break; case 535: // code: "code" ":" "integer" -#line 1873 "dhcp6_parser.yy" +#line 1878 "dhcp6_parser.yy" { ctx.unique("code", ctx.loc2pos(yystack_[2].location)); ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("code", code); } -#line 3055 "dhcp6_parser.cc" +#line 3060 "dhcp6_parser.cc" break; case 537: // $@75: %empty -#line 1881 "dhcp6_parser.yy" +#line 1886 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3064 "dhcp6_parser.cc" +#line 3069 "dhcp6_parser.cc" break; case 538: // option_def_type: "type" $@75 ":" "constant string" -#line 1884 "dhcp6_parser.yy" +#line 1889 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("type", prf); ctx.leave(); } -#line 3074 "dhcp6_parser.cc" +#line 3079 "dhcp6_parser.cc" break; case 539: // $@76: %empty -#line 1890 "dhcp6_parser.yy" +#line 1895 "dhcp6_parser.yy" { ctx.unique("record-types", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3083 "dhcp6_parser.cc" +#line 3088 "dhcp6_parser.cc" break; case 540: // option_def_record_types: "record-types" $@76 ":" "constant string" -#line 1893 "dhcp6_parser.yy" +#line 1898 "dhcp6_parser.yy" { ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("record-types", rtypes); ctx.leave(); } -#line 3093 "dhcp6_parser.cc" +#line 3098 "dhcp6_parser.cc" break; case 541: // $@77: %empty -#line 1899 "dhcp6_parser.yy" +#line 1904 "dhcp6_parser.yy" { ctx.unique("space", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3102 "dhcp6_parser.cc" +#line 3107 "dhcp6_parser.cc" break; case 542: // space: "space" $@77 ":" "constant string" -#line 1902 "dhcp6_parser.yy" +#line 1907 "dhcp6_parser.yy" { ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("space", space); ctx.leave(); } -#line 3112 "dhcp6_parser.cc" +#line 3117 "dhcp6_parser.cc" break; case 544: // $@78: %empty -#line 1910 "dhcp6_parser.yy" +#line 1915 "dhcp6_parser.yy" { ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3121 "dhcp6_parser.cc" +#line 3126 "dhcp6_parser.cc" break; case 545: // option_def_encapsulate: "encapsulate" $@78 ":" "constant string" -#line 1913 "dhcp6_parser.yy" +#line 1918 "dhcp6_parser.yy" { ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("encapsulate", encap); ctx.leave(); } -#line 3131 "dhcp6_parser.cc" +#line 3136 "dhcp6_parser.cc" break; case 546: // option_def_array: "array" ":" "boolean" -#line 1919 "dhcp6_parser.yy" +#line 1924 "dhcp6_parser.yy" { ctx.unique("array", ctx.loc2pos(yystack_[2].location)); ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("array", array); } -#line 3141 "dhcp6_parser.cc" +#line 3146 "dhcp6_parser.cc" break; case 547: // $@79: %empty -#line 1929 "dhcp6_parser.yy" +#line 1934 "dhcp6_parser.yy" { ctx.unique("option-data", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3149,123 +3154,123 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OPTION_DATA); } -#line 3153 "dhcp6_parser.cc" +#line 3158 "dhcp6_parser.cc" break; case 548: // option_data_list: "option-data" $@79 ":" "[" option_data_list_content "]" -#line 1935 "dhcp6_parser.yy" +#line 1940 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3162 "dhcp6_parser.cc" +#line 3167 "dhcp6_parser.cc" break; case 553: // not_empty_option_data_list: not_empty_option_data_list "," -#line 1950 "dhcp6_parser.yy" +#line 1955 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3170 "dhcp6_parser.cc" +#line 3175 "dhcp6_parser.cc" break; case 554: // $@80: %empty -#line 1957 "dhcp6_parser.yy" +#line 1962 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3180 "dhcp6_parser.cc" +#line 3185 "dhcp6_parser.cc" break; case 555: // option_data_entry: "{" $@80 option_data_params "}" -#line 1961 "dhcp6_parser.yy" +#line 1966 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. ctx.stack_.pop_back(); } -#line 3189 "dhcp6_parser.cc" +#line 3194 "dhcp6_parser.cc" break; case 556: // $@81: %empty -#line 1969 "dhcp6_parser.yy" +#line 1974 "dhcp6_parser.yy" { // Parse the option-data list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3199 "dhcp6_parser.cc" +#line 3204 "dhcp6_parser.cc" break; case 557: // sub_option_data: "{" $@81 option_data_params "}" -#line 1973 "dhcp6_parser.yy" +#line 1978 "dhcp6_parser.yy" { /// @todo: the code or name parameters are required. // parsing completed } -#line 3208 "dhcp6_parser.cc" +#line 3213 "dhcp6_parser.cc" break; case 562: // not_empty_option_data_params: not_empty_option_data_params "," -#line 1989 "dhcp6_parser.yy" +#line 1994 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3216 "dhcp6_parser.cc" +#line 3221 "dhcp6_parser.cc" break; case 574: // $@82: %empty -#line 2010 "dhcp6_parser.yy" +#line 2015 "dhcp6_parser.yy" { ctx.unique("data", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3225 "dhcp6_parser.cc" +#line 3230 "dhcp6_parser.cc" break; case 575: // option_data_data: "data" $@82 ":" "constant string" -#line 2013 "dhcp6_parser.yy" +#line 2018 "dhcp6_parser.yy" { ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("data", data); ctx.leave(); } -#line 3235 "dhcp6_parser.cc" +#line 3240 "dhcp6_parser.cc" break; case 578: // option_data_csv_format: "csv-format" ":" "boolean" -#line 2023 "dhcp6_parser.yy" +#line 2028 "dhcp6_parser.yy" { ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location)); ElementPtr csv(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("csv-format", csv); } -#line 3245 "dhcp6_parser.cc" +#line 3250 "dhcp6_parser.cc" break; case 579: // option_data_always_send: "always-send" ":" "boolean" -#line 2029 "dhcp6_parser.yy" +#line 2034 "dhcp6_parser.yy" { ctx.unique("always-send", ctx.loc2pos(yystack_[2].location)); ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-send", persist); } -#line 3255 "dhcp6_parser.cc" +#line 3260 "dhcp6_parser.cc" break; case 580: // option_data_never_send: "never-send" ":" "boolean" -#line 2035 "dhcp6_parser.yy" +#line 2040 "dhcp6_parser.yy" { ctx.unique("never-send", ctx.loc2pos(yystack_[2].location)); ElementPtr cancel(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("never-send", cancel); } -#line 3265 "dhcp6_parser.cc" +#line 3270 "dhcp6_parser.cc" break; case 581: // $@83: %empty -#line 2044 "dhcp6_parser.yy" +#line 2049 "dhcp6_parser.yy" { ctx.unique("pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3273,103 +3278,103 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.POOLS); } -#line 3277 "dhcp6_parser.cc" +#line 3282 "dhcp6_parser.cc" break; case 582: // pools_list: "pools" $@83 ":" "[" pools_list_content "]" -#line 2050 "dhcp6_parser.yy" +#line 2055 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3286 "dhcp6_parser.cc" +#line 3291 "dhcp6_parser.cc" break; case 587: // not_empty_pools_list: not_empty_pools_list "," -#line 2063 "dhcp6_parser.yy" +#line 2068 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3294 "dhcp6_parser.cc" +#line 3299 "dhcp6_parser.cc" break; case 588: // $@84: %empty -#line 2068 "dhcp6_parser.yy" +#line 2073 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3304 "dhcp6_parser.cc" +#line 3309 "dhcp6_parser.cc" break; case 589: // pool_list_entry: "{" $@84 pool_params "}" -#line 2072 "dhcp6_parser.yy" +#line 2077 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3314 "dhcp6_parser.cc" +#line 3319 "dhcp6_parser.cc" break; case 590: // $@85: %empty -#line 2078 "dhcp6_parser.yy" +#line 2083 "dhcp6_parser.yy" { // Parse the pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3324 "dhcp6_parser.cc" +#line 3329 "dhcp6_parser.cc" break; case 591: // sub_pool6: "{" $@85 pool_params "}" -#line 2082 "dhcp6_parser.yy" +#line 2087 "dhcp6_parser.yy" { // The pool parameter is required. ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3334 "dhcp6_parser.cc" +#line 3339 "dhcp6_parser.cc" break; case 594: // pool_params: pool_params "," -#line 2090 "dhcp6_parser.yy" +#line 2095 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3342 "dhcp6_parser.cc" +#line 3347 "dhcp6_parser.cc" break; case 602: // $@86: %empty -#line 2104 "dhcp6_parser.yy" +#line 2109 "dhcp6_parser.yy" { ctx.unique("pool", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3351 "dhcp6_parser.cc" +#line 3356 "dhcp6_parser.cc" break; case 603: // pool_entry: "pool" $@86 ":" "constant string" -#line 2107 "dhcp6_parser.yy" +#line 2112 "dhcp6_parser.yy" { ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pool", pool); ctx.leave(); } -#line 3361 "dhcp6_parser.cc" +#line 3366 "dhcp6_parser.cc" break; case 604: // $@87: %empty -#line 2113 "dhcp6_parser.yy" +#line 2118 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3369 "dhcp6_parser.cc" +#line 3374 "dhcp6_parser.cc" break; case 605: // user_context: "user-context" $@87 ":" map_value -#line 2115 "dhcp6_parser.yy" +#line 2120 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -3392,19 +3397,19 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3396 "dhcp6_parser.cc" +#line 3401 "dhcp6_parser.cc" break; case 606: // $@88: %empty -#line 2138 "dhcp6_parser.yy" +#line 2143 "dhcp6_parser.yy" { ctx.enter(ctx.NO_KEYWORD); } -#line 3404 "dhcp6_parser.cc" +#line 3409 "dhcp6_parser.cc" break; case 607: // comment: "comment" $@88 ":" "constant string" -#line 2140 "dhcp6_parser.yy" +#line 2145 "dhcp6_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -3429,11 +3434,11 @@ namespace isc { namespace dhcp { parent->set("user-context", user_context); ctx.leave(); } -#line 3433 "dhcp6_parser.cc" +#line 3438 "dhcp6_parser.cc" break; case 608: // $@89: %empty -#line 2168 "dhcp6_parser.yy" +#line 2173 "dhcp6_parser.yy" { ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3441,38 +3446,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.PD_POOLS); } -#line 3445 "dhcp6_parser.cc" +#line 3450 "dhcp6_parser.cc" break; case 609: // pd_pools_list: "pd-pools" $@89 ":" "[" pd_pools_list_content "]" -#line 2174 "dhcp6_parser.yy" +#line 2179 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3454 "dhcp6_parser.cc" +#line 3459 "dhcp6_parser.cc" break; case 614: // not_empty_pd_pools_list: not_empty_pd_pools_list "," -#line 2187 "dhcp6_parser.yy" +#line 2192 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3462 "dhcp6_parser.cc" +#line 3467 "dhcp6_parser.cc" break; case 615: // $@90: %empty -#line 2192 "dhcp6_parser.yy" +#line 2197 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3472 "dhcp6_parser.cc" +#line 3477 "dhcp6_parser.cc" break; case 616: // pd_pool_entry: "{" $@90 pd_pool_params "}" -#line 2196 "dhcp6_parser.yy" +#line 2201 "dhcp6_parser.yy" { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3480,21 +3485,21 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3484 "dhcp6_parser.cc" +#line 3489 "dhcp6_parser.cc" break; case 617: // $@91: %empty -#line 2204 "dhcp6_parser.yy" +#line 2209 "dhcp6_parser.yy" { // Parse the pd-pool list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3494 "dhcp6_parser.cc" +#line 3499 "dhcp6_parser.cc" break; case 618: // sub_pd_pool: "{" $@91 pd_pool_params "}" -#line 2208 "dhcp6_parser.yy" +#line 2213 "dhcp6_parser.yy" { // The prefix, prefix len and delegated len parameters are required. ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3502,87 +3507,87 @@ namespace isc { namespace dhcp { ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 3506 "dhcp6_parser.cc" +#line 3511 "dhcp6_parser.cc" break; case 621: // pd_pool_params: pd_pool_params "," -#line 2218 "dhcp6_parser.yy" +#line 2223 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3514 "dhcp6_parser.cc" +#line 3519 "dhcp6_parser.cc" break; case 633: // $@92: %empty -#line 2236 "dhcp6_parser.yy" +#line 2241 "dhcp6_parser.yy" { ctx.unique("prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3523 "dhcp6_parser.cc" +#line 3528 "dhcp6_parser.cc" break; case 634: // pd_prefix: "prefix" $@92 ":" "constant string" -#line 2239 "dhcp6_parser.yy" +#line 2244 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix", prf); ctx.leave(); } -#line 3533 "dhcp6_parser.cc" +#line 3538 "dhcp6_parser.cc" break; case 635: // pd_prefix_len: "prefix-len" ":" "integer" -#line 2245 "dhcp6_parser.yy" +#line 2250 "dhcp6_parser.yy" { ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("prefix-len", prf); } -#line 3543 "dhcp6_parser.cc" +#line 3548 "dhcp6_parser.cc" break; case 636: // $@93: %empty -#line 2251 "dhcp6_parser.yy" +#line 2256 "dhcp6_parser.yy" { ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3552 "dhcp6_parser.cc" +#line 3557 "dhcp6_parser.cc" break; case 637: // excluded_prefix: "excluded-prefix" $@93 ":" "constant string" -#line 2254 "dhcp6_parser.yy" +#line 2259 "dhcp6_parser.yy" { ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix", prf); ctx.leave(); } -#line 3562 "dhcp6_parser.cc" +#line 3567 "dhcp6_parser.cc" break; case 638: // excluded_prefix_len: "excluded-prefix-len" ":" "integer" -#line 2260 "dhcp6_parser.yy" +#line 2265 "dhcp6_parser.yy" { ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location)); ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("excluded-prefix-len", prf); } -#line 3572 "dhcp6_parser.cc" +#line 3577 "dhcp6_parser.cc" break; case 639: // pd_delegated_len: "delegated-len" ":" "integer" -#line 2266 "dhcp6_parser.yy" +#line 2271 "dhcp6_parser.yy" { ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location)); ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("delegated-len", deleg); } -#line 3582 "dhcp6_parser.cc" +#line 3587 "dhcp6_parser.cc" break; case 640: // $@94: %empty -#line 2275 "dhcp6_parser.yy" +#line 2280 "dhcp6_parser.yy" { ctx.unique("reservations", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3590,74 +3595,74 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.RESERVATIONS); } -#line 3594 "dhcp6_parser.cc" +#line 3599 "dhcp6_parser.cc" break; case 641: // reservations: "reservations" $@94 ":" "[" reservations_list "]" -#line 2281 "dhcp6_parser.yy" +#line 2286 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3603 "dhcp6_parser.cc" +#line 3608 "dhcp6_parser.cc" break; case 646: // not_empty_reservations_list: not_empty_reservations_list "," -#line 2292 "dhcp6_parser.yy" +#line 2297 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3611 "dhcp6_parser.cc" +#line 3616 "dhcp6_parser.cc" break; case 647: // $@95: %empty -#line 2297 "dhcp6_parser.yy" +#line 2302 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3621 "dhcp6_parser.cc" +#line 3626 "dhcp6_parser.cc" break; case 648: // reservation: "{" $@95 reservation_params "}" -#line 2301 "dhcp6_parser.yy" +#line 2306 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. ctx.stack_.pop_back(); } -#line 3630 "dhcp6_parser.cc" +#line 3635 "dhcp6_parser.cc" break; case 649: // $@96: %empty -#line 2306 "dhcp6_parser.yy" +#line 2311 "dhcp6_parser.yy" { // Parse the reservations list entry map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 3640 "dhcp6_parser.cc" +#line 3645 "dhcp6_parser.cc" break; case 650: // sub_reservation: "{" $@96 reservation_params "}" -#line 2310 "dhcp6_parser.yy" +#line 2315 "dhcp6_parser.yy" { /// @todo: an identifier parameter is required. // parsing completed } -#line 3649 "dhcp6_parser.cc" +#line 3654 "dhcp6_parser.cc" break; case 655: // not_empty_reservation_params: not_empty_reservation_params "," -#line 2321 "dhcp6_parser.yy" +#line 2326 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3657 "dhcp6_parser.cc" +#line 3662 "dhcp6_parser.cc" break; case 667: // $@97: %empty -#line 2340 "dhcp6_parser.yy" +#line 2345 "dhcp6_parser.yy" { ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3665,20 +3670,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3669 "dhcp6_parser.cc" +#line 3674 "dhcp6_parser.cc" break; case 668: // ip_addresses: "ip-addresses" $@97 ":" list_strings -#line 2346 "dhcp6_parser.yy" +#line 2351 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3678 "dhcp6_parser.cc" +#line 3683 "dhcp6_parser.cc" break; case 669: // $@98: %empty -#line 2351 "dhcp6_parser.yy" +#line 2356 "dhcp6_parser.yy" { ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3686,96 +3691,96 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.NO_KEYWORD); } -#line 3690 "dhcp6_parser.cc" +#line 3695 "dhcp6_parser.cc" break; case 670: // prefixes: "prefixes" $@98 ":" list_strings -#line 2357 "dhcp6_parser.yy" +#line 2362 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3699 "dhcp6_parser.cc" +#line 3704 "dhcp6_parser.cc" break; case 671: // $@99: %empty -#line 2362 "dhcp6_parser.yy" +#line 2367 "dhcp6_parser.yy" { ctx.unique("duid", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3708 "dhcp6_parser.cc" +#line 3713 "dhcp6_parser.cc" break; case 672: // duid: "duid" $@99 ":" "constant string" -#line 2365 "dhcp6_parser.yy" +#line 2370 "dhcp6_parser.yy" { ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("duid", d); ctx.leave(); } -#line 3718 "dhcp6_parser.cc" +#line 3723 "dhcp6_parser.cc" break; case 673: // $@100: %empty -#line 2371 "dhcp6_parser.yy" +#line 2376 "dhcp6_parser.yy" { ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3727 "dhcp6_parser.cc" +#line 3732 "dhcp6_parser.cc" break; case 674: // hw_address: "hw-address" $@100 ":" "constant string" -#line 2374 "dhcp6_parser.yy" +#line 2379 "dhcp6_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hw-address", hw); ctx.leave(); } -#line 3737 "dhcp6_parser.cc" +#line 3742 "dhcp6_parser.cc" break; case 675: // $@101: %empty -#line 2380 "dhcp6_parser.yy" +#line 2385 "dhcp6_parser.yy" { ctx.unique("hostname", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3746 "dhcp6_parser.cc" +#line 3751 "dhcp6_parser.cc" break; case 676: // hostname: "hostname" $@101 ":" "constant string" -#line 2383 "dhcp6_parser.yy" +#line 2388 "dhcp6_parser.yy" { ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname", host); ctx.leave(); } -#line 3756 "dhcp6_parser.cc" +#line 3761 "dhcp6_parser.cc" break; case 677: // $@102: %empty -#line 2389 "dhcp6_parser.yy" +#line 2394 "dhcp6_parser.yy" { ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3765 "dhcp6_parser.cc" +#line 3770 "dhcp6_parser.cc" break; case 678: // flex_id_value: "flex-id" $@102 ":" "constant string" -#line 2392 "dhcp6_parser.yy" +#line 2397 "dhcp6_parser.yy" { ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flex-id", hw); ctx.leave(); } -#line 3775 "dhcp6_parser.cc" +#line 3780 "dhcp6_parser.cc" break; case 679: // $@103: %empty -#line 2398 "dhcp6_parser.yy" +#line 2403 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3783,20 +3788,20 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(c); ctx.enter(ctx.NO_KEYWORD); } -#line 3787 "dhcp6_parser.cc" +#line 3792 "dhcp6_parser.cc" break; case 680: // reservation_client_classes: "client-classes" $@103 ":" list_strings -#line 2404 "dhcp6_parser.yy" +#line 2409 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3796 "dhcp6_parser.cc" +#line 3801 "dhcp6_parser.cc" break; case 681: // $@104: %empty -#line 2412 "dhcp6_parser.yy" +#line 2417 "dhcp6_parser.yy" { ctx.unique("relay", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3804,39 +3809,39 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.RELAY); } -#line 3808 "dhcp6_parser.cc" +#line 3813 "dhcp6_parser.cc" break; case 682: // relay: "relay" $@104 ":" "{" relay_map "}" -#line 2418 "dhcp6_parser.yy" +#line 2423 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3817 "dhcp6_parser.cc" +#line 3822 "dhcp6_parser.cc" break; case 685: // $@105: %empty -#line 2427 "dhcp6_parser.yy" +#line 2432 "dhcp6_parser.yy" { ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3826 "dhcp6_parser.cc" +#line 3831 "dhcp6_parser.cc" break; case 686: // ip_address: "ip-address" $@105 ":" "constant string" -#line 2430 "dhcp6_parser.yy" +#line 2435 "dhcp6_parser.yy" { ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ip-address", addr); ctx.leave(); } -#line 3836 "dhcp6_parser.cc" +#line 3841 "dhcp6_parser.cc" break; case 687: // $@106: %empty -#line 2439 "dhcp6_parser.yy" +#line 2444 "dhcp6_parser.yy" { ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -3844,104 +3849,104 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CLIENT_CLASSES); } -#line 3848 "dhcp6_parser.cc" +#line 3853 "dhcp6_parser.cc" break; case 688: // client_classes: "client-classes" $@106 ":" "[" client_classes_list "]" -#line 2445 "dhcp6_parser.yy" +#line 2450 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 3857 "dhcp6_parser.cc" +#line 3862 "dhcp6_parser.cc" break; case 691: // client_classes_list: client_classes_list "," -#line 2452 "dhcp6_parser.yy" +#line 2457 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3865 "dhcp6_parser.cc" +#line 3870 "dhcp6_parser.cc" break; case 692: // $@107: %empty -#line 2457 "dhcp6_parser.yy" +#line 2462 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 3875 "dhcp6_parser.cc" +#line 3880 "dhcp6_parser.cc" break; case 693: // client_class_entry: "{" $@107 client_class_params "}" -#line 2461 "dhcp6_parser.yy" +#line 2466 "dhcp6_parser.yy" { // The name client class parameter is required. ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); } -#line 3885 "dhcp6_parser.cc" +#line 3890 "dhcp6_parser.cc" break; case 698: // not_empty_client_class_params: not_empty_client_class_params "," -#line 2473 "dhcp6_parser.yy" +#line 2478 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3893 "dhcp6_parser.cc" +#line 3898 "dhcp6_parser.cc" break; case 714: // $@108: %empty -#line 2496 "dhcp6_parser.yy" +#line 2501 "dhcp6_parser.yy" { ctx.unique("test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3902 "dhcp6_parser.cc" +#line 3907 "dhcp6_parser.cc" break; case 715: // client_class_test: "test" $@108 ":" "constant string" -#line 2499 "dhcp6_parser.yy" +#line 2504 "dhcp6_parser.yy" { ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("test", test); ctx.leave(); } -#line 3912 "dhcp6_parser.cc" +#line 3917 "dhcp6_parser.cc" break; case 716: // $@109: %empty -#line 2505 "dhcp6_parser.yy" +#line 2510 "dhcp6_parser.yy" { ctx.unique("template-test", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 3921 "dhcp6_parser.cc" +#line 3926 "dhcp6_parser.cc" break; case 717: // client_class_template_test: "template-test" $@109 ":" "constant string" -#line 2508 "dhcp6_parser.yy" +#line 2513 "dhcp6_parser.yy" { ElementPtr template_test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("template-test", template_test); ctx.leave(); } -#line 3931 "dhcp6_parser.cc" +#line 3936 "dhcp6_parser.cc" break; case 718: // only_if_required: "only-if-required" ":" "boolean" -#line 2514 "dhcp6_parser.yy" +#line 2519 "dhcp6_parser.yy" { ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("only-if-required", b); } -#line 3941 "dhcp6_parser.cc" +#line 3946 "dhcp6_parser.cc" break; case 719: // $@110: %empty -#line 2523 "dhcp6_parser.yy" +#line 2528 "dhcp6_parser.yy" { ctx.unique("server-id", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3949,125 +3954,125 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER_ID); } -#line 3953 "dhcp6_parser.cc" +#line 3958 "dhcp6_parser.cc" break; case 720: // server_id: "server-id" $@110 ":" "{" server_id_params "}" -#line 2529 "dhcp6_parser.yy" +#line 2534 "dhcp6_parser.yy" { // The type parameter is required. ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 3964 "dhcp6_parser.cc" +#line 3969 "dhcp6_parser.cc" break; case 723: // server_id_params: server_id_params "," -#line 2538 "dhcp6_parser.yy" +#line 2543 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 3972 "dhcp6_parser.cc" +#line 3977 "dhcp6_parser.cc" break; case 733: // $@111: %empty -#line 2554 "dhcp6_parser.yy" +#line 2559 "dhcp6_parser.yy" { ctx.unique("type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.DUID_TYPE); } -#line 3981 "dhcp6_parser.cc" +#line 3986 "dhcp6_parser.cc" break; case 734: // server_id_type: "type" $@111 ":" duid_type -#line 2557 "dhcp6_parser.yy" +#line 2562 "dhcp6_parser.yy" { ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 3990 "dhcp6_parser.cc" +#line 3995 "dhcp6_parser.cc" break; case 735: // duid_type: "LLT" -#line 2562 "dhcp6_parser.yy" +#line 2567 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); } -#line 3996 "dhcp6_parser.cc" +#line 4001 "dhcp6_parser.cc" break; case 736: // duid_type: "EN" -#line 2563 "dhcp6_parser.yy" +#line 2568 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); } -#line 4002 "dhcp6_parser.cc" +#line 4007 "dhcp6_parser.cc" break; case 737: // duid_type: "LL" -#line 2564 "dhcp6_parser.yy" +#line 2569 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); } -#line 4008 "dhcp6_parser.cc" +#line 4013 "dhcp6_parser.cc" break; case 738: // htype: "htype" ":" "integer" -#line 2567 "dhcp6_parser.yy" +#line 2572 "dhcp6_parser.yy" { ctx.unique("htype", ctx.loc2pos(yystack_[2].location)); ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("htype", htype); } -#line 4018 "dhcp6_parser.cc" +#line 4023 "dhcp6_parser.cc" break; case 739: // $@112: %empty -#line 2573 "dhcp6_parser.yy" +#line 2578 "dhcp6_parser.yy" { ctx.unique("identifier", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4027 "dhcp6_parser.cc" +#line 4032 "dhcp6_parser.cc" break; case 740: // identifier: "identifier" $@112 ":" "constant string" -#line 2576 "dhcp6_parser.yy" +#line 2581 "dhcp6_parser.yy" { ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("identifier", id); ctx.leave(); } -#line 4037 "dhcp6_parser.cc" +#line 4042 "dhcp6_parser.cc" break; case 741: // time: "time" ":" "integer" -#line 2582 "dhcp6_parser.yy" +#line 2587 "dhcp6_parser.yy" { ctx.unique("time", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("time", time); } -#line 4047 "dhcp6_parser.cc" +#line 4052 "dhcp6_parser.cc" break; case 742: // enterprise_id: "enterprise-id" ":" "integer" -#line 2588 "dhcp6_parser.yy" +#line 2593 "dhcp6_parser.yy" { ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enterprise-id", time); } -#line 4057 "dhcp6_parser.cc" +#line 4062 "dhcp6_parser.cc" break; case 743: // dhcp4o6_port: "dhcp4o6-port" ":" "integer" -#line 2596 "dhcp6_parser.yy" +#line 2601 "dhcp6_parser.yy" { ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location)); ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp4o6-port", time); } -#line 4067 "dhcp6_parser.cc" +#line 4072 "dhcp6_parser.cc" break; case 744: // $@113: %empty -#line 2604 "dhcp6_parser.yy" +#line 2609 "dhcp6_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4075,66 +4080,66 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 4079 "dhcp6_parser.cc" +#line 4084 "dhcp6_parser.cc" break; case 745: // control_socket: "control-socket" $@113 ":" "{" control_socket_params "}" -#line 2610 "dhcp6_parser.yy" +#line 2615 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4088 "dhcp6_parser.cc" +#line 4093 "dhcp6_parser.cc" break; case 748: // control_socket_params: control_socket_params "," -#line 2617 "dhcp6_parser.yy" +#line 2622 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4096 "dhcp6_parser.cc" +#line 4101 "dhcp6_parser.cc" break; case 754: // $@114: %empty -#line 2629 "dhcp6_parser.yy" +#line 2634 "dhcp6_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4105 "dhcp6_parser.cc" +#line 4110 "dhcp6_parser.cc" break; case 755: // socket_type: "socket-type" $@114 ":" "constant string" -#line 2632 "dhcp6_parser.yy" +#line 2637 "dhcp6_parser.yy" { ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-type", stype); ctx.leave(); } -#line 4115 "dhcp6_parser.cc" +#line 4120 "dhcp6_parser.cc" break; case 756: // $@115: %empty -#line 2638 "dhcp6_parser.yy" +#line 2643 "dhcp6_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4124 "dhcp6_parser.cc" +#line 4129 "dhcp6_parser.cc" break; case 757: // socket_name: "socket-name" $@115 ":" "constant string" -#line 2641 "dhcp6_parser.yy" +#line 2646 "dhcp6_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 4134 "dhcp6_parser.cc" +#line 4139 "dhcp6_parser.cc" break; case 758: // $@116: %empty -#line 2650 "dhcp6_parser.yy" +#line 2655 "dhcp6_parser.yy" { ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location)); ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4142,87 +4147,87 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(qc); ctx.enter(ctx.DHCP_QUEUE_CONTROL); } -#line 4146 "dhcp6_parser.cc" +#line 4151 "dhcp6_parser.cc" break; case 759: // dhcp_queue_control: "dhcp-queue-control" $@116 ":" "{" queue_control_params "}" -#line 2656 "dhcp6_parser.yy" +#line 2661 "dhcp6_parser.yy" { // The enable queue parameter is required. ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4157 "dhcp6_parser.cc" +#line 4162 "dhcp6_parser.cc" break; case 762: // queue_control_params: queue_control_params "," -#line 2665 "dhcp6_parser.yy" +#line 2670 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4165 "dhcp6_parser.cc" +#line 4170 "dhcp6_parser.cc" break; case 769: // enable_queue: "enable-queue" ":" "boolean" -#line 2678 "dhcp6_parser.yy" +#line 2683 "dhcp6_parser.yy" { ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-queue", b); } -#line 4175 "dhcp6_parser.cc" +#line 4180 "dhcp6_parser.cc" break; case 770: // $@117: %empty -#line 2684 "dhcp6_parser.yy" +#line 2689 "dhcp6_parser.yy" { ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4184 "dhcp6_parser.cc" +#line 4189 "dhcp6_parser.cc" break; case 771: // queue_type: "queue-type" $@117 ":" "constant string" -#line 2687 "dhcp6_parser.yy" +#line 2692 "dhcp6_parser.yy" { ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("queue-type", qt); ctx.leave(); } -#line 4194 "dhcp6_parser.cc" +#line 4199 "dhcp6_parser.cc" break; case 772: // capacity: "capacity" ":" "integer" -#line 2693 "dhcp6_parser.yy" +#line 2698 "dhcp6_parser.yy" { ctx.unique("capacity", ctx.loc2pos(yystack_[2].location)); ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("capacity", c); } -#line 4204 "dhcp6_parser.cc" +#line 4209 "dhcp6_parser.cc" break; case 773: // $@118: %empty -#line 2699 "dhcp6_parser.yy" +#line 2704 "dhcp6_parser.yy" { ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4213 "dhcp6_parser.cc" +#line 4218 "dhcp6_parser.cc" break; case 774: // arbitrary_map_entry: "constant string" $@118 ":" value -#line 2702 "dhcp6_parser.yy" +#line 2707 "dhcp6_parser.yy" { ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4222 "dhcp6_parser.cc" +#line 4227 "dhcp6_parser.cc" break; case 775: // $@119: %empty -#line 2709 "dhcp6_parser.yy" +#line 2714 "dhcp6_parser.yy" { ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4230,291 +4235,291 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(m); ctx.enter(ctx.DHCP_DDNS); } -#line 4234 "dhcp6_parser.cc" +#line 4239 "dhcp6_parser.cc" break; case 776: // dhcp_ddns: "dhcp-ddns" $@119 ":" "{" dhcp_ddns_params "}" -#line 2715 "dhcp6_parser.yy" +#line 2720 "dhcp6_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); ctx.stack_.pop_back(); ctx.leave(); } -#line 4245 "dhcp6_parser.cc" +#line 4250 "dhcp6_parser.cc" break; case 777: // $@120: %empty -#line 2722 "dhcp6_parser.yy" +#line 2727 "dhcp6_parser.yy" { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4255 "dhcp6_parser.cc" +#line 4260 "dhcp6_parser.cc" break; case 778: // sub_dhcp_ddns: "{" $@120 dhcp_ddns_params "}" -#line 2726 "dhcp6_parser.yy" +#line 2731 "dhcp6_parser.yy" { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); // parsing completed } -#line 4265 "dhcp6_parser.cc" +#line 4270 "dhcp6_parser.cc" break; case 781: // dhcp_ddns_params: dhcp_ddns_params "," -#line 2734 "dhcp6_parser.yy" +#line 2739 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4273 "dhcp6_parser.cc" +#line 4278 "dhcp6_parser.cc" break; case 800: // enable_updates: "enable-updates" ":" "boolean" -#line 2759 "dhcp6_parser.yy" +#line 2764 "dhcp6_parser.yy" { ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); } -#line 4283 "dhcp6_parser.cc" +#line 4288 "dhcp6_parser.cc" break; case 801: // $@121: %empty -#line 2766 "dhcp6_parser.yy" +#line 2771 "dhcp6_parser.yy" { ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4292 "dhcp6_parser.cc" +#line 4297 "dhcp6_parser.cc" break; case 802: // dep_qualifying_suffix: "qualifying-suffix" $@121 ":" "constant string" -#line 2769 "dhcp6_parser.yy" +#line 2774 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); ctx.leave(); } -#line 4302 "dhcp6_parser.cc" +#line 4307 "dhcp6_parser.cc" break; case 803: // $@122: %empty -#line 2775 "dhcp6_parser.yy" +#line 2780 "dhcp6_parser.yy" { ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4311 "dhcp6_parser.cc" +#line 4316 "dhcp6_parser.cc" break; case 804: // server_ip: "server-ip" $@122 ":" "constant string" -#line 2778 "dhcp6_parser.yy" +#line 2783 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); ctx.leave(); } -#line 4321 "dhcp6_parser.cc" +#line 4326 "dhcp6_parser.cc" break; case 805: // server_port: "server-port" ":" "integer" -#line 2784 "dhcp6_parser.yy" +#line 2789 "dhcp6_parser.yy" { ctx.unique("server-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); } -#line 4331 "dhcp6_parser.cc" +#line 4336 "dhcp6_parser.cc" break; case 806: // $@123: %empty -#line 2790 "dhcp6_parser.yy" +#line 2795 "dhcp6_parser.yy" { ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4340 "dhcp6_parser.cc" +#line 4345 "dhcp6_parser.cc" break; case 807: // sender_ip: "sender-ip" $@123 ":" "constant string" -#line 2793 "dhcp6_parser.yy" +#line 2798 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); ctx.leave(); } -#line 4350 "dhcp6_parser.cc" +#line 4355 "dhcp6_parser.cc" break; case 808: // sender_port: "sender-port" ":" "integer" -#line 2799 "dhcp6_parser.yy" +#line 2804 "dhcp6_parser.yy" { ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); } -#line 4360 "dhcp6_parser.cc" +#line 4365 "dhcp6_parser.cc" break; case 809: // max_queue_size: "max-queue-size" ":" "integer" -#line 2805 "dhcp6_parser.yy" +#line 2810 "dhcp6_parser.yy" { ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location)); ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); } -#line 4370 "dhcp6_parser.cc" +#line 4375 "dhcp6_parser.cc" break; case 810: // $@124: %empty -#line 2811 "dhcp6_parser.yy" +#line 2816 "dhcp6_parser.yy" { ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_PROTOCOL); } -#line 4379 "dhcp6_parser.cc" +#line 4384 "dhcp6_parser.cc" break; case 811: // ncr_protocol: "ncr-protocol" $@124 ":" ncr_protocol_value -#line 2814 "dhcp6_parser.yy" +#line 2819 "dhcp6_parser.yy" { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4388 "dhcp6_parser.cc" +#line 4393 "dhcp6_parser.cc" break; case 812: // ncr_protocol_value: "UDP" -#line 2820 "dhcp6_parser.yy" +#line 2825 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } -#line 4394 "dhcp6_parser.cc" +#line 4399 "dhcp6_parser.cc" break; case 813: // ncr_protocol_value: "TCP" -#line 2821 "dhcp6_parser.yy" +#line 2826 "dhcp6_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } -#line 4400 "dhcp6_parser.cc" +#line 4405 "dhcp6_parser.cc" break; case 814: // $@125: %empty -#line 2824 "dhcp6_parser.yy" +#line 2829 "dhcp6_parser.yy" { ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NCR_FORMAT); } -#line 4409 "dhcp6_parser.cc" +#line 4414 "dhcp6_parser.cc" break; case 815: // ncr_format: "ncr-format" $@125 ":" "JSON" -#line 2827 "dhcp6_parser.yy" +#line 2832 "dhcp6_parser.yy" { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); ctx.leave(); } -#line 4419 "dhcp6_parser.cc" +#line 4424 "dhcp6_parser.cc" break; case 816: // dep_override_no_update: "override-no-update" ":" "boolean" -#line 2834 "dhcp6_parser.yy" +#line 2839 "dhcp6_parser.yy" { ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); } -#line 4429 "dhcp6_parser.cc" +#line 4434 "dhcp6_parser.cc" break; case 817: // dep_override_client_update: "override-client-update" ":" "boolean" -#line 2841 "dhcp6_parser.yy" +#line 2846 "dhcp6_parser.yy" { ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); } -#line 4439 "dhcp6_parser.cc" +#line 4444 "dhcp6_parser.cc" break; case 818: // $@126: %empty -#line 2848 "dhcp6_parser.yy" +#line 2853 "dhcp6_parser.yy" { ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.REPLACE_CLIENT_NAME); } -#line 4448 "dhcp6_parser.cc" +#line 4453 "dhcp6_parser.cc" break; case 819: // dep_replace_client_name: "replace-client-name" $@126 ":" ddns_replace_client_name_value -#line 2851 "dhcp6_parser.yy" +#line 2856 "dhcp6_parser.yy" { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 4457 "dhcp6_parser.cc" +#line 4462 "dhcp6_parser.cc" break; case 820: // $@127: %empty -#line 2857 "dhcp6_parser.yy" +#line 2862 "dhcp6_parser.yy" { ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4466 "dhcp6_parser.cc" +#line 4471 "dhcp6_parser.cc" break; case 821: // dep_generated_prefix: "generated-prefix" $@127 ":" "constant string" -#line 2860 "dhcp6_parser.yy" +#line 2865 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); ctx.leave(); } -#line 4476 "dhcp6_parser.cc" +#line 4481 "dhcp6_parser.cc" break; case 822: // $@128: %empty -#line 2867 "dhcp6_parser.yy" +#line 2872 "dhcp6_parser.yy" { ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4485 "dhcp6_parser.cc" +#line 4490 "dhcp6_parser.cc" break; case 823: // dep_hostname_char_set: "hostname-char-set" $@128 ":" "constant string" -#line 2870 "dhcp6_parser.yy" +#line 2875 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); ctx.leave(); } -#line 4495 "dhcp6_parser.cc" +#line 4500 "dhcp6_parser.cc" break; case 824: // $@129: %empty -#line 2877 "dhcp6_parser.yy" +#line 2882 "dhcp6_parser.yy" { ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4504 "dhcp6_parser.cc" +#line 4509 "dhcp6_parser.cc" break; case 825: // dep_hostname_char_replacement: "hostname-char-replacement" $@129 ":" "constant string" -#line 2880 "dhcp6_parser.yy" +#line 2885 "dhcp6_parser.yy" { ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); ctx.leave(); } -#line 4514 "dhcp6_parser.cc" +#line 4519 "dhcp6_parser.cc" break; case 826: // $@130: %empty -#line 2889 "dhcp6_parser.yy" +#line 2894 "dhcp6_parser.yy" { ctx.unique("config-control", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4522,48 +4527,48 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.CONFIG_CONTROL); } -#line 4526 "dhcp6_parser.cc" +#line 4531 "dhcp6_parser.cc" break; case 827: // config_control: "config-control" $@130 ":" "{" config_control_params "}" -#line 2895 "dhcp6_parser.yy" +#line 2900 "dhcp6_parser.yy" { // No config control params are required ctx.stack_.pop_back(); ctx.leave(); } -#line 4536 "dhcp6_parser.cc" +#line 4541 "dhcp6_parser.cc" break; case 828: // $@131: %empty -#line 2901 "dhcp6_parser.yy" +#line 2906 "dhcp6_parser.yy" { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 4546 "dhcp6_parser.cc" +#line 4551 "dhcp6_parser.cc" break; case 829: // sub_config_control: "{" $@131 config_control_params "}" -#line 2905 "dhcp6_parser.yy" +#line 2910 "dhcp6_parser.yy" { // No config_control params are required // parsing completed } -#line 4555 "dhcp6_parser.cc" +#line 4560 "dhcp6_parser.cc" break; case 832: // config_control_params: config_control_params "," -#line 2913 "dhcp6_parser.yy" +#line 2918 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4563 "dhcp6_parser.cc" +#line 4568 "dhcp6_parser.cc" break; case 835: // $@132: %empty -#line 2923 "dhcp6_parser.yy" +#line 2928 "dhcp6_parser.yy" { ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4571,30 +4576,30 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.CONFIG_DATABASE); } -#line 4575 "dhcp6_parser.cc" +#line 4580 "dhcp6_parser.cc" break; case 836: // config_databases: "config-databases" $@132 ":" "[" database_list "]" -#line 2929 "dhcp6_parser.yy" +#line 2934 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4584 "dhcp6_parser.cc" +#line 4589 "dhcp6_parser.cc" break; case 837: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer" -#line 2934 "dhcp6_parser.yy" +#line 2939 "dhcp6_parser.yy" { ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location)); ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-fetch-wait-time", value); } -#line 4594 "dhcp6_parser.cc" +#line 4599 "dhcp6_parser.cc" break; case 838: // $@133: %empty -#line 2942 "dhcp6_parser.yy" +#line 2947 "dhcp6_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4602,83 +4607,83 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 4606 "dhcp6_parser.cc" +#line 4611 "dhcp6_parser.cc" break; case 839: // loggers: "loggers" $@133 ":" "[" loggers_entries "]" -#line 2948 "dhcp6_parser.yy" +#line 2953 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4615 "dhcp6_parser.cc" +#line 4620 "dhcp6_parser.cc" break; case 842: // loggers_entries: loggers_entries "," -#line 2957 "dhcp6_parser.yy" +#line 2962 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4623 "dhcp6_parser.cc" +#line 4628 "dhcp6_parser.cc" break; case 843: // $@134: %empty -#line 2963 "dhcp6_parser.yy" +#line 2968 "dhcp6_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 4633 "dhcp6_parser.cc" +#line 4638 "dhcp6_parser.cc" break; case 844: // logger_entry: "{" $@134 logger_params "}" -#line 2967 "dhcp6_parser.yy" +#line 2972 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4641 "dhcp6_parser.cc" +#line 4646 "dhcp6_parser.cc" break; case 847: // logger_params: logger_params "," -#line 2973 "dhcp6_parser.yy" +#line 2978 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4649 "dhcp6_parser.cc" +#line 4654 "dhcp6_parser.cc" break; case 855: // debuglevel: "debuglevel" ":" "integer" -#line 2987 "dhcp6_parser.yy" +#line 2992 "dhcp6_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 4659 "dhcp6_parser.cc" +#line 4664 "dhcp6_parser.cc" break; case 856: // $@135: %empty -#line 2993 "dhcp6_parser.yy" +#line 2998 "dhcp6_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4668 "dhcp6_parser.cc" +#line 4673 "dhcp6_parser.cc" break; case 857: // severity: "severity" $@135 ":" "constant string" -#line 2996 "dhcp6_parser.yy" +#line 3001 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 4678 "dhcp6_parser.cc" +#line 4683 "dhcp6_parser.cc" break; case 858: // $@136: %empty -#line 3002 "dhcp6_parser.yy" +#line 3007 "dhcp6_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -4686,122 +4691,122 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 4690 "dhcp6_parser.cc" +#line 4695 "dhcp6_parser.cc" break; case 859: // output_options_list: "output_options" $@136 ":" "[" output_options_list_content "]" -#line 3008 "dhcp6_parser.yy" +#line 3013 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4699 "dhcp6_parser.cc" +#line 4704 "dhcp6_parser.cc" break; case 862: // output_options_list_content: output_options_list_content "," -#line 3015 "dhcp6_parser.yy" +#line 3020 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4707 "dhcp6_parser.cc" +#line 4712 "dhcp6_parser.cc" break; case 863: // $@137: %empty -#line 3020 "dhcp6_parser.yy" +#line 3025 "dhcp6_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 4717 "dhcp6_parser.cc" +#line 4722 "dhcp6_parser.cc" break; case 864: // output_entry: "{" $@137 output_params_list "}" -#line 3024 "dhcp6_parser.yy" +#line 3029 "dhcp6_parser.yy" { ctx.stack_.pop_back(); } -#line 4725 "dhcp6_parser.cc" +#line 4730 "dhcp6_parser.cc" break; case 867: // output_params_list: output_params_list "," -#line 3030 "dhcp6_parser.yy" +#line 3035 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4733 "dhcp6_parser.cc" +#line 4738 "dhcp6_parser.cc" break; case 873: // $@138: %empty -#line 3042 "dhcp6_parser.yy" +#line 3047 "dhcp6_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4742 "dhcp6_parser.cc" +#line 4747 "dhcp6_parser.cc" break; case 874: // output: "output" $@138 ":" "constant string" -#line 3045 "dhcp6_parser.yy" +#line 3050 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 4752 "dhcp6_parser.cc" +#line 4757 "dhcp6_parser.cc" break; case 875: // flush: "flush" ":" "boolean" -#line 3051 "dhcp6_parser.yy" +#line 3056 "dhcp6_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 4762 "dhcp6_parser.cc" +#line 4767 "dhcp6_parser.cc" break; case 876: // maxsize: "maxsize" ":" "integer" -#line 3057 "dhcp6_parser.yy" +#line 3062 "dhcp6_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 4772 "dhcp6_parser.cc" +#line 4777 "dhcp6_parser.cc" break; case 877: // maxver: "maxver" ":" "integer" -#line 3063 "dhcp6_parser.yy" +#line 3068 "dhcp6_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 4782 "dhcp6_parser.cc" +#line 4787 "dhcp6_parser.cc" break; case 878: // $@139: %empty -#line 3069 "dhcp6_parser.yy" +#line 3074 "dhcp6_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORD); } -#line 4791 "dhcp6_parser.cc" +#line 4796 "dhcp6_parser.cc" break; case 879: // pattern: "pattern" $@139 ":" "constant string" -#line 3072 "dhcp6_parser.yy" +#line 3077 "dhcp6_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 4801 "dhcp6_parser.cc" +#line 4806 "dhcp6_parser.cc" break; case 880: // $@140: %empty -#line 3078 "dhcp6_parser.yy" +#line 3083 "dhcp6_parser.yy" { ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location)); ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -4809,38 +4814,38 @@ namespace isc { namespace dhcp { ctx.stack_.push_back(i); ctx.enter(ctx.COMPATIBILITY); } -#line 4813 "dhcp6_parser.cc" +#line 4818 "dhcp6_parser.cc" break; case 881: // compatibility: "compatibility" $@140 ":" "{" compatibility_params "}" -#line 3084 "dhcp6_parser.yy" +#line 3089 "dhcp6_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 4822 "dhcp6_parser.cc" +#line 4827 "dhcp6_parser.cc" break; case 884: // compatibility_params: compatibility_params "," -#line 3091 "dhcp6_parser.yy" +#line 3096 "dhcp6_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 4830 "dhcp6_parser.cc" +#line 4835 "dhcp6_parser.cc" break; case 887: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean" -#line 3100 "dhcp6_parser.yy" +#line 3105 "dhcp6_parser.yy" { ctx.unique("lenient-option-parsing", ctx.loc2pos(yystack_[2].location)); ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("lenient-option-parsing", b); } -#line 4840 "dhcp6_parser.cc" +#line 4845 "dhcp6_parser.cc" break; -#line 4844 "dhcp6_parser.cc" +#line 4849 "dhcp6_parser.cc" default: break; @@ -6401,95 +6406,95 @@ namespace isc { namespace dhcp { const short Dhcp6Parser::yyrline_[] = { - 0, 311, 311, 311, 312, 312, 313, 313, 314, 314, - 315, 315, 316, 316, 317, 317, 318, 318, 319, 319, + 0, 316, 316, 316, 317, 317, 318, 318, 319, 319, 320, 320, 321, 321, 322, 322, 323, 323, 324, 324, - 332, 333, 334, 335, 336, 337, 338, 341, 346, 346, - 357, 360, 361, 364, 369, 375, 380, 380, 387, 388, - 391, 395, 399, 405, 405, 412, 413, 416, 420, 424, - 434, 443, 443, 458, 458, 472, 475, 481, 481, 490, - 491, 492, 499, 500, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 569, 569, 578, 584, 590, 596, 602, 608, 614, 620, - 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, - 680, 689, 692, 695, 698, 701, 707, 707, 716, 716, - 725, 731, 737, 743, 743, 752, 752, 761, 767, 773, - 779, 779, 788, 794, 794, 803, 803, 812, 818, 824, - 830, 830, 842, 842, 851, 852, 853, 858, 859, 860, - 861, 862, 863, 864, 865, 868, 868, 879, 885, 891, - 897, 903, 903, 916, 916, 929, 929, 940, 941, 944, - 945, 946, 951, 951, 961, 962, 963, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, - 981, 982, 983, 984, 985, 986, 987, 988, 989, 992, - 992, 1000, 1001, 1002, 1005, 1005, 1014, 1014, 1023, 1023, - 1032, 1038, 1038, 1047, 1053, 1059, 1065, 1071, 1077, 1083, - 1090, 1096, 1096, 1104, 1105, 1106, 1109, 1115, 1121, 1121, - 1130, 1130, 1139, 1139, 1148, 1148, 1157, 1157, 1168, 1169, - 1170, 1175, 1176, 1179, 1179, 1198, 1198, 1216, 1216, 1227, - 1228, 1229, 1234, 1235, 1238, 1243, 1248, 1248, 1259, 1260, - 1261, 1266, 1267, 1268, 1271, 1276, 1283, 1283, 1296, 1296, - 1309, 1310, 1311, 1316, 1317, 1318, 1319, 1320, 1321, 1324, - 1330, 1336, 1342, 1342, 1353, 1354, 1357, 1358, 1359, 1364, - 1364, 1374, 1374, 1384, 1385, 1386, 1389, 1392, 1393, 1396, - 1396, 1405, 1405, 1414, 1414, 1426, 1427, 1428, 1433, 1434, - 1435, 1436, 1437, 1438, 1441, 1447, 1453, 1459, 1465, 1471, - 1480, 1480, 1494, 1495, 1498, 1499, 1500, 1509, 1509, 1535, - 1535, 1546, 1547, 1548, 1554, 1555, 1556, 1557, 1558, 1559, - 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, - 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, - 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, - 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, - 1602, 1602, 1611, 1611, 1620, 1620, 1629, 1629, 1638, 1638, - 1649, 1655, 1661, 1667, 1667, 1675, 1676, 1677, 1678, 1681, - 1687, 1695, 1695, 1707, 1708, 1712, 1713, 1714, 1719, 1719, - 1727, 1728, 1729, 1734, 1735, 1736, 1737, 1738, 1739, 1740, - 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, - 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, - 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, - 1771, 1772, 1773, 1774, 1775, 1776, 1783, 1783, 1797, 1797, - 1806, 1807, 1810, 1811, 1812, 1819, 1819, 1834, 1834, 1848, - 1849, 1852, 1853, 1854, 1859, 1860, 1861, 1862, 1863, 1864, - 1865, 1866, 1867, 1868, 1871, 1873, 1879, 1881, 1881, 1890, - 1890, 1899, 1899, 1908, 1910, 1910, 1919, 1929, 1929, 1942, - 1943, 1948, 1949, 1950, 1957, 1957, 1969, 1969, 1981, 1982, - 1987, 1988, 1989, 1996, 1997, 1998, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2008, 2010, 2010, 2019, 2021, 2023, 2029, - 2035, 2044, 2044, 2057, 2058, 2061, 2062, 2063, 2068, 2068, - 2078, 2078, 2088, 2089, 2090, 2095, 2096, 2097, 2098, 2099, - 2100, 2101, 2104, 2104, 2113, 2113, 2138, 2138, 2168, 2168, - 2181, 2182, 2185, 2186, 2187, 2192, 2192, 2204, 2204, 2216, - 2217, 2218, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, - 2231, 2232, 2233, 2236, 2236, 2245, 2251, 2251, 2260, 2266, - 2275, 2275, 2286, 2287, 2290, 2291, 2292, 2297, 2297, 2306, - 2306, 2315, 2316, 2319, 2320, 2321, 2327, 2328, 2329, 2330, - 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2340, 2340, 2351, - 2351, 2362, 2362, 2371, 2371, 2380, 2380, 2389, 2389, 2398, - 2398, 2412, 2412, 2423, 2424, 2427, 2427, 2439, 2439, 2450, - 2451, 2452, 2457, 2457, 2467, 2468, 2471, 2472, 2473, 2478, - 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, - 2489, 2490, 2491, 2494, 2496, 2496, 2505, 2505, 2514, 2523, - 2523, 2536, 2537, 2538, 2543, 2544, 2545, 2546, 2547, 2548, - 2549, 2550, 2551, 2554, 2554, 2562, 2563, 2564, 2567, 2573, - 2573, 2582, 2588, 2596, 2604, 2604, 2615, 2616, 2617, 2622, - 2623, 2624, 2625, 2626, 2629, 2629, 2638, 2638, 2650, 2650, - 2663, 2664, 2665, 2670, 2671, 2672, 2673, 2674, 2675, 2678, - 2684, 2684, 2693, 2699, 2699, 2709, 2709, 2722, 2722, 2732, - 2733, 2734, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, - 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, - 2759, 2766, 2766, 2775, 2775, 2784, 2790, 2790, 2799, 2805, - 2811, 2811, 2820, 2821, 2824, 2824, 2834, 2841, 2848, 2848, - 2857, 2857, 2867, 2867, 2877, 2877, 2889, 2889, 2901, 2901, - 2911, 2912, 2913, 2919, 2920, 2923, 2923, 2934, 2942, 2942, - 2955, 2956, 2957, 2963, 2963, 2971, 2972, 2973, 2978, 2979, - 2980, 2981, 2982, 2983, 2984, 2987, 2993, 2993, 3002, 3002, - 3013, 3014, 3015, 3020, 3020, 3028, 3029, 3030, 3035, 3036, - 3037, 3038, 3039, 3042, 3042, 3051, 3057, 3063, 3069, 3069, - 3078, 3078, 3089, 3090, 3091, 3096, 3097, 3100 + 325, 325, 326, 326, 327, 327, 328, 328, 329, 329, + 337, 338, 339, 340, 341, 342, 343, 346, 351, 351, + 362, 365, 366, 369, 374, 380, 385, 385, 392, 393, + 396, 400, 404, 410, 410, 417, 418, 421, 425, 429, + 439, 448, 448, 463, 463, 477, 480, 486, 486, 495, + 496, 497, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, + 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, + 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, + 574, 574, 583, 589, 595, 601, 607, 613, 619, 625, + 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, + 685, 694, 697, 700, 703, 706, 712, 712, 721, 721, + 730, 736, 742, 748, 748, 757, 757, 766, 772, 778, + 784, 784, 793, 799, 799, 808, 808, 817, 823, 829, + 835, 835, 847, 847, 856, 857, 858, 863, 864, 865, + 866, 867, 868, 869, 870, 873, 873, 884, 890, 896, + 902, 908, 908, 921, 921, 934, 934, 945, 946, 949, + 950, 951, 956, 956, 966, 967, 968, 973, 974, 975, + 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 997, + 997, 1005, 1006, 1007, 1010, 1010, 1019, 1019, 1028, 1028, + 1037, 1043, 1043, 1052, 1058, 1064, 1070, 1076, 1082, 1088, + 1095, 1101, 1101, 1109, 1110, 1111, 1114, 1120, 1126, 1126, + 1135, 1135, 1144, 1144, 1153, 1153, 1162, 1162, 1173, 1174, + 1175, 1180, 1181, 1184, 1184, 1203, 1203, 1221, 1221, 1232, + 1233, 1234, 1239, 1240, 1243, 1248, 1253, 1253, 1264, 1265, + 1266, 1271, 1272, 1273, 1276, 1281, 1288, 1288, 1301, 1301, + 1314, 1315, 1316, 1321, 1322, 1323, 1324, 1325, 1326, 1329, + 1335, 1341, 1347, 1347, 1358, 1359, 1362, 1363, 1364, 1369, + 1369, 1379, 1379, 1389, 1390, 1391, 1394, 1397, 1398, 1401, + 1401, 1410, 1410, 1419, 1419, 1431, 1432, 1433, 1438, 1439, + 1440, 1441, 1442, 1443, 1446, 1452, 1458, 1464, 1470, 1476, + 1485, 1485, 1499, 1500, 1503, 1504, 1505, 1514, 1514, 1540, + 1540, 1551, 1552, 1553, 1559, 1560, 1561, 1562, 1563, 1564, + 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, + 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, + 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, + 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, + 1607, 1607, 1616, 1616, 1625, 1625, 1634, 1634, 1643, 1643, + 1654, 1660, 1666, 1672, 1672, 1680, 1681, 1682, 1683, 1686, + 1692, 1700, 1700, 1712, 1713, 1717, 1718, 1719, 1724, 1724, + 1732, 1733, 1734, 1739, 1740, 1741, 1742, 1743, 1744, 1745, + 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, + 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, + 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, + 1776, 1777, 1778, 1779, 1780, 1781, 1788, 1788, 1802, 1802, + 1811, 1812, 1815, 1816, 1817, 1824, 1824, 1839, 1839, 1853, + 1854, 1857, 1858, 1859, 1864, 1865, 1866, 1867, 1868, 1869, + 1870, 1871, 1872, 1873, 1876, 1878, 1884, 1886, 1886, 1895, + 1895, 1904, 1904, 1913, 1915, 1915, 1924, 1934, 1934, 1947, + 1948, 1953, 1954, 1955, 1962, 1962, 1974, 1974, 1986, 1987, + 1992, 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, + 2008, 2009, 2010, 2013, 2015, 2015, 2024, 2026, 2028, 2034, + 2040, 2049, 2049, 2062, 2063, 2066, 2067, 2068, 2073, 2073, + 2083, 2083, 2093, 2094, 2095, 2100, 2101, 2102, 2103, 2104, + 2105, 2106, 2109, 2109, 2118, 2118, 2143, 2143, 2173, 2173, + 2186, 2187, 2190, 2191, 2192, 2197, 2197, 2209, 2209, 2221, + 2222, 2223, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, + 2236, 2237, 2238, 2241, 2241, 2250, 2256, 2256, 2265, 2271, + 2280, 2280, 2291, 2292, 2295, 2296, 2297, 2302, 2302, 2311, + 2311, 2320, 2321, 2324, 2325, 2326, 2332, 2333, 2334, 2335, + 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2345, 2345, 2356, + 2356, 2367, 2367, 2376, 2376, 2385, 2385, 2394, 2394, 2403, + 2403, 2417, 2417, 2428, 2429, 2432, 2432, 2444, 2444, 2455, + 2456, 2457, 2462, 2462, 2472, 2473, 2476, 2477, 2478, 2483, + 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, + 2494, 2495, 2496, 2499, 2501, 2501, 2510, 2510, 2519, 2528, + 2528, 2541, 2542, 2543, 2548, 2549, 2550, 2551, 2552, 2553, + 2554, 2555, 2556, 2559, 2559, 2567, 2568, 2569, 2572, 2578, + 2578, 2587, 2593, 2601, 2609, 2609, 2620, 2621, 2622, 2627, + 2628, 2629, 2630, 2631, 2634, 2634, 2643, 2643, 2655, 2655, + 2668, 2669, 2670, 2675, 2676, 2677, 2678, 2679, 2680, 2683, + 2689, 2689, 2698, 2704, 2704, 2714, 2714, 2727, 2727, 2737, + 2738, 2739, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, + 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, + 2764, 2771, 2771, 2780, 2780, 2789, 2795, 2795, 2804, 2810, + 2816, 2816, 2825, 2826, 2829, 2829, 2839, 2846, 2853, 2853, + 2862, 2862, 2872, 2872, 2882, 2882, 2894, 2894, 2906, 2906, + 2916, 2917, 2918, 2924, 2925, 2928, 2928, 2939, 2947, 2947, + 2960, 2961, 2962, 2968, 2968, 2976, 2977, 2978, 2983, 2984, + 2985, 2986, 2987, 2988, 2989, 2992, 2998, 2998, 3007, 3007, + 3018, 3019, 3020, 3025, 3025, 3033, 3034, 3035, 3040, 3041, + 3042, 3043, 3044, 3047, 3047, 3056, 3062, 3068, 3074, 3074, + 3083, 3083, 3094, 3095, 3096, 3101, 3102, 3105 }; void @@ -6522,9 +6527,9 @@ namespace isc { namespace dhcp { #line 14 "dhcp6_parser.yy" } } // isc::dhcp -#line 6526 "dhcp6_parser.cc" +#line 6531 "dhcp6_parser.cc" -#line 3106 "dhcp6_parser.yy" +#line 3111 "dhcp6_parser.yy" void diff --git a/src/bin/dhcp6/location.hh b/src/bin/dhcp6/location.hh index 4fb140a70e..d9e0df1a5c 100644 --- a/src/bin/dhcp6/location.hh +++ b/src/bin/dhcp6/location.hh @@ -1,3 +1,4 @@ +// Generated 202305171251 // A Bison parser, made by GNU Bison 3.8.2. // Locations for Bison parsers in C++ diff --git a/src/bin/netconf/location.hh b/src/bin/netconf/location.hh index 842a1114e8..a60860a7bc 100644 --- a/src/bin/netconf/location.hh +++ b/src/bin/netconf/location.hh @@ -1,3 +1,4 @@ +// Generated 202305171251 // A Bison parser, made by GNU Bison 3.8.2. // Locations for Bison parsers in C++ diff --git a/src/bin/netconf/netconf_parser.cc b/src/bin/netconf/netconf_parser.cc index c113378b02..bb96708f25 100644 --- a/src/bin/netconf/netconf_parser.cc +++ b/src/bin/netconf/netconf_parser.cc @@ -48,7 +48,12 @@ #include -#line 52 "netconf_parser.cc" +// Avoid warnings with the error counter. +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif + +#line 57 "netconf_parser.cc" #ifndef YY_ @@ -141,7 +146,7 @@ #line 14 "netconf_parser.yy" namespace isc { namespace netconf { -#line 145 "netconf_parser.cc" +#line 150 "netconf_parser.cc" /// Build a parser object. NetconfParser::NetconfParser (isc::netconf::ParserContext& ctx_yyarg) @@ -378,45 +383,45 @@ namespace isc { namespace netconf { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < string > (); } -#line 384 "netconf_parser.cc" +#line 389 "netconf_parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < int64_t > (); } -#line 390 "netconf_parser.cc" +#line 395 "netconf_parser.cc" break; case symbol_kind::S_FLOAT: // "floating point" -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < double > (); } -#line 396 "netconf_parser.cc" +#line 401 "netconf_parser.cc" break; case symbol_kind::S_BOOLEAN: // "boolean" -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < bool > (); } -#line 402 "netconf_parser.cc" +#line 407 "netconf_parser.cc" break; case symbol_kind::S_value: // value -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 408 "netconf_parser.cc" +#line 413 "netconf_parser.cc" break; case symbol_kind::S_map_value: // map_value -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 414 "netconf_parser.cc" +#line 419 "netconf_parser.cc" break; case symbol_kind::S_socket_type_value: // socket_type_value -#line 110 "netconf_parser.yy" +#line 115 "netconf_parser.yy" { yyoutput << yysym.value.template as < ElementPtr > (); } -#line 420 "netconf_parser.cc" +#line 425 "netconf_parser.cc" break; default: @@ -689,224 +694,224 @@ namespace isc { namespace netconf { switch (yyn) { case 2: // $@1: %empty -#line 121 "netconf_parser.yy" +#line 126 "netconf_parser.yy" { ctx.ctx_ = ctx.NO_KEYWORDS; } -#line 695 "netconf_parser.cc" +#line 700 "netconf_parser.cc" break; case 4: // $@2: %empty -#line 122 "netconf_parser.yy" +#line 127 "netconf_parser.yy" { ctx.ctx_ = ctx.CONFIG; } -#line 701 "netconf_parser.cc" +#line 706 "netconf_parser.cc" break; case 6: // $@3: %empty -#line 123 "netconf_parser.yy" +#line 128 "netconf_parser.yy" { ctx.ctx_ = ctx.NETCONF; } -#line 707 "netconf_parser.cc" +#line 712 "netconf_parser.cc" break; case 8: // $@4: %empty -#line 131 "netconf_parser.yy" +#line 136 "netconf_parser.yy" { // Parse the Netconf map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 717 "netconf_parser.cc" +#line 722 "netconf_parser.cc" break; case 9: // sub_netconf: "{" $@4 global_params "}" -#line 135 "netconf_parser.yy" +#line 140 "netconf_parser.yy" { // parsing completed } -#line 725 "netconf_parser.cc" +#line 730 "netconf_parser.cc" break; case 10: // json: value -#line 142 "netconf_parser.yy" +#line 147 "netconf_parser.yy" { // Push back the JSON value on the stack ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ()); } -#line 734 "netconf_parser.cc" +#line 739 "netconf_parser.cc" break; case 11: // value: "integer" -#line 148 "netconf_parser.yy" +#line 153 "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" +#line 745 "netconf_parser.cc" break; case 12: // value: "floating point" -#line 149 "netconf_parser.yy" +#line 154 "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" +#line 751 "netconf_parser.cc" break; case 13: // value: "boolean" -#line 150 "netconf_parser.yy" +#line 155 "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" +#line 757 "netconf_parser.cc" break; case 14: // value: "constant string" -#line 151 "netconf_parser.yy" +#line 156 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); } -#line 758 "netconf_parser.cc" +#line 763 "netconf_parser.cc" break; case 15: // value: "null" -#line 152 "netconf_parser.yy" +#line 157 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); } -#line 764 "netconf_parser.cc" +#line 769 "netconf_parser.cc" break; case 16: // value: map -#line 153 "netconf_parser.yy" +#line 158 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 770 "netconf_parser.cc" +#line 775 "netconf_parser.cc" break; case 17: // value: list_generic -#line 154 "netconf_parser.yy" +#line 159 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 776 "netconf_parser.cc" +#line 781 "netconf_parser.cc" break; case 18: // $@5: %empty -#line 158 "netconf_parser.yy" +#line 163 "netconf_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 787 "netconf_parser.cc" +#line 792 "netconf_parser.cc" break; case 19: // map: "{" $@5 map_content "}" -#line 163 "netconf_parser.yy" +#line 168 "netconf_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 797 "netconf_parser.cc" +#line 802 "netconf_parser.cc" break; case 20: // map_value: map -#line 169 "netconf_parser.yy" +#line 174 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); } -#line 803 "netconf_parser.cc" +#line 808 "netconf_parser.cc" break; case 23: // not_empty_map: "constant string" ":" value -#line 183 "netconf_parser.yy" +#line 188 "netconf_parser.yy" { // map containing a single entry ctx.unique(yystack_[2].value.as < string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 813 "netconf_parser.cc" +#line 818 "netconf_parser.cc" break; case 24: // not_empty_map: not_empty_map "," "constant string" ":" value -#line 188 "netconf_parser.yy" +#line 193 "netconf_parser.yy" { // map consisting of a shorter map followed by // comma and string:value ctx.unique(yystack_[2].value.as < string > (), ctx.loc2pos(yystack_[2].location)); ctx.stack_.back()->set(yystack_[2].value.as < string > (), yystack_[0].value.as < ElementPtr > ()); } -#line 824 "netconf_parser.cc" +#line 829 "netconf_parser.cc" break; case 25: // not_empty_map: not_empty_map "," -#line 194 "netconf_parser.yy" +#line 199 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 832 "netconf_parser.cc" +#line 837 "netconf_parser.cc" break; case 26: // $@6: %empty -#line 199 "netconf_parser.yy" +#line 204 "netconf_parser.yy" { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(l); } -#line 841 "netconf_parser.cc" +#line 846 "netconf_parser.cc" break; case 27: // list_generic: "[" $@6 list_content "]" -#line 202 "netconf_parser.yy" +#line 207 "netconf_parser.yy" { } -#line 848 "netconf_parser.cc" +#line 853 "netconf_parser.cc" break; case 30: // not_empty_list: value -#line 209 "netconf_parser.yy" +#line 214 "netconf_parser.yy" { // List consisting of a single element. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 857 "netconf_parser.cc" +#line 862 "netconf_parser.cc" break; case 31: // not_empty_list: not_empty_list "," value -#line 213 "netconf_parser.yy" +#line 218 "netconf_parser.yy" { // List ending with , and a value. ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ()); } -#line 866 "netconf_parser.cc" +#line 871 "netconf_parser.cc" break; case 32: // not_empty_list: not_empty_list "," -#line 217 "netconf_parser.yy" +#line 222 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 874 "netconf_parser.cc" +#line 879 "netconf_parser.cc" break; case 33: // unknown_map_entry: "constant string" ":" -#line 229 "netconf_parser.yy" +#line 234 "netconf_parser.yy" { const string& where = ctx.contextName(); const string& keyword = yystack_[1].value.as < string > (); error(yystack_[1].location, "got unexpected keyword \"" + keyword + "\" in " + where + " map."); } -#line 885 "netconf_parser.cc" +#line 890 "netconf_parser.cc" break; case 34: // $@7: %empty -#line 237 "netconf_parser.yy" +#line 242 "netconf_parser.yy" { // This code is executed when we're about to start parsing // the content of the map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.push_back(m); } -#line 896 "netconf_parser.cc" +#line 901 "netconf_parser.cc" break; case 35: // netconf_syntax_map: "{" $@7 global_object "}" -#line 242 "netconf_parser.yy" +#line 247 "netconf_parser.yy" { // map parsing completed. If we ever want to do any wrap up // (maybe some sanity checking), this would be the best place // for it. } -#line 906 "netconf_parser.cc" +#line 911 "netconf_parser.cc" break; case 36: // $@8: %empty -#line 249 "netconf_parser.yy" +#line 254 "netconf_parser.yy" { // Let's create a MapElement that will represent it, add it to the // top level map (that's already on the stack) and put the new map @@ -920,76 +925,76 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.NETCONF); } -#line 924 "netconf_parser.cc" +#line 929 "netconf_parser.cc" break; case 37: // global_object: "Netconf" $@8 ":" "{" global_params "}" -#line 261 "netconf_parser.yy" +#line 266 "netconf_parser.yy" { // Ok, we're done with parsing Netconf. Let's take the map // off the stack. ctx.stack_.pop_back(); ctx.leave(); } -#line 935 "netconf_parser.cc" +#line 940 "netconf_parser.cc" break; case 39: // global_object_comma: global_object "," -#line 270 "netconf_parser.yy" +#line 275 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 943 "netconf_parser.cc" +#line 948 "netconf_parser.cc" break; case 44: // not_empty_global_params: not_empty_global_params "," -#line 281 "netconf_parser.yy" +#line 286 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 951 "netconf_parser.cc" +#line 956 "netconf_parser.cc" break; case 54: // boot_update: "boot-update" ":" "boolean" -#line 299 "netconf_parser.yy" +#line 304 "netconf_parser.yy" { ctx.unique("boot-update", ctx.loc2pos(yystack_[2].location)); ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("boot-update", flag); } -#line 961 "netconf_parser.cc" +#line 966 "netconf_parser.cc" break; case 55: // subscribe_changes: "subscribe-changes" ":" "boolean" -#line 305 "netconf_parser.yy" +#line 310 "netconf_parser.yy" { ctx.unique("subscribe-changes", ctx.loc2pos(yystack_[2].location)); ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("subscribe-changes", flag); } -#line 971 "netconf_parser.cc" +#line 976 "netconf_parser.cc" break; case 56: // validate_changes: "validate-changes" ":" "boolean" -#line 311 "netconf_parser.yy" +#line 316 "netconf_parser.yy" { ctx.unique("validate-changes", ctx.loc2pos(yystack_[2].location)); ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("validate-changes", flag); } -#line 981 "netconf_parser.cc" +#line 986 "netconf_parser.cc" break; case 57: // $@9: %empty -#line 317 "netconf_parser.yy" +#line 322 "netconf_parser.yy" { ctx.enter(ctx.NO_KEYWORDS); } -#line 989 "netconf_parser.cc" +#line 994 "netconf_parser.cc" break; case 58: // user_context: "user-context" $@9 ":" map_value -#line 319 "netconf_parser.yy" +#line 324 "netconf_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context = yystack_[0].value.as < ElementPtr > (); @@ -1012,19 +1017,19 @@ namespace isc { namespace netconf { parent->set("user-context", user_context); ctx.leave(); } -#line 1016 "netconf_parser.cc" +#line 1021 "netconf_parser.cc" break; case 59: // $@10: %empty -#line 342 "netconf_parser.yy" +#line 347 "netconf_parser.yy" { ctx.enter(ctx.NO_KEYWORDS); } -#line 1024 "netconf_parser.cc" +#line 1029 "netconf_parser.cc" break; case 60: // comment: "comment" $@10 ":" "constant string" -#line 344 "netconf_parser.yy" +#line 349 "netconf_parser.yy" { ElementPtr parent = ctx.stack_.back(); ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location))); @@ -1049,11 +1054,11 @@ namespace isc { namespace netconf { parent->set("user-context", user_context); ctx.leave(); } -#line 1053 "netconf_parser.cc" +#line 1058 "netconf_parser.cc" break; case 61: // $@11: %empty -#line 370 "netconf_parser.yy" +#line 375 "netconf_parser.yy" { ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1061,91 +1066,91 @@ namespace isc { namespace netconf { ctx.stack_.push_back(l); ctx.enter(ctx.HOOKS_LIBRARIES); } -#line 1065 "netconf_parser.cc" +#line 1070 "netconf_parser.cc" break; case 62: // hooks_libraries: "hooks-libraries" $@11 ":" "[" hooks_libraries_list "]" -#line 376 "netconf_parser.yy" +#line 381 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1074 "netconf_parser.cc" +#line 1079 "netconf_parser.cc" break; case 67: // not_empty_hooks_libraries_list: not_empty_hooks_libraries_list "," -#line 387 "netconf_parser.yy" +#line 392 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1082 "netconf_parser.cc" +#line 1087 "netconf_parser.cc" break; case 68: // $@12: %empty -#line 392 "netconf_parser.yy" +#line 397 "netconf_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1092 "netconf_parser.cc" +#line 1097 "netconf_parser.cc" break; case 69: // hooks_library: "{" $@12 hooks_params "}" -#line 396 "netconf_parser.yy" +#line 401 "netconf_parser.yy" { ctx.stack_.pop_back(); } -#line 1100 "netconf_parser.cc" +#line 1105 "netconf_parser.cc" break; case 72: // hooks_params: hooks_params "," -#line 402 "netconf_parser.yy" +#line 407 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1108 "netconf_parser.cc" +#line 1113 "netconf_parser.cc" break; case 76: // $@13: %empty -#line 412 "netconf_parser.yy" +#line 417 "netconf_parser.yy" { ctx.unique("library", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1117 "netconf_parser.cc" +#line 1122 "netconf_parser.cc" break; case 77: // library: "library" $@13 ":" "constant string" -#line 415 "netconf_parser.yy" +#line 420 "netconf_parser.yy" { ElementPtr lib(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("library", lib); ctx.leave(); } -#line 1127 "netconf_parser.cc" +#line 1132 "netconf_parser.cc" break; case 78: // $@14: %empty -#line 421 "netconf_parser.yy" +#line 426 "netconf_parser.yy" { ctx.unique("parameters", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1136 "netconf_parser.cc" +#line 1141 "netconf_parser.cc" break; case 79: // parameters: "parameters" $@14 ":" map_value -#line 424 "netconf_parser.yy" +#line 429 "netconf_parser.yy" { ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1145 "netconf_parser.cc" +#line 1150 "netconf_parser.cc" break; case 80: // $@15: %empty -#line 432 "netconf_parser.yy" +#line 437 "netconf_parser.yy" { ctx.unique("managed-servers", ctx.loc2pos(yystack_[2].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location))); @@ -1153,28 +1158,28 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.MANAGED_SERVERS); } -#line 1157 "netconf_parser.cc" +#line 1162 "netconf_parser.cc" break; case 81: // managed_servers: "managed-servers" ":" "{" $@15 servers_entries "}" -#line 438 "netconf_parser.yy" +#line 443 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1166 "netconf_parser.cc" +#line 1171 "netconf_parser.cc" break; case 86: // not_empty_servers_entries: not_empty_servers_entries "," -#line 449 "netconf_parser.yy" +#line 454 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1174 "netconf_parser.cc" +#line 1179 "netconf_parser.cc" break; case 92: // $@16: %empty -#line 465 "netconf_parser.yy" +#line 470 "netconf_parser.yy" { ctx.unique("dhcp4", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1182,20 +1187,20 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1186 "netconf_parser.cc" +#line 1191 "netconf_parser.cc" break; case 93: // dhcp4_server: "dhcp4" $@16 ":" "{" managed_server_params "}" -#line 471 "netconf_parser.yy" +#line 476 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1195 "netconf_parser.cc" +#line 1200 "netconf_parser.cc" break; case 94: // $@17: %empty -#line 477 "netconf_parser.yy" +#line 482 "netconf_parser.yy" { ctx.unique("dhcp6", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1203,20 +1208,20 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1207 "netconf_parser.cc" +#line 1212 "netconf_parser.cc" break; case 95: // dhcp6_server: "dhcp6" $@17 ":" "{" managed_server_params "}" -#line 483 "netconf_parser.yy" +#line 488 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1216 "netconf_parser.cc" +#line 1221 "netconf_parser.cc" break; case 96: // $@18: %empty -#line 489 "netconf_parser.yy" +#line 494 "netconf_parser.yy" { ctx.unique("d2", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1224,20 +1229,20 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1228 "netconf_parser.cc" +#line 1233 "netconf_parser.cc" break; case 97: // d2_server: "d2" $@18 ":" "{" managed_server_params "}" -#line 495 "netconf_parser.yy" +#line 500 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1237 "netconf_parser.cc" +#line 1242 "netconf_parser.cc" break; case 98: // $@19: %empty -#line 501 "netconf_parser.yy" +#line 506 "netconf_parser.yy" { ctx.unique("ca", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1245,47 +1250,47 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.SERVER); } -#line 1249 "netconf_parser.cc" +#line 1254 "netconf_parser.cc" break; case 99: // ca_server: "ca" $@19 ":" "{" managed_server_params "}" -#line 507 "netconf_parser.yy" +#line 512 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1258 "netconf_parser.cc" +#line 1263 "netconf_parser.cc" break; case 102: // managed_server_params: managed_server_params "," -#line 515 "netconf_parser.yy" +#line 520 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1266 "netconf_parser.cc" +#line 1271 "netconf_parser.cc" break; case 111: // $@20: %empty -#line 532 "netconf_parser.yy" +#line 537 "netconf_parser.yy" { ctx.unique("model", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1275 "netconf_parser.cc" +#line 1280 "netconf_parser.cc" break; case 112: // model: "model" $@20 ":" "constant string" -#line 535 "netconf_parser.yy" +#line 540 "netconf_parser.yy" { ElementPtr model(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("model", model); ctx.leave(); } -#line 1285 "netconf_parser.cc" +#line 1290 "netconf_parser.cc" break; case 113: // $@21: %empty -#line 542 "netconf_parser.yy" +#line 547 "netconf_parser.yy" { ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location)); ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -1293,102 +1298,102 @@ namespace isc { namespace netconf { ctx.stack_.push_back(m); ctx.enter(ctx.CONTROL_SOCKET); } -#line 1297 "netconf_parser.cc" +#line 1302 "netconf_parser.cc" break; case 114: // control_socket: "control-socket" $@21 ":" "{" control_socket_params "}" -#line 548 "netconf_parser.yy" +#line 553 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1306 "netconf_parser.cc" +#line 1311 "netconf_parser.cc" break; case 117: // control_socket_params: control_socket_params "," -#line 556 "netconf_parser.yy" +#line 561 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1314 "netconf_parser.cc" +#line 1319 "netconf_parser.cc" break; case 124: // $@22: %empty -#line 569 "netconf_parser.yy" +#line 574 "netconf_parser.yy" { ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.SOCKET_TYPE); } -#line 1323 "netconf_parser.cc" +#line 1328 "netconf_parser.cc" break; case 125: // socket_type: "socket-type" $@22 ":" socket_type_value -#line 572 "netconf_parser.yy" +#line 577 "netconf_parser.yy" { ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ()); ctx.leave(); } -#line 1332 "netconf_parser.cc" +#line 1337 "netconf_parser.cc" break; case 126: // socket_type_value: "unix" -#line 578 "netconf_parser.yy" +#line 583 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); } -#line 1338 "netconf_parser.cc" +#line 1343 "netconf_parser.cc" break; case 127: // socket_type_value: "http" -#line 579 "netconf_parser.yy" +#line 584 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); } -#line 1344 "netconf_parser.cc" +#line 1349 "netconf_parser.cc" break; case 128: // socket_type_value: "stdout" -#line 580 "netconf_parser.yy" +#line 585 "netconf_parser.yy" { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); } -#line 1350 "netconf_parser.cc" +#line 1355 "netconf_parser.cc" break; case 129: // $@23: %empty -#line 583 "netconf_parser.yy" +#line 588 "netconf_parser.yy" { ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1359 "netconf_parser.cc" +#line 1364 "netconf_parser.cc" break; case 130: // socket_name: "socket-name" $@23 ":" "constant string" -#line 586 "netconf_parser.yy" +#line 591 "netconf_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-name", name); ctx.leave(); } -#line 1369 "netconf_parser.cc" +#line 1374 "netconf_parser.cc" break; case 131: // $@24: %empty -#line 593 "netconf_parser.yy" +#line 598 "netconf_parser.yy" { ctx.unique("socket-url", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1378 "netconf_parser.cc" +#line 1383 "netconf_parser.cc" break; case 132: // socket_url: "socket-url" $@24 ":" "constant string" -#line 596 "netconf_parser.yy" +#line 601 "netconf_parser.yy" { ElementPtr url(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("socket-url", url); ctx.leave(); } -#line 1388 "netconf_parser.cc" +#line 1393 "netconf_parser.cc" break; case 133: // $@25: %empty -#line 606 "netconf_parser.yy" +#line 611 "netconf_parser.yy" { ctx.unique("loggers", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1396,102 +1401,102 @@ namespace isc { namespace netconf { ctx.stack_.push_back(l); ctx.enter(ctx.LOGGERS); } -#line 1400 "netconf_parser.cc" +#line 1405 "netconf_parser.cc" break; case 134: // loggers: "loggers" $@25 ":" "[" loggers_entries "]" -#line 612 "netconf_parser.yy" +#line 617 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1409 "netconf_parser.cc" +#line 1414 "netconf_parser.cc" break; case 137: // loggers_entries: loggers_entries "," -#line 621 "netconf_parser.yy" +#line 626 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1417 "netconf_parser.cc" +#line 1422 "netconf_parser.cc" break; case 138: // $@26: %empty -#line 627 "netconf_parser.yy" +#line 632 "netconf_parser.yy" { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); ctx.stack_.push_back(l); } -#line 1427 "netconf_parser.cc" +#line 1432 "netconf_parser.cc" break; case 139: // logger_entry: "{" $@26 logger_params "}" -#line 631 "netconf_parser.yy" +#line 636 "netconf_parser.yy" { ctx.stack_.pop_back(); } -#line 1435 "netconf_parser.cc" +#line 1440 "netconf_parser.cc" break; case 142: // logger_params: logger_params "," -#line 637 "netconf_parser.yy" +#line 642 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1443 "netconf_parser.cc" +#line 1448 "netconf_parser.cc" break; case 150: // $@27: %empty -#line 651 "netconf_parser.yy" +#line 656 "netconf_parser.yy" { ctx.unique("name", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1452 "netconf_parser.cc" +#line 1457 "netconf_parser.cc" break; case 151: // name: "name" $@27 ":" "constant string" -#line 654 "netconf_parser.yy" +#line 659 "netconf_parser.yy" { ElementPtr name(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("name", name); ctx.leave(); } -#line 1462 "netconf_parser.cc" +#line 1467 "netconf_parser.cc" break; case 152: // debuglevel: "debuglevel" ":" "integer" -#line 660 "netconf_parser.yy" +#line 665 "netconf_parser.yy" { ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location)); ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); } -#line 1472 "netconf_parser.cc" +#line 1477 "netconf_parser.cc" break; case 153: // $@28: %empty -#line 666 "netconf_parser.yy" +#line 671 "netconf_parser.yy" { ctx.unique("severity", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1481 "netconf_parser.cc" +#line 1486 "netconf_parser.cc" break; case 154: // severity: "severity" $@28 ":" "constant string" -#line 669 "netconf_parser.yy" +#line 674 "netconf_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); ctx.leave(); } -#line 1491 "netconf_parser.cc" +#line 1496 "netconf_parser.cc" break; case 155: // $@29: %empty -#line 675 "netconf_parser.yy" +#line 680 "netconf_parser.yy" { ctx.unique("output_options", ctx.loc2pos(yystack_[0].location)); ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); @@ -1499,122 +1504,122 @@ namespace isc { namespace netconf { ctx.stack_.push_back(l); ctx.enter(ctx.OUTPUT_OPTIONS); } -#line 1503 "netconf_parser.cc" +#line 1508 "netconf_parser.cc" break; case 156: // output_options_list: "output_options" $@29 ":" "[" output_options_list_content "]" -#line 681 "netconf_parser.yy" +#line 686 "netconf_parser.yy" { ctx.stack_.pop_back(); ctx.leave(); } -#line 1512 "netconf_parser.cc" +#line 1517 "netconf_parser.cc" break; case 159: // output_options_list_content: output_options_list_content "," -#line 688 "netconf_parser.yy" +#line 693 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1520 "netconf_parser.cc" +#line 1525 "netconf_parser.cc" break; case 160: // $@30: %empty -#line 693 "netconf_parser.yy" +#line 698 "netconf_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } -#line 1530 "netconf_parser.cc" +#line 1535 "netconf_parser.cc" break; case 161: // output_entry: "{" $@30 output_params_list "}" -#line 697 "netconf_parser.yy" +#line 702 "netconf_parser.yy" { ctx.stack_.pop_back(); } -#line 1538 "netconf_parser.cc" +#line 1543 "netconf_parser.cc" break; case 164: // output_params_list: output_params_list "," -#line 703 "netconf_parser.yy" +#line 708 "netconf_parser.yy" { ctx.warnAboutExtraCommas(yystack_[0].location); } -#line 1546 "netconf_parser.cc" +#line 1551 "netconf_parser.cc" break; case 170: // $@31: %empty -#line 715 "netconf_parser.yy" +#line 720 "netconf_parser.yy" { ctx.unique("output", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1555 "netconf_parser.cc" +#line 1560 "netconf_parser.cc" break; case 171: // output: "output" $@31 ":" "constant string" -#line 718 "netconf_parser.yy" +#line 723 "netconf_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); ctx.leave(); } -#line 1565 "netconf_parser.cc" +#line 1570 "netconf_parser.cc" break; case 172: // flush: "flush" ":" "boolean" -#line 724 "netconf_parser.yy" +#line 729 "netconf_parser.yy" { ctx.unique("flush", ctx.loc2pos(yystack_[2].location)); ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); } -#line 1575 "netconf_parser.cc" +#line 1580 "netconf_parser.cc" break; case 173: // maxsize: "maxsize" ":" "integer" -#line 730 "netconf_parser.yy" +#line 735 "netconf_parser.yy" { ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location)); ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); } -#line 1585 "netconf_parser.cc" +#line 1590 "netconf_parser.cc" break; case 174: // maxver: "maxver" ":" "integer" -#line 736 "netconf_parser.yy" +#line 741 "netconf_parser.yy" { ctx.unique("maxver", ctx.loc2pos(yystack_[2].location)); ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); } -#line 1595 "netconf_parser.cc" +#line 1600 "netconf_parser.cc" break; case 175: // $@32: %empty -#line 742 "netconf_parser.yy" +#line 747 "netconf_parser.yy" { ctx.unique("pattern", ctx.loc2pos(yystack_[0].location)); ctx.enter(ctx.NO_KEYWORDS); } -#line 1604 "netconf_parser.cc" +#line 1609 "netconf_parser.cc" break; case 176: // pattern: "pattern" $@32 ":" "constant string" -#line 745 "netconf_parser.yy" +#line 750 "netconf_parser.yy" { ElementPtr sev(new StringElement(yystack_[0].value.as < string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("pattern", sev); ctx.leave(); } -#line 1614 "netconf_parser.cc" +#line 1619 "netconf_parser.cc" break; -#line 1618 "netconf_parser.cc" +#line 1623 "netconf_parser.cc" default: break; @@ -2249,24 +2254,24 @@ namespace isc { namespace netconf { const short NetconfParser::yyrline_[] = { - 0, 121, 121, 121, 122, 122, 123, 123, 131, 131, - 142, 148, 149, 150, 151, 152, 153, 154, 158, 158, - 169, 174, 175, 183, 188, 194, 199, 199, 205, 206, - 209, 213, 217, 229, 237, 237, 249, 249, 267, 270, - 275, 276, 279, 280, 281, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 299, 305, 311, 317, 317, 342, - 342, 370, 370, 381, 382, 385, 386, 387, 392, 392, - 400, 401, 402, 405, 408, 409, 412, 412, 421, 421, - 432, 432, 443, 444, 447, 448, 449, 457, 458, 459, - 460, 461, 465, 465, 477, 477, 489, 489, 501, 501, - 513, 514, 515, 521, 522, 523, 524, 525, 526, 527, - 528, 532, 532, 542, 542, 554, 555, 556, 561, 562, - 563, 564, 565, 566, 569, 569, 578, 579, 580, 583, - 583, 593, 593, 606, 606, 619, 620, 621, 627, 627, - 635, 636, 637, 642, 643, 644, 645, 646, 647, 648, - 651, 651, 660, 666, 666, 675, 675, 686, 687, 688, - 693, 693, 701, 702, 703, 708, 709, 710, 711, 712, - 715, 715, 724, 730, 736, 742, 742 + 0, 126, 126, 126, 127, 127, 128, 128, 136, 136, + 147, 153, 154, 155, 156, 157, 158, 159, 163, 163, + 174, 179, 180, 188, 193, 199, 204, 204, 210, 211, + 214, 218, 222, 234, 242, 242, 254, 254, 272, 275, + 280, 281, 284, 285, 286, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 304, 310, 316, 322, 322, 347, + 347, 375, 375, 386, 387, 390, 391, 392, 397, 397, + 405, 406, 407, 410, 413, 414, 417, 417, 426, 426, + 437, 437, 448, 449, 452, 453, 454, 462, 463, 464, + 465, 466, 470, 470, 482, 482, 494, 494, 506, 506, + 518, 519, 520, 526, 527, 528, 529, 530, 531, 532, + 533, 537, 537, 547, 547, 559, 560, 561, 566, 567, + 568, 569, 570, 571, 574, 574, 583, 584, 585, 588, + 588, 598, 598, 611, 611, 624, 625, 626, 632, 632, + 640, 641, 642, 647, 648, 649, 650, 651, 652, 653, + 656, 656, 665, 671, 671, 680, 680, 691, 692, 693, + 698, 698, 706, 707, 708, 713, 714, 715, 716, 717, + 720, 720, 729, 735, 741, 747, 747 }; void @@ -2299,9 +2304,9 @@ namespace isc { namespace netconf { #line 14 "netconf_parser.yy" } } // isc::netconf -#line 2303 "netconf_parser.cc" +#line 2308 "netconf_parser.cc" -#line 751 "netconf_parser.yy" +#line 756 "netconf_parser.yy" void diff --git a/src/lib/eval/location.hh b/src/lib/eval/location.hh index 5bde47985a..2331490b4c 100644 --- a/src/lib/eval/location.hh +++ b/src/lib/eval/location.hh @@ -1,3 +1,4 @@ +// Generated 202305171251 // A Bison parser, made by GNU Bison 3.8.2. // Locations for Bison parsers in C++ diff --git a/src/lib/eval/parser.cc b/src/lib/eval/parser.cc index bb206c85d6..e73d694df4 100644 --- a/src/lib/eval/parser.cc +++ b/src/lib/eval/parser.cc @@ -48,7 +48,12 @@ # include "eval_context.h" -#line 52 "parser.cc" +// Avoid warnings with the error counter. +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#endif + +#line 57 "parser.cc" #ifndef YY_ @@ -141,7 +146,7 @@ #line 14 "parser.yy" namespace isc { namespace eval { -#line 145 "parser.cc" +#line 150 "parser.cc" /// Build a parser object. EvalParser::EvalParser (EvalContext& ctx_yyarg) @@ -458,93 +463,93 @@ namespace isc { namespace eval { switch (yykind) { case symbol_kind::S_STRING: // "constant string" -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 464 "parser.cc" +#line 469 "parser.cc" break; case symbol_kind::S_INTEGER: // "integer" -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 470 "parser.cc" +#line 475 "parser.cc" break; case symbol_kind::S_HEXSTRING: // "constant hexstring" -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 476 "parser.cc" +#line 481 "parser.cc" break; case symbol_kind::S_OPTION_NAME: // "option name" -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 482 "parser.cc" +#line 487 "parser.cc" break; case symbol_kind::S_IP_ADDRESS: // "ip address" -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < std::string > (); } -#line 488 "parser.cc" +#line 493 "parser.cc" break; case symbol_kind::S_integer_expr: // integer_expr -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < uint32_t > (); } -#line 494 "parser.cc" +#line 499 "parser.cc" break; case symbol_kind::S_option_code: // option_code -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < uint16_t > (); } -#line 500 "parser.cc" +#line 505 "parser.cc" break; case symbol_kind::S_sub_option_code: // sub_option_code -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < uint16_t > (); } -#line 506 "parser.cc" +#line 511 "parser.cc" break; case symbol_kind::S_option_repr_type: // option_repr_type -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); } -#line 512 "parser.cc" +#line 517 "parser.cc" break; case symbol_kind::S_nest_level: // nest_level -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < int8_t > (); } -#line 518 "parser.cc" +#line 523 "parser.cc" break; case symbol_kind::S_pkt_metadata: // pkt_metadata -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); } -#line 524 "parser.cc" +#line 529 "parser.cc" break; case symbol_kind::S_enterprise_id: // enterprise_id -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < uint32_t > (); } -#line 530 "parser.cc" +#line 535 "parser.cc" break; case symbol_kind::S_pkt4_field: // pkt4_field -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); } -#line 536 "parser.cc" +#line 541 "parser.cc" break; case symbol_kind::S_pkt6_field: // pkt6_field -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); } -#line 542 "parser.cc" +#line 547 "parser.cc" break; case symbol_kind::S_relay6_field: // relay6_field -#line 122 "parser.yy" +#line 127 "parser.yy" { yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); } -#line 548 "parser.cc" +#line 553 "parser.cc" break; default: @@ -837,61 +842,61 @@ namespace isc { namespace eval { switch (yyn) { case 6: // bool_expr: "not" bool_expr -#line 142 "parser.yy" +#line 147 "parser.yy" { TokenPtr neg(new TokenNot()); ctx.expression.push_back(neg); } -#line 846 "parser.cc" +#line 851 "parser.cc" break; case 7: // bool_expr: bool_expr "and" bool_expr -#line 147 "parser.yy" +#line 152 "parser.yy" { TokenPtr neg(new TokenAnd()); ctx.expression.push_back(neg); } -#line 855 "parser.cc" +#line 860 "parser.cc" break; case 8: // bool_expr: bool_expr "or" bool_expr -#line 152 "parser.yy" +#line 157 "parser.yy" { TokenPtr neg(new TokenOr()); ctx.expression.push_back(neg); } -#line 864 "parser.cc" +#line 869 "parser.cc" break; case 9: // bool_expr: string_expr "==" string_expr -#line 157 "parser.yy" +#line 162 "parser.yy" { TokenPtr eq(new TokenEqual()); ctx.expression.push_back(eq); } -#line 873 "parser.cc" +#line 878 "parser.cc" break; case 10: // bool_expr: "option" "[" option_code "]" "." "exists" -#line 162 "parser.yy" +#line 167 "parser.yy" { TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS)); ctx.expression.push_back(opt); } -#line 882 "parser.cc" +#line 887 "parser.cc" break; case 11: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists" -#line 167 "parser.yy" +#line 172 "parser.yy" { TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS)); ctx.expression.push_back(opt); } -#line 891 "parser.cc" +#line 896 "parser.cc" break; case 12: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists" -#line 172 "parser.yy" +#line 177 "parser.yy" { switch (ctx.getUniverse()) { case Option::V4: @@ -911,11 +916,11 @@ namespace isc { namespace eval { error(yystack_[5].location, "relay4 can only be used in DHCPv4."); } } -#line 915 "parser.cc" +#line 920 "parser.cc" break; case 13: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists" -#line 192 "parser.yy" +#line 197 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -929,11 +934,11 @@ namespace isc { namespace eval { error(yystack_[10].location, "relay6 can only be used in DHCPv6."); } } -#line 933 "parser.cc" +#line 938 "parser.cc" break; case 14: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists" -#line 206 "parser.yy" +#line 211 "parser.yy" { // Expression: vendor-class[1234].exists // @@ -942,11 +947,11 @@ namespace isc { namespace eval { TokenPtr exist(new TokenVendorClass(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS)); ctx.expression.push_back(exist); } -#line 946 "parser.cc" +#line 951 "parser.cc" break; case 15: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists" -#line 215 "parser.yy" +#line 220 "parser.yy" { // Expression: vendor[1234].exists // @@ -955,11 +960,11 @@ namespace isc { namespace eval { TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[3].value.as < uint32_t > (), TokenOption::EXISTS)); ctx.expression.push_back(exist); } -#line 959 "parser.cc" +#line 964 "parser.cc" break; case 16: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists" -#line 224 "parser.yy" +#line 229 "parser.yy" { // Expression vendor[1234].option[123].exists // @@ -969,11 +974,11 @@ namespace isc { namespace eval { TokenPtr exist(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), TokenOption::EXISTS, yystack_[3].value.as < uint16_t > ())); ctx.expression.push_back(exist); } -#line 973 "parser.cc" +#line 978 "parser.cc" break; case 17: // bool_expr: "member" "(" "constant string" ")" -#line 234 "parser.yy" +#line 239 "parser.yy" { // Expression member('foo') // @@ -988,56 +993,56 @@ namespace isc { namespace eval { TokenPtr member(new TokenMember(cc)); ctx.expression.push_back(member); } -#line 992 "parser.cc" +#line 997 "parser.cc" break; case 18: // string_expr: "constant string" -#line 251 "parser.yy" +#line 256 "parser.yy" { TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(str); } -#line 1001 "parser.cc" +#line 1006 "parser.cc" break; case 19: // string_expr: "constant hexstring" -#line 256 "parser.yy" +#line 261 "parser.yy" { TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(hex); } -#line 1010 "parser.cc" +#line 1015 "parser.cc" break; case 20: // string_expr: "ip address" -#line 261 "parser.yy" +#line 266 "parser.yy" { TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(ip); } -#line 1019 "parser.cc" +#line 1024 "parser.cc" break; case 21: // string_expr: "option" "[" option_code "]" "." option_repr_type -#line 266 "parser.yy" +#line 271 "parser.yy" { TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ())); ctx.expression.push_back(opt); } -#line 1028 "parser.cc" +#line 1033 "parser.cc" break; case 22: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type -#line 271 "parser.yy" +#line 276 "parser.yy" { TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ())); ctx.expression.push_back(opt); } -#line 1037 "parser.cc" +#line 1042 "parser.cc" break; case 23: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type -#line 276 "parser.yy" +#line 281 "parser.yy" { switch (ctx.getUniverse()) { case Option::V4: @@ -1057,11 +1062,11 @@ namespace isc { namespace eval { error(yystack_[5].location, "relay4 can only be used in DHCPv4."); } } -#line 1061 "parser.cc" +#line 1066 "parser.cc" break; case 24: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type -#line 297 "parser.yy" +#line 302 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -1075,20 +1080,20 @@ namespace isc { namespace eval { error(yystack_[10].location, "relay6 can only be used in DHCPv6."); } } -#line 1079 "parser.cc" +#line 1084 "parser.cc" break; case 25: // string_expr: "pkt" "." pkt_metadata -#line 312 "parser.yy" +#line 317 "parser.yy" { TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ())); ctx.expression.push_back(pkt_metadata); } -#line 1088 "parser.cc" +#line 1093 "parser.cc" break; case 26: // string_expr: "pkt4" "." pkt4_field -#line 317 "parser.yy" +#line 322 "parser.yy" { switch (ctx.getUniverse()) { case Option::V4: @@ -1102,11 +1107,11 @@ namespace isc { namespace eval { error(yystack_[2].location, "pkt4 can only be used in DHCPv4."); } } -#line 1106 "parser.cc" +#line 1111 "parser.cc" break; case 27: // string_expr: "pkt6" "." pkt6_field -#line 331 "parser.yy" +#line 336 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -1120,11 +1125,11 @@ namespace isc { namespace eval { error(yystack_[2].location, "pkt6 can only be used in DHCPv6."); } } -#line 1124 "parser.cc" +#line 1129 "parser.cc" break; case 28: // string_expr: "relay6" "[" nest_level "]" "." relay6_field -#line 345 "parser.yy" +#line 350 "parser.yy" { switch (ctx.getUniverse()) { case Option::V6: @@ -1138,128 +1143,128 @@ namespace isc { namespace eval { error(yystack_[5].location, "relay6 can only be used in DHCPv6."); } } -#line 1142 "parser.cc" +#line 1147 "parser.cc" break; case 29: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")" -#line 360 "parser.yy" +#line 365 "parser.yy" { TokenPtr sub(new TokenSubstring()); ctx.expression.push_back(sub); } -#line 1151 "parser.cc" +#line 1156 "parser.cc" break; case 30: // string_expr: "split" "(" string_expr "," string_expr "," int_expr ")" -#line 365 "parser.yy" +#line 370 "parser.yy" { TokenPtr split(new TokenSplit()); ctx.expression.push_back(split); } -#line 1160 "parser.cc" +#line 1165 "parser.cc" break; case 31: // string_expr: "concat" "(" string_expr "," string_expr ")" -#line 370 "parser.yy" +#line 375 "parser.yy" { TokenPtr conc(new TokenConcat()); ctx.expression.push_back(conc); } -#line 1169 "parser.cc" +#line 1174 "parser.cc" break; case 32: // string_expr: string_expr "+" string_expr -#line 375 "parser.yy" +#line 380 "parser.yy" { TokenPtr conc(new TokenConcat()); ctx.expression.push_back(conc); } -#line 1178 "parser.cc" +#line 1183 "parser.cc" break; case 33: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")" -#line 380 "parser.yy" +#line 385 "parser.yy" { TokenPtr cond(new TokenIfElse()); ctx.expression.push_back(cond); } -#line 1187 "parser.cc" +#line 1192 "parser.cc" break; case 34: // string_expr: "hexstring" "(" string_expr "," string_expr ")" -#line 385 "parser.yy" +#line 390 "parser.yy" { TokenPtr tohex(new TokenToHexString()); ctx.expression.push_back(tohex); } -#line 1196 "parser.cc" +#line 1201 "parser.cc" break; case 35: // string_expr: "addrtotext" "(" string_expr ")" -#line 390 "parser.yy" +#line 395 "parser.yy" { TokenPtr addrtotext(new TokenIpAddressToText()); ctx.expression.push_back(addrtotext); } -#line 1205 "parser.cc" +#line 1210 "parser.cc" break; case 36: // string_expr: "int8totext" "(" string_expr ")" -#line 395 "parser.yy" +#line 400 "parser.yy" { TokenPtr int8totext(new TokenInt8ToText()); ctx.expression.push_back(int8totext); } -#line 1214 "parser.cc" +#line 1219 "parser.cc" break; case 37: // string_expr: "int16totext" "(" string_expr ")" -#line 400 "parser.yy" +#line 405 "parser.yy" { TokenPtr int16totext(new TokenInt16ToText()); ctx.expression.push_back(int16totext); } -#line 1223 "parser.cc" +#line 1228 "parser.cc" break; case 38: // string_expr: "int32totext" "(" string_expr ")" -#line 405 "parser.yy" +#line 410 "parser.yy" { TokenPtr int32totext(new TokenInt32ToText()); ctx.expression.push_back(int32totext); } -#line 1232 "parser.cc" +#line 1237 "parser.cc" break; case 39: // string_expr: "uint8totext" "(" string_expr ")" -#line 410 "parser.yy" +#line 415 "parser.yy" { TokenPtr uint8totext(new TokenUInt8ToText()); ctx.expression.push_back(uint8totext); } -#line 1241 "parser.cc" +#line 1246 "parser.cc" break; case 40: // string_expr: "uint16totext" "(" string_expr ")" -#line 415 "parser.yy" +#line 420 "parser.yy" { TokenPtr uint16totext(new TokenUInt16ToText()); ctx.expression.push_back(uint16totext); } -#line 1250 "parser.cc" +#line 1255 "parser.cc" break; case 41: // string_expr: "uint32totext" "(" string_expr ")" -#line 420 "parser.yy" +#line 425 "parser.yy" { TokenPtr uint32totext(new TokenUInt32ToText()); ctx.expression.push_back(uint32totext); } -#line 1259 "parser.cc" +#line 1264 "parser.cc" break; case 42: // string_expr: "vendor" "." "enterprise" -#line 425 "parser.yy" +#line 430 "parser.yy" { // expression: vendor.enterprise // @@ -1268,11 +1273,11 @@ namespace isc { namespace eval { TokenPtr vendor(new TokenVendor(ctx.getUniverse(), 0, TokenVendor::ENTERPRISE_ID)); ctx.expression.push_back(vendor); } -#line 1272 "parser.cc" +#line 1277 "parser.cc" break; case 43: // string_expr: "vendor-class" "." "enterprise" -#line 434 "parser.yy" +#line 439 "parser.yy" { // expression: vendor-class.enterprise // @@ -1282,11 +1287,11 @@ namespace isc { namespace eval { TokenVendor::ENTERPRISE_ID)); ctx.expression.push_back(vendor); } -#line 1286 "parser.cc" +#line 1291 "parser.cc" break; case 44: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type -#line 444 "parser.yy" +#line 449 "parser.yy" { // This token will search for vendor option with // specified enterprise-id. If found, will search @@ -1295,11 +1300,11 @@ namespace isc { namespace eval { TokenPtr opt(new TokenVendor(ctx.getUniverse(), yystack_[8].value.as < uint32_t > (), yystack_[0].value.as < TokenOption::RepresentationType > (), yystack_[3].value.as < uint16_t > ())); ctx.expression.push_back(opt); } -#line 1299 "parser.cc" +#line 1304 "parser.cc" break; case 45: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" -#line 453 "parser.yy" +#line 458 "parser.yy" { // expression: vendor-class[1234].data // @@ -1312,11 +1317,11 @@ namespace isc { namespace eval { TokenVendor::DATA, 0)); ctx.expression.push_back(vendor_class); } -#line 1316 "parser.cc" +#line 1321 "parser.cc" break; case 46: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]" -#line 466 "parser.yy" +#line 471 "parser.yy" { // expression: vendor-class[1234].data[5] // @@ -1329,264 +1334,264 @@ namespace isc { namespace eval { TokenVendor::DATA, index)); ctx.expression.push_back(vendor_class); } -#line 1333 "parser.cc" +#line 1338 "parser.cc" break; case 47: // string_expr: integer_expr -#line 479 "parser.yy" +#line 484 "parser.yy" { TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ())); ctx.expression.push_back(integer); } -#line 1342 "parser.cc" +#line 1347 "parser.cc" break; case 49: // integer_expr: "integer" -#line 487 "parser.yy" +#line 492 "parser.yy" { yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1350 "parser.cc" +#line 1355 "parser.cc" break; case 50: // option_code: "integer" -#line 493 "parser.yy" +#line 498 "parser.yy" { yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1358 "parser.cc" +#line 1363 "parser.cc" break; case 51: // option_code: "option name" -#line 497 "parser.yy" +#line 502 "parser.yy" { yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1366 "parser.cc" +#line 1371 "parser.cc" break; case 52: // sub_option_code: "integer" -#line 503 "parser.yy" +#line 508 "parser.yy" { yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1374 "parser.cc" +#line 1379 "parser.cc" break; case 53: // option_repr_type: "text" -#line 509 "parser.yy" +#line 514 "parser.yy" { yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL; } -#line 1382 "parser.cc" +#line 1387 "parser.cc" break; case 54: // option_repr_type: "hex" -#line 513 "parser.yy" +#line 518 "parser.yy" { yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL; } -#line 1390 "parser.cc" +#line 1395 "parser.cc" break; case 55: // nest_level: "integer" -#line 519 "parser.yy" +#line 524 "parser.yy" { yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1398 "parser.cc" +#line 1403 "parser.cc" break; case 56: // pkt_metadata: "iface" -#line 528 "parser.yy" +#line 533 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE; } -#line 1406 "parser.cc" +#line 1411 "parser.cc" break; case 57: // pkt_metadata: "src" -#line 532 "parser.yy" +#line 537 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC; } -#line 1414 "parser.cc" +#line 1419 "parser.cc" break; case 58: // pkt_metadata: "dst" -#line 536 "parser.yy" +#line 541 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST; } -#line 1422 "parser.cc" +#line 1427 "parser.cc" break; case 59: // pkt_metadata: "len" -#line 540 "parser.yy" +#line 545 "parser.yy" { yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN; } -#line 1430 "parser.cc" +#line 1435 "parser.cc" break; case 60: // enterprise_id: "integer" -#line 546 "parser.yy" +#line 551 "parser.yy" { yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location); } -#line 1438 "parser.cc" +#line 1443 "parser.cc" break; case 61: // enterprise_id: "*" -#line 550 "parser.yy" +#line 555 "parser.yy" { yylhs.value.as < uint32_t > () = 0; } -#line 1446 "parser.cc" +#line 1451 "parser.cc" break; case 62: // pkt4_field: "mac" -#line 556 "parser.yy" +#line 561 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR; } -#line 1454 "parser.cc" +#line 1459 "parser.cc" break; case 63: // pkt4_field: "hlen" -#line 560 "parser.yy" +#line 565 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN; } -#line 1462 "parser.cc" +#line 1467 "parser.cc" break; case 64: // pkt4_field: "htype" -#line 564 "parser.yy" +#line 569 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE; } -#line 1470 "parser.cc" +#line 1475 "parser.cc" break; case 65: // pkt4_field: "ciaddr" -#line 568 "parser.yy" +#line 573 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR; } -#line 1478 "parser.cc" +#line 1483 "parser.cc" break; case 66: // pkt4_field: "giaddr" -#line 572 "parser.yy" +#line 577 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR; } -#line 1486 "parser.cc" +#line 1491 "parser.cc" break; case 67: // pkt4_field: "yiaddr" -#line 576 "parser.yy" +#line 581 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR; } -#line 1494 "parser.cc" +#line 1499 "parser.cc" break; case 68: // pkt4_field: "siaddr" -#line 580 "parser.yy" +#line 585 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR; } -#line 1502 "parser.cc" +#line 1507 "parser.cc" break; case 69: // pkt4_field: "msgtype" -#line 584 "parser.yy" +#line 589 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE; } -#line 1510 "parser.cc" +#line 1515 "parser.cc" break; case 70: // pkt4_field: "transid" -#line 588 "parser.yy" +#line 593 "parser.yy" { yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID; } -#line 1518 "parser.cc" +#line 1523 "parser.cc" break; case 71: // pkt6_field: "msgtype" -#line 594 "parser.yy" +#line 599 "parser.yy" { yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE; } -#line 1526 "parser.cc" +#line 1531 "parser.cc" break; case 72: // pkt6_field: "transid" -#line 598 "parser.yy" +#line 603 "parser.yy" { yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID; } -#line 1534 "parser.cc" +#line 1539 "parser.cc" break; case 73: // relay6_field: "peeraddr" -#line 604 "parser.yy" +#line 609 "parser.yy" { yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR; } -#line 1542 "parser.cc" +#line 1547 "parser.cc" break; case 74: // relay6_field: "linkaddr" -#line 608 "parser.yy" +#line 613 "parser.yy" { yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR; } -#line 1550 "parser.cc" +#line 1555 "parser.cc" break; case 75: // start_expr: "integer" -#line 614 "parser.yy" +#line 619 "parser.yy" { TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(str); } -#line 1559 "parser.cc" +#line 1564 "parser.cc" break; case 76: // length_expr: "integer" -#line 621 "parser.yy" +#line 626 "parser.yy" { TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(str); } -#line 1568 "parser.cc" +#line 1573 "parser.cc" break; case 77: // length_expr: "all" -#line 626 "parser.yy" +#line 631 "parser.yy" { TokenPtr str(new TokenString("all")); ctx.expression.push_back(str); } -#line 1577 "parser.cc" +#line 1582 "parser.cc" break; case 78: // int_expr: "integer" -#line 632 "parser.yy" +#line 637 "parser.yy" { TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ())); ctx.expression.push_back(str); } -#line 1586 "parser.cc" +#line 1591 "parser.cc" break; -#line 1590 "parser.cc" +#line 1595 "parser.cc" default: break; @@ -2170,14 +2175,14 @@ namespace isc { namespace eval { const short EvalParser::yyrline_[] = { - 0, 131, 131, 132, 137, 140, 141, 146, 151, 156, - 161, 166, 171, 191, 205, 214, 223, 233, 250, 255, - 260, 265, 270, 275, 296, 311, 316, 330, 344, 359, - 364, 369, 374, 379, 384, 389, 394, 399, 404, 409, - 414, 419, 424, 433, 443, 452, 465, 478, 483, 486, - 492, 496, 502, 508, 512, 518, 527, 531, 535, 539, - 545, 549, 555, 559, 563, 567, 571, 575, 579, 583, - 587, 593, 597, 603, 607, 613, 620, 625, 631 + 0, 136, 136, 137, 142, 145, 146, 151, 156, 161, + 166, 171, 176, 196, 210, 219, 228, 238, 255, 260, + 265, 270, 275, 280, 301, 316, 321, 335, 349, 364, + 369, 374, 379, 384, 389, 394, 399, 404, 409, 414, + 419, 424, 429, 438, 448, 457, 470, 483, 488, 491, + 497, 501, 507, 513, 517, 523, 532, 536, 540, 544, + 550, 554, 560, 564, 568, 572, 576, 580, 584, 588, + 592, 598, 602, 608, 612, 618, 625, 630, 636 }; void @@ -2210,9 +2215,9 @@ namespace isc { namespace eval { #line 14 "parser.yy" } } // isc::eval -#line 2214 "parser.cc" +#line 2219 "parser.cc" -#line 638 "parser.yy" +#line 643 "parser.yy" void isc::eval::EvalParser::error(const location_type& loc,