]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#4453] Extended syntaxes
authorFrancis Dupont <fdupont@isc.org>
Sat, 2 May 2026 10:47:12 +0000 (12:47 +0200)
committerFrancis Dupont <fdupont@isc.org>
Mon, 4 May 2026 07:41:40 +0000 (09:41 +0200)
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/dhcp4_parser.yy
src/bin/dhcp4/tests/classify_unittest.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/dhcp6_parser.yy
src/bin/dhcp6/tests/classify_unittest.cc

index 77b11985b310fcc3fdd1bdba9fe6f5619a2abda1..5650efa36130c67092352176f7c968de32e42464 100644 (file)
@@ -4022,16 +4022,16 @@ namespace isc { namespace dhcp {
 #line 4023 "dhcp4_parser.cc"
     break;
 
-  case 728: // client_classes_list: client_classes_list ","
-#line 2559 "dhcp4_parser.yy"
-                                               {
-                       ctx.warnAboutExtraCommas(yystack_[0].location);
-                       }
+  case 730: // not_empty_classes_list: not_empty_classes_list ","
+#line 2563 "dhcp4_parser.yy"
+                                                     {
+                          ctx.warnAboutExtraCommas(yystack_[0].location);
+                          }
 #line 4031 "dhcp4_parser.cc"
     break;
 
-  case 729: // $@109: %empty
-#line 2564 "dhcp4_parser.yy"
+  case 731: // $@109: %empty
+#line 2568 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4040,8 +4040,8 @@ namespace isc { namespace dhcp {
 #line 4041 "dhcp4_parser.cc"
     break;
 
-  case 730: // client_class_entry: "{" $@109 client_class_params "}"
-#line 2568 "dhcp4_parser.yy"
+  case 732: // client_class_entry: "{" $@109 client_class_params "}"
+#line 2572 "dhcp4_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -4050,16 +4050,16 @@ namespace isc { namespace dhcp {
 #line 4051 "dhcp4_parser.cc"
     break;
 
-  case 735: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2580 "dhcp4_parser.yy"
+  case 737: // not_empty_client_class_params: not_empty_client_class_params ","
+#line 2584 "dhcp4_parser.yy"
                                           {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
 #line 4059 "dhcp4_parser.cc"
     break;
 
-  case 754: // $@110: %empty
-#line 2606 "dhcp4_parser.yy"
+  case 756: // $@110: %empty
+#line 2610 "dhcp4_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4067,8 +4067,8 @@ namespace isc { namespace dhcp {
 #line 4068 "dhcp4_parser.cc"
     break;
 
-  case 755: // client_class_test: "test" $@110 ":" "constant string"
-#line 2609 "dhcp4_parser.yy"
+  case 757: // client_class_test: "test" $@110 ":" "constant string"
+#line 2613 "dhcp4_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -4077,8 +4077,8 @@ namespace isc { namespace dhcp {
 #line 4078 "dhcp4_parser.cc"
     break;
 
-  case 756: // $@111: %empty
-#line 2615 "dhcp4_parser.yy"
+  case 758: // $@111: %empty
+#line 2619 "dhcp4_parser.yy"
                                           {
     ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4086,8 +4086,8 @@ namespace isc { namespace dhcp {
 #line 4087 "dhcp4_parser.cc"
     break;
 
-  case 757: // client_class_template_test: "template-test" $@111 ":" "constant string"
-#line 2618 "dhcp4_parser.yy"
+  case 759: // client_class_template_test: "template-test" $@111 ":" "constant string"
+#line 2622 "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);
@@ -4096,8 +4096,8 @@ namespace isc { namespace dhcp {
 #line 4097 "dhcp4_parser.cc"
     break;
 
-  case 758: // only_if_required: "only-if-required" ":" "boolean"
-#line 2625 "dhcp4_parser.yy"
+  case 760: // only_if_required: "only-if-required" ":" "boolean"
+#line 2629 "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)));
@@ -4106,8 +4106,8 @@ namespace isc { namespace dhcp {
 #line 4107 "dhcp4_parser.cc"
     break;
 
-  case 759: // only_in_additional_list: "only-in-additional-list" ":" "boolean"
-#line 2631 "dhcp4_parser.yy"
+  case 761: // only_in_additional_list: "only-in-additional-list" ":" "boolean"
+#line 2635 "dhcp4_parser.yy"
                                                                {
     ctx.unique("only-in-additional-list", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4116,8 +4116,8 @@ namespace isc { namespace dhcp {
 #line 4117 "dhcp4_parser.cc"
     break;
 
-  case 760: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2639 "dhcp4_parser.yy"
+  case 762: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
+#line 2643 "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)));
@@ -4126,8 +4126,8 @@ namespace isc { namespace dhcp {
 #line 4127 "dhcp4_parser.cc"
     break;
 
-  case 761: // $@112: %empty
-#line 2647 "dhcp4_parser.yy"
+  case 763: // $@112: %empty
+#line 2651 "dhcp4_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location));
@@ -4139,8 +4139,8 @@ namespace isc { namespace dhcp {
 #line 4140 "dhcp4_parser.cc"
     break;
 
-  case 762: // control_socket: "control-socket" $@112 ":" "{" control_socket_params "}"
-#line 2654 "dhcp4_parser.yy"
+  case 764: // control_socket: "control-socket" $@112 ":" "{" control_socket_params "}"
+#line 2658 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4148,8 +4148,8 @@ namespace isc { namespace dhcp {
 #line 4149 "dhcp4_parser.cc"
     break;
 
-  case 763: // $@113: %empty
-#line 2659 "dhcp4_parser.yy"
+  case 765: // $@113: %empty
+#line 2663 "dhcp4_parser.yy"
                                  {
     ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location));
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
@@ -4161,8 +4161,8 @@ namespace isc { namespace dhcp {
 #line 4162 "dhcp4_parser.cc"
     break;
 
-  case 764: // control_sockets: "control-sockets" $@113 ":" "[" control_socket_list "]"
-#line 2666 "dhcp4_parser.yy"
+  case 766: // control_sockets: "control-sockets" $@113 ":" "[" control_socket_list "]"
+#line 2670 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4170,16 +4170,16 @@ namespace isc { namespace dhcp {
 #line 4171 "dhcp4_parser.cc"
     break;
 
-  case 769: // not_empty_control_socket_list: not_empty_control_socket_list ","
-#line 2677 "dhcp4_parser.yy"
+  case 771: // not_empty_control_socket_list: not_empty_control_socket_list ","
+#line 2681 "dhcp4_parser.yy"
                                                                    {
                                  ctx.warnAboutExtraCommas(yystack_[0].location);
                                  }
 #line 4179 "dhcp4_parser.cc"
     break;
 
-  case 770: // $@114: %empty
-#line 2682 "dhcp4_parser.yy"
+  case 772: // $@114: %empty
+#line 2686 "dhcp4_parser.yy"
                                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4188,24 +4188,24 @@ namespace isc { namespace dhcp {
 #line 4189 "dhcp4_parser.cc"
     break;
 
-  case 771: // control_socket_entry: "{" $@114 control_socket_params "}"
-#line 2686 "dhcp4_parser.yy"
+  case 773: // control_socket_entry: "{" $@114 control_socket_params "}"
+#line 2690 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
 #line 4197 "dhcp4_parser.cc"
     break;
 
-  case 774: // control_socket_params: control_socket_params ","
-#line 2692 "dhcp4_parser.yy"
+  case 776: // control_socket_params: control_socket_params ","
+#line 2696 "dhcp4_parser.yy"
                                                    {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
 #line 4205 "dhcp4_parser.cc"
     break;
 
-  case 788: // $@115: %empty
-#line 2712 "dhcp4_parser.yy"
+  case 790: // $@115: %empty
+#line 2716 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.CONTROL_SOCKET_TYPE);
@@ -4213,8 +4213,8 @@ namespace isc { namespace dhcp {
 #line 4214 "dhcp4_parser.cc"
     break;
 
-  case 789: // control_socket_type: "socket-type" $@115 ":" control_socket_type_value
-#line 2715 "dhcp4_parser.yy"
+  case 791: // control_socket_type: "socket-type" $@115 ":" control_socket_type_value
+#line 2719 "dhcp4_parser.yy"
                                   {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4222,26 +4222,26 @@ namespace isc { namespace dhcp {
 #line 4223 "dhcp4_parser.cc"
     break;
 
-  case 790: // control_socket_type_value: "unix"
-#line 2721 "dhcp4_parser.yy"
+  case 792: // control_socket_type_value: "unix"
+#line 2725 "dhcp4_parser.yy"
          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 4229 "dhcp4_parser.cc"
     break;
 
-  case 791: // control_socket_type_value: "http"
-#line 2722 "dhcp4_parser.yy"
+  case 793: // control_socket_type_value: "http"
+#line 2726 "dhcp4_parser.yy"
          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
 #line 4235 "dhcp4_parser.cc"
     break;
 
-  case 792: // control_socket_type_value: "https"
-#line 2723 "dhcp4_parser.yy"
+  case 794: // control_socket_type_value: "https"
+#line 2727 "dhcp4_parser.yy"
           { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("https", ctx.loc2pos(yystack_[0].location))); }
 #line 4241 "dhcp4_parser.cc"
     break;
 
-  case 793: // $@116: %empty
-#line 2726 "dhcp4_parser.yy"
+  case 795: // $@116: %empty
+#line 2730 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
@@ -4250,8 +4250,8 @@ namespace isc { namespace dhcp {
 #line 4251 "dhcp4_parser.cc"
     break;
 
-  case 794: // control_socket_name: "socket-name" $@116 ":" "constant string"
-#line 2730 "dhcp4_parser.yy"
+  case 796: // control_socket_name: "socket-name" $@116 ":" "constant string"
+#line 2734 "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);
@@ -4260,8 +4260,8 @@ namespace isc { namespace dhcp {
 #line 4261 "dhcp4_parser.cc"
     break;
 
-  case 795: // $@117: %empty
-#line 2736 "dhcp4_parser.yy"
+  case 797: // $@117: %empty
+#line 2740 "dhcp4_parser.yy"
                                        {
     ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
@@ -4270,8 +4270,8 @@ namespace isc { namespace dhcp {
 #line 4271 "dhcp4_parser.cc"
     break;
 
-  case 796: // control_socket_address: "socket-address" $@117 ":" "constant string"
-#line 2740 "dhcp4_parser.yy"
+  case 798: // control_socket_address: "socket-address" $@117 ":" "constant string"
+#line 2744 "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);
@@ -4280,8 +4280,8 @@ namespace isc { namespace dhcp {
 #line 4281 "dhcp4_parser.cc"
     break;
 
-  case 797: // control_socket_port: "socket-port" ":" "integer"
-#line 2746 "dhcp4_parser.yy"
+  case 799: // control_socket_port: "socket-port" ":" "integer"
+#line 2750 "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)));
@@ -4290,8 +4290,8 @@ namespace isc { namespace dhcp {
 #line 4291 "dhcp4_parser.cc"
     break;
 
-  case 798: // cert_required: "cert-required" ":" "boolean"
-#line 2752 "dhcp4_parser.yy"
+  case 800: // cert_required: "cert-required" ":" "boolean"
+#line 2756 "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)));
@@ -4300,8 +4300,8 @@ namespace isc { namespace dhcp {
 #line 4301 "dhcp4_parser.cc"
     break;
 
-  case 799: // $@118: %empty
-#line 2758 "dhcp4_parser.yy"
+  case 801: // $@118: %empty
+#line 2762 "dhcp4_parser.yy"
                            {
     ctx.unique("http-headers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4312,8 +4312,8 @@ namespace isc { namespace dhcp {
 #line 4313 "dhcp4_parser.cc"
     break;
 
-  case 800: // http_headers: "http-headers" $@118 ":" "[" http_header_list "]"
-#line 2764 "dhcp4_parser.yy"
+  case 802: // http_headers: "http-headers" $@118 ":" "[" http_header_list "]"
+#line 2768 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4321,16 +4321,16 @@ namespace isc { namespace dhcp {
 #line 4322 "dhcp4_parser.cc"
     break;
 
-  case 805: // not_empty_http_header_list: not_empty_http_header_list ","
-#line 2775 "dhcp4_parser.yy"
+  case 807: // not_empty_http_header_list: not_empty_http_header_list ","
+#line 2779 "dhcp4_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
 #line 4330 "dhcp4_parser.cc"
     break;
 
-  case 806: // $@119: %empty
-#line 2780 "dhcp4_parser.yy"
+  case 808: // $@119: %empty
+#line 2784 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4339,24 +4339,24 @@ namespace isc { namespace dhcp {
 #line 4340 "dhcp4_parser.cc"
     break;
 
-  case 807: // http_header: "{" $@119 http_header_params "}"
-#line 2784 "dhcp4_parser.yy"
+  case 809: // http_header: "{" $@119 http_header_params "}"
+#line 2788 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
 #line 4348 "dhcp4_parser.cc"
     break;
 
-  case 810: // http_header_params: http_header_params ","
-#line 2790 "dhcp4_parser.yy"
+  case 812: // http_header_params: http_header_params ","
+#line 2794 "dhcp4_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
 #line 4356 "dhcp4_parser.cc"
     break;
 
-  case 816: // $@120: %empty
-#line 2802 "dhcp4_parser.yy"
+  case 818: // $@120: %empty
+#line 2806 "dhcp4_parser.yy"
                     {
     ctx.unique("value", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4364,8 +4364,8 @@ namespace isc { namespace dhcp {
 #line 4365 "dhcp4_parser.cc"
     break;
 
-  case 817: // header_value: "value" $@120 ":" "constant string"
-#line 2805 "dhcp4_parser.yy"
+  case 819: // header_value: "value" $@120 ":" "constant string"
+#line 2809 "dhcp4_parser.yy"
                {
     ElementPtr value(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("value", value);
@@ -4374,8 +4374,8 @@ namespace isc { namespace dhcp {
 #line 4375 "dhcp4_parser.cc"
     break;
 
-  case 818: // $@121: %empty
-#line 2813 "dhcp4_parser.yy"
+  case 820: // $@121: %empty
+#line 2817 "dhcp4_parser.yy"
                                {
     ctx.unique("authentication", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4386,8 +4386,8 @@ namespace isc { namespace dhcp {
 #line 4387 "dhcp4_parser.cc"
     break;
 
-  case 819: // authentication: "authentication" $@121 ":" "{" auth_params "}"
-#line 2819 "dhcp4_parser.yy"
+  case 821: // authentication: "authentication" $@121 ":" "{" auth_params "}"
+#line 2823 "dhcp4_parser.yy"
                                                   {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4397,16 +4397,16 @@ namespace isc { namespace dhcp {
 #line 4398 "dhcp4_parser.cc"
     break;
 
-  case 822: // auth_params: auth_params ","
-#line 2828 "dhcp4_parser.yy"
+  case 824: // auth_params: auth_params ","
+#line 2832 "dhcp4_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
 #line 4406 "dhcp4_parser.cc"
     break;
 
-  case 830: // $@122: %empty
-#line 2842 "dhcp4_parser.yy"
+  case 832: // $@122: %empty
+#line 2846 "dhcp4_parser.yy"
                 {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.AUTH_TYPE);
@@ -4414,8 +4414,8 @@ namespace isc { namespace dhcp {
 #line 4415 "dhcp4_parser.cc"
     break;
 
-  case 831: // auth_type: "type" $@122 ":" auth_type_value
-#line 2845 "dhcp4_parser.yy"
+  case 833: // auth_type: "type" $@122 ":" auth_type_value
+#line 2849 "dhcp4_parser.yy"
                         {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4423,14 +4423,14 @@ namespace isc { namespace dhcp {
 #line 4424 "dhcp4_parser.cc"
     break;
 
-  case 832: // auth_type_value: "basic"
-#line 2850 "dhcp4_parser.yy"
+  case 834: // auth_type_value: "basic"
+#line 2854 "dhcp4_parser.yy"
                        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
 #line 4430 "dhcp4_parser.cc"
     break;
 
-  case 833: // $@123: %empty
-#line 2853 "dhcp4_parser.yy"
+  case 835: // $@123: %empty
+#line 2857 "dhcp4_parser.yy"
              {
     ctx.unique("realm", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4438,8 +4438,8 @@ namespace isc { namespace dhcp {
 #line 4439 "dhcp4_parser.cc"
     break;
 
-  case 834: // realm: "realm" $@123 ":" "constant string"
-#line 2856 "dhcp4_parser.yy"
+  case 836: // realm: "realm" $@123 ":" "constant string"
+#line 2860 "dhcp4_parser.yy"
                {
     ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("realm", realm);
@@ -4448,8 +4448,8 @@ namespace isc { namespace dhcp {
 #line 4449 "dhcp4_parser.cc"
     break;
 
-  case 835: // $@124: %empty
-#line 2862 "dhcp4_parser.yy"
+  case 837: // $@124: %empty
+#line 2866 "dhcp4_parser.yy"
                      {
     ctx.unique("directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4457,8 +4457,8 @@ namespace isc { namespace dhcp {
 #line 4458 "dhcp4_parser.cc"
     break;
 
-  case 836: // directory: "directory" $@124 ":" "constant string"
-#line 2865 "dhcp4_parser.yy"
+  case 838: // directory: "directory" $@124 ":" "constant string"
+#line 2869 "dhcp4_parser.yy"
                {
     ElementPtr directory(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("directory", directory);
@@ -4467,8 +4467,8 @@ namespace isc { namespace dhcp {
 #line 4468 "dhcp4_parser.cc"
     break;
 
-  case 837: // $@125: %empty
-#line 2871 "dhcp4_parser.yy"
+  case 839: // $@125: %empty
+#line 2875 "dhcp4_parser.yy"
                  {
     ctx.unique("clients", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4479,8 +4479,8 @@ namespace isc { namespace dhcp {
 #line 4480 "dhcp4_parser.cc"
     break;
 
-  case 838: // clients: "clients" $@125 ":" "[" clients_list "]"
-#line 2877 "dhcp4_parser.yy"
+  case 840: // clients: "clients" $@125 ":" "[" clients_list "]"
+#line 2881 "dhcp4_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4488,16 +4488,16 @@ namespace isc { namespace dhcp {
 #line 4489 "dhcp4_parser.cc"
     break;
 
-  case 843: // not_empty_clients_list: not_empty_clients_list ","
-#line 2888 "dhcp4_parser.yy"
+  case 845: // not_empty_clients_list: not_empty_clients_list ","
+#line 2892 "dhcp4_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
 #line 4497 "dhcp4_parser.cc"
     break;
 
-  case 844: // $@126: %empty
-#line 2893 "dhcp4_parser.yy"
+  case 846: // $@126: %empty
+#line 2897 "dhcp4_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4506,24 +4506,24 @@ namespace isc { namespace dhcp {
 #line 4507 "dhcp4_parser.cc"
     break;
 
-  case 845: // basic_auth: "{" $@126 clients_params "}"
-#line 2897 "dhcp4_parser.yy"
+  case 847: // basic_auth: "{" $@126 clients_params "}"
+#line 2901 "dhcp4_parser.yy"
                                 {
     ctx.stack_.pop_back();
 }
 #line 4515 "dhcp4_parser.cc"
     break;
 
-  case 848: // clients_params: clients_params ","
-#line 2903 "dhcp4_parser.yy"
+  case 850: // clients_params: clients_params ","
+#line 2907 "dhcp4_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
 #line 4523 "dhcp4_parser.cc"
     break;
 
-  case 856: // $@127: %empty
-#line 2917 "dhcp4_parser.yy"
+  case 858: // $@127: %empty
+#line 2921 "dhcp4_parser.yy"
                      {
     ctx.unique("user-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4531,8 +4531,8 @@ namespace isc { namespace dhcp {
 #line 4532 "dhcp4_parser.cc"
     break;
 
-  case 857: // user_file: "user-file" $@127 ":" "constant string"
-#line 2920 "dhcp4_parser.yy"
+  case 859: // user_file: "user-file" $@127 ":" "constant string"
+#line 2924 "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);
@@ -4541,8 +4541,8 @@ namespace isc { namespace dhcp {
 #line 4542 "dhcp4_parser.cc"
     break;
 
-  case 858: // $@128: %empty
-#line 2926 "dhcp4_parser.yy"
+  case 860: // $@128: %empty
+#line 2930 "dhcp4_parser.yy"
                              {
     ctx.unique("password-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4550,8 +4550,8 @@ namespace isc { namespace dhcp {
 #line 4551 "dhcp4_parser.cc"
     break;
 
-  case 859: // password_file: "password-file" $@128 ":" "constant string"
-#line 2929 "dhcp4_parser.yy"
+  case 861: // password_file: "password-file" $@128 ":" "constant string"
+#line 2933 "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);
@@ -4560,8 +4560,8 @@ namespace isc { namespace dhcp {
 #line 4561 "dhcp4_parser.cc"
     break;
 
-  case 860: // $@129: %empty
-#line 2937 "dhcp4_parser.yy"
+  case 862: // $@129: %empty
+#line 2941 "dhcp4_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4572,8 +4572,8 @@ namespace isc { namespace dhcp {
 #line 4573 "dhcp4_parser.cc"
     break;
 
-  case 861: // dhcp_queue_control: "dhcp-queue-control" $@129 ":" "{" queue_control_params "}"
-#line 2943 "dhcp4_parser.yy"
+  case 863: // dhcp_queue_control: "dhcp-queue-control" $@129 ":" "{" queue_control_params "}"
+#line 2947 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4583,16 +4583,16 @@ namespace isc { namespace dhcp {
 #line 4584 "dhcp4_parser.cc"
     break;
 
-  case 864: // queue_control_params: queue_control_params ","
-#line 2952 "dhcp4_parser.yy"
+  case 866: // queue_control_params: queue_control_params ","
+#line 2956 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
 #line 4592 "dhcp4_parser.cc"
     break;
 
-  case 871: // enable_queue: "enable-queue" ":" "boolean"
-#line 2965 "dhcp4_parser.yy"
+  case 873: // enable_queue: "enable-queue" ":" "boolean"
+#line 2969 "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)));
@@ -4601,8 +4601,8 @@ namespace isc { namespace dhcp {
 #line 4602 "dhcp4_parser.cc"
     break;
 
-  case 872: // $@130: %empty
-#line 2971 "dhcp4_parser.yy"
+  case 874: // $@130: %empty
+#line 2975 "dhcp4_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4610,8 +4610,8 @@ namespace isc { namespace dhcp {
 #line 4611 "dhcp4_parser.cc"
     break;
 
-  case 873: // queue_type: "queue-type" $@130 ":" "constant string"
-#line 2974 "dhcp4_parser.yy"
+  case 875: // queue_type: "queue-type" $@130 ":" "constant string"
+#line 2978 "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);
@@ -4620,8 +4620,8 @@ namespace isc { namespace dhcp {
 #line 4621 "dhcp4_parser.cc"
     break;
 
-  case 874: // capacity: "capacity" ":" "integer"
-#line 2980 "dhcp4_parser.yy"
+  case 876: // capacity: "capacity" ":" "integer"
+#line 2984 "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)));
@@ -4630,8 +4630,8 @@ namespace isc { namespace dhcp {
 #line 4631 "dhcp4_parser.cc"
     break;
 
-  case 875: // $@131: %empty
-#line 2986 "dhcp4_parser.yy"
+  case 877: // $@131: %empty
+#line 2990 "dhcp4_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4639,8 +4639,8 @@ namespace isc { namespace dhcp {
 #line 4640 "dhcp4_parser.cc"
     break;
 
-  case 876: // arbitrary_map_entry: "constant string" $@131 ":" value
-#line 2989 "dhcp4_parser.yy"
+  case 878: // arbitrary_map_entry: "constant string" $@131 ":" value
+#line 2993 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4648,8 +4648,8 @@ namespace isc { namespace dhcp {
 #line 4649 "dhcp4_parser.cc"
     break;
 
-  case 877: // $@132: %empty
-#line 2996 "dhcp4_parser.yy"
+  case 879: // $@132: %empty
+#line 3000 "dhcp4_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4660,8 +4660,8 @@ namespace isc { namespace dhcp {
 #line 4661 "dhcp4_parser.cc"
     break;
 
-  case 878: // dhcp_ddns: "dhcp-ddns" $@132 ":" "{" dhcp_ddns_params "}"
-#line 3002 "dhcp4_parser.yy"
+  case 880: // dhcp_ddns: "dhcp-ddns" $@132 ":" "{" dhcp_ddns_params "}"
+#line 3006 "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));
@@ -4671,8 +4671,8 @@ namespace isc { namespace dhcp {
 #line 4672 "dhcp4_parser.cc"
     break;
 
-  case 879: // $@133: %empty
-#line 3009 "dhcp4_parser.yy"
+  case 881: // $@133: %empty
+#line 3013 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4681,8 +4681,8 @@ namespace isc { namespace dhcp {
 #line 4682 "dhcp4_parser.cc"
     break;
 
-  case 880: // sub_dhcp_ddns: "{" $@133 dhcp_ddns_params "}"
-#line 3013 "dhcp4_parser.yy"
+  case 882: // sub_dhcp_ddns: "{" $@133 dhcp_ddns_params "}"
+#line 3017 "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));
@@ -4691,16 +4691,16 @@ namespace isc { namespace dhcp {
 #line 4692 "dhcp4_parser.cc"
     break;
 
-  case 883: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 3021 "dhcp4_parser.yy"
+  case 885: // dhcp_ddns_params: dhcp_ddns_params ","
+#line 3025 "dhcp4_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
 #line 4700 "dhcp4_parser.cc"
     break;
 
-  case 895: // enable_updates: "enable-updates" ":" "boolean"
-#line 3039 "dhcp4_parser.yy"
+  case 897: // enable_updates: "enable-updates" ":" "boolean"
+#line 3043 "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)));
@@ -4709,8 +4709,8 @@ namespace isc { namespace dhcp {
 #line 4710 "dhcp4_parser.cc"
     break;
 
-  case 896: // $@134: %empty
-#line 3045 "dhcp4_parser.yy"
+  case 898: // $@134: %empty
+#line 3049 "dhcp4_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4718,8 +4718,8 @@ namespace isc { namespace dhcp {
 #line 4719 "dhcp4_parser.cc"
     break;
 
-  case 897: // server_ip: "server-ip" $@134 ":" "constant string"
-#line 3048 "dhcp4_parser.yy"
+  case 899: // server_ip: "server-ip" $@134 ":" "constant string"
+#line 3052 "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);
@@ -4728,8 +4728,8 @@ namespace isc { namespace dhcp {
 #line 4729 "dhcp4_parser.cc"
     break;
 
-  case 898: // server_port: "server-port" ":" "integer"
-#line 3054 "dhcp4_parser.yy"
+  case 900: // server_port: "server-port" ":" "integer"
+#line 3058 "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)));
@@ -4738,8 +4738,8 @@ namespace isc { namespace dhcp {
 #line 4739 "dhcp4_parser.cc"
     break;
 
-  case 899: // $@135: %empty
-#line 3060 "dhcp4_parser.yy"
+  case 901: // $@135: %empty
+#line 3064 "dhcp4_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4747,8 +4747,8 @@ namespace isc { namespace dhcp {
 #line 4748 "dhcp4_parser.cc"
     break;
 
-  case 900: // sender_ip: "sender-ip" $@135 ":" "constant string"
-#line 3063 "dhcp4_parser.yy"
+  case 902: // sender_ip: "sender-ip" $@135 ":" "constant string"
+#line 3067 "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);
@@ -4757,8 +4757,8 @@ namespace isc { namespace dhcp {
 #line 4758 "dhcp4_parser.cc"
     break;
 
-  case 901: // sender_port: "sender-port" ":" "integer"
-#line 3069 "dhcp4_parser.yy"
+  case 903: // sender_port: "sender-port" ":" "integer"
+#line 3073 "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)));
@@ -4767,8 +4767,8 @@ namespace isc { namespace dhcp {
 #line 4768 "dhcp4_parser.cc"
     break;
 
-  case 902: // max_queue_size: "max-queue-size" ":" "integer"
-#line 3075 "dhcp4_parser.yy"
+  case 904: // max_queue_size: "max-queue-size" ":" "integer"
+#line 3079 "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)));
@@ -4777,8 +4777,8 @@ namespace isc { namespace dhcp {
 #line 4778 "dhcp4_parser.cc"
     break;
 
-  case 903: // $@136: %empty
-#line 3081 "dhcp4_parser.yy"
+  case 905: // $@136: %empty
+#line 3085 "dhcp4_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -4786,8 +4786,8 @@ namespace isc { namespace dhcp {
 #line 4787 "dhcp4_parser.cc"
     break;
 
-  case 904: // ncr_protocol: "ncr-protocol" $@136 ":" ncr_protocol_value
-#line 3084 "dhcp4_parser.yy"
+  case 906: // ncr_protocol: "ncr-protocol" $@136 ":" ncr_protocol_value
+#line 3088 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4795,20 +4795,20 @@ namespace isc { namespace dhcp {
 #line 4796 "dhcp4_parser.cc"
     break;
 
-  case 905: // ncr_protocol_value: "udp"
-#line 3090 "dhcp4_parser.yy"
+  case 907: // ncr_protocol_value: "udp"
+#line 3094 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 4802 "dhcp4_parser.cc"
     break;
 
-  case 906: // ncr_protocol_value: "tcp"
-#line 3091 "dhcp4_parser.yy"
+  case 908: // ncr_protocol_value: "tcp"
+#line 3095 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 4808 "dhcp4_parser.cc"
     break;
 
-  case 907: // $@137: %empty
-#line 3094 "dhcp4_parser.yy"
+  case 909: // $@137: %empty
+#line 3098 "dhcp4_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
@@ -4816,8 +4816,8 @@ namespace isc { namespace dhcp {
 #line 4817 "dhcp4_parser.cc"
     break;
 
-  case 908: // ncr_format: "ncr-format" $@137 ":" "JSON"
-#line 3097 "dhcp4_parser.yy"
+  case 910: // ncr_format: "ncr-format" $@137 ":" "JSON"
+#line 3101 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -4826,8 +4826,8 @@ namespace isc { namespace dhcp {
 #line 4827 "dhcp4_parser.cc"
     break;
 
-  case 909: // $@138: %empty
-#line 3105 "dhcp4_parser.yy"
+  case 911: // $@138: %empty
+#line 3109 "dhcp4_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4838,8 +4838,8 @@ namespace isc { namespace dhcp {
 #line 4839 "dhcp4_parser.cc"
     break;
 
-  case 910: // config_control: "config-control" $@138 ":" "{" config_control_params "}"
-#line 3111 "dhcp4_parser.yy"
+  case 912: // config_control: "config-control" $@138 ":" "{" config_control_params "}"
+#line 3115 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
@@ -4848,8 +4848,8 @@ namespace isc { namespace dhcp {
 #line 4849 "dhcp4_parser.cc"
     break;
 
-  case 911: // $@139: %empty
-#line 3117 "dhcp4_parser.yy"
+  case 913: // $@139: %empty
+#line 3121 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4858,8 +4858,8 @@ namespace isc { namespace dhcp {
 #line 4859 "dhcp4_parser.cc"
     break;
 
-  case 912: // sub_config_control: "{" $@139 config_control_params "}"
-#line 3121 "dhcp4_parser.yy"
+  case 914: // sub_config_control: "{" $@139 config_control_params "}"
+#line 3125 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
@@ -4867,16 +4867,16 @@ namespace isc { namespace dhcp {
 #line 4868 "dhcp4_parser.cc"
     break;
 
-  case 915: // config_control_params: config_control_params ","
-#line 3129 "dhcp4_parser.yy"
+  case 917: // config_control_params: config_control_params ","
+#line 3133 "dhcp4_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
 #line 4876 "dhcp4_parser.cc"
     break;
 
-  case 918: // $@140: %empty
-#line 3139 "dhcp4_parser.yy"
+  case 920: // $@140: %empty
+#line 3143 "dhcp4_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4887,8 +4887,8 @@ namespace isc { namespace dhcp {
 #line 4888 "dhcp4_parser.cc"
     break;
 
-  case 919: // config_databases: "config-databases" $@140 ":" "[" database_list "]"
-#line 3145 "dhcp4_parser.yy"
+  case 921: // config_databases: "config-databases" $@140 ":" "[" database_list "]"
+#line 3149 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4896,8 +4896,8 @@ namespace isc { namespace dhcp {
 #line 4897 "dhcp4_parser.cc"
     break;
 
-  case 920: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 3150 "dhcp4_parser.yy"
+  case 922: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 3154 "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)));
@@ -4906,8 +4906,8 @@ namespace isc { namespace dhcp {
 #line 4907 "dhcp4_parser.cc"
     break;
 
-  case 921: // $@141: %empty
-#line 3158 "dhcp4_parser.yy"
+  case 923: // $@141: %empty
+#line 3162 "dhcp4_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4918,8 +4918,8 @@ namespace isc { namespace dhcp {
 #line 4919 "dhcp4_parser.cc"
     break;
 
-  case 922: // loggers: "loggers" $@141 ":" "[" loggers_entries "]"
-#line 3164 "dhcp4_parser.yy"
+  case 924: // loggers: "loggers" $@141 ":" "[" loggers_entries "]"
+#line 3168 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4927,16 +4927,16 @@ namespace isc { namespace dhcp {
 #line 4928 "dhcp4_parser.cc"
     break;
 
-  case 925: // loggers_entries: loggers_entries ","
-#line 3173 "dhcp4_parser.yy"
+  case 927: // loggers_entries: loggers_entries ","
+#line 3177 "dhcp4_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
 #line 4936 "dhcp4_parser.cc"
     break;
 
-  case 926: // $@142: %empty
-#line 3179 "dhcp4_parser.yy"
+  case 928: // $@142: %empty
+#line 3183 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -4945,24 +4945,24 @@ namespace isc { namespace dhcp {
 #line 4946 "dhcp4_parser.cc"
     break;
 
-  case 927: // logger_entry: "{" $@142 logger_params "}"
-#line 3183 "dhcp4_parser.yy"
+  case 929: // logger_entry: "{" $@142 logger_params "}"
+#line 3187 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
 #line 4954 "dhcp4_parser.cc"
     break;
 
-  case 930: // logger_params: logger_params ","
-#line 3189 "dhcp4_parser.yy"
+  case 932: // logger_params: logger_params ","
+#line 3193 "dhcp4_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
 #line 4962 "dhcp4_parser.cc"
     break;
 
-  case 938: // debuglevel: "debuglevel" ":" "integer"
-#line 3203 "dhcp4_parser.yy"
+  case 940: // debuglevel: "debuglevel" ":" "integer"
+#line 3207 "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)));
@@ -4971,8 +4971,8 @@ namespace isc { namespace dhcp {
 #line 4972 "dhcp4_parser.cc"
     break;
 
-  case 939: // $@143: %empty
-#line 3209 "dhcp4_parser.yy"
+  case 941: // $@143: %empty
+#line 3213 "dhcp4_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4980,8 +4980,8 @@ namespace isc { namespace dhcp {
 #line 4981 "dhcp4_parser.cc"
     break;
 
-  case 940: // severity: "severity" $@143 ":" "constant string"
-#line 3212 "dhcp4_parser.yy"
+  case 942: // severity: "severity" $@143 ":" "constant string"
+#line 3216 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -4990,8 +4990,8 @@ namespace isc { namespace dhcp {
 #line 4991 "dhcp4_parser.cc"
     break;
 
-  case 941: // $@144: %empty
-#line 3218 "dhcp4_parser.yy"
+  case 943: // $@144: %empty
+#line 3222 "dhcp4_parser.yy"
                                     {
     ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5002,8 +5002,8 @@ namespace isc { namespace dhcp {
 #line 5003 "dhcp4_parser.cc"
     break;
 
-  case 942: // output_options_list: "output-options" $@144 ":" "[" output_options_list_content "]"
-#line 3224 "dhcp4_parser.yy"
+  case 944: // output_options_list: "output-options" $@144 ":" "[" output_options_list_content "]"
+#line 3228 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -5011,16 +5011,16 @@ namespace isc { namespace dhcp {
 #line 5012 "dhcp4_parser.cc"
     break;
 
-  case 945: // output_options_list_content: output_options_list_content ","
-#line 3231 "dhcp4_parser.yy"
+  case 947: // output_options_list_content: output_options_list_content ","
+#line 3235 "dhcp4_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
 #line 5020 "dhcp4_parser.cc"
     break;
 
-  case 946: // $@145: %empty
-#line 3236 "dhcp4_parser.yy"
+  case 948: // $@145: %empty
+#line 3240 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -5029,24 +5029,24 @@ namespace isc { namespace dhcp {
 #line 5030 "dhcp4_parser.cc"
     break;
 
-  case 947: // output_entry: "{" $@145 output_params_list "}"
-#line 3240 "dhcp4_parser.yy"
+  case 949: // output_entry: "{" $@145 output_params_list "}"
+#line 3244 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
 #line 5038 "dhcp4_parser.cc"
     break;
 
-  case 950: // output_params_list: output_params_list ","
-#line 3246 "dhcp4_parser.yy"
+  case 952: // output_params_list: output_params_list ","
+#line 3250 "dhcp4_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
 #line 5046 "dhcp4_parser.cc"
     break;
 
-  case 956: // $@146: %empty
-#line 3258 "dhcp4_parser.yy"
+  case 958: // $@146: %empty
+#line 3262 "dhcp4_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -5054,8 +5054,8 @@ namespace isc { namespace dhcp {
 #line 5055 "dhcp4_parser.cc"
     break;
 
-  case 957: // output: "output" $@146 ":" "constant string"
-#line 3261 "dhcp4_parser.yy"
+  case 959: // output: "output" $@146 ":" "constant string"
+#line 3265 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -5064,8 +5064,8 @@ namespace isc { namespace dhcp {
 #line 5065 "dhcp4_parser.cc"
     break;
 
-  case 958: // flush: "flush" ":" "boolean"
-#line 3267 "dhcp4_parser.yy"
+  case 960: // flush: "flush" ":" "boolean"
+#line 3271 "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)));
@@ -5074,8 +5074,8 @@ namespace isc { namespace dhcp {
 #line 5075 "dhcp4_parser.cc"
     break;
 
-  case 959: // maxsize: "maxsize" ":" "integer"
-#line 3273 "dhcp4_parser.yy"
+  case 961: // maxsize: "maxsize" ":" "integer"
+#line 3277 "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)));
@@ -5084,8 +5084,8 @@ namespace isc { namespace dhcp {
 #line 5085 "dhcp4_parser.cc"
     break;
 
-  case 960: // maxver: "maxver" ":" "integer"
-#line 3279 "dhcp4_parser.yy"
+  case 962: // maxver: "maxver" ":" "integer"
+#line 3283 "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)));
@@ -5094,8 +5094,8 @@ namespace isc { namespace dhcp {
 #line 5095 "dhcp4_parser.cc"
     break;
 
-  case 961: // $@147: %empty
-#line 3285 "dhcp4_parser.yy"
+  case 963: // $@147: %empty
+#line 3289 "dhcp4_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -5103,8 +5103,8 @@ namespace isc { namespace dhcp {
 #line 5104 "dhcp4_parser.cc"
     break;
 
-  case 962: // pattern: "pattern" $@147 ":" "constant string"
-#line 3288 "dhcp4_parser.yy"
+  case 964: // pattern: "pattern" $@147 ":" "constant string"
+#line 3292 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
@@ -5113,8 +5113,8 @@ namespace isc { namespace dhcp {
 #line 5114 "dhcp4_parser.cc"
     break;
 
-  case 963: // $@148: %empty
-#line 3294 "dhcp4_parser.yy"
+  case 965: // $@148: %empty
+#line 3298 "dhcp4_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5125,8 +5125,8 @@ namespace isc { namespace dhcp {
 #line 5126 "dhcp4_parser.cc"
     break;
 
-  case 964: // compatibility: "compatibility" $@148 ":" "{" compatibility_params "}"
-#line 3300 "dhcp4_parser.yy"
+  case 966: // compatibility: "compatibility" $@148 ":" "{" compatibility_params "}"
+#line 3304 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -5134,16 +5134,16 @@ namespace isc { namespace dhcp {
 #line 5135 "dhcp4_parser.cc"
     break;
 
-  case 967: // compatibility_params: compatibility_params ","
-#line 3307 "dhcp4_parser.yy"
+  case 969: // compatibility_params: compatibility_params ","
+#line 3311 "dhcp4_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
 #line 5143 "dhcp4_parser.cc"
     break;
 
-  case 973: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3319 "dhcp4_parser.yy"
+  case 975: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
+#line 3323 "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)));
@@ -5152,8 +5152,8 @@ namespace isc { namespace dhcp {
 #line 5153 "dhcp4_parser.cc"
     break;
 
-  case 974: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean"
-#line 3325 "dhcp4_parser.yy"
+  case 976: // ignore_dhcp_server_identifier: "ignore-dhcp-server-identifier" ":" "boolean"
+#line 3329 "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)));
@@ -5162,8 +5162,8 @@ namespace isc { namespace dhcp {
 #line 5163 "dhcp4_parser.cc"
     break;
 
-  case 975: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean"
-#line 3331 "dhcp4_parser.yy"
+  case 977: // ignore_rai_link_selection: "ignore-rai-link-selection" ":" "boolean"
+#line 3335 "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)));
@@ -5172,8 +5172,8 @@ namespace isc { namespace dhcp {
 #line 5173 "dhcp4_parser.cc"
     break;
 
-  case 976: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
-#line 3337 "dhcp4_parser.yy"
+  case 978: // exclude_first_last_24: "exclude-first-last-24" ":" "boolean"
+#line 3341 "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)));
@@ -5535,162 +5535,162 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -1384;
+  const short Dhcp4Parser::yypact_ninf_ = -1397;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     468, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,    80,    37,    44,    46,   109,   117,
-     120,   150,   161,   168,   176,   195,   213,   223, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,    37,  -150,    85,   276,    82,   727,
-    1476,    98,    -3,   343,    88,  -118,   544,    96, -1384,   180,
-     254,   114,   256,   262, -1384,    25, -1384, -1384, -1384, -1384,
-     275,   296,   299, -1384, -1384, -1384,   300,   330, -1384, -1384,
-   -1384,   332,   341,   376,   382,   408,   409,   430,   438,   442,
-     444,   447,   448, -1384,   449,   453,   454,   455,   456, -1384,
-   -1384, -1384,   457,   459,   460,   461,   465,   467,   469, -1384,
-   -1384, -1384,   470, -1384, -1384, -1384, -1384, -1384,   471,   472,
-     473, -1384, -1384, -1384, -1384, -1384,   474, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   476,   483,   484, -1384, -1384,   485,
-   -1384,    62, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   486,   487,
-     488,   490, -1384,   134, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-     492, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   144, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384,   494, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   151, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384,   277,   294, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,   325, -1384, -1384,   497,
-   -1384, -1384, -1384,   499, -1384, -1384,   335,   420, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384,   501,   502,   503, -1384, -1384, -1384, -1384, -1384,   425,
-     506, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384,   169, -1384, -1384, -1384,   507,
-   -1384,   510, -1384,   511,   513, -1384, -1384, -1384, -1384, -1384,
-     177, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384,   515,   179, -1384, -1384, -1384, -1384,    37,    37, -1384,
-    -124,   517, -1384, -1384,   519,   520,   522,   270,   290,   297,
-     529,   532,   535,   234,   302,   536,   540,   541,   312,   314,
-     316,   317,   321,   322,   327,   331,   333,   326,   340,   336,
-     567,   344,   345,   346,   347,   349,   577,   580,   581,   352,
-     354,   357,   359,   360,   361,   362,   596,   600,   602,   369,
-     605,   606,   610,   614,   617,   385,   387,   391,   618,   628,
-     631,   633,   638,   410,   646,   649,   651,   652,   654,   662,
-     667,   434,   436,   439,   669,   673, -1384,   276, -1384,   674,
-     676,   677,   443,   445,   450,   451,    82, -1384,   678,   683,
-     686,   701,   702,   703,   475,   704,   706,   707,   708,   710,
-     727, -1384,   711,   478,  1476, -1384,   713,   714,   715,   716,
-     722,   723,   724,   726, -1384,    98, -1384,   728,   729,   493,
-     730,   739,   742,   509, -1384,   343,   746,   512,   514,   523,
-     747, -1384,    88,   749,   751,   -85, -1384,   524,   761,   528,
-     763,   531,   533,   766,   772,   544, -1384,   773,   542,    96,
-   -1384, -1384, -1384,   774,   777,   778,   779,   780, -1384, -1384,
-   -1384,   551,   552,   553, -1384, -1384,   786,   789,   803, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384,   572, -1384, -1384, -1384, -1384, -1384,    14,   573,   574,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384,   820,   824,   826,
-   -1384,   595,   203,   828,   827,   598, -1384, -1384, -1384,   832,
-     833,   834,   835,   837, -1384,   838,   839,   836,   840,   841,
-     613,   622, -1384, -1384, -1384,   858,   857, -1384,   860,   123,
-     228, -1384, -1384, -1384, -1384, -1384,   629,   634,   635,   863,
-     636,   637, -1384,   860,   860,   860,   639,   868, -1384,   641,
-   -1384, -1384,   860,   642,   643,   644,   645,   647,   648,   650,
-   -1384,   653,   670, -1384,   671,   684,   685, -1384, -1384,   687,
-   -1384, -1384, -1384,   860, -1384,   688,   827, -1384, -1384,   689,
-   -1384,   690, -1384, -1384,     4,   579, -1384,   865, -1384, -1384,
-      37,   276,    96,    82,   137, -1384, -1384, -1384,   851,   851,
-     876, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-     879,   881,   882, -1384, -1384, -1384, -1384, -1384, -1384,   899,
-   -1384, -1384, -1384,   106,   916,   921,   922,   170,   -75,   599,
-     923,    45,   544, -1384, -1384,   924,   -12, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   927, -1384,
-   -1384, -1384, -1384, -1384, -1384,   784, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-     876, -1384,   196,   197,   211, -1384, -1384,   221, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384,   932,   933,   934,   935,   936,
-     937,   938,   939,   940,   941, -1384,   942,   943, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   253,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   280, -1384,   944,   945, -1384, -1384,
-     946,   948, -1384, -1384,   947,   951, -1384, -1384,   950,   954,
-   -1384, -1384,   952,   956, -1384, -1384, -1384, -1384, -1384, -1384,
-      42, -1384, -1384, -1384, -1384, -1384, -1384, -1384,    75, -1384,
-   -1384,   955,   957, -1384, -1384,   959,   960, -1384,   958,   962,
-     963,   964,   965,   966,   281, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384,   967,   968,   969, -1384,   283, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,   970, -1384,   971, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,   293, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,   972,   973, -1384,   975,
-   -1384,   976, -1384, -1384, -1384,   329, -1384, -1384, -1384, -1384,
-   -1384,   373, -1384,    90, -1384,   977,   978,   979,   980, -1384,
-     374, -1384, -1384, -1384, -1384, -1384,   712, -1384,   981,   974,
-   -1384, -1384,   982, -1384,   983, -1384, -1384, -1384,   984,   987,
-     137, -1384,   988,   989,   990,   991,   748,   745,   758,   757,
-     760,   762,   764,   767,   769,   770,   995,   771,   781,   997,
-    1000,  1011,  1014,  1021,   851, -1384, -1384,   851, -1384,   876,
-     727, -1384,   879,   343, -1384,   881,    88, -1384,   882,  1418,
-   -1384,   899,   106, -1384,   156,   916, -1384,    98, -1384,   921,
-    -118, -1384,   922,   790,   792,   795,   796,   807,   813,   170,
-   -1384,   787,   816,   818,   -75, -1384,  1037,  1055,  1060,   829,
-    1064,   849,  1070,   599, -1384,   599, -1384,   923,   856,  1087,
-     859,  1094,    45, -1384, -1384,   174,   924, -1384,   864,   866,
-     869,   874,   -12, -1384, -1384,  1125,  1134,  1476, -1384,   927,
-    1137, -1384, -1384,   910,   915, -1384,   961,   985,   986,   992,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-     339, -1384, -1384,   993,   994,   996,   172,   998, -1384,   381,
-   -1384,   407, -1384,  1161, -1384,  1171, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   411,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384,  1183,  1188, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384,  1187,  1194, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,  1191, -1384,   417, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384,   232,   999,  1001, -1384,  1193, -1384,  1197, -1384,   418,
-   -1384, -1384,  1002, -1384,    37, -1384, -1384,  1200, -1384, -1384,
-   -1384, -1384, -1384,   419, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384,  1003,   421, -1384,   860, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,  1418, -1384,
-    1201,  1203,  1004,  1005, -1384,   156, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   138,  1202, -1384, -1384, -1384,  1204,
-    1008,  1206,   174, -1384, -1384, -1384, -1384, -1384,  1006,  1010,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-     427, -1384, -1384, -1384, -1384, -1384, -1384,  1208,  1209, -1384,
-    1210, -1384,  1012, -1384, -1384, -1384,  1213,  1215,  1216,  1217,
-     138, -1384,   -70, -1384,  1202,  1219, -1384,  1047,  1013,  1015,
-    1222, -1384, -1384, -1384, -1384, -1384, -1384,   429, -1384, -1384,
-   -1384, -1384,   111, -1384, -1384, -1384, -1384, -1384,  1221,  1228,
-     -70, -1384,    55,  1219, -1384, -1384,  1231,  1238, -1384,  1016,
-   -1384, -1384,  1230,  1244,  1247, -1384,   433, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   375, -1384,  1221, -1384,  1250,  1017,
-    1018,  1020,  1251,    55, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384,   437, -1384, -1384, -1384, -1384,  1022, -1384, -1384,
-   -1384,  1023, -1384,  1258,  1259,   375, -1384, -1384, -1384,  1027,
-    1029, -1384, -1384, -1384
+     470, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,    67,    37,    44,    46,    54,    71,
+      83,    88,   109,   111,   161,   168,   173,   176, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,    37,  -138,   103,   276,    82,   727,
+    1477,    98,   100,   343,   367,  -118,   544,   287, -1397,   187,
+     193,   204,   213,   209, -1397,    25, -1397, -1397, -1397, -1397,
+     226,   251,   257, -1397, -1397, -1397,   260,   263, -1397, -1397,
+   -1397,   267,   275,   285,   293,   316,   330,   334,   376,   390,
+     391,   392,   398, -1397,   399,   400,   428,   429,   430, -1397,
+   -1397, -1397,   432,   433,   436,   437,   438,   441,   442, -1397,
+   -1397, -1397,   444, -1397, -1397, -1397, -1397, -1397,   447,   448,
+     449, -1397, -1397, -1397, -1397, -1397,   457, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,   459,   460,   461, -1397, -1397,   465,
+   -1397,    57, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   474,   476,
+     483,   484, -1397,    60, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+     485, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   106, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397,   486, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,   144, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397,   245,   341, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397,   405, -1397, -1397,   490,
+   -1397, -1397, -1397,   492, -1397, -1397,   415,   495, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397,   497,   499,   501, -1397, -1397, -1397, -1397, -1397,   491,
+     503, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397,   151, -1397, -1397, -1397,   505,
+   -1397,   506, -1397,   507,   510, -1397, -1397, -1397, -1397, -1397,
+     154, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397,   511,   169, -1397, -1397, -1397, -1397,    37,    37, -1397,
+     280,   515, -1397, -1397,   517,   519,   520,   286,   290,   296,
+     529,   533,   535,   269,   300,   538,   540,   541,   312,   314,
+     317,   319,   324,   326,   315,   320,   325,   332,   333,   336,
+     552,   344,   345,   331,   339,   346,   577,   580,   581,   347,
+     349,   353,   356,   358,   359,   360,   594,   595,   598,   368,
+     603,   605,   606,   608,   610,   378,   381,   382,   621,   623,
+     627,   628,   631,   404,   633,   644,   646,   649,   651,   652,
+     654,   423,   426,   431,   669,   670, -1397,   276, -1397,   672,
+     673,   674,   439,   440,   443,   445,    82, -1397,   678,   681,
+     683,   684,   685,   686,   454,   703,   704,   706,   707,   708,
+     727, -1397,   709,   477,  1477, -1397,   710,   712,   713,   714,
+     715,   716,   722,   723, -1397,    98, -1397,   724,   726,   493,
+     728,   729,   730,   509, -1397,   343,   739,   512,   513,   514,
+     742, -1397,   367,   746,   747,   -84, -1397,   523,   751,   526,
+     761,   528,   531,   763,   766,   544, -1397,   767,   539,   287,
+   -1397, -1397, -1397,   772,   771,   773,   777,   778, -1397, -1397,
+   -1397,   542,   549,   550, -1397, -1397,   781,   782,   785, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397,   556, -1397, -1397, -1397, -1397, -1397,    32,   559,   571,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,   804,   805,   806,
+   -1397,   588,   340,   824,   825,   596, -1397, -1397, -1397,   826,
+     829,   830,   832,   831, -1397,   833,   834,   839,   840,   841,
+     602,   609, -1397, -1397, -1397,   845,   852, -1397,   858,   147,
+     184, -1397, -1397, -1397, -1397, -1397,   629,   634,   635,   859,
+     636,   637, -1397,   858,   858,   858,   638,   861, -1397,   639,
+   -1397, -1397,   858,   656,   657,   658,   671,   675,   676,   677,
+   -1397,   679,   680, -1397,   682,   687,   688, -1397, -1397,   689,
+   -1397, -1397, -1397,   858, -1397,   690,   825, -1397, -1397,   691,
+   -1397,   692, -1397, -1397,     4,   645, -1397,   860, -1397, -1397,
+      37,   276,   287,    82,   309, -1397, -1397, -1397,   838,   838,
+     863, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+     902,   903,   904, -1397, -1397, -1397, -1397, -1397, -1397,   908,
+   -1397, -1397, -1397,   139,   911,   913,   914,   172,    45,   599,
+     915,    61,   544, -1397, -1397,   916,  -129, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   923, -1397,
+   -1397, -1397, -1397, -1397, -1397,   780, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+     863, -1397,   179,   189,   192, -1397, -1397,   217, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397,   930,   931,   932,   933,   934,
+     935,   936,   937,   939,   940, -1397,   941,   942, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   221,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,   229, -1397,   943,   944, -1397, -1397,
+     945,   947, -1397, -1397,   946,   950, -1397, -1397,   948,   952,
+   -1397, -1397,   951,   953, -1397, -1397, -1397, -1397, -1397, -1397,
+      42, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   954,   955,
+   -1397, -1397,   956,   958, -1397, -1397,   957,   962, -1397,   963,
+     964,   965,   966,   967,   968,   248, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397,   969,   970,   971, -1397,   249, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,   972, -1397,   973,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,   262, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,   960,   975, -1397,
+     976, -1397,   977, -1397, -1397, -1397,   270, -1397, -1397, -1397,
+   -1397, -1397,   288, -1397,   121, -1397,   978,   979,   980,   981,
+   -1397,   318, -1397, -1397, -1397, -1397, -1397,   711, -1397,   982,
+     983, -1397, -1397,   984, -1397,   985, -1397, -1397, -1397,   986,
+     989,   309, -1397,   990,   991,   992,   993,   721,   749,   741,
+     758,   762,   764,   765,   768,   770,   774,   995,   769,   788,
+     997,  1001,  1012,  1015,  1016,   838, -1397, -1397,   838, -1397,
+     863,   727, -1397,   902,   343, -1397,   903,   367, -1397,   904,
+    1419, -1397,   908,   139, -1397,   156, -1397,   911,    98, -1397,
+     913,  -118, -1397,   914,   790,   791,   793,   796,   797,   808,
+     172, -1397,   802,   814,   817,    45, -1397,  1053,  1056,  1061,
+     851,  1064,   850,  1065,   599, -1397,   599, -1397,   915,   857,
+    1088,   867,  1094,    61, -1397, -1397,    90,   916, -1397,   870,
+     875,   892,   898,  -129, -1397, -1397,  1093,  1104,  1477, -1397,
+     923,  1138, -1397, -1397,   750,   959, -1397,   961,   974,   987,
+     988, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397,   183, -1397, -1397,   994,   996,   998,   321,   999, -1397,
+     373, -1397,   374, -1397,  1140, -1397,  1145, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+     407, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397,  1166,  1176, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,  1180,  1190,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,  1191, -1397,   408,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397,   152,  1000,  1002, -1397,  1193, -1397,  1196, -1397,
+     409, -1397, -1397,  1003, -1397,    37, -1397, -1397,  1199, -1397,
+   -1397, -1397, -1397, -1397,   411, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397,  1004,   417, -1397,   858,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,  1419,
+   -1397,  1201,  1202,  1005,  1006, -1397,   156, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397,   138,  1203, -1397, -1397, -1397,
+    1204,  1009,  1205,    90, -1397, -1397, -1397, -1397, -1397,  1007,
+    1011, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397,   418, -1397, -1397, -1397, -1397, -1397, -1397,  1207,  1212,
+   -1397,  1211, -1397,  1013, -1397, -1397, -1397,  1214,  1216,  1217,
+    1218,   138, -1397,   -70, -1397,  1203,  1220, -1397,  1046,  1014,
+    1017,  1223, -1397, -1397, -1397, -1397, -1397, -1397,   419, -1397,
+   -1397, -1397, -1397,   134, -1397, -1397, -1397, -1397, -1397,  1222,
+    1226,   -70, -1397,     1,  1220, -1397, -1397,  1228,  1229, -1397,
+    1018, -1397, -1397,  1234,  1238,  1239, -1397,   421, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397,    17, -1397,  1222, -1397,  1245,
+    1019,  1020,  1022,  1248,     1, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397,   427, -1397, -1397, -1397, -1397,  1024, -1397,
+   -1397, -1397,  1026, -1397,  1249,  1252,    17, -1397, -1397, -1397,
+    1027,  1028, -1397, -1397, -1397
   };
 
   const short
@@ -5702,16 +5702,16 @@ namespace isc { namespace dhcp {
       36,    32,    31,    28,    29,    30,    35,     3,    33,    34,
       59,     5,    65,     7,   216,     9,   401,    11,   630,    13,
      675,    15,   545,    17,   554,    19,   593,    21,   363,    23,
-     879,    25,   911,    27,    46,    39,     0,     0,     0,     0,
+     881,    25,   913,    27,    46,    39,     0,     0,     0,     0,
        0,   677,     0,   556,   595,     0,     0,     0,    48,     0,
-      47,     0,     0,    40,    61,     0,    63,   909,   201,   234,
+      47,     0,     0,    40,    61,     0,    63,   911,   201,   234,
        0,     0,     0,   697,   699,   701,     0,     0,   232,   245,
      247,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   155,     0,     0,     0,     0,     0,   166,
      173,   175,     0,     0,     0,     0,     0,     0,     0,   392,
      543,   584,     0,   158,   179,   482,   662,   664,     0,     0,
-       0,   325,   724,   666,   354,   375,     0,   340,   761,   763,
-     860,   877,   189,   191,     0,     0,     0,   921,   963,     0,
+       0,   325,   724,   666,   354,   375,     0,   340,   763,   765,
+     862,   879,   189,   191,     0,     0,     0,   923,   965,     0,
      142,     0,    67,    70,    71,    72,    73,    74,   108,   109,
      110,   111,   112,   113,    75,   104,   138,   139,    93,    94,
       95,   117,   118,   119,   120,   121,   122,   123,   124,   125,
@@ -5739,9 +5739,9 @@ namespace isc { namespace dhcp {
      612,     0,     0,     0,   619,   610,   611,   614,   615,     0,
      596,   597,   600,   601,   602,   603,   604,   605,   606,   609,
      607,   608,   371,   373,   368,     0,   365,   369,   370,     0,
-     896,     0,   899,     0,     0,   903,   907,   894,   892,   893,
-       0,   881,   884,   885,   886,   887,   888,   889,   890,   891,
-     918,     0,     0,   913,   916,   917,    45,    50,     0,    37,
+     898,     0,   901,     0,     0,   905,   909,   896,   894,   895,
+       0,   883,   886,   887,   888,   889,   890,   891,   892,   893,
+     920,     0,     0,   915,   918,   919,    45,    50,     0,    37,
       43,     0,    64,    60,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -5756,30 +5756,30 @@ namespace isc { namespace dhcp {
        0,     0,     0,     0,   676,   681,   546,     0,     0,     0,
        0,     0,     0,     0,   555,   560,     0,     0,     0,     0,
        0,   594,   599,     0,     0,   367,   364,     0,     0,     0,
-       0,     0,     0,     0,     0,   883,   880,     0,     0,   915,
-     912,    49,    41,     0,     0,     0,     0,     0,   160,   161,
+       0,     0,     0,     0,     0,   885,   882,     0,     0,   917,
+     914,    49,    41,     0,     0,     0,     0,     0,   160,   161,
      162,     0,     0,     0,   199,   200,     0,     0,     0,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
      154,     0,   194,   195,   163,   164,   165,     0,     0,     0,
      177,   178,   185,   186,   187,   188,   193,     0,     0,     0,
      157,     0,     0,     0,     0,     0,   478,   479,   480,     0,
-       0,     0,     0,     0,   760,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   762,     0,     0,     0,     0,     0,
        0,     0,   196,   197,   198,     0,     0,    68,     0,     0,
        0,   228,   229,   230,   231,   204,     0,     0,     0,     0,
        0,     0,   481,     0,     0,     0,     0,     0,   404,     0,
      661,   633,     0,     0,     0,     0,     0,     0,     0,     0,
      680,     0,     0,   572,     0,     0,     0,   583,   559,     0,
-     616,   617,   618,     0,   598,     0,     0,   366,   895,     0,
-     898,     0,   901,   902,     0,     0,   882,     0,   920,   914,
+     616,   617,   618,     0,   598,     0,     0,   366,   897,     0,
+     900,     0,   903,   904,     0,     0,   884,     0,   922,   916,
        0,     0,     0,     0,     0,   698,   700,   702,     0,     0,
      249,   156,   168,   169,   170,   171,   172,   167,   174,   176,
      394,   547,   586,   159,   181,   182,   183,   184,   180,   484,
-      38,   663,   665,     0,     0,   668,   356,     0,     0,     0,
-     765,     0,     0,   190,   192,     0,     0,    51,   219,   222,
+      38,   663,   665,     0,   726,   668,   356,     0,     0,     0,
+     767,     0,     0,   190,   192,     0,     0,    51,   219,   222,
      223,   221,   226,   227,   225,   463,   465,   467,   623,   461,
      469,   473,   475,   477,   471,     0,   660,   718,   704,   706,
      708,   712,   710,   716,   714,   575,   293,   579,   577,   582,
-     613,   620,   372,   374,   897,   900,   905,   906,   904,   908,
+     613,   620,   372,   374,   899,   902,   907,   908,   906,   910,
      249,    42,     0,     0,     0,   241,   243,     0,   236,   239,
      240,   283,   285,   287,   289,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   303,     0,     0,   310,   312,
@@ -5789,116 +5789,116 @@ namespace isc { namespace dhcp {
      278,   279,   280,   281,     0,   254,     0,   250,   251,   399,
        0,   395,   396,   552,     0,   548,   549,   591,     0,   587,
      588,   489,     0,   485,   486,   335,   336,   337,   338,   339,
-       0,   327,   330,   331,   332,   333,   334,   729,     0,   726,
-     673,     0,   669,   670,   361,     0,   357,   358,     0,     0,
-       0,     0,     0,     0,     0,   377,   380,   381,   382,   383,
-     384,   385,     0,     0,     0,   350,     0,   342,   345,   346,
-     347,   348,   349,   788,   793,   795,     0,   818,     0,   799,
-     787,   780,   781,   782,   785,   786,     0,   772,   775,   776,
-     777,   778,   783,   784,   779,   770,     0,   766,   767,     0,
-     872,     0,   875,   868,   869,     0,   862,   865,   866,   867,
-     870,     0,   926,     0,   923,     0,     0,     0,     0,   972,
-       0,   965,   968,   969,   970,   971,    53,   628,     0,   624,
-     625,   722,     0,   721,     0,    62,   910,   202,     0,     0,
-     238,   235,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   327,   330,   331,   332,   333,   334,   731,     0,   727,
+     728,   673,     0,   669,   670,   361,     0,   357,   358,     0,
+       0,     0,     0,     0,     0,     0,   377,   380,   381,   382,
+     383,   384,   385,     0,     0,     0,   350,     0,   342,   345,
+     346,   347,   348,   349,   790,   795,   797,     0,   820,     0,
+     801,   789,   782,   783,   784,   787,   788,     0,   774,   777,
+     778,   779,   780,   785,   786,   781,   772,     0,   768,   769,
+       0,   874,     0,   877,   870,   871,     0,   864,   867,   868,
+     869,   872,     0,   928,     0,   925,     0,     0,     0,     0,
+     974,     0,   967,   970,   971,   972,   973,    53,   628,     0,
+     624,   625,   722,     0,   721,     0,    62,   912,   202,     0,
+       0,   238,   235,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   258,   233,   246,     0,   248,   253,
-       0,   393,   398,   556,   544,   551,   595,   585,   590,     0,
-     483,   488,   329,   326,   731,   728,   725,   677,   667,   672,
-       0,   355,   360,     0,     0,     0,     0,     0,     0,   379,
-     376,     0,     0,     0,   344,   341,     0,     0,     0,     0,
-       0,     0,     0,   774,   762,     0,   764,   769,     0,     0,
-       0,     0,   864,   861,   878,     0,   925,   922,     0,     0,
-       0,     0,   967,   964,    55,     0,    54,     0,   622,   627,
-       0,   720,   919,     0,     0,   237,     0,     0,     0,     0,
-     291,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-       0,   308,   309,     0,     0,     0,     0,     0,   257,     0,
-     252,     0,   397,     0,   550,     0,   589,   542,   513,   514,
-     515,   497,   498,   518,   519,   520,   521,   522,   523,   540,
-     500,   501,   524,   525,   526,   527,   528,   529,   530,   531,
-     532,   533,   534,   535,   536,   537,   538,   539,   541,   494,
-     495,   496,   509,   510,   511,   512,   506,   507,   508,     0,
-     491,   499,   516,   517,   502,   503,   504,   505,   487,   328,
-     754,   756,     0,     0,   748,   749,   750,   751,   752,   753,
-     741,   742,   746,   747,   743,   744,   745,     0,   732,   733,
-     736,   737,   738,   739,   740,   727,     0,   671,     0,   359,
-     386,   387,   388,   389,   390,   391,   378,   351,   352,   353,
-     343,     0,     0,     0,   797,     0,   798,     0,   773,     0,
-     768,   871,     0,   874,     0,   863,   941,     0,   939,   937,
-     931,   935,   936,     0,   928,   933,   934,   932,   924,   973,
-     974,   975,   976,   966,    52,    57,     0,   626,     0,   242,
-     244,   284,   286,   288,   290,   305,   306,   307,   304,   311,
-     313,   315,   317,   324,   255,   400,   553,   592,   493,   490,
-       0,     0,     0,     0,   730,   735,   674,   362,   790,   791,
-     792,   789,   794,   796,     0,   801,   771,   873,   876,     0,
-       0,     0,   930,   927,    56,   629,   723,   492,     0,     0,
-     758,   759,   734,   830,   833,   835,   837,   829,   828,   827,
-       0,   820,   823,   824,   825,   826,   806,     0,   802,   803,
-       0,   938,     0,   929,   755,   757,     0,     0,     0,     0,
-     822,   819,     0,   800,   805,     0,   940,     0,     0,     0,
-       0,   821,   816,   815,   811,   813,   814,     0,   808,   812,
-     804,   946,     0,   943,   832,   831,   834,   836,   839,     0,
-     810,   807,     0,   945,   942,   844,     0,   840,   841,     0,
-     809,   956,     0,     0,     0,   961,     0,   948,   951,   952,
-     953,   954,   955,   944,     0,   838,   843,   817,     0,     0,
-       0,     0,     0,   950,   947,   856,   858,   855,   849,   851,
-     853,   854,     0,   846,   850,   852,   842,     0,   958,   959,
-     960,     0,   949,     0,     0,   848,   845,   957,   962,     0,
-       0,   847,   857,   859
+       0,     0,     0,     0,     0,   258,   233,   246,     0,   248,
+     253,     0,   393,   398,   556,   544,   551,   595,   585,   590,
+       0,   483,   488,   329,   326,   733,   725,   730,   677,   667,
+     672,     0,   355,   360,     0,     0,     0,     0,     0,     0,
+     379,   376,     0,     0,     0,   344,   341,     0,     0,     0,
+       0,     0,     0,     0,   776,   764,     0,   766,   771,     0,
+       0,     0,     0,   866,   863,   880,     0,   927,   924,     0,
+       0,     0,     0,   969,   966,    55,     0,    54,     0,   622,
+     627,     0,   720,   921,     0,     0,   237,     0,     0,     0,
+       0,   291,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,     0,   308,   309,     0,     0,     0,     0,     0,   257,
+       0,   252,     0,   397,     0,   550,     0,   589,   542,   513,
+     514,   515,   497,   498,   518,   519,   520,   521,   522,   523,
+     540,   500,   501,   524,   525,   526,   527,   528,   529,   530,
+     531,   532,   533,   534,   535,   536,   537,   538,   539,   541,
+     494,   495,   496,   509,   510,   511,   512,   506,   507,   508,
+       0,   491,   499,   516,   517,   502,   503,   504,   505,   487,
+     328,   756,   758,     0,     0,   750,   751,   752,   753,   754,
+     755,   743,   744,   748,   749,   745,   746,   747,     0,   734,
+     735,   738,   739,   740,   741,   742,   729,     0,   671,     0,
+     359,   386,   387,   388,   389,   390,   391,   378,   351,   352,
+     353,   343,     0,     0,     0,   799,     0,   800,     0,   775,
+       0,   770,   873,     0,   876,     0,   865,   943,     0,   941,
+     939,   933,   937,   938,     0,   930,   935,   936,   934,   926,
+     975,   976,   977,   978,   968,    52,    57,     0,   626,     0,
+     242,   244,   284,   286,   288,   290,   305,   306,   307,   304,
+     311,   313,   315,   317,   324,   255,   400,   553,   592,   493,
+     490,     0,     0,     0,     0,   732,   737,   674,   362,   792,
+     793,   794,   791,   796,   798,     0,   803,   773,   875,   878,
+       0,     0,     0,   932,   929,    56,   629,   723,   492,     0,
+       0,   760,   761,   736,   832,   835,   837,   839,   831,   830,
+     829,     0,   822,   825,   826,   827,   828,   808,     0,   804,
+     805,     0,   940,     0,   931,   757,   759,     0,     0,     0,
+       0,   824,   821,     0,   802,   807,     0,   942,     0,     0,
+       0,     0,   823,   818,   817,   813,   815,   816,     0,   810,
+     814,   806,   948,     0,   945,   834,   833,   836,   838,   841,
+       0,   812,   809,     0,   947,   944,   846,     0,   842,   843,
+       0,   811,   958,     0,     0,     0,   963,     0,   950,   953,
+     954,   955,   956,   957,   946,     0,   840,   845,   819,     0,
+       0,     0,     0,     0,   952,   949,   858,   860,   857,   851,
+     853,   855,   856,     0,   848,   852,   854,   844,     0,   960,
+     961,   962,     0,   951,     0,     0,   850,   847,   959,   964,
+       0,     0,   849,   859,   861
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384,   -59, -1384,  -633, -1384,   534,
-   -1384, -1384, -1384, -1384, -1384, -1384,  -645, -1384, -1384, -1384,
-     -67, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   491,   732,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397,   -59, -1397,  -633, -1397,   521,
+   -1397, -1397, -1397, -1397, -1397, -1397,  -616, -1397, -1397, -1397,
+     -67, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   516,   731,
       16,    31,    33,   -26,    84,    86,    87,    89,    91,    92,
-      94, -1384, -1384, -1384, -1384,    97, -1384, -1384,   102,   104,
-     -13,    13,    41,    51, -1384, -1384,    53, -1384,    56, -1384,
-      59,   105,    64, -1384, -1384,    66,    69,    74,    76,    79,
-   -1384,    81, -1384,   107, -1384, -1384, -1384, -1384, -1384,    43,
-   -1384, -1384, -1384,   518,   721, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   233, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384,   441, -1384,   205, -1384,  -743,   212, -1384,
-   -1384, -1383, -1384, -1381, -1384, -1384, -1384, -1384,   -63, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,  -775, -1384,  -774, -1384,  -771, -1384,
-     113, -1384, -1384, -1384, -1384, -1384, -1384,   200, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,   182, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384,   186, -1384, -1384, -1384,   193,   693,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384,   191, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1062, -1384, -1384, -1384,   220, -1384,
-   -1384, -1384,   224,   733, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1060, -1384,   -29, -1384,   -18, -1384,    -4, -1384,
-       5, -1384,   110,   112,   115, -1384, -1384, -1384, -1384, -1384,
-     214, -1384, -1384,   -31,   -60, -1384, -1384, -1384, -1384, -1384,
-     226, -1384, -1384, -1384,   225, -1384,   719, -1384,   -34, -1384,
-   -1384, -1384, -1384, -1384,   -27, -1384, -1384, -1384, -1384, -1384,
-     -32, -1384, -1384, -1384,   227, -1384, -1384, -1384,   230, -1384,
-     717, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384,   173, -1384, -1384, -1384,   181,
-     743, -1384, -1384, -1384,   -44, -1384,     3, -1384,   -56, -1384,
-   -1384, -1384,   222, -1384, -1384, -1384,   229, -1384,   738,   -48,
-   -1384,    -7, -1384,    15, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1059, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   235,
-   -1384, -1384, -1384,   -21, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   202, -1384,
-     207,   204, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384,   -68, -1384, -1384,   -93, -1384,
-   -1384, -1384, -1384, -1384,   -58, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384,  -116, -1384, -1384,  -141,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384,   215, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   543,   731,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384,   587,   736, -1384,
-   -1384, -1384, -1384, -1384, -1384,   216, -1384, -1384,     0, -1384,
-   -1384, -1384, -1384, -1384, -1384,   -83, -1384, -1384,  -104, -1384,
-   -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384, -1384,   231,
-   -1384, -1384, -1384, -1384
+      94, -1397, -1397, -1397, -1397,    97, -1397, -1397,   102,   104,
+     -13,    13,    41,    51, -1397, -1397,    53, -1397,    56, -1397,
+      59,   105,    64, -1397, -1397,    66,    69,    74,    76,    79,
+   -1397,    81, -1397,   107, -1397, -1397, -1397, -1397, -1397,    43,
+   -1397, -1397, -1397,   518,   733, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,   231, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397,   434, -1397,   200, -1397,  -743,   210, -1397,
+   -1397, -1396, -1397, -1395, -1397, -1397, -1397, -1397,   -63, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,  -775, -1397,  -774, -1397,  -771, -1397,
+     113, -1397, -1397, -1397, -1397, -1397, -1397,   194, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397,   177, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397,   190, -1397, -1397, -1397,   196,   694,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,   191, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1063, -1397, -1397, -1397,   211, -1397,
+   -1397, -1397,   222,   734, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1061, -1397,   -29, -1397,   -18, -1397,    -4, -1397,
+       5, -1397,   110,   112,   115, -1397, -1397, -1397, -1397, -1397,
+     214, -1397, -1397,   -31,   -60, -1397, -1397, -1397, -1397, -1397,
+     219, -1397, -1397, -1397,   225, -1397,   717, -1397,   -34, -1397,
+   -1397, -1397, -1397, -1397,   -27, -1397, -1397, -1397, -1397, -1397,
+     -32, -1397, -1397, -1397,   227, -1397, -1397, -1397,   228, -1397,
+     718, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397,   167, -1397, -1397, -1397,   170,
+     748, -1397, -1397, -1397,   -44, -1397,     3, -1397,   -56, -1397,
+   -1397, -1397,   223, -1397, -1397, -1397,   230, -1397,   740,   -48,
+   -1397,    -7, -1397,    15, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1060, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+     232, -1397, -1397, -1397,   -22, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   199,
+   -1397,   205,   206, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397,   -72, -1397, -1397,   -94,
+   -1397, -1397, -1397, -1397, -1397,   -58, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397,  -119, -1397, -1397,
+    -145, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   212, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   545,
+     735, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,   584,   732,
+   -1397, -1397, -1397, -1397, -1397, -1397,   216, -1397, -1397,   -15,
+   -1397, -1397, -1397, -1397, -1397, -1397,   -78, -1397, -1397,  -104,
+   -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397, -1397,
+     220, -1397, -1397, -1397, -1397
   };
 
   const short
@@ -5906,7 +5906,7 @@ namespace isc { namespace dhcp {
   {
        0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    36,    37,    38,    65,   781,
-      82,    83,    39,    64,    79,    80,   798,  1026,  1135,  1136,
+      82,    83,    39,    64,    79,    80,   798,  1027,  1136,  1137,
      878,    41,    66,    85,   461,    86,    43,    67,   161,   162,
      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
      173,   174,   175,   490,   176,   177,   510,   178,   179,   180,
@@ -5915,398 +5915,398 @@ namespace isc { namespace dhcp {
      529,   195,   530,   196,   197,   198,   199,   200,   201,   202,
      203,   204,   465,   243,   244,    45,    68,   245,   539,   246,
      540,   801,   247,   541,   804,   248,   249,   250,   251,   205,
-     475,   206,   466,   847,   848,   849,  1038,   850,  1039,   207,
-     476,   208,   477,   906,   907,   908,  1067,   879,   880,   881,
-    1042,   882,  1043,   883,  1044,   884,  1045,   885,   886,   578,
+     475,   206,   466,   847,   848,   849,  1039,   850,  1040,   207,
+     476,   208,   477,   906,   907,   908,  1068,   879,   880,   881,
+    1043,   882,  1044,   883,  1045,   884,  1046,   885,   886,   578,
      887,   888,   889,   890,   891,   892,   893,   894,   895,   896,
-    1056,  1318,   897,   898,   899,  1059,   900,  1060,   901,  1061,
-     902,  1062,   903,  1063,   209,   518,   930,   931,   932,   933,
-     934,   935,   936,   210,   524,   966,   967,   968,   969,   970,
-     211,   521,   945,   946,   947,  1090,    59,    75,   425,   426,
-     427,   593,   428,   594,   212,   522,   954,   955,   956,   957,
-     958,   959,   960,   961,   213,   506,   910,   911,   912,  1070,
+    1057,  1319,   897,   898,   899,  1060,   900,  1061,   901,  1062,
+     902,  1063,   903,  1064,   209,   518,   930,   931,   932,   933,
+     934,   935,   936,   210,   524,   967,   968,   969,   970,   971,
+     211,   521,   946,   947,   948,  1091,    59,    75,   425,   426,
+     427,   593,   428,   594,   212,   522,   955,   956,   957,   958,
+     959,   960,   961,   962,   213,   506,   910,   911,   912,  1071,
       47,    69,   298,   299,   300,   552,   301,   548,   302,   549,
      303,   550,   304,   553,   305,   558,   306,   555,   307,   556,
      308,   557,   214,   215,   216,   312,   217,   512,   922,   923,
-     924,  1079,  1219,  1220,   218,   507,    53,    72,   914,   915,
-     916,  1073,    55,    73,   386,   387,   388,   389,   390,   391,
+     924,  1080,  1220,  1221,   218,   507,    53,    72,   914,   915,
+     916,  1074,    55,    73,   386,   387,   388,   389,   390,   391,
      392,   577,   393,   581,   394,   580,   395,   396,   582,   397,
-     219,   508,   918,   919,   920,  1076,    57,    74,   409,   410,
+     219,   508,   918,   919,   920,  1077,    57,    74,   409,   410,
      411,   412,   413,   586,   414,   415,   416,   417,   418,   419,
-     590,   314,   551,  1028,  1029,  1030,  1137,    49,    70,   344,
+     590,   314,   551,  1029,  1030,  1031,  1138,    49,    70,   344,
      345,   346,   562,   347,   220,   513,   221,   514,   222,   520,
-     941,   942,   943,  1087,    51,    71,   362,   363,   364,   223,
+     942,   943,   944,  1088,    51,    71,   362,   363,   364,   223,
      470,   224,   471,   225,   472,   368,   567,   369,   568,   370,
      569,   371,   571,   372,   570,   373,   573,   374,   572,   375,
-     566,   321,   559,  1032,  1033,  1140,   226,   519,   938,   939,
-    1084,  1247,  1248,  1249,  1250,  1251,  1330,  1252,  1331,  1253,
-    1254,   227,   228,   525,   229,   526,   996,   997,   998,  1115,
-     986,   987,   988,  1106,  1341,   989,  1107,   990,  1108,   991,
-     992,   993,  1112,  1377,  1378,  1379,  1392,  1407,  1408,  1409,
-    1419,   994,  1110,  1370,  1371,  1372,  1386,  1415,  1373,  1387,
-    1374,  1388,  1375,  1389,  1426,  1427,  1428,  1444,  1462,  1463,
-    1464,  1473,  1465,  1474,   230,   527,  1005,  1006,  1007,  1008,
-    1119,  1009,  1010,  1121,   231,   528,    61,    76,   440,   441,
-     442,   443,   598,   444,   445,   600,   446,   447,   448,   603,
-     838,   449,   604,   232,   464,    63,    77,   452,   453,   454,
-     607,   455,   233,   534,  1013,  1014,  1125,  1293,  1294,  1295,
-    1296,  1351,  1297,  1349,  1412,  1413,  1422,  1436,  1437,  1438,
-    1448,  1439,  1440,  1441,  1442,  1452,   234,   535,  1020,  1021,
-    1022,  1023,  1024,  1025
+     566,   321,   559,  1033,  1034,  1141,   226,   519,   938,   939,
+     940,  1085,  1248,  1249,  1250,  1251,  1252,  1331,  1253,  1332,
+    1254,  1255,   227,   228,   525,   229,   526,   997,   998,   999,
+    1116,   987,   988,   989,  1107,  1342,   990,  1108,   991,  1109,
+     992,   993,   994,  1113,  1378,  1379,  1380,  1393,  1408,  1409,
+    1410,  1420,   995,  1111,  1371,  1372,  1373,  1387,  1416,  1374,
+    1388,  1375,  1389,  1376,  1390,  1427,  1428,  1429,  1445,  1463,
+    1464,  1465,  1474,  1466,  1475,   230,   527,  1006,  1007,  1008,
+    1009,  1120,  1010,  1011,  1122,   231,   528,    61,    76,   440,
+     441,   442,   443,   598,   444,   445,   600,   446,   447,   448,
+     603,   838,   449,   604,   232,   464,    63,    77,   452,   453,
+     454,   607,   455,   233,   534,  1014,  1015,  1126,  1294,  1295,
+    1296,  1297,  1352,  1298,  1350,  1413,  1414,  1423,  1437,  1438,
+    1439,  1449,  1440,  1441,  1442,  1443,  1453,   234,   535,  1021,
+    1022,  1023,  1024,  1025,  1026
   };
 
   const short
   Dhcp4Parser::yytable_[] =
   {
      160,   242,   266,   324,   358,    78,   384,   405,   424,   437,
-     385,   406,   376,   317,   981,   982,   904,  1210,   983,  1211,
-    1227,   318,   836,   365,   252,   315,   348,   360,   462,   398,
+     385,   406,   376,   317,   982,   983,   904,  1211,   984,  1212,
+    1228,   318,   836,   365,   252,   315,   348,   360,   462,   398,
      420,   780,   438,   463,   378,   422,   423,   313,   343,   359,
-     407,   339,    29,   270,    30,  1082,    31,   408,  1083,   136,
-     137,    40,   340,    42,   136,   137,   281,   325,   811,   812,
-     813,  1458,   319,  1459,   366,   537,   341,   817,   422,   423,
-     538,   253,   316,   349,   361,   342,   399,   421,  1085,   439,
-      28,  1086,   282,   326,   320,   267,   367,    81,   831,   962,
-     963,   964,  1458,  1126,  1459,    84,  1127,   235,   236,   130,
-     268,   237,   269,   780,   238,   239,   240,   241,   450,   451,
-     283,   327,   297,   613,  1423,  1402,    44,  1424,   458,   159,
-     284,   328,   285,   329,    46,   286,   330,    48,   287,   331,
-      93,    94,    95,   289,   332,   290,   333,   546,   291,   334,
-     799,   800,   547,   292,   335,   293,   336,   560,   294,   337,
-     295,   338,   561,   271,   564,   272,   273,    50,   274,   565,
-     275,   276,   159,   277,   845,   846,   278,   159,    52,   136,
-     137,   279,   595,   280,   288,    54,   296,   596,  1363,   309,
-     605,   310,   609,    56,   311,   606,   456,   610,    93,    94,
-      95,    96,   378,   400,   379,   380,   401,   402,   403,   537,
-     609,   131,    58,   837,  1035,  1036,   136,   137,  1015,  1016,
-    1017,  1018,   136,   137,   546,   762,   763,   764,   765,  1037,
-      60,   404,   136,   137,  1040,   159,   101,   102,   103,  1041,
-      62,   350,   999,  1000,  1001,   871,   872,   873,   874,   875,
-     876,   351,   352,   353,   354,   355,   356,   357,   802,   803,
-     925,   926,   927,   928,   766,   929,  1064,   457,   130,   131,
-     378,  1065,   136,   137,   459,   460,  1210,  1431,  1211,  1227,
-    1432,  1433,  1434,  1435,    32,    33,    34,    35,   378,   467,
-     136,   137,  1002,  1064,  1099,   574,  1104,    87,  1066,  1100,
-      88,  1105,  1230,  1231,  1232,  1233,  1113,   575,   136,   137,
-     468,  1114,    89,   469,   473,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,  1364,  1365,  1366,   159,
-     774,   775,   776,   777,  1169,   159,   948,   949,   950,   951,
-     952,   953,  1122,   576,   474,   159,   478,  1123,   981,   982,
-     981,   982,   983,   584,   983,   479,   101,   102,   103,   104,
+     407,   339,    29,   270,    30,  1083,    31,   408,  1084,  1459,
+    1460,    40,   340,    42,   136,   137,   281,   325,   852,   853,
+     537,    44,   319,   546,   366,   538,   341,    28,   547,   422,
+     423,   253,   316,   349,   361,   342,   399,   421,    46,   439,
+    1459,  1460,   282,   326,   320,   267,   367,   811,   812,   813,
+      48,  1016,  1017,  1018,  1019,    50,   817,   235,   236,    81,
+     268,   237,   269,   780,   238,   239,   240,   241,   159,   560,
+     283,   327,   297,    84,   561,  1403,    52,   831,    54,   159,
+     284,   328,   285,   329,  1127,   286,   330,  1128,   287,   331,
+      93,    94,    95,   289,   332,   290,   333,  1424,   291,   334,
+    1425,   136,   137,   292,   335,   293,   336,   564,   294,   337,
+     295,   338,   565,   271,   595,   272,   273,   605,   274,   596,
+     275,   276,   606,   277,   799,   800,   278,   159,    56,   136,
+     137,   279,   609,   280,   288,    58,   296,   610,  1364,   309,
+      60,   310,   537,    62,   311,   136,   137,  1036,    93,    94,
+      95,    96,   609,   456,   378,   546,   457,  1037,  1456,  1457,
+    1038,   131,   130,   837,   802,   803,   136,   137,   458,   963,
+     964,   965,   460,  1432,   136,   137,  1433,  1434,  1435,  1436,
+    1041,   459,   136,   137,  1065,  1042,   101,   102,   103,  1066,
+     467,   350,  1065,   762,   763,   764,   765,  1067,  1316,  1317,
+    1318,   351,   352,   353,   354,   355,   356,   357,  1000,  1001,
+    1002,  1100,  1105,   574,   159,   468,  1101,  1106,   130,   131,
+     378,   469,   136,   137,   473,  1114,  1211,   474,  1212,  1228,
+    1115,   478,   766,  1123,    32,    33,    34,    35,  1124,   479,
+     136,   137,   159,   925,   926,   927,   928,    87,   929,   480,
+      88,   605,  1231,  1232,  1233,  1234,  1125,   481,  1003,   450,
+     451,  1287,    89,  1288,  1289,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,  1365,  1366,  1367,   159,
+     482,  1133,  1339,  1340,  1341,  1170,  1134,   159,   949,   950,
+     951,   952,   953,   954,   483,   159,   845,   846,   484,   982,
+     983,   982,   983,   984,   575,   984,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   159,   605,  1132,   130,   131,
-     480,  1124,  1133,   377,  1064,  1286,   481,  1287,  1288,  1324,
-     132,   133,   134,   159,  1315,  1316,  1317,   135,   611,   612,
-     136,   137,  1338,  1339,  1340,   138,   139,   140,   141,   142,
-     560,   159,   482,   483,  1328,  1325,   852,   853,   143,  1329,
-     595,  1113,  1352,   585,   564,  1337,  1346,  1353,   144,  1355,
-    1390,   145,  1420,   591,   484,  1391,  1453,  1421,   146,   147,
-    1475,  1454,   485,   148,   149,  1476,   486,   378,   487,   379,
-     380,   488,   489,   491,   381,   382,   383,   492,   493,   494,
-     495,   499,   150,   500,   501,   502,   151,   136,   137,   503,
-     160,   504,   624,   505,   509,   515,   516,   517,   523,   242,
-     531,   152,   153,   154,   155,   156,   157,   532,   533,   536,
-     542,   543,   544,   266,   545,   158,   554,   324,   563,   136,
-     137,   579,   252,   583,   317,   587,   588,   589,   358,   592,
-     618,   597,   318,   159,   599,   601,   315,   602,   384,   608,
-     348,   614,   385,   615,   616,   405,   617,   365,   313,   406,
-     619,   360,   343,   621,   270,   339,   622,   620,   437,   623,
-     626,   398,   625,   359,   627,   628,   340,   281,   420,   253,
-     629,   325,   630,   319,   631,   632,  1455,  1456,   407,   633,
-     341,   438,   634,   316,   638,   408,   635,   349,   366,   342,
-     636,   641,   637,   282,   640,   320,   267,   326,   361,   639,
-     159,   647,   642,   643,   648,   649,   644,   645,   399,   646,
-     367,   268,   650,   269,   651,   421,   652,   653,   654,   655,
-     657,   283,   656,   297,   658,   327,   659,   660,   439,   661,
-     662,   284,   159,   285,   663,   328,   286,   329,   664,   287,
-     330,   665,   669,   331,   289,   666,   290,   667,   332,   291,
-     333,   668,   670,   334,   292,   671,   293,   672,   335,   294,
-     336,   295,   673,   337,   271,   338,   272,   273,   674,   274,
-     675,   275,   276,   676,   277,   677,   678,   278,   679,   868,
-     869,   870,   279,  1356,   280,   288,   680,   296,   136,   137,
-     309,   681,   310,   685,   682,   311,   683,   686,   688,   684,
-     689,   690,   696,   691,   160,   692,   242,   697,   693,   694,
-     698,   841,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,   699,   700,   701,   703,   252,
-     704,   705,   706,   702,   707,   709,   710,   712,   713,   714,
-     715,   965,   980,   136,   137,   437,   716,   717,   718,  1019,
-     719,   723,   721,   722,   724,   429,   430,   431,   432,   433,
-     434,   435,   436,   725,   971,   984,   726,  1003,   438,   727,
-     729,   733,   730,   735,   731,   736,   253,    91,    92,    93,
-      94,    95,    96,   732,   738,   739,   740,   741,   973,   742,
-     744,   743,   974,   975,   976,   977,   745,   747,   750,   839,
-     748,   159,   978,   979,   751,   752,   753,   754,   755,   756,
-     757,   972,   985,   758,  1004,   439,   759,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   760,   761,
-     768,   769,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   770,   254,   255,   256,   771,
-     131,   772,   773,   779,    30,   782,   159,   783,   784,   785,
-     786,   790,   133,   134,   787,   788,   789,   791,   792,   257,
-     793,   136,   137,   258,   259,   260,   138,   139,   140,   794,
-     261,   262,   263,   795,   796,   797,   805,   264,   808,   143,
-     840,   806,   807,   809,   810,   815,   814,   265,   816,   818,
-     819,   820,   821,   905,   822,   823,   909,   824,   913,   917,
-     825,   851,   852,   853,   854,   855,   856,   857,   858,   859,
-     860,   861,   862,   863,   864,   865,   921,   826,   827,   866,
-     867,   868,   869,   870,   871,   872,   873,   874,   875,   876,
-     877,   828,   829,   937,   830,   832,   834,   835,   940,   944,
-     995,  1012,   152,   153,  1027,  1031,  1046,  1047,  1048,  1049,
-    1050,  1051,  1052,  1053,  1054,  1055,  1057,  1058,  1069,  1134,
-    1068,  1072,  1071,  1074,  1075,   378,  1077,  1078,  1080,  1081,
-    1089,  1088,  1093,  1092,   159,  1091,  1094,  1095,  1096,  1097,
-    1098,  1101,  1102,  1103,  1109,  1111,  1117,  1139,  1116,  1118,
-    1120,  1128,  1129,  1130,  1131,  1151,  1150,  1138,  1143,  1142,
-    1141,  1144,  1146,  1147,  1148,  1149,  1152,  1153,  1154,  1160,
-    1155,  1163,  1156,   266,  1164,  1157,   384,  1158,  1159,   405,
-     385,  1161,  1177,   406,   317,  1165,  1209,  1234,  1166,  1162,
-     358,  1239,   318,   424,  1240,  1167,   315,  1267,  1260,   398,
-    1261,  1224,   420,  1262,  1263,  1222,  1244,   965,   313,   365,
-    1242,  1271,   407,   360,   270,  1264,   980,  1221,   980,   408,
-    1212,  1265,  1241,  1181,  1268,   359,  1269,   281,  1289,  1272,
-     971,  1213,  1290,   319,  1273,  1019,  1192,  1274,  1275,   984,
-     324,   984,  1225,   316,  1277,  1214,   399,  1245,  1003,   421,
-     366,  1291,  1223,   282,  1215,   320,   267,  1243,   159,  1276,
-     361,  1282,  1193,   348,  1226,  1178,  1281,  1283,  1284,  1246,
-    1235,   268,   367,   269,  1299,   343,  1300,   972,   339,  1301,
-    1179,   283,  1180,   297,  1302,  1236,   985,  1237,   985,   340,
-    1194,   284,  1208,   285,   325,  1004,   286,  1238,  1292,   287,
-    1195,  1304,  1196,   341,   289,  1197,   290,  1305,  1198,   291,
-     349,  1308,   342,  1200,   292,  1201,   293,  1309,  1202,   294,
-     326,   295,  1310,  1203,   271,  1204,   272,   273,  1205,   274,
-    1206,   275,   276,  1182,   277,  1183,  1184,   278,  1185,  1326,
-    1186,  1187,   279,  1188,   280,   288,  1189,   296,   327,  1327,
-     309,  1190,   310,  1191,  1199,   311,  1207,  1332,   328,  1216,
-     329,  1217,  1333,   330,  1218,  1334,   331,  1335,  1311,  1336,
-    1344,   332,  1345,   333,  1350,  1358,   334,  1359,  1380,  1376,
-    1382,   335,  1394,   336,  1393,  1395,   337,  1397,   338,  1398,
-    1399,  1400,  1312,  1313,  1414,  1348,  1411,  1418,  1425,  1314,
-    1319,  1320,  1429,  1321,  1449,  1323,  1342,  1445,  1343,  1347,
-    1354,  1446,   842,  1384,  1360,  1361,  1381,  1385,  1450,  1396,
-    1416,  1451,  1417,  1447,  1467,  1471,  1469,  1468,  1470,  1477,
-    1478,  1177,  1479,  1480,  1482,  1209,  1483,   695,  1234,   687,
-     833,   844,  1239,  1145,  1170,  1240,  1168,  1367,  1259,  1322,
-    1224,  1034,  1229,  1258,  1222,  1289,  1270,  1244,   737,  1290,
-    1266,  1242,  1172,   708,  1171,  1228,  1221,  1357,  1173,  1212,
-    1368,  1174,  1181,  1241,   728,  1176,  1175,   711,  1291,   734,
-    1213,  1257,  1307,   720,  1362,  1192,  1256,  1278,  1306,  1280,
-    1255,  1225,  1279,  1367,  1214,  1403,  1410,  1430,  1245,  1404,
-    1466,  1223,  1401,  1215,  1481,  1011,   746,  1285,  1243,   843,
-    1443,  1193,  1298,  1226,  1178,   749,  1368,  1369,  1405,  1472,
-    1246,  1235,  1383,  1403,     0,  1292,     0,  1404,     0,  1179,
-       0,  1180,     0,  1303,     0,     0,  1236,     0,  1237,  1194,
-       0,  1208,     0,     0,     0,     0,  1405,  1457,  1238,  1195,
-       0,  1196,     0,     0,  1197,     0,     0,  1198,     0,     0,
-       0,     0,  1200,  1369,  1201,  1406,     0,  1202,     0,     0,
-    1460,     0,  1203,     0,  1204,     0,     0,  1205,  1457,  1206,
-       0,     0,  1182,     0,  1183,  1184,     0,  1185,     0,  1186,
-    1187,     0,  1188,  1406,     0,  1189,     0,     0,     0,     0,
-    1190,  1460,  1191,  1199,     0,  1207,     0,     0,  1216,     0,
-    1217,     0,     0,  1218,     0,     0,     0,  1461,    91,    92,
-      93,    94,    95,    96,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  1461,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,     0,
-       0,     0,     0,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,     0,     0,     0,
-       0,   131,   378,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   133,   134,     0,     0,     0,     0,     0,
-       0,     0,   136,   137,     0,   259,     0,   138,   139,   140,
-       0,   261,   262,   263,     0,     0,     0,     0,   264,     0,
-       0,   116,   117,   118,   119,   120,   121,   122,   265,   124,
-     125,   126,   127,     0,     0,     0,     0,     0,     0,   131,
+     125,   126,   127,   128,   129,   159,  1065,   560,   130,   131,
+     485,  1325,  1326,   377,   871,   872,   873,   874,   875,   876,
+     132,   133,   134,   159,   486,   487,   488,   135,   611,   612,
+     136,   137,   489,   491,   492,   138,   139,   140,   141,   142,
+    1329,   595,  1114,   576,  1353,  1330,  1338,  1347,   143,  1354,
+     564,  1391,  1421,   584,  1454,  1356,  1392,  1422,   144,  1455,
+    1476,   145,   493,   494,   495,  1477,   499,   500,   146,   147,
+     501,   502,   503,   148,   149,   504,   505,   378,   509,   379,
+     380,   515,   516,   517,   381,   382,   383,   774,   775,   776,
+     777,   523,   150,   531,   532,   533,   151,   136,   137,   536,
+     160,   378,   400,   379,   380,   401,   402,   403,   542,   242,
+     543,   152,   153,   154,   155,   156,   157,   544,   545,   554,
+     563,   136,   137,   266,   579,   158,   583,   324,   585,   591,
+     404,   587,   252,   588,   317,   589,   592,   624,   358,   597,
+     599,   601,   318,   159,   602,   608,   315,   613,   384,   614,
+     348,   615,   385,   616,   617,   405,   618,   365,   313,   406,
+     619,   360,   343,   621,   270,   339,   620,   622,   437,   623,
+     625,   398,   626,   359,   627,   628,   340,   281,   420,   253,
+     629,   325,   630,   319,   635,   631,   641,   632,   407,   636,
+     341,   438,   633,   316,   637,   408,   634,   349,   366,   342,
+     638,   644,   639,   282,   640,   320,   267,   326,   361,   645,
+     159,   647,   642,   643,   648,   649,   646,   650,   399,   651,
+     367,   268,   652,   269,   653,   421,   654,   655,   657,   658,
+     656,   283,   659,   297,   159,   327,   660,   661,   439,   662,
+     663,   284,   664,   285,   665,   328,   286,   329,   666,   287,
+     330,   667,   668,   331,   289,   669,   290,   670,   332,   291,
+     333,   671,   672,   334,   292,   673,   293,   675,   335,   294,
+     336,   295,   674,   337,   271,   338,   272,   273,   676,   274,
+     677,   275,   276,   678,   277,   679,   680,   278,   681,   868,
+     869,   870,   279,   682,   280,   288,   683,   296,   136,   137,
+     309,   684,   310,   685,   686,   311,   688,   689,   690,   691,
+     692,   693,   696,   694,   160,   697,   242,   698,   699,   700,
+     701,   841,   702,  1357,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,   703,   704,   252,
+     705,   706,   707,   709,   712,   710,   713,   714,   715,   716,
+     717,   966,   981,   136,   137,   437,   718,   719,   721,  1020,
+     722,   723,   724,   725,   726,   429,   430,   431,   432,   433,
+     434,   435,   436,   729,   972,   985,   733,  1004,   438,   727,
+     735,   736,   730,   731,   732,   739,   253,    91,    92,    93,
+      94,    95,    96,   738,   740,   741,   742,   744,   974,   743,
+     745,   747,   975,   976,   977,   978,   750,   748,   751,   755,
+     752,   159,   979,   980,   753,   754,   756,   757,   758,   759,
+     760,   973,   986,   761,  1005,   439,   768,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   769,   770,
+     771,   772,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   773,   254,   255,   256,   779,
+     131,   783,    30,   782,   784,   785,   159,   786,   787,   793,
+     788,   789,   133,   134,   790,   839,   794,   791,   792,   257,
+     795,   136,   137,   258,   259,   260,   138,   139,   140,   796,
+     261,   262,   263,   797,   808,   840,   805,   264,   815,   143,
+     905,   806,   807,   809,   810,   814,   816,   265,   851,   852,
+     853,   854,   855,   856,   857,   858,   859,   860,   861,   862,
+     863,   864,   865,   818,   819,   820,   866,   867,   868,   869,
+     870,   871,   872,   873,   874,   875,   876,   877,   821,   909,
+     913,   917,   822,   823,   824,   921,   825,   826,   937,   827,
+     941,   945,   996,  1013,   828,   829,   830,   832,   834,   835,
+    1028,  1032,   152,   153,  1047,  1048,  1049,  1050,  1051,  1052,
+    1053,  1054,   378,  1055,  1056,  1058,  1059,  1070,  1135,  1069,
+    1073,  1072,  1075,  1076,  1078,  1079,  1082,  1081,  1087,  1151,
+    1086,  1090,  1089,  1092,   159,  1093,  1117,  1094,  1095,  1096,
+    1097,  1098,  1099,  1102,  1103,  1104,  1110,  1112,  1118,  1153,
+    1119,  1121,  1129,  1130,  1131,  1132,  1140,  1310,  1139,  1152,
+    1144,  1143,  1142,  1145,  1147,  1148,  1149,  1150,  1154,  1161,
+    1155,  1164,  1156,  1157,   266,  1165,  1158,   384,  1159,  1162,
+     405,   385,  1160,  1178,   406,   317,  1166,  1210,  1235,  1167,
+    1168,   358,  1240,   318,   424,  1241,  1163,   315,  1261,  1262,
+     398,  1263,  1225,   420,  1264,  1265,  1223,  1245,   966,   313,
+     365,  1243,  1268,   407,   360,   270,  1266,   981,  1222,   981,
+     408,  1213,  1269,  1242,  1182,  1270,   359,  1272,   281,  1290,
+    1273,   972,  1214,  1291,   319,  1274,  1020,  1193,  1276,  1278,
+     985,   324,   985,  1226,   316,   159,  1215,   399,  1246,  1004,
+     421,   366,  1292,  1224,   282,  1216,   320,   267,  1244,  1275,
+    1277,   361,  1283,  1194,   348,  1227,  1179,  1282,  1285,  1305,
+    1247,  1236,   268,   367,   269,  1284,   343,  1306,   973,   339,
+    1300,  1180,   283,  1181,   297,  1301,  1237,   986,  1238,   986,
+     340,  1195,   284,  1209,   285,   325,  1005,   286,  1239,  1293,
+     287,  1196,  1302,  1197,   341,   289,  1198,   290,  1303,  1199,
+     291,   349,  1309,   342,  1201,   292,  1202,   293,  1327,  1203,
+     294,   326,   295,  1328,  1204,   271,  1205,   272,   273,  1206,
+     274,  1207,   275,   276,  1183,   277,  1184,  1185,   278,  1186,
+    1333,  1187,  1188,   279,  1189,   280,   288,  1190,   296,   327,
+    1334,   309,  1191,   310,  1192,  1200,   311,  1208,  1335,   328,
+    1217,   329,  1218,  1336,   330,  1219,  1311,   331,  1312,  1337,
+    1345,  1346,   332,  1351,   333,  1359,  1360,   334,  1381,  1383,
+    1377,  1313,   335,  1394,   336,  1395,  1396,   337,  1398,   338,
+    1399,  1400,  1401,  1415,  1314,  1315,  1349,  1412,  1419,  1426,
+    1430,  1320,  1447,  1321,  1446,  1322,  1324,  1343,  1450,  1344,
+    1348,  1355,  1451,  1452,  1385,  1361,  1362,  1382,  1386,  1468,
+    1397,  1417,  1472,  1480,  1418,  1448,  1481,   833,  1470,  1469,
+    1471,  1478,  1178,  1479,  1483,  1484,  1210,   842,   687,  1235,
+    1171,   844,  1146,  1240,  1035,  1169,  1241,  1230,  1368,   695,
+    1323,  1225,  1271,  1260,  1173,  1223,  1290,  1259,  1245,   737,
+    1291,  1267,  1243,  1172,   708,  1175,  1229,  1222,  1358,  1174,
+    1213,  1369,   728,  1182,  1242,  1176,  1177,  1308,  1307,  1292,
+     734,  1214,   711,  1258,  1363,   720,  1193,  1281,  1257,  1256,
+    1279,  1280,  1226,  1411,  1368,  1215,  1404,  1431,  1467,  1246,
+    1405,  1482,  1224,  1402,  1216,  1286,   843,  1012,  1384,  1244,
+     746,   749,  1194,  1299,  1227,  1179,  1444,  1369,  1370,  1406,
+    1473,  1247,  1236,  1304,  1404,     0,  1293,     0,  1405,     0,
+    1180,     0,  1181,     0,     0,     0,     0,  1237,     0,  1238,
+    1195,     0,  1209,     0,     0,     0,     0,  1406,  1458,  1239,
+    1196,     0,  1197,     0,     0,  1198,     0,     0,  1199,     0,
+       0,     0,     0,  1201,  1370,  1202,  1407,     0,  1203,     0,
+       0,  1461,     0,  1204,     0,  1205,     0,     0,  1206,  1458,
+    1207,     0,     0,  1183,     0,  1184,  1185,     0,  1186,     0,
+    1187,  1188,     0,  1189,  1407,     0,  1190,     0,     0,     0,
+       0,  1191,  1461,  1192,  1200,     0,  1208,     0,     0,  1217,
+       0,  1218,     0,     0,  1219,     0,     0,     0,  1462,    91,
+      92,    93,    94,    95,    96,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   134,     0,     0,     0,     0,     0,     0,   322,
-     136,   137,     0,     0,     0,     0,     0,     0,     0,   261,
-     262,   263,     0,     0,     0,     0,   264,   323,     0,     0,
-       0,     0,     0,   152,   153,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1462,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+       0,     0,     0,     0,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,     0,     0,
+       0,     0,   131,   378,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   133,   134,     0,     0,     0,     0,
+       0,     0,     0,   136,   137,     0,   259,     0,   138,   139,
+     140,     0,   261,   262,   263,     0,     0,     0,     0,   264,
+       0,     0,   116,   117,   118,   119,   120,   121,   122,   265,
+     124,   125,   126,   127,     0,     0,     0,     0,     0,     0,
+     131,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   134,     0,     0,     0,     0,     0,     0,
+     322,   136,   137,     0,     0,     0,     0,     0,     0,     0,
+     261,   262,   263,     0,     0,     0,     0,   264,   323,     0,
+       0,     0,     0,     0,   152,   153,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   159,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   159,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   152,   153,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   152,   153,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   159
+       0,     0,     0,     0,   159
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
       67,    68,    69,    70,    71,    64,    73,    74,    75,    76,
-      73,    74,    72,    69,   789,   789,   759,  1079,   789,  1079,
-    1079,    69,    18,    71,    68,    69,    70,    71,     3,    73,
+      73,    74,    72,    69,   789,   789,   759,  1080,   789,  1080,
+    1080,    69,    18,    71,    68,    69,    70,    71,     3,    73,
       74,   664,    76,     8,   104,   153,   154,    69,    70,    71,
-      74,    70,     5,    69,     7,     3,     9,    74,     6,   124,
-     125,     7,    70,     7,   124,   125,    69,    70,   703,   704,
-     705,  1444,    69,  1444,    71,     3,    70,   712,   153,   154,
-       8,    68,    69,    70,    71,    70,    73,    74,     3,    76,
-       0,     6,    69,    70,    69,    69,    71,   237,   733,   164,
-     165,   166,  1475,     3,  1475,    10,     6,    15,    16,   102,
-      69,    19,    69,   736,    22,    23,    24,    25,    12,    13,
-      69,    70,    69,   237,     3,   185,     7,     6,     4,   237,
-      69,    70,    69,    70,     7,    69,    70,     7,    69,    70,
+      74,    70,     5,    69,     7,     3,     9,    74,     6,  1445,
+    1445,     7,    70,     7,   124,   125,    69,    70,    41,    42,
+       3,     7,    69,     3,    71,     8,    70,     0,     8,   153,
+     154,    68,    69,    70,    71,    70,    73,    74,     7,    76,
+    1476,  1476,    69,    70,    69,    69,    71,   703,   704,   705,
+       7,   220,   221,   222,   223,     7,   712,    15,    16,   237,
+      69,    19,    69,   736,    22,    23,    24,    25,   237,     3,
+      69,    70,    69,    10,     8,   185,     7,   733,     7,   237,
+      69,    70,    69,    70,     3,    69,    70,     6,    69,    70,
       32,    33,    34,    69,    70,    69,    70,     3,    69,    70,
-      17,    18,     8,    69,    70,    69,    70,     3,    69,    70,
-      69,    70,     8,    69,     3,    69,    69,     7,    69,     8,
-      69,    69,   237,    69,    27,    28,    69,   237,     7,   124,
+       6,   124,   125,    69,    70,    69,    70,     3,    69,    70,
+      69,    70,     8,    69,     3,    69,    69,     3,    69,     8,
+      69,    69,     8,    69,    17,    18,    69,   237,     7,   124,
      125,    69,     3,    69,    69,     7,    69,     8,    40,    69,
-       3,    69,     3,     7,    69,     8,     6,     8,    32,    33,
-      34,    35,   104,   105,   106,   107,   108,   109,   110,     3,
-       3,   103,     7,   199,     8,     8,   124,   125,   220,   221,
-     222,   223,   124,   125,     3,   201,   202,   203,   204,     8,
-       7,   133,   124,   125,     3,   237,    70,    71,    72,     8,
-       7,   133,   187,   188,   189,    63,    64,    65,    66,    67,
-      68,   143,   144,   145,   146,   147,   148,   149,    20,    21,
-     144,   145,   146,   147,   240,   149,     3,     3,   102,   103,
-     104,     8,   124,   125,     8,     3,  1328,   212,  1328,  1328,
-     215,   216,   217,   218,   237,   238,   239,   240,   104,     4,
-     124,   125,   237,     3,     3,     8,     3,    11,     8,     8,
-      14,     8,   136,   137,   138,   139,     3,     3,   124,   125,
-       4,     8,    26,     4,     4,    29,    30,    31,    32,    33,
+       7,    69,     3,     7,    69,   124,   125,     8,    32,    33,
+      34,    35,     3,     6,   104,     3,     3,     8,   181,   182,
+       8,   103,   102,   199,    20,    21,   124,   125,     4,   164,
+     165,   166,     3,   212,   124,   125,   215,   216,   217,   218,
+       3,     8,   124,   125,     3,     8,    70,    71,    72,     8,
+       4,   133,     3,   201,   202,   203,   204,     8,    55,    56,
+      57,   143,   144,   145,   146,   147,   148,   149,   187,   188,
+     189,     3,     3,     8,   237,     4,     8,     8,   102,   103,
+     104,     4,   124,   125,     4,     3,  1329,     4,  1329,  1329,
+       8,     4,   240,     3,   237,   238,   239,   240,     8,     4,
+     124,   125,   237,   144,   145,   146,   147,    11,   149,     4,
+      14,     3,   136,   137,   138,   139,     8,     4,   237,    12,
+      13,   211,    26,   213,   214,    29,    30,    31,    32,    33,
       34,    35,    36,    37,    38,    39,   178,   179,   180,   237,
-     117,   118,   119,   120,  1067,   237,   156,   157,   158,   159,
-     160,   161,     3,     8,     4,   237,     4,     8,  1113,  1113,
-    1115,  1115,  1113,     8,  1115,     4,    70,    71,    72,    73,
+       4,     3,   170,   171,   172,  1068,     8,   237,   156,   157,
+     158,   159,   160,   161,     4,   237,    27,    28,     4,  1114,
+    1114,  1116,  1116,  1114,     3,  1116,    70,    71,    72,    73,
       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
       94,    95,    96,    97,    98,   237,     3,     3,   102,   103,
-       4,     8,     8,    40,     3,   211,     4,   213,   214,     8,
-     114,   115,   116,   237,    55,    56,    57,   121,   457,   458,
-     124,   125,   170,   171,   172,   129,   130,   131,   132,   133,
-       3,   237,     4,     4,     3,     8,    41,    42,   142,     8,
-       3,     3,     3,     3,     3,     8,     8,     8,   152,     8,
-       3,   155,     3,     8,     4,     8,     3,     8,   162,   163,
-       3,     8,     4,   167,   168,     8,     4,   104,     4,   106,
-     107,     4,     4,     4,   111,   112,   113,     4,     4,     4,
-       4,     4,   186,     4,     4,     4,   190,   124,   125,     4,
-     537,     4,   238,     4,     4,     4,     4,     4,     4,   546,
+       4,     8,     8,    40,    63,    64,    65,    66,    67,    68,
+     114,   115,   116,   237,     4,     4,     4,   121,   457,   458,
+     124,   125,     4,     4,     4,   129,   130,   131,   132,   133,
+       3,     3,     3,     8,     3,     8,     8,     8,   142,     8,
+       3,     3,     3,     8,     3,     8,     8,     8,   152,     8,
+       3,   155,     4,     4,     4,     8,     4,     4,   162,   163,
+       4,     4,     4,   167,   168,     4,     4,   104,     4,   106,
+     107,     4,     4,     4,   111,   112,   113,   117,   118,   119,
+     120,     4,   186,     4,     4,     4,   190,   124,   125,     4,
+     537,   104,   105,   106,   107,   108,   109,   110,     4,   546,
        4,   205,   206,   207,   208,   209,   210,     4,     4,     4,
-       4,     4,     4,   560,     4,   219,     4,   564,     4,   124,
-     125,     4,   546,     4,   560,     4,     4,     4,   575,     3,
-     240,     4,   560,   237,     4,     4,   560,     4,   585,     4,
-     564,     4,   585,     4,     4,   592,     4,   575,   560,   592,
-     240,   575,   564,     4,   560,   564,     4,   240,   605,     4,
-       4,   585,   240,   575,     4,     4,   564,   560,   592,   546,
-     238,   564,   238,   560,   238,   238,   181,   182,   592,   238,
-     564,   605,   240,   560,   238,   592,   239,   564,   575,   564,
-     239,     4,   239,   560,   238,   560,   560,   564,   575,   239,
+       4,   124,   125,   560,     4,   219,     4,   564,     3,     8,
+     133,     4,   546,     4,   560,     4,     3,   238,   575,     4,
+       4,     4,   560,   237,     4,     4,   560,   237,   585,     4,
+     564,     4,   585,     4,     4,   592,   240,   575,   560,   592,
+     240,   575,   564,     4,   560,   564,   240,     4,   605,     4,
+     240,   585,     4,   575,     4,     4,   564,   560,   592,   546,
+     238,   564,   238,   560,   239,   238,     4,   238,   592,   239,
+     564,   605,   238,   560,   239,   592,   240,   564,   575,   564,
+     238,   240,   239,   560,   238,   560,   560,   564,   575,   240,
      237,     4,   238,   238,     4,     4,   240,   240,   585,   240,
-     575,   560,   240,   560,   240,   592,   239,   238,   238,   238,
-       4,   560,   240,   560,     4,   564,     4,   238,   605,     4,
-       4,   560,   237,   560,     4,   564,   560,   564,     4,   560,
-     564,     4,     4,   564,   560,   240,   560,   240,   564,   560,
-     564,   240,     4,   564,   560,     4,   560,     4,   564,   560,
-     564,   560,     4,   564,   560,   564,   560,   560,   238,   560,
+     575,   560,   239,   560,   238,   592,   238,   238,     4,     4,
+     240,   560,     4,   560,   237,   564,   238,     4,   605,     4,
+       4,   560,     4,   560,     4,   564,   560,   564,   240,   560,
+     564,   240,   240,   564,   560,     4,   560,     4,   564,   560,
+     564,     4,     4,   564,   560,     4,   560,     4,   564,   560,
+     564,   560,   238,   564,   560,   564,   560,   560,     4,   560,
        4,   560,   560,     4,   560,     4,     4,   560,     4,    60,
-      61,    62,   560,  1308,   560,   560,     4,   560,   124,   125,
-     560,     4,   560,     4,   240,   560,   240,     4,     4,   240,
-       4,     4,     4,   240,   751,   240,   753,     4,   238,   238,
-       4,   750,   224,   225,   226,   227,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,     4,     4,     4,     4,   753,
-       4,     4,     4,   238,     4,     4,   238,     4,     4,     4,
+      61,    62,   560,   240,   560,   560,   240,   560,   124,   125,
+     560,   240,   560,     4,     4,   560,     4,     4,     4,   240,
+     240,   238,     4,   238,   751,     4,   753,     4,     4,     4,
+       4,   750,   238,  1309,   224,   225,   226,   227,   228,   229,
+     230,   231,   232,   233,   234,   235,   236,     4,     4,   753,
+       4,     4,     4,     4,     4,   238,     4,     4,     4,     4,
        4,   788,   789,   124,   125,   792,     4,     4,     4,   796,
        4,   238,     4,     4,     4,   191,   192,   193,   194,   195,
      196,   197,   198,     4,   788,   789,     4,   791,   792,   240,
-       4,     4,   240,     4,   240,     4,   753,    30,    31,    32,
-      33,    34,    35,   240,   240,     4,   238,     4,   169,   238,
-       4,   238,   173,   174,   175,   176,     4,     4,     4,   200,
-     238,   237,   183,   184,     7,     7,     7,     7,   237,   237,
-     237,   788,   789,     7,   791,   792,     7,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,     5,   237,
-     237,   237,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,     5,    99,   100,   101,     5,
-     103,     5,   237,     5,     7,   237,   237,     5,     5,     5,
-       5,     5,   115,   116,     7,     7,     7,     7,     7,   122,
-     237,   124,   125,   126,   127,   128,   129,   130,   131,   237,
-     133,   134,   135,     5,     7,     5,   237,   140,     5,   142,
-       5,   237,   237,   237,   237,     7,   237,   150,   237,   237,
-     237,   237,   237,     7,   237,   237,     7,   237,     7,     7,
-     237,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,     7,   237,   237,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,   237,   237,     7,   237,   237,   237,   237,     7,     7,
-       7,     7,   205,   206,     7,   151,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     3,   237,
-       6,     3,     6,     6,     3,   104,     6,     3,     6,     3,
-       3,     6,     4,     3,   237,     6,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     3,     3,     6,     4,
-       4,     4,     4,     4,     4,   240,   238,     6,     4,     6,
-       8,     4,     4,     4,     4,     4,   238,   240,   238,     4,
-     238,     4,   238,  1070,     4,   238,  1073,   238,   238,  1076,
-    1073,   240,  1079,  1076,  1070,     4,  1079,  1084,     4,   238,
-    1087,  1084,  1070,  1090,  1084,     4,  1070,   240,   238,  1073,
-     238,  1079,  1076,   238,   238,  1079,  1084,  1104,  1070,  1087,
-    1084,     4,  1076,  1087,  1070,   238,  1113,  1079,  1115,  1076,
-    1079,   238,  1084,  1079,   238,  1087,   238,  1070,  1125,     4,
-    1104,  1079,  1125,  1070,     4,  1132,  1079,   238,     4,  1113,
-    1137,  1115,  1079,  1070,     4,  1079,  1073,  1084,  1122,  1076,
-    1087,  1125,  1079,  1070,  1079,  1070,  1070,  1084,   237,   240,
-    1087,     4,  1079,  1137,  1079,  1079,   240,   238,     4,  1084,
-    1084,  1070,  1087,  1070,   240,  1137,   240,  1104,  1137,   240,
-    1079,  1070,  1079,  1070,   240,  1084,  1113,  1084,  1115,  1137,
-    1079,  1070,  1079,  1070,  1137,  1122,  1070,  1084,  1125,  1070,
-    1079,     6,  1079,  1137,  1070,  1079,  1070,     3,  1079,  1070,
-    1137,     4,  1137,  1079,  1070,  1079,  1070,   237,  1079,  1070,
-    1137,  1070,   237,  1079,  1070,  1079,  1070,  1070,  1079,  1070,
-    1079,  1070,  1070,  1079,  1070,  1079,  1079,  1070,  1079,     8,
-    1079,  1079,  1070,  1079,  1070,  1070,  1079,  1070,  1137,     8,
-    1070,  1079,  1070,  1079,  1079,  1070,  1079,     4,  1137,  1079,
-    1137,  1079,     4,  1137,  1079,     8,  1137,     3,   237,     8,
-       7,  1137,     5,  1137,     4,     4,  1137,     4,     4,     7,
-       4,  1137,     3,  1137,     6,     5,  1137,     4,  1137,     4,
-       4,     4,   237,   237,   177,  1284,     7,     5,     7,   237,
-     237,   237,     4,   237,     4,   237,   237,     6,   237,   237,
-     237,     3,   751,   237,   240,   240,   238,   237,     4,   237,
-     237,     4,   237,   237,     4,     4,   238,   240,   238,   237,
-     237,  1328,     4,     4,   237,  1328,   237,   546,  1335,   537,
-     736,   753,  1335,  1040,  1069,  1335,  1064,  1344,  1092,  1166,
-    1328,   840,  1082,  1090,  1328,  1352,  1104,  1335,   595,  1352,
-    1099,  1335,  1072,   560,  1070,  1081,  1328,  1328,  1073,  1328,
-    1344,  1075,  1328,  1335,   585,  1078,  1076,   564,  1352,   592,
-    1328,  1089,  1139,   575,  1335,  1328,  1087,  1113,  1137,  1117,
-    1085,  1328,  1115,  1390,  1328,  1392,  1394,  1420,  1335,  1392,
-    1446,  1328,  1390,  1328,  1475,   792,   605,  1122,  1335,   752,
-    1423,  1328,  1126,  1328,  1328,   609,  1390,  1344,  1392,  1453,
-    1335,  1335,  1352,  1420,    -1,  1352,    -1,  1420,    -1,  1328,
-      -1,  1328,    -1,  1132,    -1,    -1,  1335,    -1,  1335,  1328,
-      -1,  1328,    -1,    -1,    -1,    -1,  1420,  1444,  1335,  1328,
-      -1,  1328,    -1,    -1,  1328,    -1,    -1,  1328,    -1,    -1,
-      -1,    -1,  1328,  1390,  1328,  1392,    -1,  1328,    -1,    -1,
-    1444,    -1,  1328,    -1,  1328,    -1,    -1,  1328,  1475,  1328,
-      -1,    -1,  1328,    -1,  1328,  1328,    -1,  1328,    -1,  1328,
-    1328,    -1,  1328,  1420,    -1,  1328,    -1,    -1,    -1,    -1,
-    1328,  1475,  1328,  1328,    -1,  1328,    -1,    -1,  1328,    -1,
-    1328,    -1,    -1,  1328,    -1,    -1,    -1,  1444,    30,    31,
-      32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,     4,   240,   240,   240,     4,   753,    30,    31,    32,
+      33,    34,    35,   240,   238,     4,   238,     4,   169,   238,
+       4,     4,   173,   174,   175,   176,     4,   238,     7,   237,
+       7,   237,   183,   184,     7,     7,   237,   237,     7,     7,
+       5,   788,   789,   237,   791,   792,   237,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,   237,     5,
+       5,     5,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,   237,    99,   100,   101,     5,
+     103,     5,     7,   237,     5,     5,   237,     5,     7,   237,
+       7,     7,   115,   116,     5,   200,   237,     7,     7,   122,
+       5,   124,   125,   126,   127,   128,   129,   130,   131,     7,
+     133,   134,   135,     5,     5,     5,   237,   140,     7,   142,
+       7,   237,   237,   237,   237,   237,   237,   150,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,   237,   237,   237,    58,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,    68,    69,   237,     7,
+       7,     7,   237,   237,   237,     7,   237,   237,     7,   237,
+       7,     7,     7,     7,   237,   237,   237,   237,   237,   237,
+       7,   151,   205,   206,     4,     4,     4,     4,     4,     4,
+       4,     4,   104,     4,     4,     4,     4,     3,   237,     6,
+       3,     6,     6,     3,     6,     3,     3,     6,     3,   238,
+       6,     3,     6,     6,   237,     3,     6,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     3,   238,
+       4,     4,     4,     4,     4,     4,     3,   237,     6,   240,
+       4,     6,     8,     4,     4,     4,     4,     4,   240,     4,
+     238,     4,   238,   238,  1071,     4,   238,  1074,   238,   240,
+    1077,  1074,   238,  1080,  1077,  1071,     4,  1080,  1085,     4,
+       4,  1088,  1085,  1071,  1091,  1085,   238,  1071,   238,   238,
+    1074,   238,  1080,  1077,   238,   238,  1080,  1085,  1105,  1071,
+    1088,  1085,   240,  1077,  1088,  1071,   238,  1114,  1080,  1116,
+    1077,  1080,   238,  1085,  1080,   238,  1088,     4,  1071,  1126,
+       4,  1105,  1080,  1126,  1071,     4,  1133,  1080,     4,     4,
+    1114,  1138,  1116,  1080,  1071,   237,  1080,  1074,  1085,  1123,
+    1077,  1088,  1126,  1080,  1071,  1080,  1071,  1071,  1085,   238,
+     240,  1088,     4,  1080,  1138,  1080,  1080,   240,     4,     6,
+    1085,  1085,  1071,  1088,  1071,   238,  1138,     3,  1105,  1138,
+     240,  1080,  1071,  1080,  1071,   240,  1085,  1114,  1085,  1116,
+    1138,  1080,  1071,  1080,  1071,  1138,  1123,  1071,  1085,  1126,
+    1071,  1080,   240,  1080,  1138,  1071,  1080,  1071,   240,  1080,
+    1071,  1138,     4,  1138,  1080,  1071,  1080,  1071,     8,  1080,
+    1071,  1138,  1071,     8,  1080,  1071,  1080,  1071,  1071,  1080,
+    1071,  1080,  1071,  1071,  1080,  1071,  1080,  1080,  1071,  1080,
+       4,  1080,  1080,  1071,  1080,  1071,  1071,  1080,  1071,  1138,
+       4,  1071,  1080,  1071,  1080,  1080,  1071,  1080,     8,  1138,
+    1080,  1138,  1080,     3,  1138,  1080,   237,  1138,   237,     8,
+       7,     5,  1138,     4,  1138,     4,     4,  1138,     4,     4,
+       7,   237,  1138,     6,  1138,     3,     5,  1138,     4,  1138,
+       4,     4,     4,   177,   237,   237,  1285,     7,     5,     7,
+       4,   237,     3,   237,     6,   237,   237,   237,     4,   237,
+     237,   237,     4,     4,   237,   240,   240,   238,   237,     4,
+     237,   237,     4,     4,   237,   237,     4,   736,   238,   240,
+     238,   237,  1329,   237,   237,   237,  1329,   751,   537,  1336,
+    1070,   753,  1041,  1336,   840,  1065,  1336,  1083,  1345,   546,
+    1167,  1329,  1105,  1093,  1073,  1329,  1353,  1091,  1336,   595,
+    1353,  1100,  1336,  1071,   560,  1076,  1082,  1329,  1329,  1074,
+    1329,  1345,   585,  1329,  1336,  1077,  1079,  1140,  1138,  1353,
+     592,  1329,   564,  1090,  1336,   575,  1329,  1118,  1088,  1087,
+    1114,  1116,  1329,  1395,  1391,  1329,  1393,  1421,  1447,  1336,
+    1393,  1476,  1329,  1391,  1329,  1123,   752,   792,  1353,  1336,
+     605,   609,  1329,  1127,  1329,  1329,  1424,  1391,  1345,  1393,
+    1454,  1336,  1336,  1133,  1421,    -1,  1353,    -1,  1421,    -1,
+    1329,    -1,  1329,    -1,    -1,    -1,    -1,  1336,    -1,  1336,
+    1329,    -1,  1329,    -1,    -1,    -1,    -1,  1421,  1445,  1336,
+    1329,    -1,  1329,    -1,    -1,  1329,    -1,    -1,  1329,    -1,
+      -1,    -1,    -1,  1329,  1391,  1329,  1393,    -1,  1329,    -1,
+      -1,  1445,    -1,  1329,    -1,  1329,    -1,    -1,  1329,  1476,
+    1329,    -1,    -1,  1329,    -1,  1329,  1329,    -1,  1329,    -1,
+    1329,  1329,    -1,  1329,  1421,    -1,  1329,    -1,    -1,    -1,
+      -1,  1329,  1476,  1329,  1329,    -1,  1329,    -1,    -1,  1329,
+      -1,  1329,    -1,    -1,  1329,    -1,    -1,    -1,  1445,    30,
+      31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1475,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    -1,
-      -1,    -1,    -1,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-      -1,   103,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   115,   116,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   124,   125,    -1,   127,    -1,   129,   130,   131,
-      -1,   133,   134,   135,    -1,    -1,    -1,    -1,   140,    -1,
-      -1,    85,    86,    87,    88,    89,    90,    91,   150,    93,
-      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,   103,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1476,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      -1,    -1,    -1,    -1,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    96,    97,    98,    -1,    -1,
+      -1,    -1,   103,   104,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   115,   116,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   124,   125,    -1,   127,    -1,   129,   130,
+     131,    -1,   133,   134,   135,    -1,    -1,    -1,    -1,   140,
+      -1,    -1,    85,    86,    87,    88,    89,    90,    91,   150,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
+     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,
+     123,   124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     133,   134,   135,    -1,    -1,    -1,    -1,   140,   141,    -1,
+      -1,    -1,    -1,    -1,   205,   206,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,    -1,   123,
-     124,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   133,
-     134,   135,    -1,    -1,    -1,    -1,   140,   141,    -1,    -1,
-      -1,    -1,    -1,   205,   206,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   237,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   237,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   205,   206,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   205,   206,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   237
+      -1,    -1,    -1,    -1,   237
   };
 
   const short
@@ -6318,8 +6318,8 @@ namespace isc { namespace dhcp {
        7,     9,   237,   238,   239,   240,   256,   257,   258,   263,
        7,   272,     7,   277,     7,   336,     7,   451,     7,   538,
        7,   555,     7,   487,     7,   493,     7,   517,     7,   427,
-       7,   667,     7,   686,   264,   259,   273,   278,   337,   452,
-     539,   556,   488,   494,   518,   428,   668,   687,   256,   265,
+       7,   668,     7,   687,   264,   259,   273,   278,   337,   452,
+     539,   556,   488,   494,   518,   428,   669,   688,   256,   265,
      266,   237,   261,   262,    10,   274,   276,    11,    14,    26,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
       39,    70,    71,    72,    73,    74,    75,    76,    77,    78,
@@ -6334,8 +6334,8 @@ namespace isc { namespace dhcp {
      316,   317,   318,   319,   320,   322,   324,   325,   326,   327,
      328,   329,   330,   331,   332,   350,   352,   360,   362,   405,
      414,   421,   435,   445,   473,   474,   475,   477,   485,   511,
-     545,   547,   549,   560,   562,   564,   587,   602,   603,   605,
-     655,   665,   684,   693,   717,    15,    16,    19,    22,    23,
+     545,   547,   549,   560,   562,   564,   587,   603,   604,   606,
+     656,   666,   685,   694,   718,    15,    16,    19,    22,    23,
       24,    25,   271,   334,   335,   338,   340,   343,   346,   347,
      348,   349,   545,   547,    99,   100,   101,   122,   126,   127,
      128,   133,   134,   135,   140,   150,   271,   281,   282,   283,
@@ -6356,23 +6356,23 @@ namespace isc { namespace dhcp {
      520,   521,   522,   523,   525,   526,   527,   528,   529,   530,
      545,   547,   153,   154,   271,   429,   430,   431,   433,   191,
      192,   193,   194,   195,   196,   197,   198,   271,   545,   547,
-     669,   670,   671,   672,   674,   675,   677,   678,   679,   682,
-      12,    13,   688,   689,   690,   692,     6,     3,     4,     8,
-       3,   275,     3,     8,   685,   333,   353,     4,     4,     4,
+     670,   671,   672,   673,   675,   676,   678,   679,   680,   683,
+      12,    13,   689,   690,   691,   693,     6,     3,     4,     8,
+       3,   275,     3,     8,   686,   333,   353,     4,     4,     4,
      561,   563,   565,     4,     4,   351,   361,   363,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
      294,     4,     4,     4,     4,     4,   305,   308,   310,     4,
        4,     4,     4,     4,     4,     4,   446,   486,   512,     4,
      297,   314,   478,   546,   548,     4,     4,     4,   406,   588,
-     550,   422,   436,     4,   415,   604,   606,   656,   666,   321,
-     323,     4,     4,     4,   694,   718,     4,     3,     8,   339,
+     550,   422,   436,     4,   415,   605,   607,   657,   667,   321,
+     323,     4,     4,     4,   695,   719,     4,     3,     8,   339,
      341,   344,     4,     4,     4,     4,     3,     8,   458,   460,
      462,   533,   456,   464,     4,   468,   470,   472,   466,   583,
        3,     8,   543,     4,     3,     8,   581,   567,   569,   571,
      575,   573,   579,   577,     8,     3,     8,   502,   380,     4,
      506,   504,   509,     4,     8,     3,   524,     4,     4,     4,
-     531,     8,     3,   432,   434,     3,     8,     4,   673,     4,
-     676,     4,     4,   680,   683,     3,     8,   691,     4,     3,
+     531,     8,     3,   432,   434,     3,     8,     4,   674,     4,
+     677,     4,     4,   681,   684,     3,     8,   692,     4,     3,
        8,   256,   256,   237,     4,     4,     4,     4,   240,   240,
      240,     4,     4,     4,   238,   240,     4,     4,     4,   238,
      238,   238,   238,   238,   240,   239,   239,   239,   238,   239,
@@ -6386,7 +6386,7 @@ namespace isc { namespace dhcp {
      238,   541,     4,     4,     4,     4,     4,     4,     4,     4,
      559,     4,     4,   238,     4,     4,     4,   240,   497,     4,
      240,   240,   240,     4,   521,     4,     4,   430,   240,     4,
-     238,     4,   238,   238,     4,     4,   670,     4,   238,   689,
+     238,     4,   238,   238,     4,     4,   671,     4,   238,   690,
        4,     7,     7,     7,     7,   237,   237,   237,     7,     7,
        5,   237,   201,   202,   203,   204,   240,   306,   237,   237,
        5,     5,     5,   237,   117,   118,   119,   120,   315,     5,
@@ -6395,8 +6395,8 @@ namespace isc { namespace dhcp {
       18,   342,    20,    21,   345,   237,   237,   237,     5,   237,
      237,   267,   267,   267,   237,     7,   237,   267,   237,   237,
      237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
-     237,   267,   237,   260,   237,   237,    18,   199,   681,   200,
-       5,   256,   279,   688,   334,    27,    28,   354,   355,   356,
+     237,   267,   237,   260,   237,   237,    18,   199,   682,   200,
+       5,   256,   279,   689,   334,    27,    28,   354,   355,   356,
      358,    40,    41,    42,    43,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    58,    59,    60,    61,
       62,    63,    64,    65,    66,    67,    68,    69,   271,   368,
@@ -6406,61 +6406,61 @@ namespace isc { namespace dhcp {
      447,   448,   449,     7,   489,   490,   491,     7,   513,   514,
      515,     7,   479,   480,   481,   144,   145,   146,   147,   149,
      407,   408,   409,   410,   411,   412,   413,     7,   589,   590,
-       7,   551,   552,   553,     7,   423,   424,   425,   156,   157,
-     158,   159,   160,   161,   437,   438,   439,   440,   441,   442,
-     443,   444,   164,   165,   166,   271,   416,   417,   418,   419,
-     420,   545,   547,   169,   173,   174,   175,   176,   183,   184,
-     271,   395,   397,   399,   545,   547,   611,   612,   613,   616,
-     618,   620,   621,   622,   632,     7,   607,   608,   609,   187,
-     188,   189,   237,   545,   547,   657,   658,   659,   660,   662,
-     663,   669,     7,   695,   696,   220,   221,   222,   223,   271,
-     719,   720,   721,   722,   723,   724,   268,     7,   534,   535,
-     536,   151,   584,   585,   364,     8,     8,     8,   357,   359,
-       3,     8,   371,   373,   375,   377,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   391,     4,     4,   396,
-     398,   400,   402,   404,     3,     8,     8,   367,     6,     3,
-     450,     6,     3,   492,     6,     3,   516,     6,     3,   482,
-       6,     3,     3,     6,   591,     3,     6,   554,     6,     3,
-     426,     6,     3,     4,     4,     4,     4,     4,     4,     3,
-       8,     4,     4,     4,     3,     8,   614,   617,   619,     4,
-     633,     4,   623,     3,     8,   610,     6,     3,     4,   661,
-       4,   664,     3,     8,     8,   697,     3,     6,     4,     4,
-       4,     4,     3,     8,   237,   269,   270,   537,     6,     3,
-     586,     8,     6,     4,     4,   355,     4,     4,     4,     4,
-     238,   240,   238,   240,   238,   238,   238,   238,   238,   238,
-       4,   240,   238,     4,     4,     4,     4,     4,   369,   368,
-     366,   453,   449,   495,   491,   519,   515,   271,   281,   282,
-     283,   284,   285,   286,   287,   288,   289,   290,   291,   296,
-     299,   300,   301,   302,   303,   304,   307,   309,   311,   312,
-     313,   316,   317,   318,   319,   320,   322,   324,   330,   379,
-     445,   463,   465,   467,   469,   471,   473,   474,   475,   483,
-     484,   511,   545,   547,   560,   562,   564,   582,   481,   408,
-     136,   137,   138,   139,   271,   281,   282,   283,   330,   379,
-     485,   511,   545,   547,   560,   562,   564,   592,   593,   594,
-     595,   596,   598,   600,   601,   590,   557,   553,   429,   425,
-     238,   238,   238,   238,   238,   238,   438,   240,   238,   238,
-     417,     4,     4,     4,   238,     4,   240,     4,   612,   611,
-     609,   240,     4,   238,     4,   658,   211,   213,   214,   271,
-     379,   545,   547,   698,   699,   700,   701,   703,   696,   240,
-     240,   240,   240,   720,     6,     3,   540,   536,     4,   237,
-     237,   237,   237,   237,   237,    55,    56,    57,   392,   237,
-     237,   237,   401,   237,     8,     8,     8,     8,     3,     8,
-     597,   599,     4,     4,     8,     3,     8,     8,   170,   171,
-     172,   615,   237,   237,     7,     5,     8,   237,   256,   704,
-       4,   702,     3,     8,   237,     8,   267,   484,     4,     4,
-     240,   240,   594,    40,   178,   179,   180,   271,   545,   547,
-     634,   635,   636,   639,   641,   643,     7,   624,   625,   626,
-       4,   238,     4,   699,   237,   237,   637,   640,   642,   644,
-       3,     8,   627,     6,     3,     5,   237,     4,     4,     4,
-       4,   635,   185,   271,   379,   545,   547,   628,   629,   630,
-     626,     7,   705,   706,   177,   638,   237,   237,     5,   631,
-       3,     8,   707,     3,     6,     7,   645,   646,   647,     4,
-     629,   212,   215,   216,   217,   218,   708,   709,   710,   712,
-     713,   714,   715,   706,   648,     6,     3,   237,   711,     4,
-       4,     4,   716,     3,     8,   181,   182,   271,   372,   374,
-     545,   547,   649,   650,   651,   653,   647,     4,   240,   238,
-     238,     4,   709,   652,   654,     3,     8,   237,   237,     4,
-       4,   650,   237,   237
+     591,     7,   551,   552,   553,     7,   423,   424,   425,   156,
+     157,   158,   159,   160,   161,   437,   438,   439,   440,   441,
+     442,   443,   444,   164,   165,   166,   271,   416,   417,   418,
+     419,   420,   545,   547,   169,   173,   174,   175,   176,   183,
+     184,   271,   395,   397,   399,   545,   547,   612,   613,   614,
+     617,   619,   621,   622,   623,   633,     7,   608,   609,   610,
+     187,   188,   189,   237,   545,   547,   658,   659,   660,   661,
+     663,   664,   670,     7,   696,   697,   220,   221,   222,   223,
+     271,   720,   721,   722,   723,   724,   725,   268,     7,   534,
+     535,   536,   151,   584,   585,   364,     8,     8,     8,   357,
+     359,     3,     8,   371,   373,   375,   377,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   391,     4,     4,
+     396,   398,   400,   402,   404,     3,     8,     8,   367,     6,
+       3,   450,     6,     3,   492,     6,     3,   516,     6,     3,
+     482,     6,     3,     3,     6,   592,     6,     3,   554,     6,
+       3,   426,     6,     3,     4,     4,     4,     4,     4,     4,
+       3,     8,     4,     4,     4,     3,     8,   615,   618,   620,
+       4,   634,     4,   624,     3,     8,   611,     6,     3,     4,
+     662,     4,   665,     3,     8,     8,   698,     3,     6,     4,
+       4,     4,     4,     3,     8,   237,   269,   270,   537,     6,
+       3,   586,     8,     6,     4,     4,   355,     4,     4,     4,
+       4,   238,   240,   238,   240,   238,   238,   238,   238,   238,
+     238,     4,   240,   238,     4,     4,     4,     4,     4,   369,
+     368,   366,   453,   449,   495,   491,   519,   515,   271,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     296,   299,   300,   301,   302,   303,   304,   307,   309,   311,
+     312,   313,   316,   317,   318,   319,   320,   322,   324,   330,
+     379,   445,   463,   465,   467,   469,   471,   473,   474,   475,
+     483,   484,   511,   545,   547,   560,   562,   564,   582,   481,
+     408,   136,   137,   138,   139,   271,   281,   282,   283,   330,
+     379,   485,   511,   545,   547,   560,   562,   564,   593,   594,
+     595,   596,   597,   599,   601,   602,   591,   557,   553,   429,
+     425,   238,   238,   238,   238,   238,   238,   438,   240,   238,
+     238,   417,     4,     4,     4,   238,     4,   240,     4,   613,
+     612,   610,   240,     4,   238,     4,   659,   211,   213,   214,
+     271,   379,   545,   547,   699,   700,   701,   702,   704,   697,
+     240,   240,   240,   240,   721,     6,     3,   540,   536,     4,
+     237,   237,   237,   237,   237,   237,    55,    56,    57,   392,
+     237,   237,   237,   401,   237,     8,     8,     8,     8,     3,
+       8,   598,   600,     4,     4,     8,     3,     8,     8,   170,
+     171,   172,   616,   237,   237,     7,     5,     8,   237,   256,
+     705,     4,   703,     3,     8,   237,     8,   267,   484,     4,
+       4,   240,   240,   595,    40,   178,   179,   180,   271,   545,
+     547,   635,   636,   637,   640,   642,   644,     7,   625,   626,
+     627,     4,   238,     4,   700,   237,   237,   638,   641,   643,
+     645,     3,     8,   628,     6,     3,     5,   237,     4,     4,
+       4,     4,   636,   185,   271,   379,   545,   547,   629,   630,
+     631,   627,     7,   706,   707,   177,   639,   237,   237,     5,
+     632,     3,     8,   708,     3,     6,     7,   646,   647,   648,
+       4,   630,   212,   215,   216,   217,   218,   709,   710,   711,
+     713,   714,   715,   716,   707,   649,     6,     3,   237,   712,
+       4,     4,     4,   717,     3,     8,   181,   182,   271,   372,
+     374,   545,   547,   650,   651,   652,   654,   648,     4,   240,
+     238,   238,     4,   710,   653,   655,     3,     8,   237,   237,
+       4,     4,   651,   237,   237
   };
 
   const short
@@ -6538,32 +6538,32 @@ namespace isc { namespace dhcp {
      559,   559,   559,   559,   559,   559,   559,   561,   560,   563,
      562,   565,   564,   567,   566,   569,   568,   571,   570,   573,
      572,   575,   574,   577,   576,   579,   578,   581,   580,   583,
-     582,   584,   586,   585,   588,   587,   589,   589,   589,   591,
-     590,   592,   592,   593,   593,   593,   594,   594,   594,   594,
-     594,   594,   594,   594,   594,   594,   594,   594,   594,   594,
-     594,   594,   594,   595,   597,   596,   599,   598,   600,   601,
-     602,   604,   603,   606,   605,   607,   607,   608,   608,   608,
-     610,   609,   611,   611,   611,   612,   612,   612,   612,   612,
-     612,   612,   612,   612,   612,   612,   612,   612,   614,   613,
-     615,   615,   615,   617,   616,   619,   618,   620,   621,   623,
-     622,   624,   624,   625,   625,   625,   627,   626,   628,   628,
-     628,   629,   629,   629,   629,   629,   631,   630,   633,   632,
-     634,   634,   634,   635,   635,   635,   635,   635,   635,   635,
-     637,   636,   638,   640,   639,   642,   641,   644,   643,   645,
-     645,   646,   646,   646,   648,   647,   649,   649,   649,   650,
-     650,   650,   650,   650,   650,   650,   652,   651,   654,   653,
-     656,   655,   657,   657,   657,   658,   658,   658,   658,   658,
-     658,   659,   661,   660,   662,   664,   663,   666,   665,   668,
-     667,   669,   669,   669,   670,   670,   670,   670,   670,   670,
-     670,   670,   670,   670,   670,   671,   673,   672,   674,   676,
-     675,   677,   678,   680,   679,   681,   681,   683,   682,   685,
-     684,   687,   686,   688,   688,   688,   689,   689,   691,   690,
-     692,   694,   693,   695,   695,   695,   697,   696,   698,   698,
-     698,   699,   699,   699,   699,   699,   699,   699,   700,   702,
-     701,   704,   703,   705,   705,   705,   707,   706,   708,   708,
-     708,   709,   709,   709,   709,   709,   711,   710,   712,   713,
-     714,   716,   715,   718,   717,   719,   719,   719,   720,   720,
-     720,   720,   720,   721,   722,   723,   724
+     582,   584,   586,   585,   588,   587,   589,   589,   590,   590,
+     590,   592,   591,   593,   593,   594,   594,   594,   595,   595,
+     595,   595,   595,   595,   595,   595,   595,   595,   595,   595,
+     595,   595,   595,   595,   595,   596,   598,   597,   600,   599,
+     601,   602,   603,   605,   604,   607,   606,   608,   608,   609,
+     609,   609,   611,   610,   612,   612,   612,   613,   613,   613,
+     613,   613,   613,   613,   613,   613,   613,   613,   613,   613,
+     615,   614,   616,   616,   616,   618,   617,   620,   619,   621,
+     622,   624,   623,   625,   625,   626,   626,   626,   628,   627,
+     629,   629,   629,   630,   630,   630,   630,   630,   632,   631,
+     634,   633,   635,   635,   635,   636,   636,   636,   636,   636,
+     636,   636,   638,   637,   639,   641,   640,   643,   642,   645,
+     644,   646,   646,   647,   647,   647,   649,   648,   650,   650,
+     650,   651,   651,   651,   651,   651,   651,   651,   653,   652,
+     655,   654,   657,   656,   658,   658,   658,   659,   659,   659,
+     659,   659,   659,   660,   662,   661,   663,   665,   664,   667,
+     666,   669,   668,   670,   670,   670,   671,   671,   671,   671,
+     671,   671,   671,   671,   671,   671,   671,   672,   674,   673,
+     675,   677,   676,   678,   679,   681,   680,   682,   682,   684,
+     683,   686,   685,   688,   687,   689,   689,   689,   690,   690,
+     692,   691,   693,   695,   694,   696,   696,   696,   698,   697,
+     699,   699,   699,   700,   700,   700,   700,   700,   700,   700,
+     701,   703,   702,   705,   704,   706,   706,   706,   708,   707,
+     709,   709,   709,   710,   710,   710,   710,   710,   712,   711,
+     713,   714,   715,   717,   716,   719,   718,   720,   720,   720,
+     721,   721,   721,   721,   721,   722,   723,   724,   725
   };
 
   const signed char
@@ -6641,32 +6641,32 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       6,     1,     0,     4,     0,     6,     1,     3,     2,     0,
-       4,     0,     1,     1,     3,     2,     1,     1,     1,     1,
+       6,     1,     0,     4,     0,     6,     0,     1,     1,     3,
+       2,     0,     4,     0,     1,     1,     3,     2,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     3,     3,
-       3,     0,     6,     0,     6,     0,     1,     1,     3,     2,
-       0,     4,     1,     3,     2,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       1,     1,     1,     0,     4,     0,     4,     3,     3,     0,
-       6,     0,     1,     1,     3,     2,     0,     4,     1,     3,
-       2,     1,     1,     1,     1,     1,     0,     4,     0,     6,
-       1,     3,     2,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     1,     0,     4,     0,     4,     0,     6,     0,
-       1,     1,     3,     2,     0,     4,     1,     3,     2,     1,
        1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       3,     3,     3,     0,     6,     0,     6,     0,     1,     1,
+       3,     2,     0,     4,     1,     3,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       0,     4,     1,     1,     1,     0,     4,     0,     4,     3,
+       3,     0,     6,     0,     1,     1,     3,     2,     0,     4,
+       1,     3,     2,     1,     1,     1,     1,     1,     0,     4,
        0,     6,     1,     3,     2,     1,     1,     1,     1,     1,
-       1,     3,     0,     4,     3,     0,     4,     0,     6,     0,
-       4,     1,     3,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     0,     4,     3,     0,
-       4,     3,     3,     0,     4,     1,     1,     0,     4,     0,
-       6,     0,     4,     1,     3,     2,     1,     1,     0,     6,
-       3,     0,     6,     1,     3,     2,     0,     4,     1,     3,
-       2,     1,     1,     1,     1,     1,     1,     1,     3,     0,
-       4,     0,     6,     1,     3,     2,     0,     4,     1,     3,
-       2,     1,     1,     1,     1,     1,     0,     4,     3,     3,
-       3,     0,     4,     0,     6,     1,     3,     2,     1,     1,
-       1,     1,     1,     3,     3,     3,     3
+       1,     1,     0,     4,     1,     0,     4,     0,     4,     0,
+       6,     0,     1,     1,     3,     2,     0,     4,     1,     3,
+       2,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     6,     1,     3,     2,     1,     1,     1,
+       1,     1,     1,     3,     0,     4,     3,     0,     4,     0,
+       6,     0,     4,     1,     3,     2,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     3,     0,     4,
+       3,     0,     4,     3,     3,     0,     4,     1,     1,     0,
+       4,     0,     6,     0,     4,     1,     3,     2,     1,     1,
+       0,     6,     3,     0,     6,     1,     3,     2,     0,     4,
+       1,     3,     2,     1,     1,     1,     1,     1,     1,     1,
+       3,     0,     4,     0,     6,     1,     3,     2,     0,     4,
+       1,     3,     2,     1,     1,     1,     1,     1,     0,     4,
+       3,     3,     3,     0,     4,     0,     6,     1,     3,     2,
+       1,     1,     1,     1,     1,     3,     3,     3,     3
   };
 
 
@@ -6843,9 +6843,10 @@ namespace isc { namespace dhcp {
   "client_id_value", "$@101", "circuit_id_value", "$@102", "flex_id_value",
   "$@103", "hostname", "$@104", "reservation_client_classes", "$@105",
   "relay", "$@106", "relay_map", "ip_addresses", "$@107", "client_classes",
-  "$@108", "client_classes_list", "client_class_entry", "$@109",
-  "client_class_params", "not_empty_client_class_params",
-  "client_class_param", "client_class_name", "client_class_test", "$@110",
+  "$@108", "client_classes_list", "not_empty_classes_list",
+  "client_class_entry", "$@109", "client_class_params",
+  "not_empty_client_class_params", "client_class_param",
+  "client_class_name", "client_class_test", "$@110",
   "client_class_template_test", "$@111", "only_if_required",
   "only_in_additional_list", "dhcp4o6_port", "control_socket", "$@112",
   "control_sockets", "$@113", "control_socket_list",
@@ -6958,32 +6959,32 @@ namespace isc { namespace dhcp {
     2405,  2406,  2407,  2408,  2409,  2410,  2411,  2414,  2414,  2423,
     2423,  2432,  2432,  2441,  2441,  2450,  2450,  2459,  2459,  2468,
     2468,  2477,  2477,  2486,  2486,  2495,  2495,  2504,  2504,  2518,
-    2518,  2529,  2532,  2532,  2546,  2546,  2557,  2558,  2559,  2564,
-    2564,  2574,  2575,  2578,  2579,  2580,  2585,  2586,  2587,  2588,
-    2589,  2590,  2591,  2592,  2593,  2594,  2595,  2596,  2597,  2598,
-    2599,  2600,  2601,  2604,  2606,  2606,  2615,  2615,  2625,  2631,
-    2639,  2647,  2647,  2659,  2659,  2671,  2672,  2675,  2676,  2677,
-    2682,  2682,  2690,  2691,  2692,  2697,  2698,  2699,  2700,  2701,
-    2702,  2703,  2704,  2705,  2706,  2707,  2708,  2709,  2712,  2712,
-    2721,  2722,  2723,  2726,  2726,  2736,  2736,  2746,  2752,  2758,
-    2758,  2769,  2770,  2773,  2774,  2775,  2780,  2780,  2788,  2789,
-    2790,  2795,  2796,  2797,  2798,  2799,  2802,  2802,  2813,  2813,
-    2826,  2827,  2828,  2833,  2834,  2835,  2836,  2837,  2838,  2839,
-    2842,  2842,  2850,  2853,  2853,  2862,  2862,  2871,  2871,  2882,
-    2883,  2886,  2887,  2888,  2893,  2893,  2901,  2902,  2903,  2908,
-    2909,  2910,  2911,  2912,  2913,  2914,  2917,  2917,  2926,  2926,
-    2937,  2937,  2950,  2951,  2952,  2957,  2958,  2959,  2960,  2961,
-    2962,  2965,  2971,  2971,  2980,  2986,  2986,  2996,  2996,  3009,
-    3009,  3019,  3020,  3021,  3026,  3027,  3028,  3029,  3030,  3031,
-    3032,  3033,  3034,  3035,  3036,  3039,  3045,  3045,  3054,  3060,
-    3060,  3069,  3075,  3081,  3081,  3090,  3091,  3094,  3094,  3105,
-    3105,  3117,  3117,  3127,  3128,  3129,  3135,  3136,  3139,  3139,
-    3150,  3158,  3158,  3171,  3172,  3173,  3179,  3179,  3187,  3188,
-    3189,  3194,  3195,  3196,  3197,  3198,  3199,  3200,  3203,  3209,
-    3209,  3218,  3218,  3229,  3230,  3231,  3236,  3236,  3244,  3245,
-    3246,  3251,  3252,  3253,  3254,  3255,  3258,  3258,  3267,  3273,
-    3279,  3285,  3285,  3294,  3294,  3305,  3306,  3307,  3312,  3313,
-    3314,  3315,  3316,  3319,  3325,  3331,  3337
+    2518,  2529,  2532,  2532,  2546,  2546,  2557,  2558,  2561,  2562,
+    2563,  2568,  2568,  2578,  2579,  2582,  2583,  2584,  2589,  2590,
+    2591,  2592,  2593,  2594,  2595,  2596,  2597,  2598,  2599,  2600,
+    2601,  2602,  2603,  2604,  2605,  2608,  2610,  2610,  2619,  2619,
+    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
   };
 
   void
@@ -7016,9 +7017,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 7020 "dhcp4_parser.cc"
+#line 7021 "dhcp4_parser.cc"
 
-#line 3343 "dhcp4_parser.yy"
+#line 3347 "dhcp4_parser.yy"
 
 
 void
index 96e6c9c8187329d599e36af4c06fbda4666d8955..9f0248b3475b4e488d34cd933625841737583208 100644 (file)
@@ -1347,141 +1347,142 @@ namespace isc { namespace dhcp {
         S_client_classes = 587,                  // client_classes
         S_588_108 = 588,                         // $@108
         S_client_classes_list = 589,             // client_classes_list
-        S_client_class_entry = 590,              // client_class_entry
-        S_591_109 = 591,                         // $@109
-        S_client_class_params = 592,             // client_class_params
-        S_not_empty_client_class_params = 593,   // not_empty_client_class_params
-        S_client_class_param = 594,              // client_class_param
-        S_client_class_name = 595,               // client_class_name
-        S_client_class_test = 596,               // client_class_test
-        S_597_110 = 597,                         // $@110
-        S_client_class_template_test = 598,      // client_class_template_test
-        S_599_111 = 599,                         // $@111
-        S_only_if_required = 600,                // only_if_required
-        S_only_in_additional_list = 601,         // only_in_additional_list
-        S_dhcp4o6_port = 602,                    // dhcp4o6_port
-        S_control_socket = 603,                  // control_socket
-        S_604_112 = 604,                         // $@112
-        S_control_sockets = 605,                 // control_sockets
-        S_606_113 = 606,                         // $@113
-        S_control_socket_list = 607,             // control_socket_list
-        S_not_empty_control_socket_list = 608,   // not_empty_control_socket_list
-        S_control_socket_entry = 609,            // control_socket_entry
-        S_610_114 = 610,                         // $@114
-        S_control_socket_params = 611,           // control_socket_params
-        S_control_socket_param = 612,            // control_socket_param
-        S_control_socket_type = 613,             // control_socket_type
-        S_614_115 = 614,                         // $@115
-        S_control_socket_type_value = 615,       // control_socket_type_value
-        S_control_socket_name = 616,             // control_socket_name
-        S_617_116 = 617,                         // $@116
-        S_control_socket_address = 618,          // control_socket_address
-        S_619_117 = 619,                         // $@117
-        S_control_socket_port = 620,             // control_socket_port
-        S_cert_required = 621,                   // cert_required
-        S_http_headers = 622,                    // http_headers
-        S_623_118 = 623,                         // $@118
-        S_http_header_list = 624,                // http_header_list
-        S_not_empty_http_header_list = 625,      // not_empty_http_header_list
-        S_http_header = 626,                     // http_header
-        S_627_119 = 627,                         // $@119
-        S_http_header_params = 628,              // http_header_params
-        S_http_header_param = 629,               // http_header_param
-        S_header_value = 630,                    // header_value
-        S_631_120 = 631,                         // $@120
-        S_authentication = 632,                  // authentication
-        S_633_121 = 633,                         // $@121
-        S_auth_params = 634,                     // auth_params
-        S_auth_param = 635,                      // auth_param
-        S_auth_type = 636,                       // auth_type
-        S_637_122 = 637,                         // $@122
-        S_auth_type_value = 638,                 // auth_type_value
-        S_realm = 639,                           // realm
-        S_640_123 = 640,                         // $@123
-        S_directory = 641,                       // directory
-        S_642_124 = 642,                         // $@124
-        S_clients = 643,                         // clients
-        S_644_125 = 644,                         // $@125
-        S_clients_list = 645,                    // clients_list
-        S_not_empty_clients_list = 646,          // not_empty_clients_list
-        S_basic_auth = 647,                      // basic_auth
-        S_648_126 = 648,                         // $@126
-        S_clients_params = 649,                  // clients_params
-        S_clients_param = 650,                   // clients_param
-        S_user_file = 651,                       // user_file
-        S_652_127 = 652,                         // $@127
-        S_password_file = 653,                   // password_file
-        S_654_128 = 654,                         // $@128
-        S_dhcp_queue_control = 655,              // dhcp_queue_control
-        S_656_129 = 656,                         // $@129
-        S_queue_control_params = 657,            // queue_control_params
-        S_queue_control_param = 658,             // queue_control_param
-        S_enable_queue = 659,                    // enable_queue
-        S_queue_type = 660,                      // queue_type
-        S_661_130 = 661,                         // $@130
-        S_capacity = 662,                        // capacity
-        S_arbitrary_map_entry = 663,             // arbitrary_map_entry
-        S_664_131 = 664,                         // $@131
-        S_dhcp_ddns = 665,                       // dhcp_ddns
-        S_666_132 = 666,                         // $@132
-        S_sub_dhcp_ddns = 667,                   // sub_dhcp_ddns
-        S_668_133 = 668,                         // $@133
-        S_dhcp_ddns_params = 669,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 670,                 // dhcp_ddns_param
-        S_enable_updates = 671,                  // enable_updates
-        S_server_ip = 672,                       // server_ip
-        S_673_134 = 673,                         // $@134
-        S_server_port = 674,                     // server_port
-        S_sender_ip = 675,                       // sender_ip
-        S_676_135 = 676,                         // $@135
-        S_sender_port = 677,                     // sender_port
-        S_max_queue_size = 678,                  // max_queue_size
-        S_ncr_protocol = 679,                    // ncr_protocol
-        S_680_136 = 680,                         // $@136
-        S_ncr_protocol_value = 681,              // ncr_protocol_value
-        S_ncr_format = 682,                      // ncr_format
-        S_683_137 = 683,                         // $@137
-        S_config_control = 684,                  // config_control
-        S_685_138 = 685,                         // $@138
-        S_sub_config_control = 686,              // sub_config_control
-        S_687_139 = 687,                         // $@139
-        S_config_control_params = 688,           // config_control_params
-        S_config_control_param = 689,            // config_control_param
-        S_config_databases = 690,                // config_databases
-        S_691_140 = 691,                         // $@140
-        S_config_fetch_wait_time = 692,          // config_fetch_wait_time
-        S_loggers = 693,                         // loggers
-        S_694_141 = 694,                         // $@141
-        S_loggers_entries = 695,                 // loggers_entries
-        S_logger_entry = 696,                    // logger_entry
-        S_697_142 = 697,                         // $@142
-        S_logger_params = 698,                   // logger_params
-        S_logger_param = 699,                    // logger_param
-        S_debuglevel = 700,                      // debuglevel
-        S_severity = 701,                        // severity
-        S_702_143 = 702,                         // $@143
-        S_output_options_list = 703,             // output_options_list
-        S_704_144 = 704,                         // $@144
-        S_output_options_list_content = 705,     // output_options_list_content
-        S_output_entry = 706,                    // output_entry
-        S_707_145 = 707,                         // $@145
-        S_output_params_list = 708,              // output_params_list
-        S_output_params = 709,                   // output_params
-        S_output = 710,                          // output
-        S_711_146 = 711,                         // $@146
-        S_flush = 712,                           // flush
-        S_maxsize = 713,                         // maxsize
-        S_maxver = 714,                          // maxver
-        S_pattern = 715,                         // pattern
-        S_716_147 = 716,                         // $@147
-        S_compatibility = 717,                   // compatibility
-        S_718_148 = 718,                         // $@148
-        S_compatibility_params = 719,            // compatibility_params
-        S_compatibility_param = 720,             // compatibility_param
-        S_lenient_option_parsing = 721,          // lenient_option_parsing
-        S_ignore_dhcp_server_identifier = 722,   // ignore_dhcp_server_identifier
-        S_ignore_rai_link_selection = 723,       // ignore_rai_link_selection
-        S_exclude_first_last_24 = 724            // exclude_first_last_24
+        S_not_empty_classes_list = 590,          // not_empty_classes_list
+        S_client_class_entry = 591,              // client_class_entry
+        S_592_109 = 592,                         // $@109
+        S_client_class_params = 593,             // client_class_params
+        S_not_empty_client_class_params = 594,   // not_empty_client_class_params
+        S_client_class_param = 595,              // client_class_param
+        S_client_class_name = 596,               // client_class_name
+        S_client_class_test = 597,               // client_class_test
+        S_598_110 = 598,                         // $@110
+        S_client_class_template_test = 599,      // client_class_template_test
+        S_600_111 = 600,                         // $@111
+        S_only_if_required = 601,                // only_if_required
+        S_only_in_additional_list = 602,         // only_in_additional_list
+        S_dhcp4o6_port = 603,                    // dhcp4o6_port
+        S_control_socket = 604,                  // control_socket
+        S_605_112 = 605,                         // $@112
+        S_control_sockets = 606,                 // control_sockets
+        S_607_113 = 607,                         // $@113
+        S_control_socket_list = 608,             // control_socket_list
+        S_not_empty_control_socket_list = 609,   // not_empty_control_socket_list
+        S_control_socket_entry = 610,            // control_socket_entry
+        S_611_114 = 611,                         // $@114
+        S_control_socket_params = 612,           // control_socket_params
+        S_control_socket_param = 613,            // control_socket_param
+        S_control_socket_type = 614,             // control_socket_type
+        S_615_115 = 615,                         // $@115
+        S_control_socket_type_value = 616,       // control_socket_type_value
+        S_control_socket_name = 617,             // control_socket_name
+        S_618_116 = 618,                         // $@116
+        S_control_socket_address = 619,          // control_socket_address
+        S_620_117 = 620,                         // $@117
+        S_control_socket_port = 621,             // control_socket_port
+        S_cert_required = 622,                   // cert_required
+        S_http_headers = 623,                    // http_headers
+        S_624_118 = 624,                         // $@118
+        S_http_header_list = 625,                // http_header_list
+        S_not_empty_http_header_list = 626,      // not_empty_http_header_list
+        S_http_header = 627,                     // http_header
+        S_628_119 = 628,                         // $@119
+        S_http_header_params = 629,              // http_header_params
+        S_http_header_param = 630,               // http_header_param
+        S_header_value = 631,                    // header_value
+        S_632_120 = 632,                         // $@120
+        S_authentication = 633,                  // authentication
+        S_634_121 = 634,                         // $@121
+        S_auth_params = 635,                     // auth_params
+        S_auth_param = 636,                      // auth_param
+        S_auth_type = 637,                       // auth_type
+        S_638_122 = 638,                         // $@122
+        S_auth_type_value = 639,                 // auth_type_value
+        S_realm = 640,                           // realm
+        S_641_123 = 641,                         // $@123
+        S_directory = 642,                       // directory
+        S_643_124 = 643,                         // $@124
+        S_clients = 644,                         // clients
+        S_645_125 = 645,                         // $@125
+        S_clients_list = 646,                    // clients_list
+        S_not_empty_clients_list = 647,          // not_empty_clients_list
+        S_basic_auth = 648,                      // basic_auth
+        S_649_126 = 649,                         // $@126
+        S_clients_params = 650,                  // clients_params
+        S_clients_param = 651,                   // clients_param
+        S_user_file = 652,                       // user_file
+        S_653_127 = 653,                         // $@127
+        S_password_file = 654,                   // password_file
+        S_655_128 = 655,                         // $@128
+        S_dhcp_queue_control = 656,              // dhcp_queue_control
+        S_657_129 = 657,                         // $@129
+        S_queue_control_params = 658,            // queue_control_params
+        S_queue_control_param = 659,             // queue_control_param
+        S_enable_queue = 660,                    // enable_queue
+        S_queue_type = 661,                      // queue_type
+        S_662_130 = 662,                         // $@130
+        S_capacity = 663,                        // capacity
+        S_arbitrary_map_entry = 664,             // arbitrary_map_entry
+        S_665_131 = 665,                         // $@131
+        S_dhcp_ddns = 666,                       // dhcp_ddns
+        S_667_132 = 667,                         // $@132
+        S_sub_dhcp_ddns = 668,                   // sub_dhcp_ddns
+        S_669_133 = 669,                         // $@133
+        S_dhcp_ddns_params = 670,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 671,                 // dhcp_ddns_param
+        S_enable_updates = 672,                  // enable_updates
+        S_server_ip = 673,                       // server_ip
+        S_674_134 = 674,                         // $@134
+        S_server_port = 675,                     // server_port
+        S_sender_ip = 676,                       // sender_ip
+        S_677_135 = 677,                         // $@135
+        S_sender_port = 678,                     // sender_port
+        S_max_queue_size = 679,                  // max_queue_size
+        S_ncr_protocol = 680,                    // ncr_protocol
+        S_681_136 = 681,                         // $@136
+        S_ncr_protocol_value = 682,              // ncr_protocol_value
+        S_ncr_format = 683,                      // ncr_format
+        S_684_137 = 684,                         // $@137
+        S_config_control = 685,                  // config_control
+        S_686_138 = 686,                         // $@138
+        S_sub_config_control = 687,              // sub_config_control
+        S_688_139 = 688,                         // $@139
+        S_config_control_params = 689,           // config_control_params
+        S_config_control_param = 690,            // config_control_param
+        S_config_databases = 691,                // config_databases
+        S_692_140 = 692,                         // $@140
+        S_config_fetch_wait_time = 693,          // config_fetch_wait_time
+        S_loggers = 694,                         // loggers
+        S_695_141 = 695,                         // $@141
+        S_loggers_entries = 696,                 // loggers_entries
+        S_logger_entry = 697,                    // logger_entry
+        S_698_142 = 698,                         // $@142
+        S_logger_params = 699,                   // logger_params
+        S_logger_param = 700,                    // logger_param
+        S_debuglevel = 701,                      // debuglevel
+        S_severity = 702,                        // severity
+        S_703_143 = 703,                         // $@143
+        S_output_options_list = 704,             // output_options_list
+        S_705_144 = 705,                         // $@144
+        S_output_options_list_content = 706,     // output_options_list_content
+        S_output_entry = 707,                    // output_entry
+        S_708_145 = 708,                         // $@145
+        S_output_params_list = 709,              // output_params_list
+        S_output_params = 710,                   // output_params
+        S_output = 711,                          // output
+        S_712_146 = 712,                         // $@146
+        S_flush = 713,                           // flush
+        S_maxsize = 714,                         // maxsize
+        S_maxver = 715,                          // maxver
+        S_pattern = 716,                         // pattern
+        S_717_147 = 717,                         // $@147
+        S_compatibility = 718,                   // compatibility
+        S_719_148 = 719,                         // $@148
+        S_compatibility_params = 720,            // compatibility_params
+        S_compatibility_param = 721,             // compatibility_param
+        S_lenient_option_parsing = 722,          // lenient_option_parsing
+        S_ignore_dhcp_server_identifier = 723,   // ignore_dhcp_server_identifier
+        S_ignore_rai_link_selection = 724,       // ignore_rai_link_selection
+        S_exclude_first_last_24 = 725            // exclude_first_last_24
       };
     };
 
@@ -5837,8 +5838,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1713,     ///< Last index in yytable_.
-      yynnts_ = 484,  ///< Number of nonterminal symbols.
+      yylast_ = 1714,     ///< Last index in yytable_.
+      yynnts_ = 485,  ///< Number of nonterminal symbols.
       yyfinal_ = 28 ///< Termination state number.
     };
 
@@ -6087,7 +6088,7 @@ switch (yykind)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 6091 "dhcp4_parser.h"
+#line 6092 "dhcp4_parser.h"
 
 
 
index e459ae1134bf77c7b6f2195f1731dd0b14d026f7..dfc41d404d1f611e9554e8ee9bc4f78f51e5be67 100644 (file)
@@ -2554,13 +2554,17 @@ client_classes: CLIENT_CLASSES {
     ctx.leave();
 };
 
-client_classes_list: client_class_entry
-                   | client_classes_list COMMA client_class_entry
-                   | client_classes_list COMMA {
-                       ctx.warnAboutExtraCommas(@2);
-                       }
+client_classes_list: %empty
+                   | not_empty_classes_list
                    ;
 
+not_empty_classes_list: client_class_entry
+                      | not_empty_classes_list COMMA client_class_entry
+                      | not_empty_classes_list COMMA {
+                          ctx.warnAboutExtraCommas(@2);
+                          }
+                      ;
+
 client_class_entry: LCURLY_BRACKET {
     ElementPtr m(new MapElement(ctx.loc2pos(@1)));
     ctx.stack_.back()->add(m);
index f1d325235d25ac9ca31dd83a1b1abbfa9e9e7679..17c213a3c0998d1dbcd26a4c05b347dbc4aefce1 100644 (file)
@@ -629,6 +629,38 @@ TEST_F(ClassifyTest, fixedFieldsInformFile2) {
     testFixedFields(CONFIGS[0], DHCPINFORM, pxe, "0.0.0.0", "", "ipxe.efi");
 }
 
+// This test checks that empty client classes is supported.
+TEST_F(ClassifyTest, emptyClientClasses) {
+    std::string config =
+        "{"
+        "\"interfaces-config\": {"
+        "   \"interfaces\": [ \"*\" ]"
+        "},"
+        "\"valid-lifetime\": 600,"
+        "\"client-classes\": ["
+        "],"
+        "\"shared-networks\": [ {"
+        "    \"name\": \"frog\","
+        "    \"subnet4\": [ { "
+        "        \"subnet\": \"10.0.0.0/24\","
+        "        \"id\": 1,"
+        "        \"pools\": [ { "
+        "            \"pool\": \"10.0.0.10-10.0.0.100\""
+        "         } ]"
+        "    } ]"
+        "} ]"
+        "}";
+
+    // Check the config can be parsed.
+    EXPECT_NO_THROW(parseDHCP4(config));
+
+    // Create a client.
+    Dhcp4Client client(srv_, Dhcp4Client::SELECTING);
+
+    // Load the config.
+    configure(config, *client.getServer());
+}
+
 // This test checks that it is possible to specify static reservations for
 // client classes.
 TEST_F(ClassifyTest, clientClassesInHostReservations) {
index 99d0bb6b3b5fd32219ae9d0686e5c3afb45cf03f..c7d86952dfd68dca03d137ed77b5db685ae8a1dd 100644 (file)
@@ -4072,16 +4072,16 @@ namespace isc { namespace dhcp {
 #line 4073 "dhcp6_parser.cc"
     break;
 
-  case 749: // client_classes_list: client_classes_list ","
-#line 2639 "dhcp6_parser.yy"
-                                               {
-                       ctx.warnAboutExtraCommas(yystack_[0].location);
-                       }
+  case 751: // not_empty_classes_list: not_empty_classes_list ","
+#line 2643 "dhcp6_parser.yy"
+                                                     {
+                          ctx.warnAboutExtraCommas(yystack_[0].location);
+                          }
 #line 4081 "dhcp6_parser.cc"
     break;
 
-  case 750: // $@111: %empty
-#line 2644 "dhcp6_parser.yy"
+  case 752: // $@111: %empty
+#line 2648 "dhcp6_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4090,8 +4090,8 @@ namespace isc { namespace dhcp {
 #line 4091 "dhcp6_parser.cc"
     break;
 
-  case 751: // client_class_entry: "{" $@111 client_class_params "}"
-#line 2648 "dhcp6_parser.yy"
+  case 753: // client_class_entry: "{" $@111 client_class_params "}"
+#line 2652 "dhcp6_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -4100,16 +4100,16 @@ namespace isc { namespace dhcp {
 #line 4101 "dhcp6_parser.cc"
     break;
 
-  case 756: // not_empty_client_class_params: not_empty_client_class_params ","
-#line 2660 "dhcp6_parser.yy"
+  case 758: // not_empty_client_class_params: not_empty_client_class_params ","
+#line 2664 "dhcp6_parser.yy"
                                           {
         ctx.warnAboutExtraCommas(yystack_[0].location);
         }
 #line 4109 "dhcp6_parser.cc"
     break;
 
-  case 773: // $@112: %empty
-#line 2684 "dhcp6_parser.yy"
+  case 775: // $@112: %empty
+#line 2688 "dhcp6_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4117,8 +4117,8 @@ namespace isc { namespace dhcp {
 #line 4118 "dhcp6_parser.cc"
     break;
 
-  case 774: // client_class_test: "test" $@112 ":" "constant string"
-#line 2687 "dhcp6_parser.yy"
+  case 776: // client_class_test: "test" $@112 ":" "constant string"
+#line 2691 "dhcp6_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -4127,8 +4127,8 @@ namespace isc { namespace dhcp {
 #line 4128 "dhcp6_parser.cc"
     break;
 
-  case 775: // $@113: %empty
-#line 2693 "dhcp6_parser.yy"
+  case 777: // $@113: %empty
+#line 2697 "dhcp6_parser.yy"
                                           {
     ctx.unique("template-test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4136,8 +4136,8 @@ namespace isc { namespace dhcp {
 #line 4137 "dhcp6_parser.cc"
     break;
 
-  case 776: // client_class_template_test: "template-test" $@113 ":" "constant string"
-#line 2696 "dhcp6_parser.yy"
+  case 778: // client_class_template_test: "template-test" $@113 ":" "constant string"
+#line 2700 "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);
@@ -4146,8 +4146,8 @@ namespace isc { namespace dhcp {
 #line 4147 "dhcp6_parser.cc"
     break;
 
-  case 777: // only_if_required: "only-if-required" ":" "boolean"
-#line 2703 "dhcp6_parser.yy"
+  case 779: // only_if_required: "only-if-required" ":" "boolean"
+#line 2707 "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)));
@@ -4156,8 +4156,8 @@ namespace isc { namespace dhcp {
 #line 4157 "dhcp6_parser.cc"
     break;
 
-  case 778: // only_in_additional_list: "only-in-additional-list" ":" "boolean"
-#line 2709 "dhcp6_parser.yy"
+  case 780: // only_in_additional_list: "only-in-additional-list" ":" "boolean"
+#line 2713 "dhcp6_parser.yy"
                                                                {
     ctx.unique("only-in-additional-list", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -4166,8 +4166,8 @@ namespace isc { namespace dhcp {
 #line 4167 "dhcp6_parser.cc"
     break;
 
-  case 779: // $@114: %empty
-#line 2718 "dhcp6_parser.yy"
+  case 781: // $@114: %empty
+#line 2722 "dhcp6_parser.yy"
                      {
     ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4178,8 +4178,8 @@ namespace isc { namespace dhcp {
 #line 4179 "dhcp6_parser.cc"
     break;
 
-  case 780: // server_id: "server-id" $@114 ":" "{" server_id_params "}"
-#line 2724 "dhcp6_parser.yy"
+  case 782: // server_id: "server-id" $@114 ":" "{" server_id_params "}"
+#line 2728 "dhcp6_parser.yy"
                                                        {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4189,16 +4189,16 @@ namespace isc { namespace dhcp {
 #line 4190 "dhcp6_parser.cc"
     break;
 
-  case 783: // server_id_params: server_id_params ","
-#line 2733 "dhcp6_parser.yy"
+  case 785: // server_id_params: server_id_params ","
+#line 2737 "dhcp6_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
 #line 4198 "dhcp6_parser.cc"
     break;
 
-  case 793: // $@115: %empty
-#line 2749 "dhcp6_parser.yy"
+  case 795: // $@115: %empty
+#line 2753 "dhcp6_parser.yy"
                      {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DUID_TYPE);
@@ -4206,8 +4206,8 @@ namespace isc { namespace dhcp {
 #line 4207 "dhcp6_parser.cc"
     break;
 
-  case 794: // server_id_type: "type" $@115 ":" duid_type
-#line 2752 "dhcp6_parser.yy"
+  case 796: // server_id_type: "type" $@115 ":" duid_type
+#line 2756 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4215,26 +4215,26 @@ namespace isc { namespace dhcp {
 #line 4216 "dhcp6_parser.cc"
     break;
 
-  case 795: // duid_type: "LLT"
-#line 2757 "dhcp6_parser.yy"
+  case 797: // duid_type: "LLT"
+#line 2761 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 4222 "dhcp6_parser.cc"
     break;
 
-  case 796: // duid_type: "EN"
-#line 2758 "dhcp6_parser.yy"
+  case 798: // duid_type: "EN"
+#line 2762 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
 #line 4228 "dhcp6_parser.cc"
     break;
 
-  case 797: // duid_type: "LL"
-#line 2759 "dhcp6_parser.yy"
+  case 799: // duid_type: "LL"
+#line 2763 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
 #line 4234 "dhcp6_parser.cc"
     break;
 
-  case 798: // htype: "htype" ":" "integer"
-#line 2762 "dhcp6_parser.yy"
+  case 800: // htype: "htype" ":" "integer"
+#line 2766 "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)));
@@ -4243,8 +4243,8 @@ namespace isc { namespace dhcp {
 #line 4244 "dhcp6_parser.cc"
     break;
 
-  case 799: // $@116: %empty
-#line 2768 "dhcp6_parser.yy"
+  case 801: // $@116: %empty
+#line 2772 "dhcp6_parser.yy"
                        {
     ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4252,8 +4252,8 @@ namespace isc { namespace dhcp {
 #line 4253 "dhcp6_parser.cc"
     break;
 
-  case 800: // identifier: "identifier" $@116 ":" "constant string"
-#line 2771 "dhcp6_parser.yy"
+  case 802: // identifier: "identifier" $@116 ":" "constant string"
+#line 2775 "dhcp6_parser.yy"
                {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
@@ -4262,8 +4262,8 @@ namespace isc { namespace dhcp {
 #line 4263 "dhcp6_parser.cc"
     break;
 
-  case 801: // time: "time" ":" "integer"
-#line 2777 "dhcp6_parser.yy"
+  case 803: // time: "time" ":" "integer"
+#line 2781 "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)));
@@ -4272,8 +4272,8 @@ namespace isc { namespace dhcp {
 #line 4273 "dhcp6_parser.cc"
     break;
 
-  case 802: // enterprise_id: "enterprise-id" ":" "integer"
-#line 2783 "dhcp6_parser.yy"
+  case 804: // enterprise_id: "enterprise-id" ":" "integer"
+#line 2787 "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)));
@@ -4282,8 +4282,8 @@ namespace isc { namespace dhcp {
 #line 4283 "dhcp6_parser.cc"
     break;
 
-  case 803: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2791 "dhcp6_parser.yy"
+  case 805: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
+#line 2795 "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)));
@@ -4292,8 +4292,8 @@ namespace isc { namespace dhcp {
 #line 4293 "dhcp6_parser.cc"
     break;
 
-  case 804: // $@117: %empty
-#line 2799 "dhcp6_parser.yy"
+  case 806: // $@117: %empty
+#line 2803 "dhcp6_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location));
@@ -4305,8 +4305,8 @@ namespace isc { namespace dhcp {
 #line 4306 "dhcp6_parser.cc"
     break;
 
-  case 805: // control_socket: "control-socket" $@117 ":" "{" control_socket_params "}"
-#line 2806 "dhcp6_parser.yy"
+  case 807: // control_socket: "control-socket" $@117 ":" "{" control_socket_params "}"
+#line 2810 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4314,8 +4314,8 @@ namespace isc { namespace dhcp {
 #line 4315 "dhcp6_parser.cc"
     break;
 
-  case 806: // $@118: %empty
-#line 2811 "dhcp6_parser.yy"
+  case 808: // $@118: %empty
+#line 2815 "dhcp6_parser.yy"
                                  {
     ctx.unique("control-sockets", ctx.loc2pos(yystack_[0].location));
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
@@ -4327,8 +4327,8 @@ namespace isc { namespace dhcp {
 #line 4328 "dhcp6_parser.cc"
     break;
 
-  case 807: // control_sockets: "control-sockets" $@118 ":" "[" control_socket_list "]"
-#line 2818 "dhcp6_parser.yy"
+  case 809: // control_sockets: "control-sockets" $@118 ":" "[" control_socket_list "]"
+#line 2822 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4336,16 +4336,16 @@ namespace isc { namespace dhcp {
 #line 4337 "dhcp6_parser.cc"
     break;
 
-  case 812: // not_empty_control_socket_list: not_empty_control_socket_list ","
-#line 2829 "dhcp6_parser.yy"
+  case 814: // not_empty_control_socket_list: not_empty_control_socket_list ","
+#line 2833 "dhcp6_parser.yy"
                                                                    {
                                  ctx.warnAboutExtraCommas(yystack_[0].location);
                                  }
 #line 4345 "dhcp6_parser.cc"
     break;
 
-  case 813: // $@119: %empty
-#line 2834 "dhcp6_parser.yy"
+  case 815: // $@119: %empty
+#line 2838 "dhcp6_parser.yy"
                                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4354,24 +4354,24 @@ namespace isc { namespace dhcp {
 #line 4355 "dhcp6_parser.cc"
     break;
 
-  case 814: // control_socket_entry: "{" $@119 control_socket_params "}"
-#line 2838 "dhcp6_parser.yy"
+  case 816: // control_socket_entry: "{" $@119 control_socket_params "}"
+#line 2842 "dhcp6_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
 #line 4363 "dhcp6_parser.cc"
     break;
 
-  case 817: // control_socket_params: control_socket_params ","
-#line 2844 "dhcp6_parser.yy"
+  case 819: // control_socket_params: control_socket_params ","
+#line 2848 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
 #line 4371 "dhcp6_parser.cc"
     break;
 
-  case 831: // $@120: %empty
-#line 2864 "dhcp6_parser.yy"
+  case 833: // $@120: %empty
+#line 2868 "dhcp6_parser.yy"
                                  {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.CONTROL_SOCKET_TYPE);
@@ -4379,8 +4379,8 @@ namespace isc { namespace dhcp {
 #line 4380 "dhcp6_parser.cc"
     break;
 
-  case 832: // control_socket_type: "socket-type" $@120 ":" control_socket_type_value
-#line 2867 "dhcp6_parser.yy"
+  case 834: // control_socket_type: "socket-type" $@120 ":" control_socket_type_value
+#line 2871 "dhcp6_parser.yy"
                                   {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4388,26 +4388,26 @@ namespace isc { namespace dhcp {
 #line 4389 "dhcp6_parser.cc"
     break;
 
-  case 833: // control_socket_type_value: "unix"
-#line 2873 "dhcp6_parser.yy"
+  case 835: // control_socket_type_value: "unix"
+#line 2877 "dhcp6_parser.yy"
          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 4395 "dhcp6_parser.cc"
     break;
 
-  case 834: // control_socket_type_value: "http"
-#line 2874 "dhcp6_parser.yy"
+  case 836: // control_socket_type_value: "http"
+#line 2878 "dhcp6_parser.yy"
          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
 #line 4401 "dhcp6_parser.cc"
     break;
 
-  case 835: // control_socket_type_value: "https"
-#line 2875 "dhcp6_parser.yy"
+  case 837: // control_socket_type_value: "https"
+#line 2879 "dhcp6_parser.yy"
           { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("https", ctx.loc2pos(yystack_[0].location))); }
 #line 4407 "dhcp6_parser.cc"
     break;
 
-  case 836: // $@121: %empty
-#line 2878 "dhcp6_parser.yy"
+  case 838: // $@121: %empty
+#line 2882 "dhcp6_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
@@ -4416,8 +4416,8 @@ namespace isc { namespace dhcp {
 #line 4417 "dhcp6_parser.cc"
     break;
 
-  case 837: // control_socket_name: "socket-name" $@121 ":" "constant string"
-#line 2882 "dhcp6_parser.yy"
+  case 839: // control_socket_name: "socket-name" $@121 ":" "constant string"
+#line 2886 "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);
@@ -4426,8 +4426,8 @@ namespace isc { namespace dhcp {
 #line 4427 "dhcp6_parser.cc"
     break;
 
-  case 838: // $@122: %empty
-#line 2888 "dhcp6_parser.yy"
+  case 840: // $@122: %empty
+#line 2892 "dhcp6_parser.yy"
                                        {
     ctx.unique("socket-address", ctx.loc2pos(yystack_[0].location));
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
@@ -4436,8 +4436,8 @@ namespace isc { namespace dhcp {
 #line 4437 "dhcp6_parser.cc"
     break;
 
-  case 839: // control_socket_address: "socket-address" $@122 ":" "constant string"
-#line 2892 "dhcp6_parser.yy"
+  case 841: // control_socket_address: "socket-address" $@122 ":" "constant string"
+#line 2896 "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);
@@ -4446,8 +4446,8 @@ namespace isc { namespace dhcp {
 #line 4447 "dhcp6_parser.cc"
     break;
 
-  case 840: // control_socket_port: "socket-port" ":" "integer"
-#line 2898 "dhcp6_parser.yy"
+  case 842: // control_socket_port: "socket-port" ":" "integer"
+#line 2902 "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)));
@@ -4456,8 +4456,8 @@ namespace isc { namespace dhcp {
 #line 4457 "dhcp6_parser.cc"
     break;
 
-  case 841: // cert_required: "cert-required" ":" "boolean"
-#line 2904 "dhcp6_parser.yy"
+  case 843: // cert_required: "cert-required" ":" "boolean"
+#line 2908 "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)));
@@ -4466,8 +4466,8 @@ namespace isc { namespace dhcp {
 #line 4467 "dhcp6_parser.cc"
     break;
 
-  case 842: // $@123: %empty
-#line 2910 "dhcp6_parser.yy"
+  case 844: // $@123: %empty
+#line 2914 "dhcp6_parser.yy"
                            {
     ctx.unique("http-headers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4478,8 +4478,8 @@ namespace isc { namespace dhcp {
 #line 4479 "dhcp6_parser.cc"
     break;
 
-  case 843: // http_headers: "http-headers" $@123 ":" "[" http_header_list "]"
-#line 2916 "dhcp6_parser.yy"
+  case 845: // http_headers: "http-headers" $@123 ":" "[" http_header_list "]"
+#line 2920 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4487,16 +4487,16 @@ namespace isc { namespace dhcp {
 #line 4488 "dhcp6_parser.cc"
     break;
 
-  case 848: // not_empty_http_header_list: not_empty_http_header_list ","
-#line 2927 "dhcp6_parser.yy"
+  case 850: // not_empty_http_header_list: not_empty_http_header_list ","
+#line 2931 "dhcp6_parser.yy"
                                                              {
                               ctx.warnAboutExtraCommas(yystack_[0].location);
                               }
 #line 4496 "dhcp6_parser.cc"
     break;
 
-  case 849: // $@124: %empty
-#line 2932 "dhcp6_parser.yy"
+  case 851: // $@124: %empty
+#line 2936 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4505,24 +4505,24 @@ namespace isc { namespace dhcp {
 #line 4506 "dhcp6_parser.cc"
     break;
 
-  case 850: // http_header: "{" $@124 http_header_params "}"
-#line 2936 "dhcp6_parser.yy"
+  case 852: // http_header: "{" $@124 http_header_params "}"
+#line 2940 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
 #line 4514 "dhcp6_parser.cc"
     break;
 
-  case 853: // http_header_params: http_header_params ","
-#line 2942 "dhcp6_parser.yy"
+  case 855: // http_header_params: http_header_params ","
+#line 2946 "dhcp6_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
 #line 4522 "dhcp6_parser.cc"
     break;
 
-  case 859: // $@125: %empty
-#line 2954 "dhcp6_parser.yy"
+  case 861: // $@125: %empty
+#line 2958 "dhcp6_parser.yy"
                     {
     ctx.unique("value", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4530,8 +4530,8 @@ namespace isc { namespace dhcp {
 #line 4531 "dhcp6_parser.cc"
     break;
 
-  case 860: // header_value: "value" $@125 ":" "constant string"
-#line 2957 "dhcp6_parser.yy"
+  case 862: // header_value: "value" $@125 ":" "constant string"
+#line 2961 "dhcp6_parser.yy"
                {
     ElementPtr value(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("value", value);
@@ -4540,8 +4540,8 @@ namespace isc { namespace dhcp {
 #line 4541 "dhcp6_parser.cc"
     break;
 
-  case 861: // $@126: %empty
-#line 2965 "dhcp6_parser.yy"
+  case 863: // $@126: %empty
+#line 2969 "dhcp6_parser.yy"
                                {
     ctx.unique("authentication", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4552,8 +4552,8 @@ namespace isc { namespace dhcp {
 #line 4553 "dhcp6_parser.cc"
     break;
 
-  case 862: // authentication: "authentication" $@126 ":" "{" auth_params "}"
-#line 2971 "dhcp6_parser.yy"
+  case 864: // authentication: "authentication" $@126 ":" "{" auth_params "}"
+#line 2975 "dhcp6_parser.yy"
                                                   {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4563,16 +4563,16 @@ namespace isc { namespace dhcp {
 #line 4564 "dhcp6_parser.cc"
     break;
 
-  case 865: // auth_params: auth_params ","
-#line 2980 "dhcp6_parser.yy"
+  case 867: // auth_params: auth_params ","
+#line 2984 "dhcp6_parser.yy"
                                {
                ctx.warnAboutExtraCommas(yystack_[0].location);
                }
 #line 4572 "dhcp6_parser.cc"
     break;
 
-  case 873: // $@127: %empty
-#line 2994 "dhcp6_parser.yy"
+  case 875: // $@127: %empty
+#line 2998 "dhcp6_parser.yy"
                 {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.AUTH_TYPE);
@@ -4580,8 +4580,8 @@ namespace isc { namespace dhcp {
 #line 4581 "dhcp6_parser.cc"
     break;
 
-  case 874: // auth_type: "type" $@127 ":" auth_type_value
-#line 2997 "dhcp6_parser.yy"
+  case 876: // auth_type: "type" $@127 ":" auth_type_value
+#line 3001 "dhcp6_parser.yy"
                         {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4589,14 +4589,14 @@ namespace isc { namespace dhcp {
 #line 4590 "dhcp6_parser.cc"
     break;
 
-  case 875: // auth_type_value: "basic"
-#line 3002 "dhcp6_parser.yy"
+  case 877: // auth_type_value: "basic"
+#line 3006 "dhcp6_parser.yy"
                        { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
 #line 4596 "dhcp6_parser.cc"
     break;
 
-  case 876: // $@128: %empty
-#line 3005 "dhcp6_parser.yy"
+  case 878: // $@128: %empty
+#line 3009 "dhcp6_parser.yy"
              {
     ctx.unique("realm", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4604,8 +4604,8 @@ namespace isc { namespace dhcp {
 #line 4605 "dhcp6_parser.cc"
     break;
 
-  case 877: // realm: "realm" $@128 ":" "constant string"
-#line 3008 "dhcp6_parser.yy"
+  case 879: // realm: "realm" $@128 ":" "constant string"
+#line 3012 "dhcp6_parser.yy"
                {
     ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("realm", realm);
@@ -4614,8 +4614,8 @@ namespace isc { namespace dhcp {
 #line 4615 "dhcp6_parser.cc"
     break;
 
-  case 878: // $@129: %empty
-#line 3014 "dhcp6_parser.yy"
+  case 880: // $@129: %empty
+#line 3018 "dhcp6_parser.yy"
                      {
     ctx.unique("directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4623,8 +4623,8 @@ namespace isc { namespace dhcp {
 #line 4624 "dhcp6_parser.cc"
     break;
 
-  case 879: // directory: "directory" $@129 ":" "constant string"
-#line 3017 "dhcp6_parser.yy"
+  case 881: // directory: "directory" $@129 ":" "constant string"
+#line 3021 "dhcp6_parser.yy"
                {
     ElementPtr directory(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("directory", directory);
@@ -4633,8 +4633,8 @@ namespace isc { namespace dhcp {
 #line 4634 "dhcp6_parser.cc"
     break;
 
-  case 880: // $@130: %empty
-#line 3023 "dhcp6_parser.yy"
+  case 882: // $@130: %empty
+#line 3027 "dhcp6_parser.yy"
                  {
     ctx.unique("clients", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4645,8 +4645,8 @@ namespace isc { namespace dhcp {
 #line 4646 "dhcp6_parser.cc"
     break;
 
-  case 881: // clients: "clients" $@130 ":" "[" clients_list "]"
-#line 3029 "dhcp6_parser.yy"
+  case 883: // clients: "clients" $@130 ":" "[" clients_list "]"
+#line 3033 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -4654,16 +4654,16 @@ namespace isc { namespace dhcp {
 #line 4655 "dhcp6_parser.cc"
     break;
 
-  case 886: // not_empty_clients_list: not_empty_clients_list ","
-#line 3040 "dhcp6_parser.yy"
+  case 888: // not_empty_clients_list: not_empty_clients_list ","
+#line 3044 "dhcp6_parser.yy"
                                                      {
                           ctx.warnAboutExtraCommas(yystack_[0].location);
                           }
 #line 4663 "dhcp6_parser.cc"
     break;
 
-  case 887: // $@131: %empty
-#line 3045 "dhcp6_parser.yy"
+  case 889: // $@131: %empty
+#line 3049 "dhcp6_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -4672,24 +4672,24 @@ namespace isc { namespace dhcp {
 #line 4673 "dhcp6_parser.cc"
     break;
 
-  case 888: // basic_auth: "{" $@131 clients_params "}"
-#line 3049 "dhcp6_parser.yy"
+  case 890: // basic_auth: "{" $@131 clients_params "}"
+#line 3053 "dhcp6_parser.yy"
                                 {
     ctx.stack_.pop_back();
 }
 #line 4681 "dhcp6_parser.cc"
     break;
 
-  case 891: // clients_params: clients_params ","
-#line 3055 "dhcp6_parser.yy"
+  case 893: // clients_params: clients_params ","
+#line 3059 "dhcp6_parser.yy"
                                      {
                   ctx.warnAboutExtraCommas(yystack_[0].location);
                   }
 #line 4689 "dhcp6_parser.cc"
     break;
 
-  case 899: // $@132: %empty
-#line 3069 "dhcp6_parser.yy"
+  case 901: // $@132: %empty
+#line 3073 "dhcp6_parser.yy"
                      {
     ctx.unique("user-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4697,8 +4697,8 @@ namespace isc { namespace dhcp {
 #line 4698 "dhcp6_parser.cc"
     break;
 
-  case 900: // user_file: "user-file" $@132 ":" "constant string"
-#line 3072 "dhcp6_parser.yy"
+  case 902: // user_file: "user-file" $@132 ":" "constant string"
+#line 3076 "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);
@@ -4707,8 +4707,8 @@ namespace isc { namespace dhcp {
 #line 4708 "dhcp6_parser.cc"
     break;
 
-  case 901: // $@133: %empty
-#line 3078 "dhcp6_parser.yy"
+  case 903: // $@133: %empty
+#line 3082 "dhcp6_parser.yy"
                              {
     ctx.unique("password-file", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4716,8 +4716,8 @@ namespace isc { namespace dhcp {
 #line 4717 "dhcp6_parser.cc"
     break;
 
-  case 902: // password_file: "password-file" $@133 ":" "constant string"
-#line 3081 "dhcp6_parser.yy"
+  case 904: // password_file: "password-file" $@133 ":" "constant string"
+#line 3085 "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);
@@ -4726,8 +4726,8 @@ namespace isc { namespace dhcp {
 #line 4727 "dhcp6_parser.cc"
     break;
 
-  case 903: // $@134: %empty
-#line 3089 "dhcp6_parser.yy"
+  case 905: // $@134: %empty
+#line 3093 "dhcp6_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4738,8 +4738,8 @@ namespace isc { namespace dhcp {
 #line 4739 "dhcp6_parser.cc"
     break;
 
-  case 904: // dhcp_queue_control: "dhcp-queue-control" $@134 ":" "{" queue_control_params "}"
-#line 3095 "dhcp6_parser.yy"
+  case 906: // dhcp_queue_control: "dhcp-queue-control" $@134 ":" "{" queue_control_params "}"
+#line 3099 "dhcp6_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -4749,16 +4749,16 @@ namespace isc { namespace dhcp {
 #line 4750 "dhcp6_parser.cc"
     break;
 
-  case 907: // queue_control_params: queue_control_params ","
-#line 3104 "dhcp6_parser.yy"
+  case 909: // queue_control_params: queue_control_params ","
+#line 3108 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
 #line 4758 "dhcp6_parser.cc"
     break;
 
-  case 914: // enable_queue: "enable-queue" ":" "boolean"
-#line 3117 "dhcp6_parser.yy"
+  case 916: // enable_queue: "enable-queue" ":" "boolean"
+#line 3121 "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)));
@@ -4767,8 +4767,8 @@ namespace isc { namespace dhcp {
 #line 4768 "dhcp6_parser.cc"
     break;
 
-  case 915: // $@135: %empty
-#line 3123 "dhcp6_parser.yy"
+  case 917: // $@135: %empty
+#line 3127 "dhcp6_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4776,8 +4776,8 @@ namespace isc { namespace dhcp {
 #line 4777 "dhcp6_parser.cc"
     break;
 
-  case 916: // queue_type: "queue-type" $@135 ":" "constant string"
-#line 3126 "dhcp6_parser.yy"
+  case 918: // queue_type: "queue-type" $@135 ":" "constant string"
+#line 3130 "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);
@@ -4786,8 +4786,8 @@ namespace isc { namespace dhcp {
 #line 4787 "dhcp6_parser.cc"
     break;
 
-  case 917: // capacity: "capacity" ":" "integer"
-#line 3132 "dhcp6_parser.yy"
+  case 919: // capacity: "capacity" ":" "integer"
+#line 3136 "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)));
@@ -4796,8 +4796,8 @@ namespace isc { namespace dhcp {
 #line 4797 "dhcp6_parser.cc"
     break;
 
-  case 918: // $@136: %empty
-#line 3138 "dhcp6_parser.yy"
+  case 920: // $@136: %empty
+#line 3142 "dhcp6_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4805,8 +4805,8 @@ namespace isc { namespace dhcp {
 #line 4806 "dhcp6_parser.cc"
     break;
 
-  case 919: // arbitrary_map_entry: "constant string" $@136 ":" value
-#line 3141 "dhcp6_parser.yy"
+  case 921: // arbitrary_map_entry: "constant string" $@136 ":" value
+#line 3145 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4814,8 +4814,8 @@ namespace isc { namespace dhcp {
 #line 4815 "dhcp6_parser.cc"
     break;
 
-  case 920: // $@137: %empty
-#line 3148 "dhcp6_parser.yy"
+  case 922: // $@137: %empty
+#line 3152 "dhcp6_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4826,8 +4826,8 @@ namespace isc { namespace dhcp {
 #line 4827 "dhcp6_parser.cc"
     break;
 
-  case 921: // dhcp_ddns: "dhcp-ddns" $@137 ":" "{" dhcp_ddns_params "}"
-#line 3154 "dhcp6_parser.yy"
+  case 923: // dhcp_ddns: "dhcp-ddns" $@137 ":" "{" dhcp_ddns_params "}"
+#line 3158 "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));
@@ -4837,8 +4837,8 @@ namespace isc { namespace dhcp {
 #line 4838 "dhcp6_parser.cc"
     break;
 
-  case 922: // $@138: %empty
-#line 3161 "dhcp6_parser.yy"
+  case 924: // $@138: %empty
+#line 3165 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -4847,8 +4847,8 @@ namespace isc { namespace dhcp {
 #line 4848 "dhcp6_parser.cc"
     break;
 
-  case 923: // sub_dhcp_ddns: "{" $@138 dhcp_ddns_params "}"
-#line 3165 "dhcp6_parser.yy"
+  case 925: // sub_dhcp_ddns: "{" $@138 dhcp_ddns_params "}"
+#line 3169 "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));
@@ -4857,16 +4857,16 @@ namespace isc { namespace dhcp {
 #line 4858 "dhcp6_parser.cc"
     break;
 
-  case 926: // dhcp_ddns_params: dhcp_ddns_params ","
-#line 3173 "dhcp6_parser.yy"
+  case 928: // dhcp_ddns_params: dhcp_ddns_params ","
+#line 3177 "dhcp6_parser.yy"
                                          {
                     ctx.warnAboutExtraCommas(yystack_[0].location);
                     }
 #line 4866 "dhcp6_parser.cc"
     break;
 
-  case 938: // enable_updates: "enable-updates" ":" "boolean"
-#line 3191 "dhcp6_parser.yy"
+  case 940: // enable_updates: "enable-updates" ":" "boolean"
+#line 3195 "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)));
@@ -4875,8 +4875,8 @@ namespace isc { namespace dhcp {
 #line 4876 "dhcp6_parser.cc"
     break;
 
-  case 939: // $@139: %empty
-#line 3197 "dhcp6_parser.yy"
+  case 941: // $@139: %empty
+#line 3201 "dhcp6_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4884,8 +4884,8 @@ namespace isc { namespace dhcp {
 #line 4885 "dhcp6_parser.cc"
     break;
 
-  case 940: // server_ip: "server-ip" $@139 ":" "constant string"
-#line 3200 "dhcp6_parser.yy"
+  case 942: // server_ip: "server-ip" $@139 ":" "constant string"
+#line 3204 "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);
@@ -4894,8 +4894,8 @@ namespace isc { namespace dhcp {
 #line 4895 "dhcp6_parser.cc"
     break;
 
-  case 941: // server_port: "server-port" ":" "integer"
-#line 3206 "dhcp6_parser.yy"
+  case 943: // server_port: "server-port" ":" "integer"
+#line 3210 "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)));
@@ -4904,8 +4904,8 @@ namespace isc { namespace dhcp {
 #line 4905 "dhcp6_parser.cc"
     break;
 
-  case 942: // $@140: %empty
-#line 3212 "dhcp6_parser.yy"
+  case 944: // $@140: %empty
+#line 3216 "dhcp6_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -4913,8 +4913,8 @@ namespace isc { namespace dhcp {
 #line 4914 "dhcp6_parser.cc"
     break;
 
-  case 943: // sender_ip: "sender-ip" $@140 ":" "constant string"
-#line 3215 "dhcp6_parser.yy"
+  case 945: // sender_ip: "sender-ip" $@140 ":" "constant string"
+#line 3219 "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);
@@ -4923,8 +4923,8 @@ namespace isc { namespace dhcp {
 #line 4924 "dhcp6_parser.cc"
     break;
 
-  case 944: // sender_port: "sender-port" ":" "integer"
-#line 3221 "dhcp6_parser.yy"
+  case 946: // sender_port: "sender-port" ":" "integer"
+#line 3225 "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)));
@@ -4933,8 +4933,8 @@ namespace isc { namespace dhcp {
 #line 4934 "dhcp6_parser.cc"
     break;
 
-  case 945: // max_queue_size: "max-queue-size" ":" "integer"
-#line 3227 "dhcp6_parser.yy"
+  case 947: // max_queue_size: "max-queue-size" ":" "integer"
+#line 3231 "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)));
@@ -4943,8 +4943,8 @@ namespace isc { namespace dhcp {
 #line 4944 "dhcp6_parser.cc"
     break;
 
-  case 946: // $@141: %empty
-#line 3233 "dhcp6_parser.yy"
+  case 948: // $@141: %empty
+#line 3237 "dhcp6_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -4952,8 +4952,8 @@ namespace isc { namespace dhcp {
 #line 4953 "dhcp6_parser.cc"
     break;
 
-  case 947: // ncr_protocol: "ncr-protocol" $@141 ":" ncr_protocol_value
-#line 3236 "dhcp6_parser.yy"
+  case 949: // ncr_protocol: "ncr-protocol" $@141 ":" ncr_protocol_value
+#line 3240 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -4961,20 +4961,20 @@ namespace isc { namespace dhcp {
 #line 4962 "dhcp6_parser.cc"
     break;
 
-  case 948: // ncr_protocol_value: "UDP"
-#line 3242 "dhcp6_parser.yy"
+  case 950: // ncr_protocol_value: "UDP"
+#line 3246 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 4968 "dhcp6_parser.cc"
     break;
 
-  case 949: // ncr_protocol_value: "TCP"
-#line 3243 "dhcp6_parser.yy"
+  case 951: // ncr_protocol_value: "TCP"
+#line 3247 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 4974 "dhcp6_parser.cc"
     break;
 
-  case 950: // $@142: %empty
-#line 3246 "dhcp6_parser.yy"
+  case 952: // $@142: %empty
+#line 3250 "dhcp6_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
@@ -4982,8 +4982,8 @@ namespace isc { namespace dhcp {
 #line 4983 "dhcp6_parser.cc"
     break;
 
-  case 951: // ncr_format: "ncr-format" $@142 ":" "JSON"
-#line 3249 "dhcp6_parser.yy"
+  case 953: // ncr_format: "ncr-format" $@142 ":" "JSON"
+#line 3253 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
@@ -4992,8 +4992,8 @@ namespace isc { namespace dhcp {
 #line 4993 "dhcp6_parser.cc"
     break;
 
-  case 952: // $@143: %empty
-#line 3257 "dhcp6_parser.yy"
+  case 954: // $@143: %empty
+#line 3261 "dhcp6_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5004,8 +5004,8 @@ namespace isc { namespace dhcp {
 #line 5005 "dhcp6_parser.cc"
     break;
 
-  case 953: // config_control: "config-control" $@143 ":" "{" config_control_params "}"
-#line 3263 "dhcp6_parser.yy"
+  case 955: // config_control: "config-control" $@143 ":" "{" config_control_params "}"
+#line 3267 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
@@ -5014,8 +5014,8 @@ namespace isc { namespace dhcp {
 #line 5015 "dhcp6_parser.cc"
     break;
 
-  case 954: // $@144: %empty
-#line 3269 "dhcp6_parser.yy"
+  case 956: // $@144: %empty
+#line 3273 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5024,8 +5024,8 @@ namespace isc { namespace dhcp {
 #line 5025 "dhcp6_parser.cc"
     break;
 
-  case 955: // sub_config_control: "{" $@144 config_control_params "}"
-#line 3273 "dhcp6_parser.yy"
+  case 957: // sub_config_control: "{" $@144 config_control_params "}"
+#line 3277 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
@@ -5033,16 +5033,16 @@ namespace isc { namespace dhcp {
 #line 5034 "dhcp6_parser.cc"
     break;
 
-  case 958: // config_control_params: config_control_params ","
-#line 3281 "dhcp6_parser.yy"
+  case 960: // config_control_params: config_control_params ","
+#line 3285 "dhcp6_parser.yy"
                                                    {
                          ctx.warnAboutExtraCommas(yystack_[0].location);
                          }
 #line 5042 "dhcp6_parser.cc"
     break;
 
-  case 961: // $@145: %empty
-#line 3291 "dhcp6_parser.yy"
+  case 963: // $@145: %empty
+#line 3295 "dhcp6_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5053,8 +5053,8 @@ namespace isc { namespace dhcp {
 #line 5054 "dhcp6_parser.cc"
     break;
 
-  case 962: // config_databases: "config-databases" $@145 ":" "[" database_list "]"
-#line 3297 "dhcp6_parser.yy"
+  case 964: // config_databases: "config-databases" $@145 ":" "[" database_list "]"
+#line 3301 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -5062,8 +5062,8 @@ namespace isc { namespace dhcp {
 #line 5063 "dhcp6_parser.cc"
     break;
 
-  case 963: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 3302 "dhcp6_parser.yy"
+  case 965: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 3306 "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)));
@@ -5072,8 +5072,8 @@ namespace isc { namespace dhcp {
 #line 5073 "dhcp6_parser.cc"
     break;
 
-  case 964: // $@146: %empty
-#line 3310 "dhcp6_parser.yy"
+  case 966: // $@146: %empty
+#line 3314 "dhcp6_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5084,8 +5084,8 @@ namespace isc { namespace dhcp {
 #line 5085 "dhcp6_parser.cc"
     break;
 
-  case 965: // loggers: "loggers" $@146 ":" "[" loggers_entries "]"
-#line 3316 "dhcp6_parser.yy"
+  case 967: // loggers: "loggers" $@146 ":" "[" loggers_entries "]"
+#line 3320 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -5093,16 +5093,16 @@ namespace isc { namespace dhcp {
 #line 5094 "dhcp6_parser.cc"
     break;
 
-  case 968: // loggers_entries: loggers_entries ","
-#line 3325 "dhcp6_parser.yy"
+  case 970: // loggers_entries: loggers_entries ","
+#line 3329 "dhcp6_parser.yy"
                                        {
                    ctx.warnAboutExtraCommas(yystack_[0].location);
                    }
 #line 5102 "dhcp6_parser.cc"
     break;
 
-  case 969: // $@147: %empty
-#line 3331 "dhcp6_parser.yy"
+  case 971: // $@147: %empty
+#line 3335 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -5111,24 +5111,24 @@ namespace isc { namespace dhcp {
 #line 5112 "dhcp6_parser.cc"
     break;
 
-  case 970: // logger_entry: "{" $@147 logger_params "}"
-#line 3335 "dhcp6_parser.yy"
+  case 972: // logger_entry: "{" $@147 logger_params "}"
+#line 3339 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
 #line 5120 "dhcp6_parser.cc"
     break;
 
-  case 973: // logger_params: logger_params ","
-#line 3341 "dhcp6_parser.yy"
+  case 975: // logger_params: logger_params ","
+#line 3345 "dhcp6_parser.yy"
                                    {
                  ctx.warnAboutExtraCommas(yystack_[0].location);
                  }
 #line 5128 "dhcp6_parser.cc"
     break;
 
-  case 981: // debuglevel: "debuglevel" ":" "integer"
-#line 3355 "dhcp6_parser.yy"
+  case 983: // debuglevel: "debuglevel" ":" "integer"
+#line 3359 "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)));
@@ -5137,8 +5137,8 @@ namespace isc { namespace dhcp {
 #line 5138 "dhcp6_parser.cc"
     break;
 
-  case 982: // $@148: %empty
-#line 3361 "dhcp6_parser.yy"
+  case 984: // $@148: %empty
+#line 3365 "dhcp6_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -5146,8 +5146,8 @@ namespace isc { namespace dhcp {
 #line 5147 "dhcp6_parser.cc"
     break;
 
-  case 983: // severity: "severity" $@148 ":" "constant string"
-#line 3364 "dhcp6_parser.yy"
+  case 985: // severity: "severity" $@148 ":" "constant string"
+#line 3368 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
@@ -5156,8 +5156,8 @@ namespace isc { namespace dhcp {
 #line 5157 "dhcp6_parser.cc"
     break;
 
-  case 984: // $@149: %empty
-#line 3370 "dhcp6_parser.yy"
+  case 986: // $@149: %empty
+#line 3374 "dhcp6_parser.yy"
                                     {
     ctx.unique("output-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -5168,8 +5168,8 @@ namespace isc { namespace dhcp {
 #line 5169 "dhcp6_parser.cc"
     break;
 
-  case 985: // output_options_list: "output-options" $@149 ":" "[" output_options_list_content "]"
-#line 3376 "dhcp6_parser.yy"
+  case 987: // output_options_list: "output-options" $@149 ":" "[" output_options_list_content "]"
+#line 3380 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -5177,16 +5177,16 @@ namespace isc { namespace dhcp {
 #line 5178 "dhcp6_parser.cc"
     break;
 
-  case 988: // output_options_list_content: output_options_list_content ","
-#line 3383 "dhcp6_parser.yy"
+  case 990: // output_options_list_content: output_options_list_content ","
+#line 3387 "dhcp6_parser.yy"
                                                                {
                                ctx.warnAboutExtraCommas(yystack_[0].location);
                                }
 #line 5186 "dhcp6_parser.cc"
     break;
 
-  case 989: // $@150: %empty
-#line 3388 "dhcp6_parser.yy"
+  case 991: // $@150: %empty
+#line 3392 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -5195,24 +5195,24 @@ namespace isc { namespace dhcp {
 #line 5196 "dhcp6_parser.cc"
     break;
 
-  case 990: // output_entry: "{" $@150 output_params_list "}"
-#line 3392 "dhcp6_parser.yy"
+  case 992: // output_entry: "{" $@150 output_params_list "}"
+#line 3396 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
 #line 5204 "dhcp6_parser.cc"
     break;
 
-  case 993: // output_params_list: output_params_list ","
-#line 3398 "dhcp6_parser.yy"
+  case 995: // output_params_list: output_params_list ","
+#line 3402 "dhcp6_parser.yy"
                                              {
                       ctx.warnAboutExtraCommas(yystack_[0].location);
                       }
 #line 5212 "dhcp6_parser.cc"
     break;
 
-  case 999: // $@151: %empty
-#line 3410 "dhcp6_parser.yy"
+  case 1001: // $@151: %empty
+#line 3414 "dhcp6_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -5220,8 +5220,8 @@ namespace isc { namespace dhcp {
 #line 5221 "dhcp6_parser.cc"
     break;
 
-  case 1000: // output: "output" $@151 ":" "constant string"
-#line 3413 "dhcp6_parser.yy"
+  case 1002: // output: "output" $@151 ":" "constant string"
+#line 3417 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
@@ -5230,8 +5230,8 @@ namespace isc { namespace dhcp {
 #line 5231 "dhcp6_parser.cc"
     break;
 
-  case 1001: // flush: "flush" ":" "boolean"
-#line 3419 "dhcp6_parser.yy"
+  case 1003: // flush: "flush" ":" "boolean"
+#line 3423 "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)));
@@ -5240,8 +5240,8 @@ namespace isc { namespace dhcp {
 #line 5241 "dhcp6_parser.cc"
     break;
 
-  case 1002: // maxsize: "maxsize" ":" "integer"
-#line 3425 "dhcp6_parser.yy"
+  case 1004: // maxsize: "maxsize" ":" "integer"
+#line 3429 "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)));
@@ -5250,8 +5250,8 @@ namespace isc { namespace dhcp {
 #line 5251 "dhcp6_parser.cc"
     break;
 
-  case 1003: // maxver: "maxver" ":" "integer"
-#line 3431 "dhcp6_parser.yy"
+  case 1005: // maxver: "maxver" ":" "integer"
+#line 3435 "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)));
@@ -5260,8 +5260,8 @@ namespace isc { namespace dhcp {
 #line 5261 "dhcp6_parser.cc"
     break;
 
-  case 1004: // $@152: %empty
-#line 3437 "dhcp6_parser.yy"
+  case 1006: // $@152: %empty
+#line 3441 "dhcp6_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -5269,8 +5269,8 @@ namespace isc { namespace dhcp {
 #line 5270 "dhcp6_parser.cc"
     break;
 
-  case 1005: // pattern: "pattern" $@152 ":" "constant string"
-#line 3440 "dhcp6_parser.yy"
+  case 1007: // pattern: "pattern" $@152 ":" "constant string"
+#line 3444 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
@@ -5279,8 +5279,8 @@ namespace isc { namespace dhcp {
 #line 5280 "dhcp6_parser.cc"
     break;
 
-  case 1006: // $@153: %empty
-#line 3446 "dhcp6_parser.yy"
+  case 1008: // $@153: %empty
+#line 3450 "dhcp6_parser.yy"
                              {
     ctx.unique("compatibility", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -5291,8 +5291,8 @@ namespace isc { namespace dhcp {
 #line 5292 "dhcp6_parser.cc"
     break;
 
-  case 1007: // compatibility: "compatibility" $@153 ":" "{" compatibility_params "}"
-#line 3452 "dhcp6_parser.yy"
+  case 1009: // compatibility: "compatibility" $@153 ":" "{" compatibility_params "}"
+#line 3456 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -5300,16 +5300,16 @@ namespace isc { namespace dhcp {
 #line 5301 "dhcp6_parser.cc"
     break;
 
-  case 1010: // compatibility_params: compatibility_params ","
-#line 3459 "dhcp6_parser.yy"
+  case 1012: // compatibility_params: compatibility_params ","
+#line 3463 "dhcp6_parser.yy"
                                                  {
                         ctx.warnAboutExtraCommas(yystack_[0].location);
                         }
 #line 5309 "dhcp6_parser.cc"
     break;
 
-  case 1013: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
-#line 3468 "dhcp6_parser.yy"
+  case 1015: // lenient_option_parsing: "lenient-option-parsing" ":" "boolean"
+#line 3472 "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)));
@@ -5671,168 +5671,168 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -1456;
+  const short Dhcp6Parser::yypact_ninf_ = -1457;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     718, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,    43,    62,    50,    57,    63,
+     488, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,    43,    62,    50,    57,    63,
       83,    93,   135,   148,   170,   180,   191,   192,   211,   212,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,    62,  -154,
-      82,   772,    56,   322,  1522,   364,   130,    99,    11,   166,
-    -101,   520,    91, -1456,   228,   121,   237,   234,   246, -1456,
-      75, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   265,   266,
-     282,   283,   295,   306,   307,   314,   329,   338,   346,   367,
-     371,   388,   428, -1456,   445,   446,   452,   453,   461, -1456,
-   -1456, -1456,   467,   468,   477,   478,   490,   502,   504, -1456,
-   -1456, -1456,   506, -1456, -1456, -1456, -1456, -1456, -1456,   512,
-     513,   519, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456,   521, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   523,
-     524,   531,   533, -1456, -1456,   534, -1456,   109, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456,   537,   538,   540,   541, -1456,   117, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456,   544,   546, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456,   129, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456,   550, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   140, -1456, -1456, -1456, -1456,
-   -1456, -1456,   553, -1456,   557,   562, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   153, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456,   344,   366, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   497, -1456, -1456,   563, -1456,
-   -1456, -1456,   566, -1456, -1456,   569,   466, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     574,   575,   576, -1456, -1456, -1456, -1456, -1456,   573,   580,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456,   159, -1456, -1456, -1456,   581, -1456,
-     582, -1456,   585,   587, -1456, -1456, -1456, -1456, -1456,   171,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     588,   259, -1456, -1456, -1456, -1456,    62,    62, -1456,   342,
-     589, -1456, -1456,   590,   591,   592,   595,   599,   603,   368,
-     369,   372,   375,   378,   379,   381,   382,   363,   384,   385,
-     390,   389,   396,   398,   605,   402,   403,   386,   394,   407,
-     606,   609,   610,   412,   414,   417,   420,   421,   426,   431,
-     643,   661,   666,   436,   667,   678,   680,   683,   684,   685,
-     447,   449,   450,   686,   694,   695,   696,   697,   698,   699,
-     701,   702,   464,   705,   708,   710,   720,   721,   722,   723,
-     483,   484,   485,   486,   728,   729, -1456,   772, -1456,   730,
-     496,   498,   503,   508,    56, -1456,   740,   741,   743,   748,
-     750,   515,   510,   752,   755,   756,   757,   759,   322, -1456,
-     760,   522,  1522, -1456,   762,   529,   763,   530,   532,   364,
-   -1456,   770,   776,   781,   782,   784,   785,   786,   787, -1456,
-     130, -1456,   788,   794,   556,   796,   797,   798,   558, -1456,
-      11,   800,   560,   564,   567,   809, -1456,   166,   810,   815,
-     -70, -1456,   577,   816,   578,   819,   617,   618,   820,   821,
-     520, -1456,   858,   620,    91, -1456, -1456, -1456,   860,   769,
-     623,   859,   861,   862,   867,   870, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456,   625, -1456, -1456, -1456, -1456, -1456,  -156,   634,   635,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   874,   875,   876,
-   -1456,   640,   641,   410,   879,   878,   644, -1456, -1456, -1456,
-     884,   885,   886,   894,   887,   888,   897,   898,   899, -1456,
-     900,   901,   904,   903,   906,   662,   669, -1456, -1456, -1456,
-   -1456,   909,   908, -1456,   911, -1456, -1456, -1456, -1456, -1456,
-     912,   913,   677,   687,   688, -1456, -1456,   911,   911,   911,
-     690,   915, -1456,   691, -1456, -1456,   692, -1456,   693, -1456,
-   -1456, -1456,   911,   911,   911,   911,   700,   719,   724,   726,
-   -1456,   727,   731, -1456,   732,   733,   734, -1456, -1456,   735,
-   -1456, -1456, -1456,   911, -1456,   736,   878, -1456, -1456,   737,
-   -1456,   738, -1456, -1456,   -74,   714, -1456,   920, -1456, -1456,
-      62,   772, -1456,    91,    56,   178,   178,   919, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   921,   929,   930,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   931, -1456, -1456,
-   -1456,  -104,    62,    88,    36,   934,   936,   953,   261,    74,
-     132,   149,   955,   219,   520, -1456, -1456,   957,  -186, -1456,
-   -1456,   958,   963, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     830, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   919, -1456,   260,
-     275,   276, -1456, -1456, -1456, -1456,   923,   968,   977,   978,
-     986,   987,   988,   989,   990,   991, -1456,   992,   993, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     277, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   292, -1456,   994,   996, -1456,
-   -1456,   995,   999, -1456, -1456,   997,  1001, -1456, -1456,  1000,
-    1002, -1456, -1456,  1003,  1004, -1456, -1456, -1456,    81, -1456,
-   -1456, -1456,  1005, -1456, -1456, -1456,   110, -1456, -1456, -1456,
-   -1456, -1456,   305, -1456, -1456, -1456, -1456,   290, -1456, -1456,
-    1006,  1007, -1456, -1456,  1009,  1010, -1456,  1012,  1013,  1014,
-    1015,  1016,  1017,   309, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456,  1018,  1019,  1020, -1456, -1456, -1456, -1456,
-     316, -1456, -1456, -1456, -1456, -1456, -1456,  1021,  1022,  1023,
-   -1456,   317, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456,  1024, -1456,  1025, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456,   323, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456,  1026,  1027, -1456,  1029, -1456,  1030, -1456, -1456, -1456,
-     333, -1456, -1456, -1456, -1456, -1456,   336, -1456,   387, -1456,
-    1031, -1456,   348, -1456, -1456,   766, -1456,  1032,  1028, -1456,
-   -1456,  1033,  1038, -1456, -1456,  1034,  1039, -1456, -1456, -1456,
-    1040,  1043,  1044,  1048,   793,   812,   822,   823,   824,   827,
-     828,   833,   834,   835,  1051,   836,   840,  1080,  1082,  1085,
-    1087,  1088,   178, -1456, -1456,   178, -1456,   919,   322, -1456,
-     921,    11, -1456,   929,   166, -1456,   930,  1453, -1456,   931,
-    -104, -1456, -1456,    88, -1456,  1093,  1095,    36, -1456,   681,
-     934, -1456,   130, -1456,   936,  -101, -1456,   953,   864,   865,
-     868,   881,   891,   893,   261, -1456,  1101,  1109,   902,   905,
-     926,    74, -1456,   872,   932,   937,   132, -1456,  1123,  1138,
-    1162,   939,  1181,   942,  1185,   149, -1456,   149, -1456,   955,
-     946,  1190,   954,  1192,   219, -1456, -1456,   206,   957, -1456,
-     959,  -186, -1456, -1456,  1193,  1197,  1522, -1456,   958,   364,
-   -1456,   963, -1456, -1456,   976,   998,  1011,  1035, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   395, -1456,
-   -1456,  1036,  1037,  1041,   440,  1042, -1456,   350, -1456,   351,
-   -1456,  1220, -1456,  1221, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     357, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,  1045,
-    1046, -1456, -1456, -1456,  1229,  1233, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,  1230,  1239, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456,  1236, -1456,   359, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   370,  1047, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   397,  1049,  1050,
-   -1456,  1238, -1456,  1243, -1456,   365, -1456, -1456,  1052, -1456,
-      62, -1456, -1456,  1245, -1456, -1456, -1456, -1456, -1456,   422,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,  1053,   425,
-   -1456,   444, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-    1453, -1456, -1456, -1456,  1247,  1250,  1054,  1055, -1456,   681,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456,    67,  1248, -1456, -1456, -1456,  1252,  1058,
-    1254,   206, -1456, -1456, -1456, -1456, -1456,  1056,  1060, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   455,
-   -1456, -1456, -1456, -1456, -1456, -1456,  1255,  1257, -1456,  1258,
-   -1456,  1061, -1456, -1456, -1456,  1261,  1262,  1263,  1264,    67,
-   -1456,    -6, -1456,  1248,  1265, -1456,  1091,  1062,  1063,  1270,
-   -1456, -1456, -1456, -1456, -1456, -1456,   456, -1456, -1456, -1456,
-   -1456,   404, -1456, -1456, -1456, -1456, -1456,  1273,  1278,    -6,
-   -1456,   124,  1265, -1456, -1456,  1279,  1266, -1456,  1064, -1456,
-   -1456,  1282,  1286,  1289, -1456,   465, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456,   128, -1456,  1273, -1456,  1292,  1065,  1070,
-    1071,  1293,   124, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456,   501, -1456, -1456, -1456, -1456,  1074, -1456, -1456, -1456,
-    1075, -1456,  1303,  1315,   128, -1456, -1456, -1456,  1078,  1079,
-   -1456, -1456, -1456
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,    62,  -154,
+      82,   772,    56,   322,  1523,   364,   130,    99,    11,   166,
+    -101,   216,    91, -1457,   228,   121,   237,   234,   246, -1457,
+      75, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   265,   266,
+     282,   283,   306,   307,   314,   330,   349,   353,   365,   367,
+     369,   371,   388, -1457,   403,   428,   445,   446,   461, -1457,
+   -1457, -1457,   477,   478,   490,   504,   527,   531,   534, -1457,
+   -1457, -1457,   537, -1457, -1457, -1457, -1457, -1457, -1457,   538,
+     540,   541, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457,   544, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   546,
+     550,   553,   557, -1457, -1457,   562, -1457,   109, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457,   563,   566,   568,   569, -1457,   117, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457,   570,   577, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457,   129, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,   579, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   140, -1457, -1457, -1457, -1457,
+   -1457, -1457,   580, -1457,   581,   582, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   153, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,   291,   323, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   328, -1457, -1457,   585, -1457,
+   -1457, -1457,   587, -1457, -1457,   449,   466, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     588,   589,   590, -1457, -1457, -1457, -1457, -1457,   498,   592,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,   159, -1457, -1457, -1457,   595, -1457,
+     599, -1457,   603,   604, -1457, -1457, -1457, -1457, -1457,   171,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     605,   259, -1457, -1457, -1457, -1457,    62,    62, -1457,   354,
+     606, -1457, -1457,   607,   608,   609,   610,   611,   614,   378,
+     379,   381,   382,   385,   386,   389,   391,   390,   392,   396,
+     397,   402,   408,   404,   627,   414,   416,   394,   401,   418,
+     657,   660,   661,   424,   426,   432,   427,   436,   439,   442,
+     680,   684,   685,   447,   688,   690,   691,   694,   695,   696,
+     457,   458,   462,   697,   701,   702,   705,   708,   710,   726,
+     727,   728,   491,   729,   737,   739,   740,   741,   742,   743,
+     506,   507,   509,   510,   752,   754, -1457,   772, -1457,   755,
+     515,   516,   519,   521,    56, -1457,   759,   761,   762,   763,
+     768,   530,   529,   771,   776,   781,   782,   784,   322, -1457,
+     785,   533,  1523, -1457,   786,   548,   788,   555,   556,   364,
+   -1457,   796,   797,   798,   799,   800,   801,   805,   808, -1457,
+     130, -1457,   809,   810,   576,   816,   817,   818,   578, -1457,
+      11,   820,   615,   616,   617,   821, -1457,   166,   859,   860,
+     -70, -1457,   620,   862,   624,   864,   626,   631,   871,   872,
+     216, -1457,   873,   636,    91, -1457, -1457, -1457,   876,   874,
+     640,   877,   878,   879,   882,   885, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457,   641, -1457, -1457, -1457, -1457, -1457,  -156,   649,   650,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,   888,   896,   897,
+   -1457,   662,   663,   475,   901,   900,   666, -1457, -1457, -1457,
+     904,   905,   906,   907,   908,   910,   911,   912,   913, -1457,
+     915,   918,   921,   920,   922,   675,   676, -1457, -1457, -1457,
+   -1457,   923,   925, -1457,   928, -1457, -1457, -1457, -1457, -1457,
+     929,   930,   699,   700,   704, -1457, -1457,   928,   928,   928,
+     706,   931, -1457,   707, -1457, -1457,   709, -1457,   711, -1457,
+   -1457, -1457,   928,   928,   928,   928,   712,   713,   714,   715,
+   -1457,   716,   717, -1457,   718,   719,   720, -1457, -1457,   722,
+   -1457, -1457, -1457,   928, -1457,   723,   900, -1457, -1457,   724,
+   -1457,   730, -1457, -1457,   -74,   731, -1457,   938, -1457, -1457,
+      62,   772, -1457,    91,    56,   178,   178,   940, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,   943,   945,   961,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,   962, -1457, -1457,
+   -1457,  -104,    62,    88,    36,   963,   964,   966,   194,    74,
+     132,   149,   967,   295,   216, -1457, -1457,   968,  -186, -1457,
+   -1457,   969,   970, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     789, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,   940, -1457,   260,
+     275,   276, -1457, -1457, -1457, -1457,   932,   974,   975,   976,
+     977,   978,   986,   987,   988,   989, -1457,   990,   991, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     277, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   292, -1457,   993,   994, -1457,
+   -1457,   995,   997, -1457, -1457,   996,  1000, -1457, -1457,   998,
+    1002, -1457, -1457,  1001,  1003, -1457, -1457, -1457,    81, -1457,
+   -1457, -1457,  1004, -1457, -1457, -1457,   110, -1457, -1457, -1457,
+   -1457, -1457,   305, -1457, -1457, -1457, -1457,  1005,  1006, -1457,
+   -1457,  1007,  1009, -1457, -1457,  1010,  1012, -1457,   992,  1013,
+    1014,  1015,  1016,  1017,   309, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,  1018,  1019,  1020, -1457, -1457, -1457,
+   -1457,   316, -1457, -1457, -1457, -1457, -1457, -1457,  1021,  1022,
+    1023, -1457,   317, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457,  1024, -1457,  1025, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457,   332, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457,  1026,  1027, -1457,  1029, -1457,  1030, -1457, -1457,
+   -1457,   351, -1457, -1457, -1457, -1457, -1457,   352, -1457,   290,
+   -1457,  1031, -1457,   358, -1457, -1457,   766, -1457,  1033,  1028,
+   -1457, -1457,  1034,  1039, -1457, -1457,  1035,  1040, -1457, -1457,
+   -1457,  1032,  1041,  1044,  1045,   794,   811,   815,   823,   826,
+     828,   829,   834,   835,   836,  1049,   837,   841,  1062,  1081,
+    1083,  1086,  1088,   178, -1457, -1457,   178, -1457,   940,   322,
+   -1457,   943,    11, -1457,   945,   166, -1457,   961,  1454, -1457,
+     962,  -104, -1457, -1457,    88, -1457,  1089,  1094,    36, -1457,
+     681, -1457,   963,   130, -1457,   964,  -101, -1457,   966,   857,
+     863,   865,   866,   869,   875,   194, -1457,  1110,  1121,   892,
+     894,   903,    74, -1457,   883,   924,   927,   132, -1457,  1139,
+    1145,  1172,   947,  1177,   941,  1179,   149, -1457,   149, -1457,
+     967,   950,  1184,   949,  1193,   295, -1457, -1457,   206,   968,
+   -1457,   953,  -186, -1457, -1457,  1194,  1198,  1523, -1457,   969,
+     364, -1457,   970, -1457, -1457,   999,  1008,  1036,  1037, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   395,
+   -1457, -1457,  1038,  1042,  1043,   465,  1046, -1457,   360, -1457,
+     422, -1457,  1197, -1457,  1211, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457,   425, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+    1047,  1048, -1457, -1457, -1457,  1225,  1226, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,  1230,  1231,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,  1235, -1457,   444,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   311,  1050,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   315,  1051,
+    1052, -1457,  1232, -1457,  1240, -1457,   453, -1457, -1457,  1053,
+   -1457,    62, -1457, -1457,  1242, -1457, -1457, -1457, -1457, -1457,
+     456, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,  1054,
+     460, -1457,   501, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457,  1454, -1457, -1457, -1457,  1245,  1248,  1011,  1055, -1457,
+     681, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,    67,  1247, -1457, -1457, -1457,  1251,
+    1056,  1253,   206, -1457, -1457, -1457, -1457, -1457,  1059,  1060,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     502, -1457, -1457, -1457, -1457, -1457, -1457,  1255,  1256, -1457,
+    1257, -1457,  1061, -1457, -1457, -1457,  1260,  1262,  1263,  1264,
+      67, -1457,    -6, -1457,  1247,  1266, -1457,  1087,  1063,  1064,
+    1265, -1457, -1457, -1457, -1457, -1457, -1457,   520, -1457, -1457,
+   -1457, -1457,   387, -1457, -1457, -1457, -1457, -1457,  1267,  1272,
+      -6, -1457,   120,  1266, -1457, -1457,  1275,  1280, -1457,  1065,
+   -1457, -1457,  1282,  1283,  1287, -1457,   522, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,   128, -1457,  1267, -1457,  1293,  1066,
+    1071,  1072,  1294,   120, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457,   524, -1457, -1457, -1457, -1457,  1075, -1457, -1457,
+   -1457,  1076, -1457,  1300,  1304,   128, -1457, -1457, -1457,  1078,
+    1079, -1457, -1457, -1457
   };
 
   const short
@@ -5844,17 +5844,17 @@ namespace isc { namespace dhcp {
        1,    46,    38,    34,    33,    30,    31,    32,    37,     3,
       35,    36,    61,     5,    67,     7,   209,     9,   403,    11,
      627,    13,   672,    15,   707,    17,   542,    19,   551,    21,
-     590,    23,   365,    25,   922,    27,   954,    29,    48,    41,
+     590,    23,   365,    25,   924,    27,   956,    29,    48,    41,
        0,     0,     0,     0,     0,     0,   709,     0,   553,   592,
        0,     0,     0,    50,     0,    49,     0,     0,    42,    63,
-       0,    65,   146,   952,   207,   228,   230,   232,     0,     0,
+       0,    65,   146,   954,   207,   228,   230,   232,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   196,     0,     0,     0,     0,     0,   166,
      173,   175,     0,     0,     0,     0,     0,     0,     0,   394,
      540,   581,     0,   199,   201,   179,   479,   659,   661,     0,
        0,     0,   321,   340,   330,   310,   745,   698,   356,   377,
-     779,     0,   342,   804,   806,   903,   920,   189,   191,     0,
-       0,     0,     0,   964,  1006,     0,   145,     0,    69,    72,
+     781,     0,   342,   806,   808,   905,   922,   189,   191,     0,
+       0,     0,     0,   966,  1008,     0,   145,     0,    69,    72,
       73,    74,    75,    76,    77,    78,    79,    80,   111,   112,
      113,   114,   115,   116,    81,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   118,   119,
@@ -5882,10 +5882,10 @@ namespace isc { namespace dhcp {
      559,   560,   561,   577,   562,   563,   564,   565,   566,   609,
        0,     0,     0,   616,   607,   608,   611,   612,     0,   593,
      594,   597,   598,   599,   600,   601,   602,   603,   606,   604,
-     605,   373,   375,   370,     0,   367,   371,   372,     0,   939,
-       0,   942,     0,     0,   946,   950,   937,   935,   936,     0,
-     924,   927,   928,   929,   930,   931,   932,   933,   934,   961,
-       0,     0,   956,   959,   960,    47,    52,     0,    39,    45,
+     605,   373,   375,   370,     0,   367,   371,   372,     0,   941,
+       0,   944,     0,     0,   948,   952,   939,   937,   938,     0,
+     926,   929,   930,   931,   932,   933,   934,   935,   936,   963,
+       0,     0,   958,   961,   962,    47,    52,     0,    39,    45,
        0,    66,    62,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -5901,30 +5901,30 @@ namespace isc { namespace dhcp {
      713,   543,     0,     0,     0,     0,     0,     0,     0,   552,
      557,     0,     0,     0,     0,     0,   591,   596,     0,     0,
      369,   366,     0,     0,     0,     0,     0,     0,     0,     0,
-     926,   923,     0,     0,   958,   955,    51,    43,     0,     0,
+     928,   925,     0,     0,   960,   957,    51,    43,     0,     0,
        0,     0,     0,     0,     0,     0,   148,   149,   150,   151,
      152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
      162,     0,   194,   195,   163,   164,   165,     0,     0,     0,
      177,   178,   185,   186,   187,   188,   193,     0,     0,     0,
      198,     0,     0,     0,     0,     0,     0,   474,   475,   476,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   803,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   805,
        0,     0,     0,     0,     0,     0,     0,   203,   204,   205,
      206,     0,     0,    70,     0,   224,   225,   226,   227,   212,
        0,     0,     0,     0,     0,   477,   478,     0,     0,     0,
        0,     0,   406,     0,   658,   630,     0,   693,     0,   696,
      697,   675,     0,     0,     0,     0,     0,     0,     0,     0,
      712,     0,     0,   569,     0,     0,     0,   580,   556,     0,
-     613,   614,   615,     0,   595,     0,     0,   368,   938,     0,
-     941,     0,   944,   945,     0,     0,   925,     0,   963,   957,
+     613,   614,   615,     0,   595,     0,     0,   368,   940,     0,
+     943,     0,   946,   947,     0,     0,   927,     0,   965,   959,
        0,     0,   147,     0,     0,     0,     0,   234,   197,   168,
      169,   170,   171,   172,   167,   174,   176,   396,   544,   583,
      200,   202,   181,   182,   183,   184,   180,   481,    40,   660,
-     662,     0,    48,     0,     0,     0,   700,   358,     0,     0,
-       0,     0,   808,     0,     0,   190,   192,     0,     0,    53,
+     662,     0,    48,     0,     0,   747,   700,   358,     0,     0,
+       0,     0,   810,     0,     0,   190,   192,     0,     0,    53,
      223,   620,   665,   461,   463,   465,   469,   471,   473,   467,
        0,   657,   692,   695,   741,   727,   729,   731,   733,   735,
      737,   739,   572,   278,   576,   574,   579,   610,   617,   374,
-     376,   940,   943,   948,   949,   947,   951,   234,    44,     0,
+     376,   942,   945,   950,   951,   949,   953,   234,    44,     0,
        0,     0,   268,   270,   272,   274,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,   287,     0,     0,   295,
      297,   299,   301,   303,   304,   305,   306,   307,   308,   267,
@@ -5934,121 +5934,121 @@ namespace isc { namespace dhcp {
      401,     0,   397,   398,   549,     0,   545,   546,   588,     0,
      584,   585,   486,     0,   482,   483,   328,   329,     0,   323,
      326,   327,     0,   338,   339,   335,     0,   332,   336,   337,
-     317,   319,     0,   312,   315,   316,   750,     0,   747,   705,
-       0,   701,   702,   363,     0,   359,   360,     0,     0,     0,
-       0,     0,     0,     0,   379,   382,   383,   384,   385,   386,
-     387,   793,   799,     0,     0,     0,   792,   789,   790,   791,
-       0,   781,   784,   787,   785,   786,   788,     0,     0,     0,
-     352,     0,   344,   347,   348,   349,   350,   351,   831,   836,
-     838,     0,   861,     0,   842,   830,   823,   824,   825,   828,
-     829,     0,   815,   818,   819,   820,   821,   826,   827,   822,
-     813,     0,   809,   810,     0,   915,     0,   918,   911,   912,
-       0,   905,   908,   909,   910,   913,     0,   969,     0,   966,
-       0,  1012,     0,  1008,  1011,    55,   625,     0,   621,   622,
-     670,     0,   666,   667,   744,     0,     0,    64,   953,   208,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     317,   319,     0,   312,   315,   316,   752,     0,   748,   749,
+     705,     0,   701,   702,   363,     0,   359,   360,     0,     0,
+       0,     0,     0,     0,     0,   379,   382,   383,   384,   385,
+     386,   387,   795,   801,     0,     0,     0,   794,   791,   792,
+     793,     0,   783,   786,   789,   787,   788,   790,     0,     0,
+       0,   352,     0,   344,   347,   348,   349,   350,   351,   833,
+     838,   840,     0,   863,     0,   844,   832,   825,   826,   827,
+     830,   831,     0,   817,   820,   821,   822,   823,   828,   829,
+     824,   815,     0,   811,   812,     0,   917,     0,   920,   913,
+     914,     0,   907,   910,   911,   912,   915,     0,   971,     0,
+     968,     0,  1014,     0,  1010,  1013,    55,   625,     0,   621,
+     622,   670,     0,   666,   667,   744,     0,     0,    64,   955,
+     208,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   243,   229,   231,     0,   233,   238,     0,   395,
-     400,   553,   541,   548,   592,   582,   587,     0,   480,   485,
-     325,   322,   341,   334,   331,     0,     0,   314,   311,   752,
-     749,   746,   709,   699,   704,     0,   357,   362,     0,     0,
-       0,     0,     0,     0,   381,   378,     0,     0,     0,     0,
-       0,   783,   780,     0,     0,     0,   346,   343,     0,     0,
-       0,     0,     0,     0,     0,   817,   805,     0,   807,   812,
-       0,     0,     0,     0,   907,   904,   921,     0,   968,   965,
-       0,  1010,  1007,    57,     0,    56,     0,   619,   624,     0,
-     664,   669,   743,   962,     0,     0,     0,     0,   276,   279,
-     280,   281,   282,   283,   284,   285,   294,   286,     0,   292,
-     293,     0,     0,     0,     0,     0,   242,     0,   237,     0,
-     399,     0,   547,     0,   586,   539,   506,   507,   508,   510,
-     511,   512,   495,   496,   515,   516,   517,   518,   519,   520,
-     523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
-     533,   534,   535,   521,   522,   536,   537,   538,   491,   492,
-     493,   494,   502,   503,   504,   505,   499,   500,   501,   509,
-       0,   488,   497,   513,   514,   498,   484,   324,   333,     0,
-       0,   313,   773,   775,     0,     0,   771,   765,   766,   767,
-     768,   769,   770,   772,   762,   763,   764,     0,   753,   754,
-     757,   758,   759,   760,   761,   748,     0,   703,     0,   361,
-     388,   389,   390,   391,   392,   393,   380,     0,     0,   798,
-     801,   802,   782,   353,   354,   355,   345,     0,     0,     0,
-     840,     0,   841,     0,   816,     0,   811,   914,     0,   917,
-       0,   906,   984,     0,   982,   980,   974,   978,   979,     0,
-     971,   976,   977,   975,   967,  1013,  1009,    54,    59,     0,
-     623,     0,   668,   269,   271,   273,   275,   289,   290,   291,
-     288,   296,   298,   300,   302,   309,   240,   402,   550,   589,
-     490,   487,   318,   320,     0,     0,     0,     0,   751,   756,
-     706,   364,   795,   796,   797,   794,   800,   833,   834,   835,
-     832,   837,   839,     0,   844,   814,   916,   919,     0,     0,
-       0,   973,   970,    58,   626,   671,   489,     0,     0,   777,
-     778,   755,   873,   876,   878,   880,   872,   871,   870,     0,
-     863,   866,   867,   868,   869,   849,     0,   845,   846,     0,
-     981,     0,   972,   774,   776,     0,     0,     0,     0,   865,
-     862,     0,   843,   848,     0,   983,     0,     0,     0,     0,
-     864,   859,   858,   854,   856,   857,     0,   851,   855,   847,
-     989,     0,   986,   875,   874,   877,   879,   882,     0,   853,
-     850,     0,   988,   985,   887,     0,   883,   884,     0,   852,
-     999,     0,     0,     0,  1004,     0,   991,   994,   995,   996,
-     997,   998,   987,     0,   881,   886,   860,     0,     0,     0,
-       0,     0,   993,   990,   899,   901,   898,   892,   894,   896,
-     897,     0,   889,   893,   895,   885,     0,  1001,  1002,  1003,
-       0,   992,     0,     0,   891,   888,  1000,  1005,     0,     0,
-     890,   900,   902
+       0,     0,     0,   243,   229,   231,     0,   233,   238,     0,
+     395,   400,   553,   541,   548,   592,   582,   587,     0,   480,
+     485,   325,   322,   341,   334,   331,     0,     0,   314,   311,
+     754,   746,   751,   709,   699,   704,     0,   357,   362,     0,
+       0,     0,     0,     0,     0,   381,   378,     0,     0,     0,
+       0,     0,   785,   782,     0,     0,     0,   346,   343,     0,
+       0,     0,     0,     0,     0,     0,   819,   807,     0,   809,
+     814,     0,     0,     0,     0,   909,   906,   923,     0,   970,
+     967,     0,  1012,  1009,    57,     0,    56,     0,   619,   624,
+       0,   664,   669,   743,   964,     0,     0,     0,     0,   276,
+     279,   280,   281,   282,   283,   284,   285,   294,   286,     0,
+     292,   293,     0,     0,     0,     0,     0,   242,     0,   237,
+       0,   399,     0,   547,     0,   586,   539,   506,   507,   508,
+     510,   511,   512,   495,   496,   515,   516,   517,   518,   519,
+     520,   523,   524,   525,   526,   527,   528,   529,   530,   531,
+     532,   533,   534,   535,   521,   522,   536,   537,   538,   491,
+     492,   493,   494,   502,   503,   504,   505,   499,   500,   501,
+     509,     0,   488,   497,   513,   514,   498,   484,   324,   333,
+       0,     0,   313,   775,   777,     0,     0,   773,   767,   768,
+     769,   770,   771,   772,   774,   764,   765,   766,     0,   755,
+     756,   759,   760,   761,   762,   763,   750,     0,   703,     0,
+     361,   388,   389,   390,   391,   392,   393,   380,     0,     0,
+     800,   803,   804,   784,   353,   354,   355,   345,     0,     0,
+       0,   842,     0,   843,     0,   818,     0,   813,   916,     0,
+     919,     0,   908,   986,     0,   984,   982,   976,   980,   981,
+       0,   973,   978,   979,   977,   969,  1015,  1011,    54,    59,
+       0,   623,     0,   668,   269,   271,   273,   275,   289,   290,
+     291,   288,   296,   298,   300,   302,   309,   240,   402,   550,
+     589,   490,   487,   318,   320,     0,     0,     0,     0,   753,
+     758,   706,   364,   797,   798,   799,   796,   802,   835,   836,
+     837,   834,   839,   841,     0,   846,   816,   918,   921,     0,
+       0,     0,   975,   972,    58,   626,   671,   489,     0,     0,
+     779,   780,   757,   875,   878,   880,   882,   874,   873,   872,
+       0,   865,   868,   869,   870,   871,   851,     0,   847,   848,
+       0,   983,     0,   974,   776,   778,     0,     0,     0,     0,
+     867,   864,     0,   845,   850,     0,   985,     0,     0,     0,
+       0,   866,   861,   860,   856,   858,   859,     0,   853,   857,
+     849,   991,     0,   988,   877,   876,   879,   881,   884,     0,
+     855,   852,     0,   990,   987,   889,     0,   885,   886,     0,
+     854,  1001,     0,     0,     0,  1006,     0,   993,   996,   997,
+     998,   999,  1000,   989,     0,   883,   888,   862,     0,     0,
+       0,     0,     0,   995,   992,   901,   903,   900,   894,   896,
+     898,   899,     0,   891,   895,   897,   887,     0,  1003,  1004,
+    1005,     0,   994,     0,     0,   893,   890,  1002,  1007,     0,
+       0,   892,   902,   904
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456,   -10, -1456,  -643, -1456,
-     561, -1456, -1456, -1456, -1456,   516, -1456,  -244, -1456, -1456,
-   -1456,   -71, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   543,
-     765, -1456, -1456,     4,    12,    22,    38,    41,    42,   -57,
-     -54,   -35,   -15,    97,   100,   102,   103, -1456,    20,    23,
-      45,    48, -1456, -1456,    55, -1456,    60, -1456,    66,   105,
-      71, -1456, -1456,    73,    76,    78,    84,    90, -1456,    95,
-   -1456,   107, -1456, -1456, -1456, -1456, -1456,   108, -1456,   113,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   545,
-     767, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456,   469, -1456,   226, -1456,  -765,   233, -1456,
-   -1456, -1455, -1456, -1448, -1456, -1456, -1456, -1456,   -55, -1456,
-    -806, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456,  -810, -1456,  -804, -1456,  -801, -1456,
-     123, -1456, -1456, -1456, -1456, -1456, -1456,   214, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   222,  -791, -1456, -1456, -1456,
-   -1456,   216, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   187,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,   207, -1456, -1456,
-   -1456,   213,   739, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     202, -1456, -1456, -1456, -1456, -1456, -1456, -1092, -1456, -1456,
-   -1456,   239, -1456, -1456, -1456,   242,   774, -1456, -1456, -1091,
-   -1456, -1090, -1456,    61, -1456,    85, -1456,   122, -1456,   126,
-   -1456,   115,   118,   119, -1456, -1089, -1456, -1456, -1456, -1456,
-     235, -1456, -1456,   -27,  1280, -1456, -1456, -1456, -1456, -1456,
-     245, -1456, -1456, -1456,   244, -1456,   753, -1456,   -65, -1456,
-   -1456, -1456, -1456, -1456,   -61, -1456, -1456, -1456, -1456, -1456,
-     -29, -1456, -1456, -1456,   248, -1456, -1456, -1456,   252, -1456,
-     745, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   182, -1456, -1456, -1456,   185,
-     790, -1456, -1456,   -63,   -42, -1456,   -13, -1456, -1456, -1456,
-   -1456, -1456,   177, -1456, -1456, -1456,   184,   792, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456,   -58, -1456, -1456, -1456,   240,
-   -1456, -1456, -1456,   243, -1456,   777,   539, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1088, -1456, -1456, -1456, -1456, -1456,   253, -1456,
-   -1456, -1456,    -7, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456,   236, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   217,
-   -1456,   218,   223, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456,   -64, -1456, -1456,   -88,
-   -1456, -1456, -1456, -1456, -1456,   -52, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456,  -111, -1456, -1456,
-    -139, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   225, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   586,
-     775, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,   621,   778,
-   -1456, -1456, -1456, -1456, -1456, -1456,   238, -1456, -1456,    -5,
-   -1456, -1456, -1456, -1456, -1456, -1456,   -69, -1456, -1456,   -98,
-   -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456, -1456,
-     258, -1456
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457,   -10, -1457,  -643, -1457,
+     559, -1457, -1457, -1457, -1457,   511, -1457,  -244, -1457, -1457,
+   -1457,   -71, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   547,
+     765, -1457, -1457,     4,    12,    22,    38,    41,    42,   -57,
+     -54,   -35,   -15,    97,   100,   102,   103, -1457,    20,    23,
+      45,    48, -1457, -1457,    55, -1457,    60, -1457,    66,   105,
+      71, -1457, -1457,    73,    76,    78,    84,    90, -1457,    95,
+   -1457,   107, -1457, -1457, -1457, -1457, -1457,   108, -1457,   113,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   545,
+     770, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457,   463, -1457,   224, -1457,  -765,   233, -1457,
+   -1457, -1456, -1457, -1449, -1457, -1457, -1457, -1457,   -55, -1457,
+    -806, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,  -810, -1457,  -804, -1457,  -801, -1457,
+     123, -1457, -1457, -1457, -1457, -1457, -1457,   209, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   219,  -791, -1457, -1457, -1457,
+   -1457,   218, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   186,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,   207, -1457, -1457,
+   -1457,   208,   733, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     202, -1457, -1457, -1457, -1457, -1457, -1457, -1093, -1457, -1457,
+   -1457,   238, -1457, -1457, -1457,   241,   773, -1457, -1457, -1092,
+   -1457, -1091, -1457,    61, -1457,    85, -1457,   122, -1457,   126,
+   -1457,   115,   118,   119, -1457, -1090, -1457, -1457, -1457, -1457,
+     235, -1457, -1457,   -27,  1279, -1457, -1457, -1457, -1457, -1457,
+     244, -1457, -1457, -1457,   247, -1457,   750, -1457,   -65, -1457,
+   -1457, -1457, -1457, -1457,   -61, -1457, -1457, -1457, -1457, -1457,
+     -29, -1457, -1457, -1457,   248, -1457, -1457, -1457,   249, -1457,
+     746, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   182, -1457, -1457, -1457,   185,
+     787, -1457, -1457,   -63,   -42, -1457,   -13, -1457, -1457, -1457,
+   -1457, -1457,   175, -1457, -1457, -1457,   183,   791, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457,   -58, -1457, -1457, -1457,   239,
+   -1457, -1457, -1457,   242, -1457,   778,   536, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1089, -1457, -1457, -1457, -1457, -1457, -1457,   250,
+   -1457, -1457, -1457,    -7, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457,   232, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     217, -1457,   220,   223, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457,   -68, -1457, -1457,
+     -90, -1457, -1457, -1457, -1457, -1457,   -52, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,  -114, -1457,
+   -1457,  -140, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   221,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+     583,   775, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,   623,
+     777, -1457, -1457, -1457, -1457, -1457, -1457,   236, -1457, -1457,
+     -12, -1457, -1457, -1457, -1457, -1457, -1457,   -69, -1457, -1457,
+    -100, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457, -1457,
+   -1457,   245, -1457
   };
 
   const short
@@ -6056,8 +6056,8 @@ namespace isc { namespace dhcp {
   {
        0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     809,    87,    88,    41,    68,    84,    85,   830,  1065,  1184,
-    1185,   899,    43,    70,    90,   480,    91,    45,    71,   167,
+     809,    87,    88,    41,    68,    84,    85,   830,  1066,  1185,
+    1186,   899,    43,    70,    90,   480,    91,    45,    71,   167,
      168,   169,   483,   170,   171,   172,   173,   174,   175,   176,
      177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
      187,   188,   510,   794,   189,   511,   190,   512,   191,   192,
@@ -6065,228 +6065,228 @@ namespace isc { namespace dhcp {
      549,   200,   201,   202,   203,   504,   204,   205,   524,   206,
      525,   207,   208,   209,   210,   211,   485,    47,    72,   248,
      249,   250,   559,   251,   252,   253,   254,   212,   486,   213,
-     487,   214,   488,   927,   928,   929,  1105,   900,   901,   902,
-    1080,   903,  1081,   904,  1082,   905,  1083,   906,   907,   603,
-     908,   909,   910,   911,   912,   913,   914,   915,   916,  1094,
-    1370,   917,   918,   919,   920,  1097,   921,  1098,   922,  1099,
-     923,  1100,   924,  1101,   215,   536,   962,   963,   964,  1125,
-     965,  1126,   216,   533,   948,   949,   950,   951,   217,   535,
-     956,   957,   958,   959,   218,   534,   219,   543,  1011,  1012,
-    1013,  1014,  1015,   220,   539,   974,   975,   976,  1135,    63,
-      80,   444,   445,   446,   618,   447,   619,   221,   540,   983,
-     984,   985,   986,   987,   988,   989,   990,   222,   520,   931,
-     932,   933,  1108,    49,    73,   302,   303,   304,   568,   305,
+     487,   214,   488,   927,   928,   929,  1106,   900,   901,   902,
+    1081,   903,  1082,   904,  1083,   905,  1084,   906,   907,   603,
+     908,   909,   910,   911,   912,   913,   914,   915,   916,  1095,
+    1371,   917,   918,   919,   920,  1098,   921,  1099,   922,  1100,
+     923,  1101,   924,  1102,   215,   536,   962,   963,   964,  1126,
+     965,  1127,   216,   533,   948,   949,   950,   951,   217,   535,
+     956,   957,   958,   959,   218,   534,   219,   543,  1012,  1013,
+    1014,  1015,  1016,   220,   539,   975,   976,   977,  1136,    63,
+      80,   444,   445,   446,   618,   447,   619,   221,   540,   984,
+     985,   986,   987,   988,   989,   990,   991,   222,   520,   931,
+     932,   933,  1109,    49,    73,   302,   303,   304,   568,   305,
      569,   306,   570,   307,   576,   308,   573,   309,   574,   310,
      575,   223,   224,   225,   314,   315,   226,   527,   943,   944,
-     945,  1117,  1270,  1271,   227,   521,    57,    77,   935,   936,
-     937,  1111,    59,    78,   405,   406,   407,   408,   409,   410,
+     945,  1118,  1271,  1272,   227,   521,    57,    77,   935,   936,
+     937,  1112,    59,    78,   405,   406,   407,   408,   409,   410,
      411,   602,   412,   606,   413,   605,   414,   415,   607,   416,
-     228,   522,   939,   940,   941,  1114,    61,    79,   428,   429,
+     228,   522,   939,   940,   941,  1115,    61,    79,   428,   429,
      430,   431,   432,   611,   433,   434,   435,   436,   437,   438,
-     615,   317,   566,  1067,  1068,  1069,  1186,    51,    74,   345,
+     615,   317,   566,  1068,  1069,  1070,  1187,    51,    74,   345,
      346,   347,   580,   348,   229,   528,   230,   529,   320,   567,
-    1071,  1072,  1073,  1189,    53,    75,   365,   366,   367,   584,
-     368,   369,   586,   370,   371,   231,   538,   970,   971,   972,
-    1132,    55,    76,   384,   385,   386,   387,   592,   388,   593,
+    1072,  1073,  1074,  1190,    53,    75,   365,   366,   367,   584,
+     368,   369,   586,   370,   371,   231,   538,   971,   972,   973,
+    1133,    55,    76,   384,   385,   386,   387,   592,   388,   593,
      389,   594,   390,   595,   391,   596,   392,   597,   393,   598,
-     394,   591,   322,   577,  1075,   232,   537,   967,   968,  1129,
-    1297,  1298,  1299,  1300,  1301,  1384,  1302,  1385,  1303,  1304,
-     233,   541,  1000,  1001,  1002,  1146,  1395,  1003,  1004,  1147,
-    1005,  1006,   234,   235,   544,   236,   545,  1041,  1042,  1043,
-    1167,  1031,  1032,  1033,  1158,  1400,  1034,  1159,  1035,  1160,
-    1036,  1037,  1038,  1164,  1436,  1437,  1438,  1451,  1466,  1467,
-    1468,  1478,  1039,  1162,  1429,  1430,  1431,  1445,  1474,  1432,
-    1446,  1433,  1447,  1434,  1448,  1485,  1486,  1487,  1503,  1521,
-    1522,  1523,  1532,  1524,  1533,   237,   546,  1050,  1051,  1052,
-    1053,  1171,  1054,  1055,  1173,   238,   547,    65,    81,   459,
-     460,   461,   462,   623,   463,   464,   625,   465,   466,   467,
-     628,   865,   468,   629,   239,   484,    67,    82,   471,   472,
-     473,   632,   474,   240,   554,  1058,  1059,  1177,  1349,  1350,
-    1351,  1352,  1410,  1353,  1408,  1471,  1472,  1481,  1495,  1496,
-    1497,  1507,  1498,  1499,  1500,  1501,  1511,   241,   555,  1062,
-    1063,  1064
+     394,   591,   322,   577,  1076,   232,   537,   967,   968,   969,
+    1130,  1298,  1299,  1300,  1301,  1302,  1385,  1303,  1386,  1304,
+    1305,   233,   541,  1001,  1002,  1003,  1147,  1396,  1004,  1005,
+    1148,  1006,  1007,   234,   235,   544,   236,   545,  1042,  1043,
+    1044,  1168,  1032,  1033,  1034,  1159,  1401,  1035,  1160,  1036,
+    1161,  1037,  1038,  1039,  1165,  1437,  1438,  1439,  1452,  1467,
+    1468,  1469,  1479,  1040,  1163,  1430,  1431,  1432,  1446,  1475,
+    1433,  1447,  1434,  1448,  1435,  1449,  1486,  1487,  1488,  1504,
+    1522,  1523,  1524,  1533,  1525,  1534,   237,   546,  1051,  1052,
+    1053,  1054,  1172,  1055,  1056,  1174,   238,   547,    65,    81,
+     459,   460,   461,   462,   623,   463,   464,   625,   465,   466,
+     467,   628,   865,   468,   629,   239,   484,    67,    82,   471,
+     472,   473,   632,   474,   240,   554,  1059,  1060,  1178,  1350,
+    1351,  1352,  1353,  1411,  1354,  1409,  1472,  1473,  1482,  1496,
+    1497,  1498,  1508,  1499,  1500,  1501,  1502,  1512,   241,   555,
+    1063,  1064,  1065
   };
 
   const short
   Dhcp6Parser::yytable_[] =
   {
      166,   247,   269,   325,   356,   380,    38,   403,   424,   443,
-     456,  1026,   362,   997,   426,   321,   276,  1027,   427,   277,
-    1028,   925,   955,   404,   425,  1259,  1260,  1261,  1269,  1275,
+     456,  1027,   362,   998,   426,   321,   276,  1028,   427,   277,
+    1029,   925,   955,   404,   425,  1260,  1261,  1262,  1270,  1276,
      255,   318,   349,   363,   382,   396,   417,   439,   278,   457,
-     946,  1060,   808,    30,   316,   344,   361,   381,  1517,   441,
-     442,   789,   790,   791,   792,  1518,   165,    42,   279,   256,
+     946,  1061,   808,    30,   316,   344,   361,   381,  1518,   441,
+     442,   789,   790,   791,   792,  1519,   165,    42,   279,   256,
      319,   350,   364,   383,    44,   418,   440,    31,   458,    32,
-      46,    33,   242,   243,   244,   245,   246,   270,   481,  1517,
-     441,   442,   397,   482,  1120,   271,  1518,  1121,    86,   793,
-      48,  1422,    89,   284,   326,   272,   285,   327,   991,   397,
+      46,    33,   242,   243,   244,   245,   246,   270,   481,  1518,
+     441,   442,   397,   482,  1121,   271,  1519,  1122,    86,   793,
+      48,  1423,    89,   284,   326,   272,   285,   327,   992,   397,
       50,   398,   399,   877,   469,   470,   400,   401,   402,   137,
-     138,   273,   557,  1123,   274,   275,  1124,   558,   286,   328,
+     138,   273,   557,  1124,   274,   275,  1125,   558,   286,   328,
      564,   287,   329,   808,   476,   565,   137,   138,   288,   330,
      863,   864,   578,   289,   331,   340,   357,   579,   947,   290,
      332,   165,    52,   582,   292,   333,   293,   334,   583,   294,
      335,   295,   336,   873,   874,    54,   589,   296,   337,   341,
      358,   590,   620,   297,   338,   960,   961,   621,   298,   339,
      280,   137,   138,   281,   630,   282,   283,    56,   291,   631,
-     299,   300,   137,   138,  1461,   130,   301,    58,   311,   137,
+     299,   300,   137,   138,  1462,   130,   301,    58,   311,   137,
      138,   312,   313,   889,   890,   891,   342,   359,    60,    62,
      343,   360,   872,   873,   874,   875,   876,   877,   878,   879,
      880,   881,   882,   883,   884,   885,   886,   131,    64,    66,
      887,   888,   889,   890,   891,   892,   893,   894,   895,   896,
-     897,   898,   946,   953,   475,   954,   165,   992,   993,   994,
-     995,   477,   478,   137,   138,   137,   138,   137,   138,   479,
-    1423,  1424,  1425,   165,   397,   419,   398,   399,   420,   421,
-     422,   372,   634,   557,   137,   138,   397,   635,  1077,   489,
+     897,   898,   946,   953,   475,   954,   165,   993,   994,   995,
+     996,   477,   478,   137,   138,   137,   138,   137,   138,   479,
+    1424,  1425,  1426,   165,   397,   419,   398,   399,   420,   421,
+     422,   372,   634,   557,   137,   138,   397,   635,  1078,   489,
      490,   373,   374,   375,   376,   377,   378,   379,   634,   564,
-    1102,   137,   138,  1078,  1079,  1103,   491,   492,  1259,  1260,
-    1261,  1269,  1275,  1130,   397,  1102,  1131,   423,   165,   493,
-    1104,  1007,  1008,  1009,    34,    35,    36,    37,  1127,   165,
-     494,   495,  1144,  1128,  1514,  1515,   165,  1145,   496,  1151,
-    1156,   137,   138,  1018,  1152,  1157,  1165,  1019,  1020,  1021,
-    1022,  1166,   955,   497,   137,   138,  1174,  1023,  1024,   630,
-    1217,  1175,   498,  1490,  1176,   997,  1491,  1492,  1493,  1494,
-     499,  1181,   599,  1102,   578,  1026,  1182,  1026,  1376,  1377,
-    1380,  1027,   620,  1027,  1028,  1381,  1028,  1391,  1165,   600,
-     165,   500,   165,  1405,   165,   501,    98,    99,   100,   101,
+    1103,   137,   138,  1079,  1080,  1104,   491,   492,  1260,  1261,
+    1262,  1270,  1276,  1179,   397,  1103,  1180,   423,   165,   599,
+    1105,  1008,  1009,  1010,    34,    35,    36,    37,  1128,   165,
+     493,   494,  1145,  1129,  1515,  1516,   165,  1146,   495,  1152,
+    1157,   137,   138,  1019,  1153,  1158,   600,  1020,  1021,  1022,
+    1023,   137,   138,   955,   496,  1166,   601,  1024,  1025,  1491,
+    1167,  1218,  1492,  1493,  1494,  1495,   998,   978,   979,   980,
+     981,   982,   983,   497,  1175,   630,  1027,   498,  1027,  1176,
+    1177,  1182,  1028,  1103,  1028,  1029,  1183,  1029,  1377,   499,
+     165,   500,   165,   501,   165,   502,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-    1178,   165,   502,  1179,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   125,   126,   127,   128,  1482,   165,   131,
-    1483,  1044,  1045,  1046,   977,   978,   979,   980,   981,   982,
-     165,   133,   134,   135,  1342,  1411,  1343,  1344,   582,   257,
-    1412,   258,   503,  1414,  1367,  1368,  1369,   137,   138,   259,
-     260,   261,   262,   263,   139,   140,   141,   589,   165,   505,
-     506,   131,  1415,   264,   265,   266,   507,   508,  1449,  1479,
-     267,  1047,   147,  1450,  1480,   509,   636,   637,  1512,   610,
-     268,   513,   514,  1513,   351,   352,   353,   354,   355,   137,
-     138,   515,   516,   836,   837,   838,   166,   892,   893,   894,
-     895,   896,   897,   247,   517,   264,   265,   266,   844,   845,
-     846,   847,   267,   324,  1534,   601,   518,   269,   519,  1535,
-     523,   325,   802,   803,   804,   805,   530,   531,   356,   858,
-     321,   276,   255,   532,   277,   542,   362,   550,   551,   380,
-    1392,  1393,  1394,   157,   158,   552,   318,   553,   556,   403,
-     349,   560,   561,   278,   562,   563,   424,   363,   571,   316,
-     572,   256,   426,   344,   581,   404,   427,   585,   382,   456,
-     361,   587,   425,   279,   165,   319,   588,   604,   417,   350,
-     608,   381,  1397,  1398,  1399,   439,   364,   609,   612,   613,
-     614,   616,   270,   617,   638,   622,   624,   383,   457,   626,
-     271,   627,   633,   639,   640,   641,   642,   418,   284,   643,
-     272,   285,   326,   644,   440,   327,   165,   645,   654,   661,
-     667,   646,   647,   668,   669,   648,   273,   458,   649,   274,
-     275,   650,   651,   286,   652,   653,   287,   328,   655,   656,
-     329,   664,   658,   288,   657,   137,   138,   330,   289,   665,
-     659,   660,   331,   340,   290,   662,   663,   677,   332,   292,
-     357,   293,   666,   333,   294,   334,   295,   670,   335,   671,
-     336,   672,   296,   673,   674,   678,   337,   341,   297,   675,
-     679,   681,   338,   298,   358,   280,   676,   339,   281,   680,
-     282,   283,   682,   291,   683,   299,   300,   684,   685,   686,
-     690,   301,   687,   311,   688,   689,   312,   313,   691,   692,
-     693,   694,   695,   696,   342,   697,   698,   699,   343,   700,
-     166,   359,   701,   247,   702,   360,   448,   449,   450,   451,
-     452,   453,   454,   455,   703,   704,   705,   706,   707,   708,
-     709,   710,   711,   712,   714,    98,    99,   100,   101,   102,
-     103,   715,   255,   716,   720,   721,   717,   722,   996,  1010,
-    1025,   718,   723,   456,   724,   726,   727,  1061,   725,   728,
-     729,   730,   165,   731,   733,   734,   736,   738,   131,   397,
-     868,   256,   737,   739,   742,   740,   781,   998,  1016,  1029,
-     743,  1048,   457,    92,    93,   744,   745,    94,   746,   747,
-     748,   749,   751,    95,    96,    97,   137,   138,   752,   753,
-     754,   755,   756,   757,   759,   760,   999,  1017,  1030,   761,
-    1049,   458,   762,   763,   765,  1282,  1283,  1284,  1285,   766,
-     769,   770,   768,   771,   774,   775,    98,    99,   100,   101,
+    1483,   165,   503,  1484,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   505,   165,   131,
+     137,   138,   448,   449,   450,   451,   452,   453,   454,   455,
+     165,   133,   134,   135,  1343,   578,  1344,  1345,  1381,   257,
+    1378,   258,   506,  1382,  1368,  1369,  1370,   137,   138,   259,
+     260,   261,   262,   263,   139,   140,   141,   620,   165,   507,
+     508,   131,  1392,   264,   265,   266,  1166,   609,   165,  1412,
+     267,  1406,   147,   582,  1413,   509,   636,   637,  1415,   610,
+     268,  1393,  1394,  1395,   351,   352,   353,   354,   355,   137,
+     138,   513,   514,   836,   837,   838,   166,  1045,  1046,  1047,
+    1398,  1399,  1400,   247,   515,   264,   265,   266,   844,   845,
+     846,   847,   267,   324,   589,  1450,   616,   269,   516,  1416,
+    1451,   325,   892,   893,   894,   895,   896,   897,   356,   858,
+     321,   276,   255,  1480,   277,  1513,   362,  1535,  1481,   380,
+    1514,   517,  1536,   157,   158,   518,   318,  1048,   519,   403,
+     349,   523,   530,   278,   531,   532,   424,   363,   542,   316,
+     550,   256,   426,   344,   551,   404,   427,   552,   382,   456,
+     361,   553,   425,   279,   165,   319,   556,   560,   417,   350,
+     561,   381,   562,   563,   571,   439,   364,   802,   803,   804,
+     805,   572,   270,   581,   585,   587,   588,   383,   457,   604,
+     271,   608,   612,   613,   614,   617,   638,   418,   284,   622,
+     272,   285,   326,   624,   440,   327,   165,   626,   627,   633,
+     639,   640,   641,   642,   643,   644,   273,   458,   645,   274,
+     275,   646,   647,   286,   648,   649,   287,   328,   650,   651,
+     329,   661,   652,   288,   653,   654,   655,   330,   289,   664,
+     656,   657,   331,   340,   290,   658,   665,   660,   332,   292,
+     357,   293,   659,   333,   294,   334,   295,   662,   335,   663,
+     336,   667,   296,   666,   668,   669,   337,   341,   297,   670,
+     673,   671,   338,   298,   358,   280,   672,   339,   281,   674,
+     282,   283,   675,   291,   677,   299,   300,   676,   678,   679,
+     680,   301,   681,   311,   682,   683,   312,   313,   684,   685,
+     686,   690,   687,   688,   342,   691,   692,   689,   343,   693,
+     166,   359,   694,   247,   695,   360,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+     696,   697,   698,   700,   699,    98,    99,   100,   101,   102,
+     103,   701,   255,   702,   703,   704,   705,   706,   997,  1011,
+    1026,   707,   708,   456,   709,   710,   711,  1062,   712,   714,
+     715,   716,   717,   720,   718,   721,   722,   723,   131,   397,
+     868,   256,   724,   725,   726,   727,   734,   999,  1017,  1030,
+     728,  1049,   457,    92,    93,   729,   730,    94,   731,   733,
+     736,   737,   738,    95,    96,    97,   137,   138,   739,   740,
+     742,   743,   744,   745,   746,   747,  1000,  1018,  1031,   748,
+    1050,   458,   749,   751,   752,  1283,  1284,  1285,  1286,   753,
+     754,   755,   756,   757,   759,   763,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
      122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
-     772,   773,   777,   778,   780,   782,   783,   788,   784,   785,
-     132,   133,   134,   135,   786,   787,   795,   796,   136,   797,
-     798,   799,   800,   801,   807,    32,   810,   137,   138,   811,
-     812,   813,   815,   816,   139,   140,   141,   142,   143,   144,
-     145,   814,   817,   146,   825,   818,   819,   820,   821,   822,
-     823,   826,   147,   824,   827,   828,   829,   831,   832,   833,
-     866,   148,   840,   165,   149,   867,   926,  1084,   930,   834,
-     835,   150,   839,   841,   842,   843,   934,   938,   942,   151,
-     152,   966,   848,   969,   153,   154,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-     973,   849,  1040,   155,  1057,  1066,   850,   156,   851,   852,
-    1070,   373,  1085,   853,   854,   855,   856,   857,   859,   861,
-     862,  1086,  1087,   157,   158,   159,   160,   161,   162,   163,
-    1088,  1089,  1090,  1091,  1092,  1093,  1095,  1096,   164,  1107,
-    1106,  1109,  1110,  1112,  1113,  1116,  1115,  1119,  1183,  1118,
-    1134,  1122,  1133,  1137,   165,  1136,  1138,  1139,  1140,  1141,
-    1142,  1143,  1148,  1149,  1150,  1153,  1154,  1155,  1161,  1163,
-    1169,  1188,  1168,  1170,  1172,  1180,  1198,   269,  1187,  1190,
-     403,  1191,  1192,   424,  1194,  1193,  1225,  1195,  1196,   426,
-     321,   276,  1197,   427,   277,  1208,   404,  1199,  1286,   425,
-    1232,   380,  1258,  1233,   443,  1200,   318,  1202,  1201,   417,
-    1203,  1204,   439,   278,  1293,  1273,  1205,  1206,  1207,   316,
-     996,  1209,  1234,  1210,  1211,  1010,  1212,  1295,  1272,  1213,
-     382,  1214,  1215,   279,  1025,   319,  1025,  1279,   418,  1280,
-    1294,   440,  1235,   381,  1274,  1317,  1345,  1310,  1311,   998,
-    1061,  1312,   270,  1318,  1016,   325,  1296,  1323,   356,   383,
-     271,  1226,  1346,  1029,  1313,  1029,   362,  1327,   284,  1227,
-     272,   285,  1048,  1287,  1314,  1347,  1315,  1240,   999,  1228,
-    1241,  1288,  1328,  1017,   349,  1319,   273,   363,  1320,   274,
-     275,  1289,  1030,   286,  1030,  1229,   287,   344,  1230,  1231,
-     361,  1049,  1242,   288,  1348,  1243,  1329,  1290,   289,  1321,
-    1291,  1292,  1244,   350,   290,  1324,   364,  1245,  1262,   292,
-    1325,   293,  1330,  1246,   294,  1331,   295,  1332,  1248,  1333,
-    1249,  1337,   296,  1250,  1338,  1251,  1340,  1339,   297,  1357,
-    1358,  1252,  1263,   298,  1355,   280,   326,  1253,   281,   327,
-     282,   283,  1254,   291,  1236,   299,   300,  1237,  1363,  1238,
-    1239,   301,  1247,   311,  1255,  1256,   312,   313,  1378,  1379,
-    1257,   328,  1266,  1386,   329,  1267,  1268,  1387,  1388,  1264,
-    1364,   330,  1389,  1265,  1390,  1403,   331,   340,  1404,  1409,
-     357,  1417,   332,  1365,  1418,  1435,  1439,   333,  1441,   334,
-    1453,  1452,   335,  1454,   336,  1456,  1457,  1458,  1459,  1505,
-     337,   341,  1470,  1473,   358,  1477,   338,  1366,  1371,  1372,
-    1484,   339,  1488,  1373,  1375,  1504,  1508,  1382,  1383,  1396,
-    1509,  1401,  1402,  1510,  1406,  1413,  1526,  1530,  1443,  1419,
-    1420,  1440,  1444,  1455,  1475,  1476,  1506,  1538,   342,  1225,
-    1527,   359,   343,  1528,  1529,   360,  1536,  1537,  1286,  1539,
-    1541,  1542,   713,  1232,   869,  1258,  1233,   860,   952,   871,
-    1407,   719,  1426,  1218,  1293,  1216,  1076,  1374,  1273,  1278,
-    1345,  1281,  1277,  1326,  1309,  1234,  1316,  1295,  1308,  1220,
-    1219,  1272,   732,  1416,  1276,  1221,  1346,   395,  1222,   767,
-    1294,  1427,   764,   758,  1224,  1235,  1223,  1274,  1362,  1347,
-    1360,  1359,   735,  1361,  1307,  1306,  1296,   750,  1426,  1074,
-    1462,   741,  1421,  1305,  1226,  1335,  1336,  1322,  1334,  1469,
-    1428,  1489,  1227,  1287,  1525,  1540,  1463,  1460,  1348,  1341,
-    1240,  1288,  1228,  1241,   870,   776,  1442,  1427,  1462,  1464,
-    1056,  1289,   779,  1502,  1531,     0,  1354,     0,  1229,     0,
-       0,  1230,  1231,     0,  1463,  1242,     0,  1290,  1243,     0,
-    1291,  1292,  1516,     0,     0,  1244,  1428,  1464,  1465,  1356,
-    1245,  1262,     0,     0,     0,     0,  1246,     0,     0,     0,
-       0,  1248,     0,  1249,     0,     0,  1250,     0,  1251,     0,
-       0,  1519,     0,  1516,  1252,  1263,  1465,     0,     0,     0,
-    1253,     0,     0,     0,     0,  1254,     0,  1236,     0,     0,
-    1237,     0,  1238,  1239,     0,  1247,     0,  1255,  1256,     0,
-    1520,     0,  1519,  1257,     0,  1266,     0,     0,  1267,  1268,
-       0,     0,  1264,     0,     0,     0,  1265,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,  1520,     0,     0,     0,   116,   117,   118,   119,   120,
-     121,   122,   123,   124,   125,   126,   127,   128,   129,     0,
-     131,   397,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   133,   134,   135,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   137,   138,
-       0,   260,   261,     0,   263,   139,   140,   141,     0,     0,
-       0,     0,     0,     0,   264,   265,   266,     0,     0,     0,
-       0,   267,     0,     0,   116,   117,   118,   119,   120,   121,
-     122,   268,   124,   125,   126,   127,     0,     0,     0,   131,
+     760,   761,   762,   765,   766,   768,   769,   770,   771,   772,
+     132,   133,   134,   135,   773,   774,   775,   777,   136,   778,
+     780,   781,   782,   788,   783,   784,   785,   137,   138,   786,
+     787,   795,   796,   797,   139,   140,   141,   142,   143,   144,
+     145,   798,   799,   146,   800,   801,   807,    32,   810,   811,
+     812,   813,   147,   815,   814,   816,   817,   825,   826,   818,
+     819,   148,   820,   165,   149,   821,   822,   823,   827,   824,
+     373,   150,   828,   829,   831,   832,  1085,   866,   840,   151,
+     152,   833,   834,   867,   153,   154,   835,   926,   839,   841,
+     930,   842,   934,   843,   848,   849,   850,   851,   852,   853,
+     854,   855,   856,   155,   857,   859,   861,   156,   938,   942,
+     966,   970,   862,   974,  1041,  1058,  1067,  1071,  1086,  1087,
+    1088,  1089,  1090,   157,   158,   159,   160,   161,   162,   163,
+    1091,  1092,  1093,  1094,  1096,  1097,  1139,  1108,   164,  1107,
+    1111,  1110,  1113,  1114,  1116,  1117,  1120,  1119,  1184,  1132,
+    1123,  1131,  1135,  1134,   165,  1138,  1137,  1140,  1141,  1142,
+    1143,  1144,  1149,  1150,  1151,  1154,  1155,  1156,  1162,  1164,
+    1170,  1189,  1169,  1171,  1173,  1181,  1195,  1199,   269,  1188,
+    1191,   403,  1192,  1193,   424,  1196,  1194,  1226,  1197,  1198,
+     426,   321,   276,  1209,   427,   277,  1200,   404,  1201,  1287,
+     425,  1233,   380,  1259,  1234,   443,  1212,   318,  1202,  1203,
+     417,  1204,  1205,   439,   278,  1294,  1274,  1206,  1207,  1208,
+     316,   997,  1210,  1235,  1211,  1213,  1011,  1214,  1296,  1273,
+    1215,   382,  1216,  1280,   279,  1026,   319,  1026,  1281,   418,
+    1311,  1295,   440,  1236,   381,  1275,  1312,  1346,  1313,  1314,
+     999,  1062,  1315,   270,  1318,  1017,   325,  1297,  1316,   356,
+     383,   271,  1227,  1347,  1030,  1319,  1030,   362,  1324,   284,
+    1228,   272,   285,  1049,  1288,  1320,  1348,  1321,  1241,  1000,
+    1229,  1242,  1289,  1328,  1018,   349,  1322,   273,   363,  1329,
+     274,   275,  1290,  1031,   286,  1031,  1230,   287,   344,  1231,
+    1232,   361,  1050,  1243,   288,  1349,  1244,  1325,  1291,   289,
+    1326,  1292,  1293,  1245,   350,   290,  1330,   364,  1246,  1263,
+     292,  1332,   293,  1334,  1247,   294,  1333,   295,  1339,  1249,
+    1331,  1250,  1340,   296,  1251,  1338,  1252,  1341,  1356,   297,
+    1358,  1359,  1253,  1264,   298,  1379,   280,   326,  1254,   281,
+     327,   282,   283,  1255,   291,  1237,   299,   300,  1238,  1380,
+    1239,  1240,   301,  1248,   311,  1256,  1257,   312,   313,  1387,
+    1388,  1258,   328,  1267,  1390,   329,  1268,  1269,  1389,  1404,
+    1265,  1364,   330,  1391,  1266,  1405,  1410,   331,   340,  1418,
+    1365,   357,  1419,   332,  1436,  1440,  1420,  1442,   333,  1454,
+     334,  1453,  1455,   335,  1457,   336,  1458,  1459,  1460,  1474,
+    1478,   337,   341,  1471,  1485,   358,  1489,   338,  1366,  1367,
+    1372,  1505,   339,  1506,  1373,  1374,  1509,  1510,  1376,  1383,
+    1384,  1511,  1397,  1402,  1403,  1407,  1414,  1527,  1531,  1441,
+    1421,  1444,  1445,  1456,  1539,  1476,  1477,  1507,  1540,   342,
+    1226,  1528,   359,   343,  1529,  1530,   360,  1537,  1538,  1287,
+    1542,  1543,   713,   952,  1233,   860,  1259,  1234,   869,   871,
+    1077,  1408,  1219,  1427,   719,  1294,  1217,  1282,  1375,  1274,
+    1278,  1346,  1279,  1327,  1309,  1310,  1235,  1317,  1296,  1221,
+    1220,   732,  1273,   767,  1417,  1277,   395,  1347,  1223,  1222,
+     758,  1295,  1428,   764,  1224,  1225,  1236,  1363,  1275,   735,
+    1348,  1361,  1360,  1362,  1308,  1307,  1075,  1297,   750,  1427,
+     741,  1463,  1306,  1422,  1323,  1227,  1470,  1337,  1336,  1335,
+    1490,  1429,  1526,  1228,  1288,  1541,  1342,  1464,  1461,  1349,
+    1443,  1241,  1289,  1229,  1242,   776,   870,  1057,  1428,  1463,
+    1465,   779,  1290,  1532,  1503,  1355,     0,     0,     0,  1230,
+       0,     0,  1231,  1232,     0,  1464,  1243,  1357,  1291,  1244,
+       0,  1292,  1293,  1517,     0,     0,  1245,  1429,  1465,  1466,
+       0,  1246,  1263,     0,     0,     0,     0,  1247,     0,     0,
+       0,     0,  1249,     0,  1250,     0,     0,  1251,     0,  1252,
+       0,     0,  1520,     0,  1517,  1253,  1264,  1466,     0,     0,
+       0,  1254,     0,     0,     0,     0,  1255,     0,  1237,     0,
+       0,  1238,     0,  1239,  1240,     0,  1248,     0,  1256,  1257,
+       0,  1521,     0,  1520,  1258,     0,  1267,     0,     0,  1268,
+    1269,     0,     0,  1265,     0,     0,     0,  1266,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,  1521,     0,     0,     0,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+       0,   131,   397,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   133,   134,   135,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   137,
+     138,     0,   260,   261,     0,   263,   139,   140,   141,     0,
+       0,     0,     0,     0,     0,   264,   265,   266,     0,     0,
+       0,     0,   267,     0,     0,   116,   117,   118,   119,   120,
+     121,   122,   268,   124,   125,   126,   127,     0,     0,     0,
+     131,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   135,     0,     0,     0,     0,     0,
+       0,   323,     0,     0,     0,     0,     0,     0,   137,   138,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   135,     0,     0,     0,     0,     0,     0,
-     323,     0,     0,     0,     0,     0,     0,   137,   138,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   264,   265,   266,     0,     0,     0,     0,
-     267,   324,     0,     0,   157,   158,     0,     0,     0,     0,
+       0,     0,     0,     0,   264,   265,   266,     0,     0,     0,
+       0,   267,   324,     0,     0,   157,   158,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   165,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   165,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   157,   158,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   157,   158,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   165
+       0,     0,     0,     0,     0,   165
   };
 
   const short
@@ -6294,13 +6294,13 @@ namespace isc { namespace dhcp {
   {
       71,    72,    73,    74,    75,    76,    16,    78,    79,    80,
       81,   821,    75,   819,    79,    73,    73,   821,    79,    73,
-     821,   786,   813,    78,    79,  1117,  1117,  1117,  1117,  1117,
+     821,   786,   813,    78,    79,  1118,  1118,  1118,  1118,  1118,
       72,    73,    74,    75,    76,    24,    78,    79,    73,    81,
-     144,   227,   685,     0,    73,    74,    75,    76,  1503,   150,
-     151,   207,   208,   209,   210,  1503,   242,     7,    73,    72,
+     144,   227,   685,     0,    73,    74,    75,    76,  1504,   150,
+     151,   207,   208,   209,   210,  1504,   242,     7,    73,    72,
       73,    74,    75,    76,     7,    78,    79,     5,    81,     7,
-       7,     9,    16,    17,    18,    19,    20,    73,     3,  1534,
-     150,   151,    88,     8,     3,    73,  1534,     6,   242,   245,
+       7,     9,    16,    17,    18,    19,    20,    73,     3,  1535,
+     150,   151,    88,     8,     3,    73,  1535,     6,   242,   245,
        7,    24,    10,    73,    74,    73,    73,    74,    24,    88,
        7,    90,    91,    29,    13,    14,    95,    96,    97,   115,
      116,    73,     3,     3,    73,    73,     6,     8,    73,    74,
@@ -6320,155 +6320,155 @@ namespace isc { namespace dhcp {
      183,   184,   185,   242,    88,    89,    90,    91,    92,    93,
       94,   131,     3,     3,   115,   116,    88,     8,     8,     4,
        4,   141,   142,   143,   144,   145,   146,   147,     3,     3,
-       3,   115,   116,     8,     8,     8,     4,     4,  1380,  1380,
-    1380,  1380,  1380,     3,    88,     3,     6,   131,   242,     4,
+       3,   115,   116,     8,     8,     8,     4,     4,  1381,  1381,
+    1381,  1381,  1381,     3,    88,     3,     6,   131,   242,     8,
        8,   169,   170,   171,   242,   243,   244,   245,     3,   242,
        4,     4,     3,     8,   186,   187,   242,     8,     4,     3,
        3,   115,   116,   174,     8,     8,     3,   178,   179,   180,
-     181,     8,  1123,     4,   115,   116,     3,   188,   189,     3,
-    1105,     8,     4,   219,     8,  1151,   222,   223,   224,   225,
-       4,     3,     8,     3,     3,  1165,     8,  1167,     8,     8,
-       3,  1165,     3,  1167,  1165,     8,  1167,     8,     3,     3,
-     242,     4,   242,     8,   242,     4,    54,    55,    56,    57,
+     181,   115,   116,  1124,     4,     3,     8,   188,   189,   219,
+       8,  1106,   222,   223,   224,   225,  1152,   153,   154,   155,
+     156,   157,   158,     4,     3,     3,  1166,     4,  1168,     8,
+       8,     3,  1166,     3,  1168,  1166,     8,  1168,     8,     4,
+     242,     4,   242,     4,   242,     4,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
        3,   242,     4,     6,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,     3,   242,    87,
-       6,   192,   193,   194,   153,   154,   155,   156,   157,   158,
+      78,    79,    80,    81,    82,    83,    84,     4,   242,    87,
+     115,   116,   196,   197,   198,   199,   200,   201,   202,   203,
      242,    99,   100,   101,   218,     3,   220,   221,     3,   107,
        8,   109,     4,     8,    39,    40,    41,   115,   116,   117,
      118,   119,   120,   121,   122,   123,   124,     3,   242,     4,
-       4,    87,     8,   131,   132,   133,     4,     4,     3,     3,
-     138,   242,   140,     8,     8,     4,   476,   477,     3,     3,
-     148,     4,     4,     8,   110,   111,   112,   113,   114,   115,
-     116,     4,     4,   727,   728,   729,   557,    47,    48,    49,
-      50,    51,    52,   564,     4,   131,   132,   133,   742,   743,
-     744,   745,   138,   139,     3,     8,     4,   578,     4,     8,
-       4,   582,   102,   103,   104,   105,     4,     4,   589,   763,
-     578,   578,   564,     4,   578,     4,   589,     4,     4,   600,
-     160,   161,   162,   211,   212,     4,   578,     4,     4,   610,
+       4,    87,     8,   131,   132,   133,     3,     8,   242,     3,
+     138,     8,   140,     3,     8,     4,   476,   477,     8,     3,
+     148,   160,   161,   162,   110,   111,   112,   113,   114,   115,
+     116,     4,     4,   727,   728,   729,   557,   192,   193,   194,
+     175,   176,   177,   564,     4,   131,   132,   133,   742,   743,
+     744,   745,   138,   139,     3,     3,     8,   578,     4,     8,
+       8,   582,    47,    48,    49,    50,    51,    52,   589,   763,
+     578,   578,   564,     3,   578,     3,   589,     3,     8,   600,
+       8,     4,     8,   211,   212,     4,   578,   242,     4,   610,
      582,     4,     4,   578,     4,     4,   617,   589,     4,   578,
        4,   564,   617,   582,     4,   610,   617,     4,   600,   630,
      589,     4,   617,   578,   242,   578,     4,     4,   610,   582,
-       4,   600,   175,   176,   177,   617,   589,     8,     4,     4,
-       4,     8,   578,     3,   242,     4,     4,   600,   630,     4,
-     578,     4,     4,     4,     4,     4,     4,   610,   578,     4,
-     578,   578,   582,     4,   617,   582,   242,     4,   245,     4,
-       4,   243,   243,     4,     4,   243,   578,   630,   243,   578,
-     578,   243,   243,   578,   243,   243,   578,   582,   244,   244,
-     582,   245,   243,   578,   244,   115,   116,   582,   578,   245,
-     244,   243,   582,   582,   578,   243,   243,     4,   582,   578,
-     589,   578,   245,   582,   578,   582,   578,   245,   582,   245,
-     582,   244,   578,   243,   243,     4,   582,   582,   578,   243,
-       4,     4,   582,   578,   589,   578,   245,   582,   578,   243,
-     578,   578,     4,   578,     4,   578,   578,     4,     4,     4,
-       4,   578,   245,   578,   245,   245,   578,   578,     4,     4,
-       4,     4,     4,     4,   582,     4,     4,   243,   582,     4,
-     781,   589,     4,   784,     4,   589,   196,   197,   198,   199,
-     200,   201,   202,   203,     4,     4,     4,     4,   245,   245,
-     245,   245,     4,     4,     4,    54,    55,    56,    57,    58,
-      59,   245,   784,   245,     4,     4,   243,     4,   819,   820,
-     821,   243,     4,   824,     4,   245,     4,   828,   243,     4,
-       4,     4,   242,     4,     4,   243,     4,     4,    87,    88,
-     780,   784,   243,   243,     4,   243,     7,   819,   820,   821,
+       4,   600,     4,     4,     4,   617,   589,   102,   103,   104,
+     105,     4,   578,     4,     4,     4,     4,   600,   630,     4,
+     578,     4,     4,     4,     4,     3,   242,   610,   578,     4,
+     578,   578,   582,     4,   617,   582,   242,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,   578,   630,     4,   578,
+     578,   243,   243,   578,   243,   243,   578,   582,   243,   243,
+     582,     4,   243,   578,   243,   245,   244,   582,   578,   245,
+     244,   244,   582,   582,   578,   243,   245,   243,   582,   578,
+     589,   578,   244,   582,   578,   582,   578,   243,   582,   243,
+     582,     4,   578,   245,     4,     4,   582,   582,   578,   245,
+     243,   245,   582,   578,   589,   578,   244,   582,   578,   243,
+     578,   578,   243,   578,     4,   578,   578,   245,     4,     4,
+     243,   578,     4,   578,     4,     4,   578,   578,     4,     4,
+       4,     4,   245,   245,   582,     4,     4,   245,   582,     4,
+     781,   589,     4,   784,     4,   589,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+       4,     4,     4,     4,   243,    54,    55,    56,    57,    58,
+      59,     4,   784,     4,     4,     4,     4,     4,   819,   820,
+     821,   245,   245,   824,   245,   245,     4,   828,     4,     4,
+     245,   245,   243,     4,   243,     4,     4,     4,    87,    88,
+     780,   784,     4,   243,   245,     4,   243,   819,   820,   821,
        4,   823,   824,    11,    12,     4,     4,    15,     4,     4,
-       4,     4,     4,    21,    22,    23,   115,   116,     4,   243,
-       4,     4,     4,   245,     4,   245,   819,   820,   821,   245,
-     823,   824,   245,     4,     4,   134,   135,   136,   137,     4,
-       4,   243,   245,     4,     4,     4,    54,    55,    56,    57,
+       4,   243,     4,    21,    22,    23,   115,   116,   243,   243,
+       4,     4,     4,     4,     4,     4,   819,   820,   821,     4,
+     823,   824,     4,     4,     4,   134,   135,   136,   137,   243,
+       4,     4,     4,   245,     4,     4,    54,    55,    56,    57,
       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-     243,   243,     4,   243,     4,   242,     7,   242,     7,     7,
-      98,    99,   100,   101,     7,     5,   242,   242,   106,     5,
-       5,     5,   242,   242,     5,     7,   242,   115,   116,     5,
-       5,     5,     5,     5,   122,   123,   124,   125,   126,   127,
-     128,     7,     5,   131,   242,     7,     7,     7,     7,     5,
-       7,   242,   140,     7,     5,     7,     5,     5,     5,   242,
-     206,   149,     7,   242,   152,     5,     7,     4,     7,   242,
-     242,   159,   242,   242,   242,   242,     7,     7,     7,   167,
-     168,     7,   242,     7,   172,   173,   228,   229,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
-       7,   242,     7,   191,     7,     7,   242,   195,   242,   242,
-       7,   141,     4,   242,   242,   242,   242,   242,   242,   242,
-     242,     4,     4,   211,   212,   213,   214,   215,   216,   217,
-       4,     4,     4,     4,     4,     4,     4,     4,   226,     3,
-       6,     6,     3,     6,     3,     3,     6,     3,   242,     6,
-       3,     6,     6,     3,   242,     6,     4,     4,     4,     4,
+     245,   245,   245,     4,     4,   245,     4,   243,     4,   243,
+      98,    99,   100,   101,   243,     4,     4,     4,   106,   243,
+       4,     7,   242,   242,     7,     7,     7,   115,   116,     7,
+       5,   242,   242,     5,   122,   123,   124,   125,   126,   127,
+     128,     5,     5,   131,   242,   242,     5,     7,   242,     5,
+       5,     5,   140,     5,     7,     5,     5,   242,   242,     7,
+       7,   149,     7,   242,   152,     7,     5,     7,     5,     7,
+     141,   159,     7,     5,     5,     5,     4,   206,     7,   167,
+     168,   242,   242,     5,   172,   173,   242,     7,   242,   242,
+       7,   242,     7,   242,   242,   242,   242,   242,   242,   242,
+     242,   242,   242,   191,   242,   242,   242,   195,     7,     7,
+       7,     7,   242,     7,     7,     7,     7,     7,     4,     4,
+       4,     4,     4,   211,   212,   213,   214,   215,   216,   217,
+       4,     4,     4,     4,     4,     4,     4,     3,   226,     6,
+       3,     6,     6,     3,     6,     3,     3,     6,   242,     3,
+       6,     6,     3,     6,   242,     3,     6,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       3,     3,     6,     4,     4,     4,   243,  1108,     6,     6,
-    1111,     3,     8,  1114,     4,     6,  1117,     4,     4,  1114,
-    1108,  1108,     4,  1114,  1108,     4,  1111,   245,  1129,  1114,
-    1117,  1132,  1117,  1117,  1135,   243,  1108,   243,   245,  1111,
-     243,   243,  1114,  1108,  1129,  1117,   243,   243,   243,  1108,
-    1151,   245,  1117,   243,     4,  1156,     4,  1129,  1117,     4,
-    1132,     4,     4,  1108,  1165,  1108,  1167,     4,  1111,     4,
-    1129,  1114,  1117,  1132,  1117,     4,  1177,   243,   243,  1151,
-    1181,   243,  1108,     4,  1156,  1186,  1129,   245,  1189,  1132,
-    1108,  1117,  1177,  1165,   243,  1167,  1189,     4,  1108,  1117,
-    1108,  1108,  1174,  1129,   243,  1177,   243,  1117,  1151,  1117,
-    1117,  1129,     4,  1156,  1186,   243,  1108,  1189,   243,  1108,
-    1108,  1129,  1165,  1108,  1167,  1117,  1108,  1186,  1117,  1117,
-    1189,  1174,  1117,  1108,  1177,  1117,     4,  1129,  1108,   243,
-    1129,  1129,  1117,  1186,  1108,   243,  1189,  1117,  1117,  1108,
-     243,  1108,   243,  1117,  1108,     4,  1108,   245,  1117,     4,
-    1117,   245,  1108,  1117,     4,  1117,     4,   243,  1108,     6,
-       3,  1117,  1117,  1108,   245,  1108,  1186,  1117,  1108,  1186,
-    1108,  1108,  1117,  1108,  1117,  1108,  1108,  1117,   242,  1117,
-    1117,  1108,  1117,  1108,  1117,  1117,  1108,  1108,     8,     8,
-    1117,  1186,  1117,     4,  1186,  1117,  1117,     4,     8,  1117,
-     242,  1186,     3,  1117,     8,     7,  1186,  1186,     5,     4,
-    1189,     4,  1186,   242,     4,     7,     4,  1186,     4,  1186,
-       3,     6,  1186,     5,  1186,     4,     4,     4,     4,     3,
-    1186,  1186,     7,   182,  1189,     5,  1186,   242,   242,   242,
-       7,  1186,     4,   242,   242,     6,     4,   242,   242,   242,
-       4,   242,   242,     4,   242,   242,     4,     4,   242,   245,
-     245,   243,   242,   242,   242,   242,   242,     4,  1186,  1380,
-     245,  1189,  1186,   243,   243,  1189,   242,   242,  1389,     4,
-     242,   242,   557,  1380,   781,  1380,  1380,   766,   812,   784,
-    1340,   564,  1403,  1107,  1389,  1102,   867,  1214,  1380,  1123,
-    1411,  1127,  1120,  1156,  1137,  1380,  1144,  1389,  1135,  1110,
-    1108,  1380,   578,  1380,  1119,  1111,  1411,    77,  1113,   620,
-    1389,  1403,   617,   610,  1116,  1380,  1114,  1380,  1191,  1411,
-    1188,  1186,   582,  1189,  1134,  1132,  1389,   600,  1449,   840,
-    1451,   589,  1389,  1130,  1380,  1167,  1169,  1151,  1165,  1453,
-    1403,  1479,  1380,  1389,  1505,  1534,  1451,  1449,  1411,  1174,
-    1380,  1389,  1380,  1380,   783,   630,  1411,  1449,  1479,  1451,
-     824,  1389,   634,  1482,  1512,    -1,  1178,    -1,  1380,    -1,
-      -1,  1380,  1380,    -1,  1479,  1380,    -1,  1389,  1380,    -1,
-    1389,  1389,  1503,    -1,    -1,  1380,  1449,  1479,  1451,  1181,
-    1380,  1380,    -1,    -1,    -1,    -1,  1380,    -1,    -1,    -1,
-      -1,  1380,    -1,  1380,    -1,    -1,  1380,    -1,  1380,    -1,
-      -1,  1503,    -1,  1534,  1380,  1380,  1479,    -1,    -1,    -1,
-    1380,    -1,    -1,    -1,    -1,  1380,    -1,  1380,    -1,    -1,
-    1380,    -1,  1380,  1380,    -1,  1380,    -1,  1380,  1380,    -1,
-    1503,    -1,  1534,  1380,    -1,  1380,    -1,    -1,  1380,  1380,
-      -1,    -1,  1380,    -1,    -1,    -1,  1380,    54,    55,    56,
-      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,  1534,    -1,    -1,    -1,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-      87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    99,   100,   101,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,   116,
-      -1,   118,   119,    -1,   121,   122,   123,   124,    -1,    -1,
-      -1,    -1,    -1,    -1,   131,   132,   133,    -1,    -1,    -1,
-      -1,   138,    -1,    -1,    72,    73,    74,    75,    76,    77,
-      78,   148,    80,    81,    82,    83,    -1,    -1,    -1,    87,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
-     108,    -1,    -1,    -1,    -1,    -1,    -1,   115,   116,    -1,
+       3,     3,     6,     4,     4,     4,     4,   243,  1109,     6,
+       6,  1112,     3,     8,  1115,     4,     6,  1118,     4,     4,
+    1115,  1109,  1109,     4,  1115,  1109,   245,  1112,   243,  1130,
+    1115,  1118,  1133,  1118,  1118,  1136,     4,  1109,   245,   243,
+    1112,   243,   243,  1115,  1109,  1130,  1118,   243,   243,   243,
+    1109,  1152,   245,  1118,   243,     4,  1157,     4,  1130,  1118,
+       4,  1133,     4,     4,  1109,  1166,  1109,  1168,     4,  1112,
+     243,  1130,  1115,  1118,  1133,  1118,   243,  1178,   243,   243,
+    1152,  1182,   243,  1109,     4,  1157,  1187,  1130,   243,  1190,
+    1133,  1109,  1118,  1178,  1166,     4,  1168,  1190,   245,  1109,
+    1118,  1109,  1109,  1175,  1130,   243,  1178,   243,  1118,  1152,
+    1118,  1118,  1130,     4,  1157,  1187,   243,  1109,  1190,     4,
+    1109,  1109,  1130,  1166,  1109,  1168,  1118,  1109,  1187,  1118,
+    1118,  1190,  1175,  1118,  1109,  1178,  1118,   243,  1130,  1109,
+     243,  1130,  1130,  1118,  1187,  1109,     4,  1190,  1118,  1118,
+    1109,     4,  1109,     4,  1118,  1109,   245,  1109,     4,  1118,
+     243,  1118,   243,  1109,  1118,   245,  1118,     4,   245,  1109,
+       6,     3,  1118,  1118,  1109,     8,  1109,  1187,  1118,  1109,
+    1187,  1109,  1109,  1118,  1109,  1118,  1109,  1109,  1118,     8,
+    1118,  1118,  1109,  1118,  1109,  1118,  1118,  1109,  1109,     4,
+       4,  1118,  1187,  1118,     3,  1187,  1118,  1118,     8,     7,
+    1118,   242,  1187,     8,  1118,     5,     4,  1187,  1187,     4,
+     242,  1190,     4,  1187,     7,     4,   245,     4,  1187,     3,
+    1187,     6,     5,  1187,     4,  1187,     4,     4,     4,   182,
+       5,  1187,  1187,     7,     7,  1190,     4,  1187,   242,   242,
+     242,     6,  1187,     3,   242,   242,     4,     4,   242,   242,
+     242,     4,   242,   242,   242,   242,   242,     4,     4,   243,
+     245,   242,   242,   242,     4,   242,   242,   242,     4,  1187,
+    1381,   245,  1190,  1187,   243,   243,  1190,   242,   242,  1390,
+     242,   242,   557,   812,  1381,   766,  1381,  1381,   781,   784,
+     867,  1341,  1108,  1404,   564,  1390,  1103,  1128,  1215,  1381,
+    1121,  1412,  1124,  1157,  1136,  1138,  1381,  1145,  1390,  1111,
+    1109,   578,  1381,   620,  1381,  1120,    77,  1412,  1114,  1112,
+     610,  1390,  1404,   617,  1115,  1117,  1381,  1192,  1381,   582,
+    1412,  1189,  1187,  1190,  1135,  1133,   840,  1390,   600,  1450,
+     589,  1452,  1132,  1390,  1152,  1381,  1454,  1170,  1168,  1166,
+    1480,  1404,  1506,  1381,  1390,  1535,  1175,  1452,  1450,  1412,
+    1412,  1381,  1390,  1381,  1381,   630,   783,   824,  1450,  1480,
+    1452,   634,  1390,  1513,  1483,  1179,    -1,    -1,    -1,  1381,
+      -1,    -1,  1381,  1381,    -1,  1480,  1381,  1182,  1390,  1381,
+      -1,  1390,  1390,  1504,    -1,    -1,  1381,  1450,  1480,  1452,
+      -1,  1381,  1381,    -1,    -1,    -1,    -1,  1381,    -1,    -1,
+      -1,    -1,  1381,    -1,  1381,    -1,    -1,  1381,    -1,  1381,
+      -1,    -1,  1504,    -1,  1535,  1381,  1381,  1480,    -1,    -1,
+      -1,  1381,    -1,    -1,    -1,    -1,  1381,    -1,  1381,    -1,
+      -1,  1381,    -1,  1381,  1381,    -1,  1381,    -1,  1381,  1381,
+      -1,  1504,    -1,  1535,  1381,    -1,  1381,    -1,    -1,  1381,
+    1381,    -1,    -1,  1381,    -1,    -1,    -1,  1381,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,  1535,    -1,    -1,    -1,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      -1,    87,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    99,   100,   101,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,
+     116,    -1,   118,   119,    -1,   121,   122,   123,   124,    -1,
+      -1,    -1,    -1,    -1,    -1,   131,   132,   133,    -1,    -1,
+      -1,    -1,   138,    -1,    -1,    72,    73,    74,    75,    76,
+      77,    78,   148,    80,    81,    82,    83,    -1,    -1,    -1,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,   115,   116,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   131,   132,   133,    -1,    -1,    -1,    -1,
-     138,   139,    -1,    -1,   211,   212,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   131,   132,   133,    -1,    -1,    -1,
+      -1,   138,   139,    -1,    -1,   211,   212,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   242,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   242,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   211,   212,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   211,   212,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   242
+      -1,    -1,    -1,    -1,    -1,   242
   };
 
   const short
@@ -6480,9 +6480,9 @@ namespace isc { namespace dhcp {
        0,     5,     7,     9,   242,   243,   244,   245,   262,   263,
      264,   269,     7,   278,     7,   283,     7,   343,     7,   459,
        7,   543,     7,   560,     7,   577,     7,   492,     7,   498,
-       7,   522,     7,   435,     7,   693,     7,   712,   270,   265,
+       7,   522,     7,   435,     7,   694,     7,   713,   270,   265,
      279,   284,   344,   460,   544,   561,   578,   493,   499,   523,
-     436,   694,   713,   262,   271,   272,   242,   267,   268,    10,
+     436,   695,   714,   262,   271,   272,   242,   267,   268,    10,
      280,   282,    11,    12,    15,    21,    22,    23,    54,    55,
       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
@@ -6497,8 +6497,8 @@ namespace isc { namespace dhcp {
      327,   328,   329,   330,   332,   333,   335,   337,   338,   339,
      340,   341,   353,   355,   357,   400,   408,   414,   420,   422,
      429,   443,   453,   477,   478,   479,   482,   490,   516,   550,
-     552,   571,   601,   616,   628,   629,   631,   681,   691,   710,
-     719,   743,    16,    17,    18,    19,    20,   277,   345,   346,
+     552,   571,   601,   617,   629,   630,   632,   682,   692,   711,
+     720,   744,    16,    17,    18,    19,    20,   277,   345,   346,
      347,   349,   350,   351,   352,   550,   552,   107,   109,   117,
      118,   119,   120,   121,   131,   132,   133,   138,   148,   277,
      289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
@@ -6519,25 +6519,25 @@ namespace isc { namespace dhcp {
       92,    93,    94,   131,   277,   374,   504,   510,   524,   525,
      526,   527,   528,   530,   531,   532,   533,   534,   535,   550,
      552,   150,   151,   277,   437,   438,   439,   441,   196,   197,
-     198,   199,   200,   201,   202,   203,   277,   550,   552,   695,
-     696,   697,   698,   700,   701,   703,   704,   705,   708,    13,
-      14,   714,   715,   716,   718,     6,     3,     4,     8,     3,
-     281,     3,     8,   288,   711,   342,   354,   356,   358,     4,
+     198,   199,   200,   201,   202,   203,   277,   550,   552,   696,
+     697,   698,   699,   701,   702,   704,   705,   706,   709,    13,
+      14,   715,   716,   717,   719,     6,     3,     4,     8,     3,
+     281,     3,     8,   288,   712,   342,   354,   356,   358,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,   331,     4,     4,     4,     4,     4,
      308,   311,   313,     4,     4,     4,     4,     4,     4,     4,
      454,   491,   517,     4,   334,   336,   317,   483,   551,   553,
        4,     4,     4,   409,   421,   415,   401,   602,   572,   430,
-     444,   617,     4,   423,   630,   632,   682,   692,   324,   326,
-       4,     4,     4,     4,   720,   744,     4,     3,     8,   348,
+     444,   618,     4,   423,   631,   633,   683,   693,   324,   326,
+       4,     4,     4,     4,   721,   745,     4,     3,     8,   348,
        4,     4,     4,     4,     3,     8,   538,   555,   464,   466,
      468,     4,     4,   472,   474,   476,   470,   599,     3,     8,
      548,     4,     3,     8,   565,     4,   568,     4,     4,     3,
        8,   597,   583,   585,   587,   589,   591,   593,   595,     8,
        3,     8,   507,   375,     4,   511,   509,   514,     4,     8,
        3,   529,     4,     4,     4,   536,     8,     3,   440,   442,
-       3,     8,     4,   699,     4,   702,     4,     4,   706,   709,
-       3,     8,   717,     4,     3,     8,   262,   262,   242,     4,
+       3,     8,     4,   700,     4,   703,     4,     4,   707,   710,
+       3,     8,   718,     4,     3,     8,   262,   262,   242,     4,
        4,     4,     4,     4,     4,     4,   243,   243,   243,   243,
      243,   243,   243,   243,   245,   244,   244,   244,   243,   244,
      243,     4,   243,   243,   245,   245,   245,     4,     4,     4,
@@ -6551,7 +6551,7 @@ namespace isc { namespace dhcp {
      243,   563,     4,     4,     4,     4,     4,     4,     4,     4,
      581,     4,     4,   243,     4,     4,     4,   245,   502,     4,
      245,   245,   245,     4,   526,     4,     4,   438,   245,     4,
-     243,     4,   243,   243,     4,     4,   696,     4,   243,   715,
+     243,     4,   243,   243,     4,     4,   697,     4,   243,   716,
        4,     7,   242,     7,     7,     7,     7,     5,   242,   207,
      208,   209,   210,   245,   309,   242,   242,     5,     5,     5,
      242,   242,   102,   103,   104,   105,   318,     5,   264,   266,
@@ -6560,8 +6560,8 @@ namespace isc { namespace dhcp {
      273,     5,     5,   242,   242,   242,   273,   273,   273,   242,
        7,   242,   242,   242,   273,   273,   273,   273,   242,   242,
      242,   242,   242,   242,   242,   242,   242,   242,   273,   242,
-     266,   242,   242,   204,   205,   707,   206,     5,   262,   285,
-     714,   345,    24,    25,    26,    27,    28,    29,    30,    31,
+     266,   242,   242,   204,   205,   708,   206,     5,   262,   285,
+     715,   345,    24,    25,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,   277,
      363,   364,   365,   367,   369,   371,   373,   374,   376,   377,
@@ -6570,65 +6570,65 @@ namespace isc { namespace dhcp {
        7,   455,   456,   457,     7,   494,   495,   496,     7,   518,
      519,   520,     7,   484,   485,   486,   144,   242,   410,   411,
      412,   413,   271,   145,   147,   412,   416,   417,   418,   419,
-     129,   130,   402,   403,   404,   406,     7,   603,   604,     7,
-     573,   574,   575,     7,   431,   432,   433,   153,   154,   155,
-     156,   157,   158,   445,   446,   447,   448,   449,   450,   451,
-     452,    24,   163,   164,   165,   166,   277,   376,   550,   552,
-     618,   619,   620,   623,   624,   626,   627,   169,   170,   171,
-     277,   424,   425,   426,   427,   428,   550,   552,   174,   178,
-     179,   180,   181,   188,   189,   277,   390,   392,   394,   550,
-     552,   637,   638,   639,   642,   644,   646,   647,   648,   658,
-       7,   633,   634,   635,   192,   193,   194,   242,   550,   552,
-     683,   684,   685,   686,   688,   689,   695,     7,   721,   722,
-     227,   277,   745,   746,   747,   274,     7,   539,   540,   541,
-       7,   556,   557,   558,   582,   600,   359,     8,     8,     8,
-     366,   368,   370,   372,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   385,     4,     4,   391,   393,   395,
-     397,   399,     3,     8,     8,   362,     6,     3,   458,     6,
-       3,   497,     6,     3,   521,     6,     3,   487,     6,     3,
-       3,     6,     6,     3,     6,   405,   407,     3,     8,   605,
-       3,     6,   576,     6,     3,   434,     6,     3,     4,     4,
-       4,     4,     4,     4,     3,     8,   621,   625,     4,     4,
-       4,     3,     8,     4,     4,     4,     3,     8,   640,   643,
-     645,     4,   659,     4,   649,     3,     8,   636,     6,     3,
-       4,   687,     4,   690,     3,     8,     8,   723,     3,     6,
-       4,     3,     8,   242,   275,   276,   542,     6,     3,   559,
-       6,     3,     8,     6,     4,     4,     4,     4,   243,   245,
-     243,   245,   243,   243,   243,   243,   243,   243,     4,   245,
-     243,     4,     4,     4,     4,     4,   364,   363,   361,   461,
-     457,   500,   496,   524,   520,   277,   289,   290,   291,   292,
-     293,   294,   295,   296,   297,   298,   299,   300,   301,   302,
-     304,   305,   306,   307,   310,   312,   314,   315,   316,   319,
-     320,   321,   322,   323,   325,   327,   333,   335,   374,   453,
-     465,   467,   469,   471,   473,   475,   477,   478,   479,   481,
-     488,   489,   516,   550,   552,   598,   486,   411,   417,     4,
-       4,   403,   134,   135,   136,   137,   277,   289,   290,   291,
-     292,   293,   294,   374,   516,   550,   552,   606,   607,   608,
-     609,   610,   612,   614,   615,   604,   579,   575,   437,   433,
-     243,   243,   243,   243,   243,   243,   446,     4,     4,   243,
-     243,   243,   619,   245,   243,   243,   425,     4,     4,     4,
-     243,     4,   245,     4,   638,   637,   635,   245,     4,   243,
-       4,   684,   218,   220,   221,   277,   374,   550,   552,   724,
-     725,   726,   727,   729,   722,   245,   746,     6,     3,   545,
-     541,   562,   558,   242,   242,   242,   242,    39,    40,    41,
-     386,   242,   242,   242,   396,   242,     8,     8,     8,     8,
-       3,     8,   242,   242,   611,   613,     4,     4,     8,     3,
-       8,     8,   160,   161,   162,   622,   242,   175,   176,   177,
-     641,   242,   242,     7,     5,     8,   242,   262,   730,     4,
-     728,     3,     8,   242,     8,     8,   489,     4,     4,   245,
-     245,   608,    24,   183,   184,   185,   277,   550,   552,   660,
-     661,   662,   665,   667,   669,     7,   650,   651,   652,     4,
-     243,     4,   725,   242,   242,   663,   666,   668,   670,     3,
-       8,   653,     6,     3,     5,   242,     4,     4,     4,     4,
-     661,   190,   277,   374,   550,   552,   654,   655,   656,   652,
-       7,   731,   732,   182,   664,   242,   242,     5,   657,     3,
-       8,   733,     3,     6,     7,   671,   672,   673,     4,   655,
-     219,   222,   223,   224,   225,   734,   735,   736,   738,   739,
-     740,   741,   732,   674,     6,     3,   242,   737,     4,     4,
-       4,   742,     3,     8,   186,   187,   277,   367,   369,   550,
-     552,   675,   676,   677,   679,   673,     4,   245,   243,   243,
-       4,   735,   678,   680,     3,     8,   242,   242,     4,     4,
-     676,   242,   242
+     129,   130,   402,   403,   404,   406,     7,   603,   604,   605,
+       7,   573,   574,   575,     7,   431,   432,   433,   153,   154,
+     155,   156,   157,   158,   445,   446,   447,   448,   449,   450,
+     451,   452,    24,   163,   164,   165,   166,   277,   376,   550,
+     552,   619,   620,   621,   624,   625,   627,   628,   169,   170,
+     171,   277,   424,   425,   426,   427,   428,   550,   552,   174,
+     178,   179,   180,   181,   188,   189,   277,   390,   392,   394,
+     550,   552,   638,   639,   640,   643,   645,   647,   648,   649,
+     659,     7,   634,   635,   636,   192,   193,   194,   242,   550,
+     552,   684,   685,   686,   687,   689,   690,   696,     7,   722,
+     723,   227,   277,   746,   747,   748,   274,     7,   539,   540,
+     541,     7,   556,   557,   558,   582,   600,   359,     8,     8,
+       8,   366,   368,   370,   372,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   385,     4,     4,   391,   393,
+     395,   397,   399,     3,     8,     8,   362,     6,     3,   458,
+       6,     3,   497,     6,     3,   521,     6,     3,   487,     6,
+       3,     3,     6,     6,     3,     6,   405,   407,     3,     8,
+     606,     6,     3,   576,     6,     3,   434,     6,     3,     4,
+       4,     4,     4,     4,     4,     3,     8,   622,   626,     4,
+       4,     4,     3,     8,     4,     4,     4,     3,     8,   641,
+     644,   646,     4,   660,     4,   650,     3,     8,   637,     6,
+       3,     4,   688,     4,   691,     3,     8,     8,   724,     3,
+       6,     4,     3,     8,   242,   275,   276,   542,     6,     3,
+     559,     6,     3,     8,     6,     4,     4,     4,     4,   243,
+     245,   243,   245,   243,   243,   243,   243,   243,   243,     4,
+     245,   243,     4,     4,     4,     4,     4,   364,   363,   361,
+     461,   457,   500,   496,   524,   520,   277,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   304,   305,   306,   307,   310,   312,   314,   315,   316,
+     319,   320,   321,   322,   323,   325,   327,   333,   335,   374,
+     453,   465,   467,   469,   471,   473,   475,   477,   478,   479,
+     481,   488,   489,   516,   550,   552,   598,   486,   411,   417,
+       4,     4,   403,   134,   135,   136,   137,   277,   289,   290,
+     291,   292,   293,   294,   374,   516,   550,   552,   607,   608,
+     609,   610,   611,   613,   615,   616,   605,   579,   575,   437,
+     433,   243,   243,   243,   243,   243,   243,   446,     4,     4,
+     243,   243,   243,   620,   245,   243,   243,   425,     4,     4,
+       4,   243,     4,   245,     4,   639,   638,   636,   245,     4,
+     243,     4,   685,   218,   220,   221,   277,   374,   550,   552,
+     725,   726,   727,   728,   730,   723,   245,   747,     6,     3,
+     545,   541,   562,   558,   242,   242,   242,   242,    39,    40,
+      41,   386,   242,   242,   242,   396,   242,     8,     8,     8,
+       8,     3,     8,   242,   242,   612,   614,     4,     4,     8,
+       3,     8,     8,   160,   161,   162,   623,   242,   175,   176,
+     177,   642,   242,   242,     7,     5,     8,   242,   262,   731,
+       4,   729,     3,     8,   242,     8,     8,   489,     4,     4,
+     245,   245,   609,    24,   183,   184,   185,   277,   550,   552,
+     661,   662,   663,   666,   668,   670,     7,   651,   652,   653,
+       4,   243,     4,   726,   242,   242,   664,   667,   669,   671,
+       3,     8,   654,     6,     3,     5,   242,     4,     4,     4,
+       4,   662,   190,   277,   374,   550,   552,   655,   656,   657,
+     653,     7,   732,   733,   182,   665,   242,   242,     5,   658,
+       3,     8,   734,     3,     6,     7,   672,   673,   674,     4,
+     656,   219,   222,   223,   224,   225,   735,   736,   737,   739,
+     740,   741,   742,   733,   675,     6,     3,   242,   738,     4,
+       4,     4,   743,     3,     8,   186,   187,   277,   367,   369,
+     550,   552,   676,   677,   678,   680,   674,     4,   245,   243,
+     243,     4,   736,   679,   681,     3,     8,   242,   242,     4,
+       4,   677,   242,   242
   };
 
   const short
@@ -6708,34 +6708,34 @@ namespace isc { namespace dhcp {
      579,   580,   580,   580,   581,   581,   581,   581,   581,   581,
      581,   581,   581,   581,   581,   581,   583,   582,   585,   584,
      587,   586,   589,   588,   591,   590,   593,   592,   595,   594,
-     597,   596,   599,   598,   600,   602,   601,   603,   603,   603,
-     605,   604,   606,   606,   607,   607,   607,   608,   608,   608,
-     608,   608,   608,   608,   608,   608,   608,   608,   608,   608,
-     608,   608,   609,   611,   610,   613,   612,   614,   615,   617,
-     616,   618,   618,   618,   619,   619,   619,   619,   619,   619,
-     619,   619,   619,   621,   620,   622,   622,   622,   623,   625,
-     624,   626,   627,   628,   630,   629,   632,   631,   633,   633,
-     634,   634,   634,   636,   635,   637,   637,   637,   638,   638,
-     638,   638,   638,   638,   638,   638,   638,   638,   638,   638,
-     638,   640,   639,   641,   641,   641,   643,   642,   645,   644,
-     646,   647,   649,   648,   650,   650,   651,   651,   651,   653,
-     652,   654,   654,   654,   655,   655,   655,   655,   655,   657,
-     656,   659,   658,   660,   660,   660,   661,   661,   661,   661,
-     661,   661,   661,   663,   662,   664,   666,   665,   668,   667,
-     670,   669,   671,   671,   672,   672,   672,   674,   673,   675,
-     675,   675,   676,   676,   676,   676,   676,   676,   676,   678,
-     677,   680,   679,   682,   681,   683,   683,   683,   684,   684,
-     684,   684,   684,   684,   685,   687,   686,   688,   690,   689,
-     692,   691,   694,   693,   695,   695,   695,   696,   696,   696,
-     696,   696,   696,   696,   696,   696,   696,   696,   697,   699,
-     698,   700,   702,   701,   703,   704,   706,   705,   707,   707,
-     709,   708,   711,   710,   713,   712,   714,   714,   714,   715,
-     715,   717,   716,   718,   720,   719,   721,   721,   721,   723,
-     722,   724,   724,   724,   725,   725,   725,   725,   725,   725,
-     725,   726,   728,   727,   730,   729,   731,   731,   731,   733,
-     732,   734,   734,   734,   735,   735,   735,   735,   735,   737,
-     736,   738,   739,   740,   742,   741,   744,   743,   745,   745,
-     745,   746,   746,   747
+     597,   596,   599,   598,   600,   602,   601,   603,   603,   604,
+     604,   604,   606,   605,   607,   607,   608,   608,   608,   609,
+     609,   609,   609,   609,   609,   609,   609,   609,   609,   609,
+     609,   609,   609,   609,   610,   612,   611,   614,   613,   615,
+     616,   618,   617,   619,   619,   619,   620,   620,   620,   620,
+     620,   620,   620,   620,   620,   622,   621,   623,   623,   623,
+     624,   626,   625,   627,   628,   629,   631,   630,   633,   632,
+     634,   634,   635,   635,   635,   637,   636,   638,   638,   638,
+     639,   639,   639,   639,   639,   639,   639,   639,   639,   639,
+     639,   639,   639,   641,   640,   642,   642,   642,   644,   643,
+     646,   645,   647,   648,   650,   649,   651,   651,   652,   652,
+     652,   654,   653,   655,   655,   655,   656,   656,   656,   656,
+     656,   658,   657,   660,   659,   661,   661,   661,   662,   662,
+     662,   662,   662,   662,   662,   664,   663,   665,   667,   666,
+     669,   668,   671,   670,   672,   672,   673,   673,   673,   675,
+     674,   676,   676,   676,   677,   677,   677,   677,   677,   677,
+     677,   679,   678,   681,   680,   683,   682,   684,   684,   684,
+     685,   685,   685,   685,   685,   685,   686,   688,   687,   689,
+     691,   690,   693,   692,   695,   694,   696,   696,   696,   697,
+     697,   697,   697,   697,   697,   697,   697,   697,   697,   697,
+     698,   700,   699,   701,   703,   702,   704,   705,   707,   706,
+     708,   708,   710,   709,   712,   711,   714,   713,   715,   715,
+     715,   716,   716,   718,   717,   719,   721,   720,   722,   722,
+     722,   724,   723,   725,   725,   725,   726,   726,   726,   726,
+     726,   726,   726,   727,   729,   728,   731,   730,   732,   732,
+     732,   734,   733,   735,   735,   735,   736,   736,   736,   736,
+     736,   738,   737,   739,   740,   741,   743,   742,   745,   744,
+     746,   746,   746,   747,   747,   748
   };
 
   const signed char
@@ -6815,34 +6815,34 @@ namespace isc { namespace dhcp {
        1,     1,     3,     2,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     6,     1,     0,     6,     1,     3,     2,
-       0,     4,     0,     1,     1,     3,     2,     1,     1,     1,
+       0,     4,     0,     6,     1,     0,     6,     0,     1,     1,
+       3,     2,     0,     4,     0,     1,     1,     3,     2,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     0,     4,     3,     3,     0,
-       6,     1,     3,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     1,     1,     1,     3,     0,
-       4,     3,     3,     3,     0,     6,     0,     6,     0,     1,
-       1,     3,     2,     0,     4,     1,     3,     2,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     0,     4,     3,
+       3,     0,     6,     1,     3,     2,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
+       3,     0,     4,     3,     3,     3,     0,     6,     0,     6,
+       0,     1,     1,     3,     2,     0,     4,     1,     3,     2,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     1,     1,     1,     0,     4,     0,     4,
-       3,     3,     0,     6,     0,     1,     1,     3,     2,     0,
-       4,     1,     3,     2,     1,     1,     1,     1,     1,     0,
-       4,     0,     6,     1,     3,     2,     1,     1,     1,     1,
-       1,     1,     1,     0,     4,     1,     0,     4,     0,     4,
-       0,     6,     0,     1,     1,     3,     2,     0,     4,     1,
-       3,     2,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     6,     1,     3,     2,     1,     1,
-       1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
-       0,     6,     0,     4,     1,     3,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
-       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
-       0,     4,     0,     6,     0,     4,     1,     3,     2,     1,
-       1,     0,     6,     3,     0,     6,     1,     3,     2,     0,
+       1,     1,     1,     0,     4,     1,     1,     1,     0,     4,
+       0,     4,     3,     3,     0,     6,     0,     1,     1,     3,
+       2,     0,     4,     1,     3,     2,     1,     1,     1,     1,
+       1,     0,     4,     0,     6,     1,     3,     2,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     1,     0,     4,
+       0,     4,     0,     6,     0,     1,     1,     3,     2,     0,
        4,     1,     3,     2,     1,     1,     1,     1,     1,     1,
-       1,     3,     0,     4,     0,     6,     1,     3,     2,     0,
-       4,     1,     3,     2,     1,     1,     1,     1,     1,     0,
-       4,     3,     3,     3,     0,     4,     0,     6,     1,     3,
-       2,     1,     1,     3
+       1,     0,     4,     0,     4,     0,     6,     1,     3,     2,
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
+       0,     4,     0,     6,     0,     4,     1,     3,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     0,     4,     3,     0,     4,     3,     3,     0,     4,
+       1,     1,     0,     4,     0,     6,     0,     4,     1,     3,
+       2,     1,     1,     0,     6,     3,     0,     6,     1,     3,
+       2,     0,     4,     1,     3,     2,     1,     1,     1,     1,
+       1,     1,     1,     3,     0,     4,     0,     6,     1,     3,
+       2,     0,     4,     1,     3,     2,     1,     1,     1,     1,
+       1,     0,     4,     3,     3,     3,     0,     4,     0,     6,
+       1,     3,     2,     1,     1,     3
   };
 
 
@@ -7023,9 +7023,9 @@ namespace isc { namespace dhcp {
   "$@104", "hw_address", "$@105", "hostname", "$@106", "flex_id_value",
   "$@107", "reservation_client_classes", "$@108", "relay", "$@109",
   "relay_map", "client_classes", "$@110", "client_classes_list",
-  "client_class_entry", "$@111", "client_class_params",
-  "not_empty_client_class_params", "client_class_param",
-  "client_class_name", "client_class_test", "$@112",
+  "not_empty_classes_list", "client_class_entry", "$@111",
+  "client_class_params", "not_empty_client_class_params",
+  "client_class_param", "client_class_name", "client_class_test", "$@112",
   "client_class_template_test", "$@113", "only_if_required",
   "only_in_additional_list", "server_id", "$@114", "server_id_params",
   "server_id_param", "server_id_type", "$@115", "duid_type", "htype",
@@ -7141,34 +7141,34 @@ namespace isc { namespace dhcp {
     2501,  2504,  2505,  2506,  2512,  2513,  2514,  2515,  2516,  2517,
     2518,  2519,  2520,  2521,  2522,  2523,  2526,  2526,  2537,  2537,
     2548,  2548,  2559,  2559,  2568,  2568,  2577,  2577,  2586,  2586,
-    2595,  2595,  2609,  2609,  2620,  2626,  2626,  2637,  2638,  2639,
-    2644,  2644,  2654,  2655,  2658,  2659,  2660,  2665,  2666,  2667,
-    2668,  2669,  2670,  2671,  2672,  2673,  2674,  2675,  2676,  2677,
-    2678,  2679,  2682,  2684,  2684,  2693,  2693,  2703,  2709,  2718,
-    2718,  2731,  2732,  2733,  2738,  2739,  2740,  2741,  2742,  2743,
-    2744,  2745,  2746,  2749,  2749,  2757,  2758,  2759,  2762,  2768,
-    2768,  2777,  2783,  2791,  2799,  2799,  2811,  2811,  2823,  2824,
-    2827,  2828,  2829,  2834,  2834,  2842,  2843,  2844,  2849,  2850,
-    2851,  2852,  2853,  2854,  2855,  2856,  2857,  2858,  2859,  2860,
-    2861,  2864,  2864,  2873,  2874,  2875,  2878,  2878,  2888,  2888,
-    2898,  2904,  2910,  2910,  2921,  2922,  2925,  2926,  2927,  2932,
-    2932,  2940,  2941,  2942,  2947,  2948,  2949,  2950,  2951,  2954,
-    2954,  2965,  2965,  2978,  2979,  2980,  2985,  2986,  2987,  2988,
-    2989,  2990,  2991,  2994,  2994,  3002,  3005,  3005,  3014,  3014,
-    3023,  3023,  3034,  3035,  3038,  3039,  3040,  3045,  3045,  3053,
-    3054,  3055,  3060,  3061,  3062,  3063,  3064,  3065,  3066,  3069,
-    3069,  3078,  3078,  3089,  3089,  3102,  3103,  3104,  3109,  3110,
-    3111,  3112,  3113,  3114,  3117,  3123,  3123,  3132,  3138,  3138,
-    3148,  3148,  3161,  3161,  3171,  3172,  3173,  3178,  3179,  3180,
-    3181,  3182,  3183,  3184,  3185,  3186,  3187,  3188,  3191,  3197,
-    3197,  3206,  3212,  3212,  3221,  3227,  3233,  3233,  3242,  3243,
-    3246,  3246,  3257,  3257,  3269,  3269,  3279,  3280,  3281,  3287,
-    3288,  3291,  3291,  3302,  3310,  3310,  3323,  3324,  3325,  3331,
-    3331,  3339,  3340,  3341,  3346,  3347,  3348,  3349,  3350,  3351,
-    3352,  3355,  3361,  3361,  3370,  3370,  3381,  3382,  3383,  3388,
-    3388,  3396,  3397,  3398,  3403,  3404,  3405,  3406,  3407,  3410,
-    3410,  3419,  3425,  3431,  3437,  3437,  3446,  3446,  3457,  3458,
-    3459,  3464,  3465,  3468
+    2595,  2595,  2609,  2609,  2620,  2626,  2626,  2637,  2638,  2641,
+    2642,  2643,  2648,  2648,  2658,  2659,  2662,  2663,  2664,  2669,
+    2670,  2671,  2672,  2673,  2674,  2675,  2676,  2677,  2678,  2679,
+    2680,  2681,  2682,  2683,  2686,  2688,  2688,  2697,  2697,  2707,
+    2713,  2722,  2722,  2735,  2736,  2737,  2742,  2743,  2744,  2745,
+    2746,  2747,  2748,  2749,  2750,  2753,  2753,  2761,  2762,  2763,
+    2766,  2772,  2772,  2781,  2787,  2795,  2803,  2803,  2815,  2815,
+    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
   };
 
   void
@@ -7203,7 +7203,7 @@ namespace isc { namespace dhcp {
 } } // isc::dhcp
 #line 7205 "dhcp6_parser.cc"
 
-#line 3474 "dhcp6_parser.yy"
+#line 3478 "dhcp6_parser.yy"
 
 
 void
index eba4dfbeab3506c26633522284110d5e55b00e3c..ed623dd291214c4fa72262ec3c5b0f2c36314ee4 100644 (file)
@@ -1365,150 +1365,151 @@ namespace isc { namespace dhcp {
         S_client_classes = 601,                  // client_classes
         S_602_110 = 602,                         // $@110
         S_client_classes_list = 603,             // client_classes_list
-        S_client_class_entry = 604,              // client_class_entry
-        S_605_111 = 605,                         // $@111
-        S_client_class_params = 606,             // client_class_params
-        S_not_empty_client_class_params = 607,   // not_empty_client_class_params
-        S_client_class_param = 608,              // client_class_param
-        S_client_class_name = 609,               // client_class_name
-        S_client_class_test = 610,               // client_class_test
-        S_611_112 = 611,                         // $@112
-        S_client_class_template_test = 612,      // client_class_template_test
-        S_613_113 = 613,                         // $@113
-        S_only_if_required = 614,                // only_if_required
-        S_only_in_additional_list = 615,         // only_in_additional_list
-        S_server_id = 616,                       // server_id
-        S_617_114 = 617,                         // $@114
-        S_server_id_params = 618,                // server_id_params
-        S_server_id_param = 619,                 // server_id_param
-        S_server_id_type = 620,                  // server_id_type
-        S_621_115 = 621,                         // $@115
-        S_duid_type = 622,                       // duid_type
-        S_htype = 623,                           // htype
-        S_identifier = 624,                      // identifier
-        S_625_116 = 625,                         // $@116
-        S_time = 626,                            // time
-        S_enterprise_id = 627,                   // enterprise_id
-        S_dhcp4o6_port = 628,                    // dhcp4o6_port
-        S_control_socket = 629,                  // control_socket
-        S_630_117 = 630,                         // $@117
-        S_control_sockets = 631,                 // control_sockets
-        S_632_118 = 632,                         // $@118
-        S_control_socket_list = 633,             // control_socket_list
-        S_not_empty_control_socket_list = 634,   // not_empty_control_socket_list
-        S_control_socket_entry = 635,            // control_socket_entry
-        S_636_119 = 636,                         // $@119
-        S_control_socket_params = 637,           // control_socket_params
-        S_control_socket_param = 638,            // control_socket_param
-        S_control_socket_type = 639,             // control_socket_type
-        S_640_120 = 640,                         // $@120
-        S_control_socket_type_value = 641,       // control_socket_type_value
-        S_control_socket_name = 642,             // control_socket_name
-        S_643_121 = 643,                         // $@121
-        S_control_socket_address = 644,          // control_socket_address
-        S_645_122 = 645,                         // $@122
-        S_control_socket_port = 646,             // control_socket_port
-        S_cert_required = 647,                   // cert_required
-        S_http_headers = 648,                    // http_headers
-        S_649_123 = 649,                         // $@123
-        S_http_header_list = 650,                // http_header_list
-        S_not_empty_http_header_list = 651,      // not_empty_http_header_list
-        S_http_header = 652,                     // http_header
-        S_653_124 = 653,                         // $@124
-        S_http_header_params = 654,              // http_header_params
-        S_http_header_param = 655,               // http_header_param
-        S_header_value = 656,                    // header_value
-        S_657_125 = 657,                         // $@125
-        S_authentication = 658,                  // authentication
-        S_659_126 = 659,                         // $@126
-        S_auth_params = 660,                     // auth_params
-        S_auth_param = 661,                      // auth_param
-        S_auth_type = 662,                       // auth_type
-        S_663_127 = 663,                         // $@127
-        S_auth_type_value = 664,                 // auth_type_value
-        S_realm = 665,                           // realm
-        S_666_128 = 666,                         // $@128
-        S_directory = 667,                       // directory
-        S_668_129 = 668,                         // $@129
-        S_clients = 669,                         // clients
-        S_670_130 = 670,                         // $@130
-        S_clients_list = 671,                    // clients_list
-        S_not_empty_clients_list = 672,          // not_empty_clients_list
-        S_basic_auth = 673,                      // basic_auth
-        S_674_131 = 674,                         // $@131
-        S_clients_params = 675,                  // clients_params
-        S_clients_param = 676,                   // clients_param
-        S_user_file = 677,                       // user_file
-        S_678_132 = 678,                         // $@132
-        S_password_file = 679,                   // password_file
-        S_680_133 = 680,                         // $@133
-        S_dhcp_queue_control = 681,              // dhcp_queue_control
-        S_682_134 = 682,                         // $@134
-        S_queue_control_params = 683,            // queue_control_params
-        S_queue_control_param = 684,             // queue_control_param
-        S_enable_queue = 685,                    // enable_queue
-        S_queue_type = 686,                      // queue_type
-        S_687_135 = 687,                         // $@135
-        S_capacity = 688,                        // capacity
-        S_arbitrary_map_entry = 689,             // arbitrary_map_entry
-        S_690_136 = 690,                         // $@136
-        S_dhcp_ddns = 691,                       // dhcp_ddns
-        S_692_137 = 692,                         // $@137
-        S_sub_dhcp_ddns = 693,                   // sub_dhcp_ddns
-        S_694_138 = 694,                         // $@138
-        S_dhcp_ddns_params = 695,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 696,                 // dhcp_ddns_param
-        S_enable_updates = 697,                  // enable_updates
-        S_server_ip = 698,                       // server_ip
-        S_699_139 = 699,                         // $@139
-        S_server_port = 700,                     // server_port
-        S_sender_ip = 701,                       // sender_ip
-        S_702_140 = 702,                         // $@140
-        S_sender_port = 703,                     // sender_port
-        S_max_queue_size = 704,                  // max_queue_size
-        S_ncr_protocol = 705,                    // ncr_protocol
-        S_706_141 = 706,                         // $@141
-        S_ncr_protocol_value = 707,              // ncr_protocol_value
-        S_ncr_format = 708,                      // ncr_format
-        S_709_142 = 709,                         // $@142
-        S_config_control = 710,                  // config_control
-        S_711_143 = 711,                         // $@143
-        S_sub_config_control = 712,              // sub_config_control
-        S_713_144 = 713,                         // $@144
-        S_config_control_params = 714,           // config_control_params
-        S_config_control_param = 715,            // config_control_param
-        S_config_databases = 716,                // config_databases
-        S_717_145 = 717,                         // $@145
-        S_config_fetch_wait_time = 718,          // config_fetch_wait_time
-        S_loggers = 719,                         // loggers
-        S_720_146 = 720,                         // $@146
-        S_loggers_entries = 721,                 // loggers_entries
-        S_logger_entry = 722,                    // logger_entry
-        S_723_147 = 723,                         // $@147
-        S_logger_params = 724,                   // logger_params
-        S_logger_param = 725,                    // logger_param
-        S_debuglevel = 726,                      // debuglevel
-        S_severity = 727,                        // severity
-        S_728_148 = 728,                         // $@148
-        S_output_options_list = 729,             // output_options_list
-        S_730_149 = 730,                         // $@149
-        S_output_options_list_content = 731,     // output_options_list_content
-        S_output_entry = 732,                    // output_entry
-        S_733_150 = 733,                         // $@150
-        S_output_params_list = 734,              // output_params_list
-        S_output_params = 735,                   // output_params
-        S_output = 736,                          // output
-        S_737_151 = 737,                         // $@151
-        S_flush = 738,                           // flush
-        S_maxsize = 739,                         // maxsize
-        S_maxver = 740,                          // maxver
-        S_pattern = 741,                         // pattern
-        S_742_152 = 742,                         // $@152
-        S_compatibility = 743,                   // compatibility
-        S_744_153 = 744,                         // $@153
-        S_compatibility_params = 745,            // compatibility_params
-        S_compatibility_param = 746,             // compatibility_param
-        S_lenient_option_parsing = 747           // lenient_option_parsing
+        S_not_empty_classes_list = 604,          // not_empty_classes_list
+        S_client_class_entry = 605,              // client_class_entry
+        S_606_111 = 606,                         // $@111
+        S_client_class_params = 607,             // client_class_params
+        S_not_empty_client_class_params = 608,   // not_empty_client_class_params
+        S_client_class_param = 609,              // client_class_param
+        S_client_class_name = 610,               // client_class_name
+        S_client_class_test = 611,               // client_class_test
+        S_612_112 = 612,                         // $@112
+        S_client_class_template_test = 613,      // client_class_template_test
+        S_614_113 = 614,                         // $@113
+        S_only_if_required = 615,                // only_if_required
+        S_only_in_additional_list = 616,         // only_in_additional_list
+        S_server_id = 617,                       // server_id
+        S_618_114 = 618,                         // $@114
+        S_server_id_params = 619,                // server_id_params
+        S_server_id_param = 620,                 // server_id_param
+        S_server_id_type = 621,                  // server_id_type
+        S_622_115 = 622,                         // $@115
+        S_duid_type = 623,                       // duid_type
+        S_htype = 624,                           // htype
+        S_identifier = 625,                      // identifier
+        S_626_116 = 626,                         // $@116
+        S_time = 627,                            // time
+        S_enterprise_id = 628,                   // enterprise_id
+        S_dhcp4o6_port = 629,                    // dhcp4o6_port
+        S_control_socket = 630,                  // control_socket
+        S_631_117 = 631,                         // $@117
+        S_control_sockets = 632,                 // control_sockets
+        S_633_118 = 633,                         // $@118
+        S_control_socket_list = 634,             // control_socket_list
+        S_not_empty_control_socket_list = 635,   // not_empty_control_socket_list
+        S_control_socket_entry = 636,            // control_socket_entry
+        S_637_119 = 637,                         // $@119
+        S_control_socket_params = 638,           // control_socket_params
+        S_control_socket_param = 639,            // control_socket_param
+        S_control_socket_type = 640,             // control_socket_type
+        S_641_120 = 641,                         // $@120
+        S_control_socket_type_value = 642,       // control_socket_type_value
+        S_control_socket_name = 643,             // control_socket_name
+        S_644_121 = 644,                         // $@121
+        S_control_socket_address = 645,          // control_socket_address
+        S_646_122 = 646,                         // $@122
+        S_control_socket_port = 647,             // control_socket_port
+        S_cert_required = 648,                   // cert_required
+        S_http_headers = 649,                    // http_headers
+        S_650_123 = 650,                         // $@123
+        S_http_header_list = 651,                // http_header_list
+        S_not_empty_http_header_list = 652,      // not_empty_http_header_list
+        S_http_header = 653,                     // http_header
+        S_654_124 = 654,                         // $@124
+        S_http_header_params = 655,              // http_header_params
+        S_http_header_param = 656,               // http_header_param
+        S_header_value = 657,                    // header_value
+        S_658_125 = 658,                         // $@125
+        S_authentication = 659,                  // authentication
+        S_660_126 = 660,                         // $@126
+        S_auth_params = 661,                     // auth_params
+        S_auth_param = 662,                      // auth_param
+        S_auth_type = 663,                       // auth_type
+        S_664_127 = 664,                         // $@127
+        S_auth_type_value = 665,                 // auth_type_value
+        S_realm = 666,                           // realm
+        S_667_128 = 667,                         // $@128
+        S_directory = 668,                       // directory
+        S_669_129 = 669,                         // $@129
+        S_clients = 670,                         // clients
+        S_671_130 = 671,                         // $@130
+        S_clients_list = 672,                    // clients_list
+        S_not_empty_clients_list = 673,          // not_empty_clients_list
+        S_basic_auth = 674,                      // basic_auth
+        S_675_131 = 675,                         // $@131
+        S_clients_params = 676,                  // clients_params
+        S_clients_param = 677,                   // clients_param
+        S_user_file = 678,                       // user_file
+        S_679_132 = 679,                         // $@132
+        S_password_file = 680,                   // password_file
+        S_681_133 = 681,                         // $@133
+        S_dhcp_queue_control = 682,              // dhcp_queue_control
+        S_683_134 = 683,                         // $@134
+        S_queue_control_params = 684,            // queue_control_params
+        S_queue_control_param = 685,             // queue_control_param
+        S_enable_queue = 686,                    // enable_queue
+        S_queue_type = 687,                      // queue_type
+        S_688_135 = 688,                         // $@135
+        S_capacity = 689,                        // capacity
+        S_arbitrary_map_entry = 690,             // arbitrary_map_entry
+        S_691_136 = 691,                         // $@136
+        S_dhcp_ddns = 692,                       // dhcp_ddns
+        S_693_137 = 693,                         // $@137
+        S_sub_dhcp_ddns = 694,                   // sub_dhcp_ddns
+        S_695_138 = 695,                         // $@138
+        S_dhcp_ddns_params = 696,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 697,                 // dhcp_ddns_param
+        S_enable_updates = 698,                  // enable_updates
+        S_server_ip = 699,                       // server_ip
+        S_700_139 = 700,                         // $@139
+        S_server_port = 701,                     // server_port
+        S_sender_ip = 702,                       // sender_ip
+        S_703_140 = 703,                         // $@140
+        S_sender_port = 704,                     // sender_port
+        S_max_queue_size = 705,                  // max_queue_size
+        S_ncr_protocol = 706,                    // ncr_protocol
+        S_707_141 = 707,                         // $@141
+        S_ncr_protocol_value = 708,              // ncr_protocol_value
+        S_ncr_format = 709,                      // ncr_format
+        S_710_142 = 710,                         // $@142
+        S_config_control = 711,                  // config_control
+        S_712_143 = 712,                         // $@143
+        S_sub_config_control = 713,              // sub_config_control
+        S_714_144 = 714,                         // $@144
+        S_config_control_params = 715,           // config_control_params
+        S_config_control_param = 716,            // config_control_param
+        S_config_databases = 717,                // config_databases
+        S_718_145 = 718,                         // $@145
+        S_config_fetch_wait_time = 719,          // config_fetch_wait_time
+        S_loggers = 720,                         // loggers
+        S_721_146 = 721,                         // $@146
+        S_loggers_entries = 722,                 // loggers_entries
+        S_logger_entry = 723,                    // logger_entry
+        S_724_147 = 724,                         // $@147
+        S_logger_params = 725,                   // logger_params
+        S_logger_param = 726,                    // logger_param
+        S_debuglevel = 727,                      // debuglevel
+        S_severity = 728,                        // severity
+        S_729_148 = 729,                         // $@148
+        S_output_options_list = 730,             // output_options_list
+        S_731_149 = 731,                         // $@149
+        S_output_options_list_content = 732,     // output_options_list_content
+        S_output_entry = 733,                    // output_entry
+        S_734_150 = 734,                         // $@150
+        S_output_params_list = 735,              // output_params_list
+        S_output_params = 736,                   // output_params
+        S_output = 737,                          // output
+        S_738_151 = 738,                         // $@151
+        S_flush = 739,                           // flush
+        S_maxsize = 740,                         // maxsize
+        S_maxver = 741,                          // maxver
+        S_pattern = 742,                         // pattern
+        S_743_152 = 743,                         // $@152
+        S_compatibility = 744,                   // compatibility
+        S_745_153 = 745,                         // $@153
+        S_compatibility_params = 746,            // compatibility_params
+        S_compatibility_param = 747,             // compatibility_param
+        S_lenient_option_parsing = 748           // lenient_option_parsing
       };
     };
 
@@ -5937,8 +5938,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1764,     ///< Last index in yytable_.
-      yynnts_ = 502,  ///< Number of nonterminal symbols.
+      yylast_ = 1765,     ///< Last index in yytable_.
+      yynnts_ = 503,  ///< Number of nonterminal symbols.
       yyfinal_ = 30 ///< Termination state number.
     };
 
@@ -6186,7 +6187,7 @@ switch (yykind)
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 6190 "dhcp6_parser.h"
+#line 6191 "dhcp6_parser.h"
 
 
 
index 6cf595d8426daf9b74ba7ddc762c28838f094123..cf6ead833bbd25a6f558721edaf4f3eded87dd98 100644 (file)
@@ -2634,13 +2634,17 @@ client_classes: CLIENT_CLASSES {
     ctx.leave();
 };
 
-client_classes_list: client_class_entry
-                   | client_classes_list COMMA client_class_entry
-                   | client_classes_list COMMA {
-                       ctx.warnAboutExtraCommas(@2);
-                       }
+client_classes_list: %empty
+                   | not_empty_classes_list
                    ;
 
+not_empty_classes_list: client_class_entry
+                      | not_empty_classes_list COMMA client_class_entry
+                      | not_empty_classes_list COMMA {
+                          ctx.warnAboutExtraCommas(@2);
+                          }
+                      ;
+
 client_class_entry: LCURLY_BRACKET {
     ElementPtr m(new MapElement(ctx.loc2pos(@1)));
     ctx.stack_.back()->add(m);
index a9e21f1ecdff26636ea7d9d7a7f803fb1a08d2de..e898d6184c3b580b0a5eec7166cf6bc79eea87c8 100644 (file)
@@ -547,6 +547,29 @@ public:
     IfaceMgrTestConfig iface_mgr_test_config_;
 };
 
+// This test checks that empty client classes is supported.
+TEST_F(ClassifyTest, emptyClientClasses) {
+    std::string config = "{ \"interfaces-config\": {"
+        "    \"interfaces\": [ \"*\" ] }, "
+        "\"preferred-lifetime\": 3000,"
+        "\"rebind-timer\": 2000, "
+        "\"renew-timer\": 1000, "
+        "\"valid-lifetime\": 4000, "
+        "\"subnet6\": [ "
+        "{   \"pools\": [ { \"pool\": \"2001:db8:1::/64\" } ], "
+        "    \"id\": 1, "
+        "    \"subnet\": \"2001:db8:1::/48\", "
+        "    \"interface\": \"eth1\" } ],"
+        "\"client-classes\": [ "
+        "] }";
+
+    // Check the config can be parsed.
+    EXPECT_NO_THROW(parseDHCP6(config));
+
+    // Load the config.
+    EXPECT_NO_THROW(configure(config));
+}
+
 // Checks if DOCSIS client packets are classified properly
 TEST_F(ClassifyTest, docsisClientClassification) {
     // Let's create a relayed SOLICIT. This particular relayed SOLICIT has