]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3971] Fixed parsers
authorFrancis Dupont <fdupont@isc.org>
Mon, 11 May 2026 14:13:36 +0000 (16:13 +0200)
committerFrancis Dupont <fdupont@isc.org>
Fri, 22 May 2026 10:35:51 +0000 (12:35 +0200)
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.yy

index 5650efa36130c67092352176f7c968de32e42464..445a3492a47105c5f6ad7710ef915b8d9cd23967 100644 (file)
@@ -4244,64 +4244,62 @@ namespace isc { namespace dhcp {
 #line 2730 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
-    ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4251 "dhcp4_parser.cc"
+#line 4250 "dhcp4_parser.cc"
     break;
 
   case 796: // control_socket_name: "socket-name" $@116 ":" "constant string"
-#line 2734 "dhcp4_parser.yy"
+#line 2733 "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 4261 "dhcp4_parser.cc"
+#line 4260 "dhcp4_parser.cc"
     break;
 
   case 797: // $@117: %empty
-#line 2740 "dhcp4_parser.yy"
+#line 2739 "dhcp4_parser.yy"
                                        {
     ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
-    ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4271 "dhcp4_parser.cc"
+#line 4269 "dhcp4_parser.cc"
     break;
 
   case 798: // control_socket_address: "socket-address" $@117 ":" "constant string"
-#line 2744 "dhcp4_parser.yy"
+#line 2742 "dhcp4_parser.yy"
                {
     ElementPtr address(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-address", address);
     ctx.leave();
 }
-#line 4281 "dhcp4_parser.cc"
+#line 4279 "dhcp4_parser.cc"
     break;
 
   case 799: // control_socket_port: "socket-port" ":" "integer"
-#line 2750 "dhcp4_parser.yy"
+#line 2748 "dhcp4_parser.yy"
                                                {
     ctx.unique("socket-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr port(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-port", port);
 }
-#line 4291 "dhcp4_parser.cc"
+#line 4289 "dhcp4_parser.cc"
     break;
 
   case 800: // cert_required: "cert-required" ":" "boolean"
-#line 2756 "dhcp4_parser.yy"
+#line 2754 "dhcp4_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 4301 "dhcp4_parser.cc"
+#line 4299 "dhcp4_parser.cc"
     break;
 
   case 801: // $@118: %empty
-#line 2762 "dhcp4_parser.yy"
+#line 2760 "dhcp4_parser.yy"
                            {
     ctx.unique("http-headers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4309,73 +4307,73 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HTTP_HEADERS);
 }
-#line 4313 "dhcp4_parser.cc"
+#line 4311 "dhcp4_parser.cc"
     break;
 
   case 802: // http_headers: "http-headers" $@118 ":" "[" http_header_list "]"
-#line 2768 "dhcp4_parser.yy"
+#line 2766 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4322 "dhcp4_parser.cc"
+#line 4320 "dhcp4_parser.cc"
     break;
 
   case 807: // not_empty_http_header_list: not_empty_http_header_list ","
-#line 2779 "dhcp4_parser.yy"
+#line 2777 "dhcp4_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
-#line 4330 "dhcp4_parser.cc"
+#line 4328 "dhcp4_parser.cc"
     break;
 
   case 808: // $@119: %empty
-#line 2784 "dhcp4_parser.yy"
+#line 2782 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4340 "dhcp4_parser.cc"
+#line 4338 "dhcp4_parser.cc"
     break;
 
   case 809: // http_header: "{" $@119 http_header_params "}"
-#line 2788 "dhcp4_parser.yy"
+#line 2786 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4348 "dhcp4_parser.cc"
+#line 4346 "dhcp4_parser.cc"
     break;
 
   case 812: // http_header_params: http_header_params ","
-#line 2794 "dhcp4_parser.yy"
+#line 2792 "dhcp4_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
-#line 4356 "dhcp4_parser.cc"
+#line 4354 "dhcp4_parser.cc"
     break;
 
   case 818: // $@120: %empty
-#line 2806 "dhcp4_parser.yy"
+#line 2804 "dhcp4_parser.yy"
                     {
     ctx.unique("value", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4365 "dhcp4_parser.cc"
+#line 4363 "dhcp4_parser.cc"
     break;
 
   case 819: // header_value: "value" $@120 ":" "constant string"
-#line 2809 "dhcp4_parser.yy"
+#line 2807 "dhcp4_parser.yy"
                {
     ElementPtr value(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("value", value);
     ctx.leave();
 }
-#line 4375 "dhcp4_parser.cc"
+#line 4373 "dhcp4_parser.cc"
     break;
 
   case 820: // $@121: %empty
-#line 2817 "dhcp4_parser.yy"
+#line 2815 "dhcp4_parser.yy"
                                {
     ctx.unique("authentication", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4383,92 +4381,92 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.AUTHENTICATION);
 }
-#line 4387 "dhcp4_parser.cc"
+#line 4385 "dhcp4_parser.cc"
     break;
 
   case 821: // authentication: "authentication" $@121 ":" "{" auth_params "}"
-#line 2823 "dhcp4_parser.yy"
+#line 2821 "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 4398 "dhcp4_parser.cc"
+#line 4396 "dhcp4_parser.cc"
     break;
 
   case 824: // auth_params: auth_params ","
-#line 2832 "dhcp4_parser.yy"
+#line 2830 "dhcp4_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
-#line 4406 "dhcp4_parser.cc"
+#line 4404 "dhcp4_parser.cc"
     break;
 
   case 832: // $@122: %empty
-#line 2846 "dhcp4_parser.yy"
+#line 2844 "dhcp4_parser.yy"
                 {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.AUTH_TYPE);
 }
-#line 4415 "dhcp4_parser.cc"
+#line 4413 "dhcp4_parser.cc"
     break;
 
   case 833: // auth_type: "type" $@122 ":" auth_type_value
-#line 2849 "dhcp4_parser.yy"
+#line 2847 "dhcp4_parser.yy"
                         {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4424 "dhcp4_parser.cc"
+#line 4422 "dhcp4_parser.cc"
     break;
 
   case 834: // auth_type_value: "basic"
-#line 2854 "dhcp4_parser.yy"
+#line 2852 "dhcp4_parser.yy"
                        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
-#line 4430 "dhcp4_parser.cc"
+#line 4428 "dhcp4_parser.cc"
     break;
 
   case 835: // $@123: %empty
-#line 2857 "dhcp4_parser.yy"
+#line 2855 "dhcp4_parser.yy"
              {
     ctx.unique("realm", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4439 "dhcp4_parser.cc"
+#line 4437 "dhcp4_parser.cc"
     break;
 
   case 836: // realm: "realm" $@123 ":" "constant string"
-#line 2860 "dhcp4_parser.yy"
+#line 2858 "dhcp4_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 4449 "dhcp4_parser.cc"
+#line 4447 "dhcp4_parser.cc"
     break;
 
   case 837: // $@124: %empty
-#line 2866 "dhcp4_parser.yy"
+#line 2864 "dhcp4_parser.yy"
                      {
     ctx.unique("directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4458 "dhcp4_parser.cc"
+#line 4456 "dhcp4_parser.cc"
     break;
 
   case 838: // directory: "directory" $@124 ":" "constant string"
-#line 2869 "dhcp4_parser.yy"
+#line 2867 "dhcp4_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 4468 "dhcp4_parser.cc"
+#line 4466 "dhcp4_parser.cc"
     break;
 
   case 839: // $@125: %empty
-#line 2875 "dhcp4_parser.yy"
+#line 2873 "dhcp4_parser.yy"
                  {
     ctx.unique("clients", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4476,92 +4474,92 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENTS);
 }
-#line 4480 "dhcp4_parser.cc"
+#line 4478 "dhcp4_parser.cc"
     break;
 
   case 840: // clients: "clients" $@125 ":" "[" clients_list "]"
-#line 2881 "dhcp4_parser.yy"
+#line 2879 "dhcp4_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4489 "dhcp4_parser.cc"
+#line 4487 "dhcp4_parser.cc"
     break;
 
   case 845: // not_empty_clients_list: not_empty_clients_list ","
-#line 2892 "dhcp4_parser.yy"
+#line 2890 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
-#line 4497 "dhcp4_parser.cc"
+#line 4495 "dhcp4_parser.cc"
     break;
 
   case 846: // $@126: %empty
-#line 2897 "dhcp4_parser.yy"
+#line 2895 "dhcp4_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4507 "dhcp4_parser.cc"
+#line 4505 "dhcp4_parser.cc"
     break;
 
   case 847: // basic_auth: "{" $@126 clients_params "}"
-#line 2901 "dhcp4_parser.yy"
+#line 2899 "dhcp4_parser.yy"
                                 {
     ctx.stack_.pop_back();
 }
-#line 4515 "dhcp4_parser.cc"
+#line 4513 "dhcp4_parser.cc"
     break;
 
   case 850: // clients_params: clients_params ","
-#line 2907 "dhcp4_parser.yy"
+#line 2905 "dhcp4_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
-#line 4523 "dhcp4_parser.cc"
+#line 4521 "dhcp4_parser.cc"
     break;
 
   case 858: // $@127: %empty
-#line 2921 "dhcp4_parser.yy"
+#line 2919 "dhcp4_parser.yy"
                      {
     ctx.unique("user-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4532 "dhcp4_parser.cc"
+#line 4530 "dhcp4_parser.cc"
     break;
 
   case 859: // user_file: "user-file" $@127 ":" "constant string"
-#line 2924 "dhcp4_parser.yy"
+#line 2922 "dhcp4_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 4542 "dhcp4_parser.cc"
+#line 4540 "dhcp4_parser.cc"
     break;
 
   case 860: // $@128: %empty
-#line 2930 "dhcp4_parser.yy"
+#line 2928 "dhcp4_parser.yy"
                              {
     ctx.unique("password-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4551 "dhcp4_parser.cc"
+#line 4549 "dhcp4_parser.cc"
     break;
 
   case 861: // password_file: "password-file" $@128 ":" "constant string"
-#line 2933 "dhcp4_parser.yy"
+#line 2931 "dhcp4_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 4561 "dhcp4_parser.cc"
+#line 4559 "dhcp4_parser.cc"
     break;
 
   case 862: // $@129: %empty
-#line 2941 "dhcp4_parser.yy"
+#line 2939 "dhcp4_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4569,87 +4567,87 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 4573 "dhcp4_parser.cc"
+#line 4571 "dhcp4_parser.cc"
     break;
 
   case 863: // dhcp_queue_control: "dhcp-queue-control" $@129 ":" "{" queue_control_params "}"
-#line 2947 "dhcp4_parser.yy"
+#line 2945 "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 4584 "dhcp4_parser.cc"
+#line 4582 "dhcp4_parser.cc"
     break;
 
   case 866: // queue_control_params: queue_control_params ","
-#line 2956 "dhcp4_parser.yy"
+#line 2954 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
-#line 4592 "dhcp4_parser.cc"
+#line 4590 "dhcp4_parser.cc"
     break;
 
   case 873: // enable_queue: "enable-queue" ":" "boolean"
-#line 2969 "dhcp4_parser.yy"
+#line 2967 "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 4602 "dhcp4_parser.cc"
+#line 4600 "dhcp4_parser.cc"
     break;
 
   case 874: // $@130: %empty
-#line 2975 "dhcp4_parser.yy"
+#line 2973 "dhcp4_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4611 "dhcp4_parser.cc"
+#line 4609 "dhcp4_parser.cc"
     break;
 
   case 875: // queue_type: "queue-type" $@130 ":" "constant string"
-#line 2978 "dhcp4_parser.yy"
+#line 2976 "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 4621 "dhcp4_parser.cc"
+#line 4619 "dhcp4_parser.cc"
     break;
 
   case 876: // capacity: "capacity" ":" "integer"
-#line 2984 "dhcp4_parser.yy"
+#line 2982 "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 4631 "dhcp4_parser.cc"
+#line 4629 "dhcp4_parser.cc"
     break;
 
   case 877: // $@131: %empty
-#line 2990 "dhcp4_parser.yy"
+#line 2988 "dhcp4_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4640 "dhcp4_parser.cc"
+#line 4638 "dhcp4_parser.cc"
     break;
 
   case 878: // arbitrary_map_entry: "constant string" $@131 ":" value
-#line 2993 "dhcp4_parser.yy"
+#line 2991 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4649 "dhcp4_parser.cc"
+#line 4647 "dhcp4_parser.cc"
     break;
 
   case 879: // $@132: %empty
-#line 3000 "dhcp4_parser.yy"
+#line 2998 "dhcp4_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4657,177 +4655,177 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 4661 "dhcp4_parser.cc"
+#line 4659 "dhcp4_parser.cc"
     break;
 
   case 880: // dhcp_ddns: "dhcp-ddns" $@132 ":" "{" dhcp_ddns_params "}"
-#line 3006 "dhcp4_parser.yy"
+#line 3004 "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 4672 "dhcp4_parser.cc"
+#line 4670 "dhcp4_parser.cc"
     break;
 
   case 881: // $@133: %empty
-#line 3013 "dhcp4_parser.yy"
+#line 3011 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 4682 "dhcp4_parser.cc"
+#line 4680 "dhcp4_parser.cc"
     break;
 
   case 882: // sub_dhcp_ddns: "{" $@133 dhcp_ddns_params "}"
-#line 3017 "dhcp4_parser.yy"
+#line 3015 "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 4692 "dhcp4_parser.cc"
+#line 4690 "dhcp4_parser.cc"
     break;
 
   case 885: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 3025 "dhcp4_parser.yy"
+#line 3023 "dhcp4_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
-#line 4700 "dhcp4_parser.cc"
+#line 4698 "dhcp4_parser.cc"
     break;
 
   case 897: // enable_updates: "enable-updates" ":" "boolean"
-#line 3043 "dhcp4_parser.yy"
+#line 3041 "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 4710 "dhcp4_parser.cc"
+#line 4708 "dhcp4_parser.cc"
     break;
 
   case 898: // $@134: %empty
-#line 3049 "dhcp4_parser.yy"
+#line 3047 "dhcp4_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4719 "dhcp4_parser.cc"
+#line 4717 "dhcp4_parser.cc"
     break;
 
   case 899: // server_ip: "server-ip" $@134 ":" "constant string"
-#line 3052 "dhcp4_parser.yy"
+#line 3050 "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 4729 "dhcp4_parser.cc"
+#line 4727 "dhcp4_parser.cc"
     break;
 
   case 900: // server_port: "server-port" ":" "integer"
-#line 3058 "dhcp4_parser.yy"
+#line 3056 "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 4739 "dhcp4_parser.cc"
+#line 4737 "dhcp4_parser.cc"
     break;
 
   case 901: // $@135: %empty
-#line 3064 "dhcp4_parser.yy"
+#line 3062 "dhcp4_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4748 "dhcp4_parser.cc"
+#line 4746 "dhcp4_parser.cc"
     break;
 
   case 902: // sender_ip: "sender-ip" $@135 ":" "constant string"
-#line 3067 "dhcp4_parser.yy"
+#line 3065 "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 4758 "dhcp4_parser.cc"
+#line 4756 "dhcp4_parser.cc"
     break;
 
   case 903: // sender_port: "sender-port" ":" "integer"
-#line 3073 "dhcp4_parser.yy"
+#line 3071 "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 4768 "dhcp4_parser.cc"
+#line 4766 "dhcp4_parser.cc"
     break;
 
   case 904: // max_queue_size: "max-queue-size" ":" "integer"
-#line 3079 "dhcp4_parser.yy"
+#line 3077 "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 4778 "dhcp4_parser.cc"
+#line 4776 "dhcp4_parser.cc"
     break;
 
   case 905: // $@136: %empty
-#line 3085 "dhcp4_parser.yy"
+#line 3083 "dhcp4_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 4787 "dhcp4_parser.cc"
+#line 4785 "dhcp4_parser.cc"
     break;
 
   case 906: // ncr_protocol: "ncr-protocol" $@136 ":" ncr_protocol_value
-#line 3088 "dhcp4_parser.yy"
+#line 3086 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4796 "dhcp4_parser.cc"
+#line 4794 "dhcp4_parser.cc"
     break;
 
   case 907: // ncr_protocol_value: "udp"
-#line 3094 "dhcp4_parser.yy"
+#line 3092 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 4802 "dhcp4_parser.cc"
+#line 4800 "dhcp4_parser.cc"
     break;
 
   case 908: // ncr_protocol_value: "tcp"
-#line 3095 "dhcp4_parser.yy"
+#line 3093 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 4808 "dhcp4_parser.cc"
+#line 4806 "dhcp4_parser.cc"
     break;
 
   case 909: // $@137: %empty
-#line 3098 "dhcp4_parser.yy"
+#line 3096 "dhcp4_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 4817 "dhcp4_parser.cc"
+#line 4815 "dhcp4_parser.cc"
     break;
 
   case 910: // ncr_format: "ncr-format" $@137 ":" "JSON"
-#line 3101 "dhcp4_parser.yy"
+#line 3099 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 4827 "dhcp4_parser.cc"
+#line 4825 "dhcp4_parser.cc"
     break;
 
   case 911: // $@138: %empty
-#line 3109 "dhcp4_parser.yy"
+#line 3107 "dhcp4_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4835,48 +4833,48 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 4839 "dhcp4_parser.cc"
+#line 4837 "dhcp4_parser.cc"
     break;
 
   case 912: // config_control: "config-control" $@138 ":" "{" config_control_params "}"
-#line 3115 "dhcp4_parser.yy"
+#line 3113 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4849 "dhcp4_parser.cc"
+#line 4847 "dhcp4_parser.cc"
     break;
 
   case 913: // $@139: %empty
-#line 3121 "dhcp4_parser.yy"
+#line 3119 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 4859 "dhcp4_parser.cc"
+#line 4857 "dhcp4_parser.cc"
     break;
 
   case 914: // sub_config_control: "{" $@139 config_control_params "}"
-#line 3125 "dhcp4_parser.yy"
+#line 3123 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 4868 "dhcp4_parser.cc"
+#line 4866 "dhcp4_parser.cc"
     break;
 
   case 917: // config_control_params: config_control_params ","
-#line 3133 "dhcp4_parser.yy"
+#line 3131 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
-#line 4876 "dhcp4_parser.cc"
+#line 4874 "dhcp4_parser.cc"
     break;
 
   case 920: // $@140: %empty
-#line 3143 "dhcp4_parser.yy"
+#line 3141 "dhcp4_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4884,30 +4882,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 4888 "dhcp4_parser.cc"
+#line 4886 "dhcp4_parser.cc"
     break;
 
   case 921: // config_databases: "config-databases" $@140 ":" "[" database_list "]"
-#line 3149 "dhcp4_parser.yy"
+#line 3147 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4897 "dhcp4_parser.cc"
+#line 4895 "dhcp4_parser.cc"
     break;
 
   case 922: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 3154 "dhcp4_parser.yy"
+#line 3152 "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 4907 "dhcp4_parser.cc"
+#line 4905 "dhcp4_parser.cc"
     break;
 
   case 923: // $@141: %empty
-#line 3162 "dhcp4_parser.yy"
+#line 3160 "dhcp4_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4915,83 +4913,83 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 4919 "dhcp4_parser.cc"
+#line 4917 "dhcp4_parser.cc"
     break;
 
   case 924: // loggers: "loggers" $@141 ":" "[" loggers_entries "]"
-#line 3168 "dhcp4_parser.yy"
+#line 3166 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4928 "dhcp4_parser.cc"
+#line 4926 "dhcp4_parser.cc"
     break;
 
   case 927: // loggers_entries: loggers_entries ","
-#line 3177 "dhcp4_parser.yy"
+#line 3175 "dhcp4_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
-#line 4936 "dhcp4_parser.cc"
+#line 4934 "dhcp4_parser.cc"
     break;
 
   case 928: // $@142: %empty
-#line 3183 "dhcp4_parser.yy"
+#line 3181 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 4946 "dhcp4_parser.cc"
+#line 4944 "dhcp4_parser.cc"
     break;
 
   case 929: // logger_entry: "{" $@142 logger_params "}"
-#line 3187 "dhcp4_parser.yy"
+#line 3185 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 4954 "dhcp4_parser.cc"
+#line 4952 "dhcp4_parser.cc"
     break;
 
   case 932: // logger_params: logger_params ","
-#line 3193 "dhcp4_parser.yy"
+#line 3191 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
-#line 4962 "dhcp4_parser.cc"
+#line 4960 "dhcp4_parser.cc"
     break;
 
   case 940: // debuglevel: "debuglevel" ":" "integer"
-#line 3207 "dhcp4_parser.yy"
+#line 3205 "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 4972 "dhcp4_parser.cc"
+#line 4970 "dhcp4_parser.cc"
     break;
 
   case 941: // $@143: %empty
-#line 3213 "dhcp4_parser.yy"
+#line 3211 "dhcp4_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4981 "dhcp4_parser.cc"
+#line 4979 "dhcp4_parser.cc"
     break;
 
   case 942: // severity: "severity" $@143 ":" "constant string"
-#line 3216 "dhcp4_parser.yy"
+#line 3214 "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 4991 "dhcp4_parser.cc"
+#line 4989 "dhcp4_parser.cc"
     break;
 
   case 943: // $@144: %empty
-#line 3222 "dhcp4_parser.yy"
+#line 3220 "dhcp4_parser.yy"
                                     {
     ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4999,122 +4997,122 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 5003 "dhcp4_parser.cc"
+#line 5001 "dhcp4_parser.cc"
     break;
 
   case 944: // output_options_list: "output-options" $@144 ":" "[" output_options_list_content "]"
-#line 3228 "dhcp4_parser.yy"
+#line 3226 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5012 "dhcp4_parser.cc"
+#line 5010 "dhcp4_parser.cc"
     break;
 
   case 947: // output_options_list_content: output_options_list_content ","
-#line 3235 "dhcp4_parser.yy"
+#line 3233 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
-#line 5020 "dhcp4_parser.cc"
+#line 5018 "dhcp4_parser.cc"
     break;
 
   case 948: // $@145: %empty
-#line 3240 "dhcp4_parser.yy"
+#line 3238 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 5030 "dhcp4_parser.cc"
+#line 5028 "dhcp4_parser.cc"
     break;
 
   case 949: // output_entry: "{" $@145 output_params_list "}"
-#line 3244 "dhcp4_parser.yy"
+#line 3242 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 5038 "dhcp4_parser.cc"
+#line 5036 "dhcp4_parser.cc"
     break;
 
   case 952: // output_params_list: output_params_list ","
-#line 3250 "dhcp4_parser.yy"
+#line 3248 "dhcp4_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
-#line 5046 "dhcp4_parser.cc"
+#line 5044 "dhcp4_parser.cc"
     break;
 
   case 958: // $@146: %empty
-#line 3262 "dhcp4_parser.yy"
+#line 3260 "dhcp4_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 5055 "dhcp4_parser.cc"
+#line 5053 "dhcp4_parser.cc"
     break;
 
   case 959: // output: "output" $@146 ":" "constant string"
-#line 3265 "dhcp4_parser.yy"
+#line 3263 "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 5065 "dhcp4_parser.cc"
+#line 5063 "dhcp4_parser.cc"
     break;
 
   case 960: // flush: "flush" ":" "boolean"
-#line 3271 "dhcp4_parser.yy"
+#line 3269 "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 5075 "dhcp4_parser.cc"
+#line 5073 "dhcp4_parser.cc"
     break;
 
   case 961: // maxsize: "maxsize" ":" "integer"
-#line 3277 "dhcp4_parser.yy"
+#line 3275 "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 5085 "dhcp4_parser.cc"
+#line 5083 "dhcp4_parser.cc"
     break;
 
   case 962: // maxver: "maxver" ":" "integer"
-#line 3283 "dhcp4_parser.yy"
+#line 3281 "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 5095 "dhcp4_parser.cc"
+#line 5093 "dhcp4_parser.cc"
     break;
 
   case 963: // $@147: %empty
-#line 3289 "dhcp4_parser.yy"
+#line 3287 "dhcp4_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 5104 "dhcp4_parser.cc"
+#line 5102 "dhcp4_parser.cc"
     break;
 
   case 964: // pattern: "pattern" $@147 ":" "constant string"
-#line 3292 "dhcp4_parser.yy"
+#line 3290 "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 5114 "dhcp4_parser.cc"
+#line 5112 "dhcp4_parser.cc"
     break;
 
   case 965: // $@148: %empty
-#line 3298 "dhcp4_parser.yy"
+#line 3296 "dhcp4_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5122,68 +5120,68 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.COMPATIBILITY);
 }
-#line 5126 "dhcp4_parser.cc"
+#line 5124 "dhcp4_parser.cc"
     break;
 
   case 966: // compatibility: "compatibility" $@148 ":" "{" compatibility_params "}"
-#line 3304 "dhcp4_parser.yy"
+#line 3302 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5135 "dhcp4_parser.cc"
+#line 5133 "dhcp4_parser.cc"
     break;
 
   case 969: // compatibility_params: compatibility_params ","
-#line 3311 "dhcp4_parser.yy"
+#line 3309 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
-#line 5143 "dhcp4_parser.cc"
+#line 5141 "dhcp4_parser.cc"
     break;
 
   case 975: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3323 "dhcp4_parser.yy"
+#line 3321 "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 5153 "dhcp4_parser.cc"
+#line 5151 "dhcp4_parser.cc"
     break;
 
   case 976: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean"
-#line 3329 "dhcp4_parser.yy"
+#line 3327 "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 5163 "dhcp4_parser.cc"
+#line 5161 "dhcp4_parser.cc"
     break;
 
   case 977: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean"
-#line 3335 "dhcp4_parser.yy"
+#line 3333 "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 5173 "dhcp4_parser.cc"
+#line 5171 "dhcp4_parser.cc"
     break;
 
   case 978: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
-#line 3341 "dhcp4_parser.yy"
+#line 3339 "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 5183 "dhcp4_parser.cc"
+#line 5181 "dhcp4_parser.cc"
     break;
 
 
-#line 5187 "dhcp4_parser.cc"
+#line 5185 "dhcp4_parser.cc"
 
             default:
               break;
@@ -6966,25 +6964,25 @@ namespace isc { namespace dhcp {
     2629,  2635,  2643,  2651,  2651,  2663,  2663,  2675,  2676,  2679,
     2680,  2681,  2686,  2686,  2694,  2695,  2696,  2701,  2702,  2703,
     2704,  2705,  2706,  2707,  2708,  2709,  2710,  2711,  2712,  2713,
-    2716,  2716,  2725,  2726,  2727,  2730,  2730,  2740,  2740,  2750,
-    2756,  2762,  2762,  2773,  2774,  2777,  2778,  2779,  2784,  2784,
-    2792,  2793,  2794,  2799,  2800,  2801,  2802,  2803,  2806,  2806,
-    2817,  2817,  2830,  2831,  2832,  2837,  2838,  2839,  2840,  2841,
-    2842,  2843,  2846,  2846,  2854,  2857,  2857,  2866,  2866,  2875,
-    2875,  2886,  2887,  2890,  2891,  2892,  2897,  2897,  2905,  2906,
-    2907,  2912,  2913,  2914,  2915,  2916,  2917,  2918,  2921,  2921,
-    2930,  2930,  2941,  2941,  2954,  2955,  2956,  2961,  2962,  2963,
-    2964,  2965,  2966,  2969,  2975,  2975,  2984,  2990,  2990,  3000,
-    3000,  3013,  3013,  3023,  3024,  3025,  3030,  3031,  3032,  3033,
-    3034,  3035,  3036,  3037,  3038,  3039,  3040,  3043,  3049,  3049,
-    3058,  3064,  3064,  3073,  3079,  3085,  3085,  3094,  3095,  3098,
-    3098,  3109,  3109,  3121,  3121,  3131,  3132,  3133,  3139,  3140,
-    3143,  3143,  3154,  3162,  3162,  3175,  3176,  3177,  3183,  3183,
-    3191,  3192,  3193,  3198,  3199,  3200,  3201,  3202,  3203,  3204,
-    3207,  3213,  3213,  3222,  3222,  3233,  3234,  3235,  3240,  3240,
-    3248,  3249,  3250,  3255,  3256,  3257,  3258,  3259,  3262,  3262,
-    3271,  3277,  3283,  3289,  3289,  3298,  3298,  3309,  3310,  3311,
-    3316,  3317,  3318,  3319,  3320,  3323,  3329,  3335,  3341
+    2716,  2716,  2725,  2726,  2727,  2730,  2730,  2739,  2739,  2748,
+    2754,  2760,  2760,  2771,  2772,  2775,  2776,  2777,  2782,  2782,
+    2790,  2791,  2792,  2797,  2798,  2799,  2800,  2801,  2804,  2804,
+    2815,  2815,  2828,  2829,  2830,  2835,  2836,  2837,  2838,  2839,
+    2840,  2841,  2844,  2844,  2852,  2855,  2855,  2864,  2864,  2873,
+    2873,  2884,  2885,  2888,  2889,  2890,  2895,  2895,  2903,  2904,
+    2905,  2910,  2911,  2912,  2913,  2914,  2915,  2916,  2919,  2919,
+    2928,  2928,  2939,  2939,  2952,  2953,  2954,  2959,  2960,  2961,
+    2962,  2963,  2964,  2967,  2973,  2973,  2982,  2988,  2988,  2998,
+    2998,  3011,  3011,  3021,  3022,  3023,  3028,  3029,  3030,  3031,
+    3032,  3033,  3034,  3035,  3036,  3037,  3038,  3041,  3047,  3047,
+    3056,  3062,  3062,  3071,  3077,  3083,  3083,  3092,  3093,  3096,
+    3096,  3107,  3107,  3119,  3119,  3129,  3130,  3131,  3137,  3138,
+    3141,  3141,  3152,  3160,  3160,  3173,  3174,  3175,  3181,  3181,
+    3189,  3190,  3191,  3196,  3197,  3198,  3199,  3200,  3201,  3202,
+    3205,  3211,  3211,  3220,  3220,  3231,  3232,  3233,  3238,  3238,
+    3246,  3247,  3248,  3253,  3254,  3255,  3256,  3257,  3260,  3260,
+    3269,  3275,  3281,  3287,  3287,  3296,  3296,  3307,  3308,  3309,
+    3314,  3315,  3316,  3317,  3318,  3321,  3327,  3333,  3339
   };
 
   void
@@ -7017,9 +7015,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 7021 "dhcp4_parser.cc"
+#line 7019 "dhcp4_parser.cc"
 
-#line 3347 "dhcp4_parser.yy"
+#line 3345 "dhcp4_parser.yy"
 
 
 void
index dfc41d404d1f611e9554e8ee9bc4f78f51e5be67..f0736b3457f0d92438383618e95036910de6ae2b 100644 (file)
@@ -2729,7 +2729,6 @@ control_socket_type_value:
 
 control_socket_name: SOCKET_NAME {
     ctx.unique("socket-name", ctx.loc2pos(@1));
-    ctx.unique("socket-address", ctx.loc2pos(@1));
     ctx.enter(ctx.NO_KEYWORD);
 } COLON STRING {
     ElementPtr name(new StringElement($4, ctx.loc2pos(@4)));
@@ -2739,7 +2738,6 @@ control_socket_name: SOCKET_NAME {
 
 control_socket_address: SOCKET_ADDRESS {
     ctx.unique("socket-address", ctx.loc2pos(@1));
-    ctx.unique("socket-name", ctx.loc2pos(@1));
     ctx.enter(ctx.NO_KEYWORD);
 } COLON STRING {
     ElementPtr address(new StringElement($4, ctx.loc2pos(@4)));
index c7d86952dfd68dca03d137ed77b5db685ae8a1dd..b1923168ee17ccecf1ac0d84c88e1dec566d50ea 100644 (file)
@@ -4410,64 +4410,62 @@ namespace isc { namespace dhcp {
 #line 2882 "dhcp6_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
-    ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4417 "dhcp6_parser.cc"
+#line 4416 "dhcp6_parser.cc"
     break;
 
   case 839: // control_socket_name: "socket-name" $@121 ":" "constant string"
-#line 2886 "dhcp6_parser.yy"
+#line 2885 "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 4427 "dhcp6_parser.cc"
+#line 4426 "dhcp6_parser.cc"
     break;
 
   case 840: // $@122: %empty
-#line 2892 "dhcp6_parser.yy"
+#line 2891 "dhcp6_parser.yy"
                                        {
     ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
-    ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4437 "dhcp6_parser.cc"
+#line 4435 "dhcp6_parser.cc"
     break;
 
   case 841: // control_socket_address: "socket-address" $@122 ":" "constant string"
-#line 2896 "dhcp6_parser.yy"
+#line 2894 "dhcp6_parser.yy"
                {
     ElementPtr address(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-address", address);
     ctx.leave();
 }
-#line 4447 "dhcp6_parser.cc"
+#line 4445 "dhcp6_parser.cc"
     break;
 
   case 842: // control_socket_port: "socket-port" ":" "integer"
-#line 2902 "dhcp6_parser.yy"
+#line 2900 "dhcp6_parser.yy"
                                                {
     ctx.unique("socket-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr port(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-port", port);
 }
-#line 4457 "dhcp6_parser.cc"
+#line 4455 "dhcp6_parser.cc"
     break;
 
   case 843: // cert_required: "cert-required" ":" "boolean"
-#line 2908 "dhcp6_parser.yy"
+#line 2906 "dhcp6_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 4467 "dhcp6_parser.cc"
+#line 4465 "dhcp6_parser.cc"
     break;
 
   case 844: // $@123: %empty
-#line 2914 "dhcp6_parser.yy"
+#line 2912 "dhcp6_parser.yy"
                            {
     ctx.unique("http-headers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4475,73 +4473,73 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HTTP_HEADERS);
 }
-#line 4479 "dhcp6_parser.cc"
+#line 4477 "dhcp6_parser.cc"
     break;
 
   case 845: // http_headers: "http-headers" $@123 ":" "[" http_header_list "]"
-#line 2920 "dhcp6_parser.yy"
+#line 2918 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4488 "dhcp6_parser.cc"
+#line 4486 "dhcp6_parser.cc"
     break;
 
   case 850: // not_empty_http_header_list: not_empty_http_header_list ","
-#line 2931 "dhcp6_parser.yy"
+#line 2929 "dhcp6_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
-#line 4496 "dhcp6_parser.cc"
+#line 4494 "dhcp6_parser.cc"
     break;
 
   case 851: // $@124: %empty
-#line 2936 "dhcp6_parser.yy"
+#line 2934 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4506 "dhcp6_parser.cc"
+#line 4504 "dhcp6_parser.cc"
     break;
 
   case 852: // http_header: "{" $@124 http_header_params "}"
-#line 2940 "dhcp6_parser.yy"
+#line 2938 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4514 "dhcp6_parser.cc"
+#line 4512 "dhcp6_parser.cc"
     break;
 
   case 855: // http_header_params: http_header_params ","
-#line 2946 "dhcp6_parser.yy"
+#line 2944 "dhcp6_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
-#line 4522 "dhcp6_parser.cc"
+#line 4520 "dhcp6_parser.cc"
     break;
 
   case 861: // $@125: %empty
-#line 2958 "dhcp6_parser.yy"
+#line 2956 "dhcp6_parser.yy"
                     {
     ctx.unique("value", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4531 "dhcp6_parser.cc"
+#line 4529 "dhcp6_parser.cc"
     break;
 
   case 862: // header_value: "value" $@125 ":" "constant string"
-#line 2961 "dhcp6_parser.yy"
+#line 2959 "dhcp6_parser.yy"
                {
     ElementPtr value(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("value", value);
     ctx.leave();
 }
-#line 4541 "dhcp6_parser.cc"
+#line 4539 "dhcp6_parser.cc"
     break;
 
   case 863: // $@126: %empty
-#line 2969 "dhcp6_parser.yy"
+#line 2967 "dhcp6_parser.yy"
                                {
     ctx.unique("authentication", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4549,92 +4547,92 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.AUTHENTICATION);
 }
-#line 4553 "dhcp6_parser.cc"
+#line 4551 "dhcp6_parser.cc"
     break;
 
   case 864: // authentication: "authentication" $@126 ":" "{" auth_params "}"
-#line 2975 "dhcp6_parser.yy"
+#line 2973 "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 4564 "dhcp6_parser.cc"
+#line 4562 "dhcp6_parser.cc"
     break;
 
   case 867: // auth_params: auth_params ","
-#line 2984 "dhcp6_parser.yy"
+#line 2982 "dhcp6_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
-#line 4572 "dhcp6_parser.cc"
+#line 4570 "dhcp6_parser.cc"
     break;
 
   case 875: // $@127: %empty
-#line 2998 "dhcp6_parser.yy"
+#line 2996 "dhcp6_parser.yy"
                 {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.AUTH_TYPE);
 }
-#line 4581 "dhcp6_parser.cc"
+#line 4579 "dhcp6_parser.cc"
     break;
 
   case 876: // auth_type: "type" $@127 ":" auth_type_value
-#line 3001 "dhcp6_parser.yy"
+#line 2999 "dhcp6_parser.yy"
                         {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4590 "dhcp6_parser.cc"
+#line 4588 "dhcp6_parser.cc"
     break;
 
   case 877: // auth_type_value: "basic"
-#line 3006 "dhcp6_parser.yy"
+#line 3004 "dhcp6_parser.yy"
                        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
-#line 4596 "dhcp6_parser.cc"
+#line 4594 "dhcp6_parser.cc"
     break;
 
   case 878: // $@128: %empty
-#line 3009 "dhcp6_parser.yy"
+#line 3007 "dhcp6_parser.yy"
              {
     ctx.unique("realm", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4605 "dhcp6_parser.cc"
+#line 4603 "dhcp6_parser.cc"
     break;
 
   case 879: // realm: "realm" $@128 ":" "constant string"
-#line 3012 "dhcp6_parser.yy"
+#line 3010 "dhcp6_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 4615 "dhcp6_parser.cc"
+#line 4613 "dhcp6_parser.cc"
     break;
 
   case 880: // $@129: %empty
-#line 3018 "dhcp6_parser.yy"
+#line 3016 "dhcp6_parser.yy"
                      {
     ctx.unique("directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4624 "dhcp6_parser.cc"
+#line 4622 "dhcp6_parser.cc"
     break;
 
   case 881: // directory: "directory" $@129 ":" "constant string"
-#line 3021 "dhcp6_parser.yy"
+#line 3019 "dhcp6_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 4634 "dhcp6_parser.cc"
+#line 4632 "dhcp6_parser.cc"
     break;
 
   case 882: // $@130: %empty
-#line 3027 "dhcp6_parser.yy"
+#line 3025 "dhcp6_parser.yy"
                  {
     ctx.unique("clients", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4642,92 +4640,92 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENTS);
 }
-#line 4646 "dhcp6_parser.cc"
+#line 4644 "dhcp6_parser.cc"
     break;
 
   case 883: // clients: "clients" $@130 ":" "[" clients_list "]"
-#line 3033 "dhcp6_parser.yy"
+#line 3031 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4655 "dhcp6_parser.cc"
+#line 4653 "dhcp6_parser.cc"
     break;
 
   case 888: // not_empty_clients_list: not_empty_clients_list ","
-#line 3044 "dhcp6_parser.yy"
+#line 3042 "dhcp6_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
-#line 4663 "dhcp6_parser.cc"
+#line 4661 "dhcp6_parser.cc"
     break;
 
   case 889: // $@131: %empty
-#line 3049 "dhcp6_parser.yy"
+#line 3047 "dhcp6_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4673 "dhcp6_parser.cc"
+#line 4671 "dhcp6_parser.cc"
     break;
 
   case 890: // basic_auth: "{" $@131 clients_params "}"
-#line 3053 "dhcp6_parser.yy"
+#line 3051 "dhcp6_parser.yy"
                                 {
     ctx.stack_.pop_back();
 }
-#line 4681 "dhcp6_parser.cc"
+#line 4679 "dhcp6_parser.cc"
     break;
 
   case 893: // clients_params: clients_params ","
-#line 3059 "dhcp6_parser.yy"
+#line 3057 "dhcp6_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
-#line 4689 "dhcp6_parser.cc"
+#line 4687 "dhcp6_parser.cc"
     break;
 
   case 901: // $@132: %empty
-#line 3073 "dhcp6_parser.yy"
+#line 3071 "dhcp6_parser.yy"
                      {
     ctx.unique("user-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4698 "dhcp6_parser.cc"
+#line 4696 "dhcp6_parser.cc"
     break;
 
   case 902: // user_file: "user-file" $@132 ":" "constant string"
-#line 3076 "dhcp6_parser.yy"
+#line 3074 "dhcp6_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 4708 "dhcp6_parser.cc"
+#line 4706 "dhcp6_parser.cc"
     break;
 
   case 903: // $@133: %empty
-#line 3082 "dhcp6_parser.yy"
+#line 3080 "dhcp6_parser.yy"
                              {
     ctx.unique("password-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4717 "dhcp6_parser.cc"
+#line 4715 "dhcp6_parser.cc"
     break;
 
   case 904: // password_file: "password-file" $@133 ":" "constant string"
-#line 3085 "dhcp6_parser.yy"
+#line 3083 "dhcp6_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 4727 "dhcp6_parser.cc"
+#line 4725 "dhcp6_parser.cc"
     break;
 
   case 905: // $@134: %empty
-#line 3093 "dhcp6_parser.yy"
+#line 3091 "dhcp6_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4735,87 +4733,87 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 4739 "dhcp6_parser.cc"
+#line 4737 "dhcp6_parser.cc"
     break;
 
   case 906: // dhcp_queue_control: "dhcp-queue-control" $@134 ":" "{" queue_control_params "}"
-#line 3099 "dhcp6_parser.yy"
+#line 3097 "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 4750 "dhcp6_parser.cc"
+#line 4748 "dhcp6_parser.cc"
     break;
 
   case 909: // queue_control_params: queue_control_params ","
-#line 3108 "dhcp6_parser.yy"
+#line 3106 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
-#line 4758 "dhcp6_parser.cc"
+#line 4756 "dhcp6_parser.cc"
     break;
 
   case 916: // enable_queue: "enable-queue" ":" "boolean"
-#line 3121 "dhcp6_parser.yy"
+#line 3119 "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 4768 "dhcp6_parser.cc"
+#line 4766 "dhcp6_parser.cc"
     break;
 
   case 917: // $@135: %empty
-#line 3127 "dhcp6_parser.yy"
+#line 3125 "dhcp6_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4777 "dhcp6_parser.cc"
+#line 4775 "dhcp6_parser.cc"
     break;
 
   case 918: // queue_type: "queue-type" $@135 ":" "constant string"
-#line 3130 "dhcp6_parser.yy"
+#line 3128 "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 4787 "dhcp6_parser.cc"
+#line 4785 "dhcp6_parser.cc"
     break;
 
   case 919: // capacity: "capacity" ":" "integer"
-#line 3136 "dhcp6_parser.yy"
+#line 3134 "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 4797 "dhcp6_parser.cc"
+#line 4795 "dhcp6_parser.cc"
     break;
 
   case 920: // $@136: %empty
-#line 3142 "dhcp6_parser.yy"
+#line 3140 "dhcp6_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4806 "dhcp6_parser.cc"
+#line 4804 "dhcp6_parser.cc"
     break;
 
   case 921: // arbitrary_map_entry: "constant string" $@136 ":" value
-#line 3145 "dhcp6_parser.yy"
+#line 3143 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4815 "dhcp6_parser.cc"
+#line 4813 "dhcp6_parser.cc"
     break;
 
   case 922: // $@137: %empty
-#line 3152 "dhcp6_parser.yy"
+#line 3150 "dhcp6_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4823,177 +4821,177 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 4827 "dhcp6_parser.cc"
+#line 4825 "dhcp6_parser.cc"
     break;
 
   case 923: // dhcp_ddns: "dhcp-ddns" $@137 ":" "{" dhcp_ddns_params "}"
-#line 3158 "dhcp6_parser.yy"
+#line 3156 "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 4838 "dhcp6_parser.cc"
+#line 4836 "dhcp6_parser.cc"
     break;
 
   case 924: // $@138: %empty
-#line 3165 "dhcp6_parser.yy"
+#line 3163 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 4848 "dhcp6_parser.cc"
+#line 4846 "dhcp6_parser.cc"
     break;
 
   case 925: // sub_dhcp_ddns: "{" $@138 dhcp_ddns_params "}"
-#line 3169 "dhcp6_parser.yy"
+#line 3167 "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 4858 "dhcp6_parser.cc"
+#line 4856 "dhcp6_parser.cc"
     break;
 
   case 928: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 3177 "dhcp6_parser.yy"
+#line 3175 "dhcp6_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
-#line 4866 "dhcp6_parser.cc"
+#line 4864 "dhcp6_parser.cc"
     break;
 
   case 940: // enable_updates: "enable-updates" ":" "boolean"
-#line 3195 "dhcp6_parser.yy"
+#line 3193 "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 4876 "dhcp6_parser.cc"
+#line 4874 "dhcp6_parser.cc"
     break;
 
   case 941: // $@139: %empty
-#line 3201 "dhcp6_parser.yy"
+#line 3199 "dhcp6_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4885 "dhcp6_parser.cc"
+#line 4883 "dhcp6_parser.cc"
     break;
 
   case 942: // server_ip: "server-ip" $@139 ":" "constant string"
-#line 3204 "dhcp6_parser.yy"
+#line 3202 "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 4895 "dhcp6_parser.cc"
+#line 4893 "dhcp6_parser.cc"
     break;
 
   case 943: // server_port: "server-port" ":" "integer"
-#line 3210 "dhcp6_parser.yy"
+#line 3208 "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 4905 "dhcp6_parser.cc"
+#line 4903 "dhcp6_parser.cc"
     break;
 
   case 944: // $@140: %empty
-#line 3216 "dhcp6_parser.yy"
+#line 3214 "dhcp6_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4914 "dhcp6_parser.cc"
+#line 4912 "dhcp6_parser.cc"
     break;
 
   case 945: // sender_ip: "sender-ip" $@140 ":" "constant string"
-#line 3219 "dhcp6_parser.yy"
+#line 3217 "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 4924 "dhcp6_parser.cc"
+#line 4922 "dhcp6_parser.cc"
     break;
 
   case 946: // sender_port: "sender-port" ":" "integer"
-#line 3225 "dhcp6_parser.yy"
+#line 3223 "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 4934 "dhcp6_parser.cc"
+#line 4932 "dhcp6_parser.cc"
     break;
 
   case 947: // max_queue_size: "max-queue-size" ":" "integer"
-#line 3231 "dhcp6_parser.yy"
+#line 3229 "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 4944 "dhcp6_parser.cc"
+#line 4942 "dhcp6_parser.cc"
     break;
 
   case 948: // $@141: %empty
-#line 3237 "dhcp6_parser.yy"
+#line 3235 "dhcp6_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 4953 "dhcp6_parser.cc"
+#line 4951 "dhcp6_parser.cc"
     break;
 
   case 949: // ncr_protocol: "ncr-protocol" $@141 ":" ncr_protocol_value
-#line 3240 "dhcp6_parser.yy"
+#line 3238 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 4962 "dhcp6_parser.cc"
+#line 4960 "dhcp6_parser.cc"
     break;
 
   case 950: // ncr_protocol_value: "UDP"
-#line 3246 "dhcp6_parser.yy"
+#line 3244 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 4968 "dhcp6_parser.cc"
+#line 4966 "dhcp6_parser.cc"
     break;
 
   case 951: // ncr_protocol_value: "TCP"
-#line 3247 "dhcp6_parser.yy"
+#line 3245 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 4974 "dhcp6_parser.cc"
+#line 4972 "dhcp6_parser.cc"
     break;
 
   case 952: // $@142: %empty
-#line 3250 "dhcp6_parser.yy"
+#line 3248 "dhcp6_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 4983 "dhcp6_parser.cc"
+#line 4981 "dhcp6_parser.cc"
     break;
 
   case 953: // ncr_format: "ncr-format" $@142 ":" "JSON"
-#line 3253 "dhcp6_parser.yy"
+#line 3251 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 4993 "dhcp6_parser.cc"
+#line 4991 "dhcp6_parser.cc"
     break;
 
   case 954: // $@143: %empty
-#line 3261 "dhcp6_parser.yy"
+#line 3259 "dhcp6_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5001,48 +4999,48 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 5005 "dhcp6_parser.cc"
+#line 5003 "dhcp6_parser.cc"
     break;
 
   case 955: // config_control: "config-control" $@143 ":" "{" config_control_params "}"
-#line 3267 "dhcp6_parser.yy"
+#line 3265 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5015 "dhcp6_parser.cc"
+#line 5013 "dhcp6_parser.cc"
     break;
 
   case 956: // $@144: %empty
-#line 3273 "dhcp6_parser.yy"
+#line 3271 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 5025 "dhcp6_parser.cc"
+#line 5023 "dhcp6_parser.cc"
     break;
 
   case 957: // sub_config_control: "{" $@144 config_control_params "}"
-#line 3277 "dhcp6_parser.yy"
+#line 3275 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 5034 "dhcp6_parser.cc"
+#line 5032 "dhcp6_parser.cc"
     break;
 
   case 960: // config_control_params: config_control_params ","
-#line 3285 "dhcp6_parser.yy"
+#line 3283 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
-#line 5042 "dhcp6_parser.cc"
+#line 5040 "dhcp6_parser.cc"
     break;
 
   case 963: // $@145: %empty
-#line 3295 "dhcp6_parser.yy"
+#line 3293 "dhcp6_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5050,30 +5048,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 5054 "dhcp6_parser.cc"
+#line 5052 "dhcp6_parser.cc"
     break;
 
   case 964: // config_databases: "config-databases" $@145 ":" "[" database_list "]"
-#line 3301 "dhcp6_parser.yy"
+#line 3299 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5063 "dhcp6_parser.cc"
+#line 5061 "dhcp6_parser.cc"
     break;
 
   case 965: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 3306 "dhcp6_parser.yy"
+#line 3304 "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 5073 "dhcp6_parser.cc"
+#line 5071 "dhcp6_parser.cc"
     break;
 
   case 966: // $@146: %empty
-#line 3314 "dhcp6_parser.yy"
+#line 3312 "dhcp6_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5081,83 +5079,83 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 5085 "dhcp6_parser.cc"
+#line 5083 "dhcp6_parser.cc"
     break;
 
   case 967: // loggers: "loggers" $@146 ":" "[" loggers_entries "]"
-#line 3320 "dhcp6_parser.yy"
+#line 3318 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5094 "dhcp6_parser.cc"
+#line 5092 "dhcp6_parser.cc"
     break;
 
   case 970: // loggers_entries: loggers_entries ","
-#line 3329 "dhcp6_parser.yy"
+#line 3327 "dhcp6_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
-#line 5102 "dhcp6_parser.cc"
+#line 5100 "dhcp6_parser.cc"
     break;
 
   case 971: // $@147: %empty
-#line 3335 "dhcp6_parser.yy"
+#line 3333 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 5112 "dhcp6_parser.cc"
+#line 5110 "dhcp6_parser.cc"
     break;
 
   case 972: // logger_entry: "{" $@147 logger_params "}"
-#line 3339 "dhcp6_parser.yy"
+#line 3337 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 5120 "dhcp6_parser.cc"
+#line 5118 "dhcp6_parser.cc"
     break;
 
   case 975: // logger_params: logger_params ","
-#line 3345 "dhcp6_parser.yy"
+#line 3343 "dhcp6_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
-#line 5128 "dhcp6_parser.cc"
+#line 5126 "dhcp6_parser.cc"
     break;
 
   case 983: // debuglevel: "debuglevel" ":" "integer"
-#line 3359 "dhcp6_parser.yy"
+#line 3357 "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 5138 "dhcp6_parser.cc"
+#line 5136 "dhcp6_parser.cc"
     break;
 
   case 984: // $@148: %empty
-#line 3365 "dhcp6_parser.yy"
+#line 3363 "dhcp6_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 5147 "dhcp6_parser.cc"
+#line 5145 "dhcp6_parser.cc"
     break;
 
   case 985: // severity: "severity" $@148 ":" "constant string"
-#line 3368 "dhcp6_parser.yy"
+#line 3366 "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 5157 "dhcp6_parser.cc"
+#line 5155 "dhcp6_parser.cc"
     break;
 
   case 986: // $@149: %empty
-#line 3374 "dhcp6_parser.yy"
+#line 3372 "dhcp6_parser.yy"
                                     {
     ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5165,122 +5163,122 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 5169 "dhcp6_parser.cc"
+#line 5167 "dhcp6_parser.cc"
     break;
 
   case 987: // output_options_list: "output-options" $@149 ":" "[" output_options_list_content "]"
-#line 3380 "dhcp6_parser.yy"
+#line 3378 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5178 "dhcp6_parser.cc"
+#line 5176 "dhcp6_parser.cc"
     break;
 
   case 990: // output_options_list_content: output_options_list_content ","
-#line 3387 "dhcp6_parser.yy"
+#line 3385 "dhcp6_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
-#line 5186 "dhcp6_parser.cc"
+#line 5184 "dhcp6_parser.cc"
     break;
 
   case 991: // $@150: %empty
-#line 3392 "dhcp6_parser.yy"
+#line 3390 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 5196 "dhcp6_parser.cc"
+#line 5194 "dhcp6_parser.cc"
     break;
 
   case 992: // output_entry: "{" $@150 output_params_list "}"
-#line 3396 "dhcp6_parser.yy"
+#line 3394 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 5204 "dhcp6_parser.cc"
+#line 5202 "dhcp6_parser.cc"
     break;
 
   case 995: // output_params_list: output_params_list ","
-#line 3402 "dhcp6_parser.yy"
+#line 3400 "dhcp6_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
-#line 5212 "dhcp6_parser.cc"
+#line 5210 "dhcp6_parser.cc"
     break;
 
   case 1001: // $@151: %empty
-#line 3414 "dhcp6_parser.yy"
+#line 3412 "dhcp6_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 5221 "dhcp6_parser.cc"
+#line 5219 "dhcp6_parser.cc"
     break;
 
   case 1002: // output: "output" $@151 ":" "constant string"
-#line 3417 "dhcp6_parser.yy"
+#line 3415 "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 5231 "dhcp6_parser.cc"
+#line 5229 "dhcp6_parser.cc"
     break;
 
   case 1003: // flush: "flush" ":" "boolean"
-#line 3423 "dhcp6_parser.yy"
+#line 3421 "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 5241 "dhcp6_parser.cc"
+#line 5239 "dhcp6_parser.cc"
     break;
 
   case 1004: // maxsize: "maxsize" ":" "integer"
-#line 3429 "dhcp6_parser.yy"
+#line 3427 "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 5251 "dhcp6_parser.cc"
+#line 5249 "dhcp6_parser.cc"
     break;
 
   case 1005: // maxver: "maxver" ":" "integer"
-#line 3435 "dhcp6_parser.yy"
+#line 3433 "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 5261 "dhcp6_parser.cc"
+#line 5259 "dhcp6_parser.cc"
     break;
 
   case 1006: // $@152: %empty
-#line 3441 "dhcp6_parser.yy"
+#line 3439 "dhcp6_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 5270 "dhcp6_parser.cc"
+#line 5268 "dhcp6_parser.cc"
     break;
 
   case 1007: // pattern: "pattern" $@152 ":" "constant string"
-#line 3444 "dhcp6_parser.yy"
+#line 3442 "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 5280 "dhcp6_parser.cc"
+#line 5278 "dhcp6_parser.cc"
     break;
 
   case 1008: // $@153: %empty
-#line 3450 "dhcp6_parser.yy"
+#line 3448 "dhcp6_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5288,38 +5286,38 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.COMPATIBILITY);
 }
-#line 5292 "dhcp6_parser.cc"
+#line 5290 "dhcp6_parser.cc"
     break;
 
   case 1009: // compatibility: "compatibility" $@153 ":" "{" compatibility_params "}"
-#line 3456 "dhcp6_parser.yy"
+#line 3454 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 5301 "dhcp6_parser.cc"
+#line 5299 "dhcp6_parser.cc"
     break;
 
   case 1012: // compatibility_params: compatibility_params ","
-#line 3463 "dhcp6_parser.yy"
+#line 3461 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
-#line 5309 "dhcp6_parser.cc"
+#line 5307 "dhcp6_parser.cc"
     break;
 
   case 1015: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3472 "dhcp6_parser.yy"
+#line 3470 "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 5319 "dhcp6_parser.cc"
+#line 5317 "dhcp6_parser.cc"
     break;
 
 
-#line 5323 "dhcp6_parser.cc"
+#line 5321 "dhcp6_parser.cc"
 
             default:
               break;
@@ -7151,24 +7149,24 @@ namespace isc { namespace dhcp {
     2827,  2828,  2831,  2832,  2833,  2838,  2838,  2846,  2847,  2848,
     2853,  2854,  2855,  2856,  2857,  2858,  2859,  2860,  2861,  2862,
     2863,  2864,  2865,  2868,  2868,  2877,  2878,  2879,  2882,  2882,
-    2892,  2892,  2902,  2908,  2914,  2914,  2925,  2926,  2929,  2930,
-    2931,  2936,  2936,  2944,  2945,  2946,  2951,  2952,  2953,  2954,
-    2955,  2958,  2958,  2969,  2969,  2982,  2983,  2984,  2989,  2990,
-    2991,  2992,  2993,  2994,  2995,  2998,  2998,  3006,  3009,  3009,
-    3018,  3018,  3027,  3027,  3038,  3039,  3042,  3043,  3044,  3049,
-    3049,  3057,  3058,  3059,  3064,  3065,  3066,  3067,  3068,  3069,
-    3070,  3073,  3073,  3082,  3082,  3093,  3093,  3106,  3107,  3108,
-    3113,  3114,  3115,  3116,  3117,  3118,  3121,  3127,  3127,  3136,
-    3142,  3142,  3152,  3152,  3165,  3165,  3175,  3176,  3177,  3182,
-    3183,  3184,  3185,  3186,  3187,  3188,  3189,  3190,  3191,  3192,
-    3195,  3201,  3201,  3210,  3216,  3216,  3225,  3231,  3237,  3237,
-    3246,  3247,  3250,  3250,  3261,  3261,  3273,  3273,  3283,  3284,
-    3285,  3291,  3292,  3295,  3295,  3306,  3314,  3314,  3327,  3328,
-    3329,  3335,  3335,  3343,  3344,  3345,  3350,  3351,  3352,  3353,
-    3354,  3355,  3356,  3359,  3365,  3365,  3374,  3374,  3385,  3386,
-    3387,  3392,  3392,  3400,  3401,  3402,  3407,  3408,  3409,  3410,
-    3411,  3414,  3414,  3423,  3429,  3435,  3441,  3441,  3450,  3450,
-    3461,  3462,  3463,  3468,  3469,  3472
+    2891,  2891,  2900,  2906,  2912,  2912,  2923,  2924,  2927,  2928,
+    2929,  2934,  2934,  2942,  2943,  2944,  2949,  2950,  2951,  2952,
+    2953,  2956,  2956,  2967,  2967,  2980,  2981,  2982,  2987,  2988,
+    2989,  2990,  2991,  2992,  2993,  2996,  2996,  3004,  3007,  3007,
+    3016,  3016,  3025,  3025,  3036,  3037,  3040,  3041,  3042,  3047,
+    3047,  3055,  3056,  3057,  3062,  3063,  3064,  3065,  3066,  3067,
+    3068,  3071,  3071,  3080,  3080,  3091,  3091,  3104,  3105,  3106,
+    3111,  3112,  3113,  3114,  3115,  3116,  3119,  3125,  3125,  3134,
+    3140,  3140,  3150,  3150,  3163,  3163,  3173,  3174,  3175,  3180,
+    3181,  3182,  3183,  3184,  3185,  3186,  3187,  3188,  3189,  3190,
+    3193,  3199,  3199,  3208,  3214,  3214,  3223,  3229,  3235,  3235,
+    3244,  3245,  3248,  3248,  3259,  3259,  3271,  3271,  3281,  3282,
+    3283,  3289,  3290,  3293,  3293,  3304,  3312,  3312,  3325,  3326,
+    3327,  3333,  3333,  3341,  3342,  3343,  3348,  3349,  3350,  3351,
+    3352,  3353,  3354,  3357,  3363,  3363,  3372,  3372,  3383,  3384,
+    3385,  3390,  3390,  3398,  3399,  3400,  3405,  3406,  3407,  3408,
+    3409,  3412,  3412,  3421,  3427,  3433,  3439,  3439,  3448,  3448,
+    3459,  3460,  3461,  3466,  3467,  3470
   };
 
   void
@@ -7201,9 +7199,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 7205 "dhcp6_parser.cc"
+#line 7203 "dhcp6_parser.cc"
 
-#line 3478 "dhcp6_parser.yy"
+#line 3476 "dhcp6_parser.yy"
 
 
 void
index cf6ead833bbd25a6f558721edaf4f3eded87dd98..91cf59c76124f5bf31ed2de4f095879cf57ceb88 100644 (file)
@@ -2881,7 +2881,6 @@ control_socket_type_value:
 
 control_socket_name: SOCKET_NAME {
     ctx.unique("socket-name", ctx.loc2pos(@1));
-    ctx.unique("socket-address", ctx.loc2pos(@1));
     ctx.enter(ctx.NO_KEYWORD);
 } COLON STRING {
     ElementPtr name(new StringElement($4, ctx.loc2pos(@4)));
@@ -2891,7 +2890,6 @@ control_socket_name: SOCKET_NAME {
 
 control_socket_address: SOCKET_ADDRESS {
     ctx.unique("socket-address", ctx.loc2pos(@1));
-    ctx.unique("socket-name", ctx.loc2pos(@1));
     ctx.enter(ctx.NO_KEYWORD);
 } COLON STRING {
     ElementPtr address(new StringElement($4, ctx.loc2pos(@4)));