]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1102] regen bison
authorFrancis Dupont <fdupont@isc.org>
Thu, 17 Sep 2020 13:28:22 +0000 (13:28 +0000)
committerFrancis Dupont <fdupont@isc.org>
Mon, 21 Sep 2020 10:37:07 +0000 (12:37 +0200)
25 files changed:
src/bin/agent/agent_parser.cc
src/bin/agent/agent_parser.h
src/bin/agent/location.hh
src/bin/agent/position.hh
src/bin/agent/stack.hh
src/bin/d2/d2_parser.cc
src/bin/d2/d2_parser.h
src/bin/d2/location.hh
src/bin/d2/position.hh
src/bin/d2/stack.hh
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh
src/bin/netconf/location.hh
src/bin/netconf/netconf_parser.cc
src/bin/netconf/netconf_parser.h
src/bin/netconf/position.hh
src/bin/netconf/stack.hh

index e8951f18d45614c5c342a8d2296a7dcf6db0d50f..c92669b8c79dbd84284d8967daeacbbb3042f89e 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
@@ -212,6 +212,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
@@ -249,6 +250,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
@@ -286,6 +288,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
@@ -322,6 +325,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (that.value);
         break;
 
@@ -378,45 +382,51 @@ namespace isc { namespace agent {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
-#line 384 "agent_parser.cc"
+#line 388 "agent_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
-#line 390 "agent_parser.cc"
+#line 394 "agent_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
-#line 396 "agent_parser.cc"
+#line 400 "agent_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
-#line 402 "agent_parser.cc"
+#line 406 "agent_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 408 "agent_parser.cc"
+#line 412 "agent_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 414 "agent_parser.cc"
+#line 418 "agent_parser.cc"
         break;
 
       case symbol_kind::S_socket_type_value: // socket_type_value
-#line 99 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 420 "agent_parser.cc"
+#line 424 "agent_parser.cc"
+        break;
+
+      case symbol_kind::S_auth_type_value: // auth_type_value
+#line 108 "agent_parser.yy"
+                 { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 430 "agent_parser.cc"
         break;
 
       default:
@@ -649,6 +659,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
@@ -689,208 +700,208 @@ namespace isc { namespace agent {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 110 "agent_parser.yy"
+#line 119 "agent_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
-#line 695 "agent_parser.cc"
+#line 706 "agent_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 111 "agent_parser.yy"
+#line 120 "agent_parser.yy"
                        { ctx.ctx_ = ctx.CONFIG; }
-#line 701 "agent_parser.cc"
+#line 712 "agent_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 112 "agent_parser.yy"
+#line 121 "agent_parser.yy"
                        { ctx.ctx_ = ctx.AGENT; }
-#line 707 "agent_parser.cc"
+#line 718 "agent_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 120 "agent_parser.yy"
+#line 129 "agent_parser.yy"
                           {
     // Parse the Control-agent map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 717 "agent_parser.cc"
+#line 728 "agent_parser.cc"
     break;
 
   case 9: // sub_agent: "{" $@4 global_params "}"
-#line 124 "agent_parser.yy"
+#line 133 "agent_parser.yy"
                                {
     // parsing completed
 }
-#line 725 "agent_parser.cc"
+#line 736 "agent_parser.cc"
     break;
 
   case 10: // json: value
-#line 131 "agent_parser.yy"
+#line 140 "agent_parser.yy"
             {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
 }
-#line 734 "agent_parser.cc"
+#line 745 "agent_parser.cc"
     break;
 
   case 11: // value: "integer"
-#line 137 "agent_parser.yy"
+#line 146 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 740 "agent_parser.cc"
+#line 751 "agent_parser.cc"
     break;
 
   case 12: // value: "floating point"
-#line 138 "agent_parser.yy"
+#line 147 "agent_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 746 "agent_parser.cc"
+#line 757 "agent_parser.cc"
     break;
 
   case 13: // value: "boolean"
-#line 139 "agent_parser.yy"
+#line 148 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 752 "agent_parser.cc"
+#line 763 "agent_parser.cc"
     break;
 
   case 14: // value: "constant string"
-#line 140 "agent_parser.yy"
+#line 149 "agent_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 758 "agent_parser.cc"
+#line 769 "agent_parser.cc"
     break;
 
   case 15: // value: "null"
-#line 141 "agent_parser.yy"
+#line 150 "agent_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 764 "agent_parser.cc"
+#line 775 "agent_parser.cc"
     break;
 
   case 16: // value: map
-#line 142 "agent_parser.yy"
+#line 151 "agent_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 770 "agent_parser.cc"
+#line 781 "agent_parser.cc"
     break;
 
   case 17: // value: list_generic
-#line 143 "agent_parser.yy"
+#line 152 "agent_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 776 "agent_parser.cc"
+#line 787 "agent_parser.cc"
     break;
 
   case 18: // $@5: %empty
-#line 147 "agent_parser.yy"
+#line 156 "agent_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 787 "agent_parser.cc"
+#line 798 "agent_parser.cc"
     break;
 
   case 19: // map: "{" $@5 map_content "}"
-#line 152 "agent_parser.yy"
+#line 161 "agent_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 797 "agent_parser.cc"
+#line 808 "agent_parser.cc"
     break;
 
   case 20: // map_value: map
-#line 158 "agent_parser.yy"
+#line 167 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 803 "agent_parser.cc"
+#line 814 "agent_parser.cc"
     break;
 
   case 23: // not_empty_map: "constant string" ":" value
-#line 172 "agent_parser.yy"
+#line 181 "agent_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
                   }
-#line 813 "agent_parser.cc"
+#line 824 "agent_parser.cc"
     break;
 
   case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 177 "agent_parser.yy"
+#line 186 "agent_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
                   }
-#line 824 "agent_parser.cc"
+#line 835 "agent_parser.cc"
     break;
 
   case 25: // $@6: %empty
-#line 185 "agent_parser.yy"
+#line 194 "agent_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 833 "agent_parser.cc"
+#line 844 "agent_parser.cc"
     break;
 
   case 26: // list_generic: "[" $@6 list_content "]"
-#line 188 "agent_parser.yy"
+#line 197 "agent_parser.yy"
                                {
 }
-#line 840 "agent_parser.cc"
+#line 851 "agent_parser.cc"
     break;
 
   case 29: // not_empty_list: value
-#line 195 "agent_parser.yy"
+#line 204 "agent_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
                   }
-#line 849 "agent_parser.cc"
+#line 860 "agent_parser.cc"
     break;
 
   case 30: // not_empty_list: not_empty_list "," value
-#line 199 "agent_parser.yy"
+#line 208 "agent_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
                   }
-#line 858 "agent_parser.cc"
+#line 869 "agent_parser.cc"
     break;
 
   case 31: // unknown_map_entry: "constant string" ":"
-#line 212 "agent_parser.yy"
+#line 221 "agent_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 869 "agent_parser.cc"
+#line 880 "agent_parser.cc"
     break;
 
   case 32: // $@7: %empty
-#line 220 "agent_parser.yy"
+#line 229 "agent_parser.yy"
                                  {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 880 "agent_parser.cc"
+#line 891 "agent_parser.cc"
     break;
 
   case 33: // agent_syntax_map: "{" $@7 global_object "}"
-#line 225 "agent_parser.yy"
+#line 234 "agent_parser.yy"
                                {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 890 "agent_parser.cc"
+#line 901 "agent_parser.cc"
     break;
 
   case 34: // $@8: %empty
-#line 232 "agent_parser.yy"
+#line 241 "agent_parser.yy"
                              {
 
     // Let's create a MapElement that will represent it, add it to the
@@ -903,59 +914,59 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.AGENT);
 }
-#line 907 "agent_parser.cc"
+#line 918 "agent_parser.cc"
     break;
 
   case 35: // global_object: "Control-agent" $@8 ":" "{" global_params "}"
-#line 243 "agent_parser.yy"
+#line 252 "agent_parser.yy"
                                                     {
     // Ok, we're done with parsing control-agent. Let's take the map
     // off the stack.
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 918 "agent_parser.cc"
+#line 929 "agent_parser.cc"
     break;
 
-  case 46: // $@9: %empty
-#line 266 "agent_parser.yy"
+  case 47: // $@9: %empty
+#line 276 "agent_parser.yy"
                      {
     ctx.unique("http-host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 927 "agent_parser.cc"
+#line 938 "agent_parser.cc"
     break;
 
-  case 47: // http_host: "http-host" $@9 ":" "constant string"
-#line 269 "agent_parser.yy"
+  case 48: // http_host: "http-host" $@9 ":" "constant string"
+#line 279 "agent_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-host", host);
     ctx.leave();
 }
-#line 937 "agent_parser.cc"
+#line 948 "agent_parser.cc"
     break;
 
-  case 48: // http_port: "http-port" ":" "integer"
-#line 275 "agent_parser.yy"
+  case 49: // http_port: "http-port" ":" "integer"
+#line 285 "agent_parser.yy"
                                    {
     ctx.unique("http-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-port", prf);
 }
-#line 947 "agent_parser.cc"
+#line 958 "agent_parser.cc"
     break;
 
-  case 49: // $@10: %empty
-#line 281 "agent_parser.yy"
+  case 50: // $@10: %empty
+#line 291 "agent_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 955 "agent_parser.cc"
+#line 966 "agent_parser.cc"
     break;
 
-  case 50: // user_context: "user-context" $@10 ":" map_value
-#line 283 "agent_parser.yy"
+  case 51: // user_context: "user-context" $@10 ":" map_value
+#line 293 "agent_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -978,19 +989,19 @@ namespace isc { namespace agent {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 982 "agent_parser.cc"
+#line 993 "agent_parser.cc"
     break;
 
-  case 51: // $@11: %empty
-#line 306 "agent_parser.yy"
+  case 52: // $@11: %empty
+#line 316 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 990 "agent_parser.cc"
+#line 1001 "agent_parser.cc"
     break;
 
-  case 52: // comment: "comment" $@11 ":" "constant string"
-#line 308 "agent_parser.yy"
+  case 53: // comment: "comment" $@11 ":" "constant string"
+#line 318 "agent_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -1015,11 +1026,11 @@ namespace isc { namespace agent {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 1019 "agent_parser.cc"
+#line 1030 "agent_parser.cc"
     break;
 
-  case 53: // $@12: %empty
-#line 334 "agent_parser.yy"
+  case 54: // $@12: %empty
+#line 344 "agent_parser.yy"
                                  {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1027,75 +1038,75 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1031 "agent_parser.cc"
+#line 1042 "agent_parser.cc"
     break;
 
-  case 54: // hooks_libraries: "hooks-libraries" $@12 ":" "[" hooks_libraries_list "]"
-#line 340 "agent_parser.yy"
+  case 55: // hooks_libraries: "hooks-libraries" $@12 ":" "[" hooks_libraries_list "]"
+#line 350 "agent_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1040 "agent_parser.cc"
+#line 1051 "agent_parser.cc"
     break;
 
-  case 59: // $@13: %empty
-#line 353 "agent_parser.yy"
+  case 60: // $@13: %empty
+#line 363 "agent_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1050 "agent_parser.cc"
+#line 1061 "agent_parser.cc"
     break;
 
-  case 60: // hooks_library: "{" $@13 hooks_params "}"
-#line 357 "agent_parser.yy"
+  case 61: // hooks_library: "{" $@13 hooks_params "}"
+#line 367 "agent_parser.yy"
                               {
     ctx.stack_.pop_back();
 }
-#line 1058 "agent_parser.cc"
+#line 1069 "agent_parser.cc"
     break;
 
-  case 66: // $@14: %empty
-#line 370 "agent_parser.yy"
+  case 67: // $@14: %empty
+#line 380 "agent_parser.yy"
                  {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1067 "agent_parser.cc"
+#line 1078 "agent_parser.cc"
     break;
 
-  case 67: // library: "library" $@14 ":" "constant string"
-#line 373 "agent_parser.yy"
+  case 68: // library: "library" $@14 ":" "constant string"
+#line 383 "agent_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1077 "agent_parser.cc"
+#line 1088 "agent_parser.cc"
     break;
 
-  case 68: // $@15: %empty
-#line 379 "agent_parser.yy"
+  case 69: // $@15: %empty
+#line 389 "agent_parser.yy"
                        {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1086 "agent_parser.cc"
+#line 1097 "agent_parser.cc"
     break;
 
-  case 69: // parameters: "parameters" $@15 ":" map_value
-#line 382 "agent_parser.yy"
+  case 70: // parameters: "parameters" $@15 ":" map_value
+#line 392 "agent_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1095 "agent_parser.cc"
+#line 1106 "agent_parser.cc"
     break;
 
-  case 70: // $@16: %empty
-#line 390 "agent_parser.yy"
+  case 71: // $@16: %empty
+#line 400 "agent_parser.yy"
                                                       {
     ctx.unique("control-sockets", ctx.loc2pos(yystack_[2].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
@@ -1103,20 +1114,20 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKETS);
 }
-#line 1107 "agent_parser.cc"
+#line 1118 "agent_parser.cc"
     break;
 
-  case 71: // control_sockets: "control-sockets" ":" "{" $@16 control_sockets_params "}"
-#line 396 "agent_parser.yy"
+  case 72: // control_sockets: "control-sockets" ":" "{" $@16 control_sockets_params "}"
+#line 406 "agent_parser.yy"
                                         {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1116 "agent_parser.cc"
+#line 1127 "agent_parser.cc"
     break;
 
-  case 78: // $@17: %empty
-#line 417 "agent_parser.yy"
+  case 79: // $@17: %empty
+#line 427 "agent_parser.yy"
                                   {
     ctx.unique("dhcp4", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1124,20 +1135,20 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER);
 }
-#line 1128 "agent_parser.cc"
+#line 1139 "agent_parser.cc"
     break;
 
-  case 79: // dhcp4_server_socket: "dhcp4" $@17 ":" "{" control_socket_params "}"
-#line 423 "agent_parser.yy"
+  case 80: // dhcp4_server_socket: "dhcp4" $@17 ":" "{" control_socket_params "}"
+#line 433 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1137 "agent_parser.cc"
+#line 1148 "agent_parser.cc"
     break;
 
-  case 80: // $@18: %empty
-#line 429 "agent_parser.yy"
+  case 81: // $@18: %empty
+#line 439 "agent_parser.yy"
                                   {
     ctx.unique("dhcp6", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1145,20 +1156,20 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER);
 }
-#line 1149 "agent_parser.cc"
+#line 1160 "agent_parser.cc"
     break;
 
-  case 81: // dhcp6_server_socket: "dhcp6" $@18 ":" "{" control_socket_params "}"
-#line 435 "agent_parser.yy"
+  case 82: // dhcp6_server_socket: "dhcp6" $@18 ":" "{" control_socket_params "}"
+#line 445 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1158 "agent_parser.cc"
+#line 1169 "agent_parser.cc"
     break;
 
-  case 82: // $@19: %empty
-#line 441 "agent_parser.yy"
+  case 83: // $@19: %empty
+#line 451 "agent_parser.yy"
                             {
     ctx.unique("d2", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1166,63 +1177,206 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER);
 }
-#line 1170 "agent_parser.cc"
+#line 1181 "agent_parser.cc"
     break;
 
-  case 83: // d2_server_socket: "d2" $@19 ":" "{" control_socket_params "}"
-#line 447 "agent_parser.yy"
+  case 84: // d2_server_socket: "d2" $@19 ":" "{" control_socket_params "}"
+#line 457 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1179 "agent_parser.cc"
+#line 1190 "agent_parser.cc"
     break;
 
-  case 91: // $@20: %empty
-#line 466 "agent_parser.yy"
+  case 92: // $@20: %empty
+#line 476 "agent_parser.yy"
                          {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1188 "agent_parser.cc"
+#line 1199 "agent_parser.cc"
     break;
 
-  case 92: // socket_name: "socket-name" $@20 ":" "constant string"
-#line 469 "agent_parser.yy"
+  case 93: // socket_name: "socket-name" $@20 ":" "constant string"
+#line 479 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 1198 "agent_parser.cc"
+#line 1209 "agent_parser.cc"
     break;
 
-  case 93: // $@21: %empty
-#line 476 "agent_parser.yy"
+  case 94: // $@21: %empty
+#line 486 "agent_parser.yy"
                          {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.SOCKET_TYPE);
 }
-#line 1207 "agent_parser.cc"
+#line 1218 "agent_parser.cc"
     break;
 
-  case 94: // socket_type: "socket-type" $@21 ":" socket_type_value
-#line 479 "agent_parser.yy"
+  case 95: // socket_type: "socket-type" $@21 ":" socket_type_value
+#line 489 "agent_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1216 "agent_parser.cc"
+#line 1227 "agent_parser.cc"
     break;
 
-  case 95: // socket_type_value: "unix"
-#line 485 "agent_parser.yy"
+  case 96: // socket_type_value: "unix"
+#line 495 "agent_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1222 "agent_parser.cc"
+#line 1233 "agent_parser.cc"
+    break;
+
+  case 97: // $@22: %empty
+#line 502 "agent_parser.yy"
+                               {
+    ctx.unique("authentication", ctx.loc2pos(yystack_[0].location));
+    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("authentication", m);
+    ctx.stack_.push_back(m);
+    ctx.enter(ctx.AUTHENTICATION);
+}
+#line 1245 "agent_parser.cc"
+    break;
+
+  case 98: // authentication: "authentication" $@22 ":" "{" auth_params "}"
+#line 508 "agent_parser.yy"
+                                                  {
+    // The type parameter is required
+    ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
+    ctx.stack_.pop_back();
+    ctx.leave();
+}
+#line 1256 "agent_parser.cc"
     break;
 
-  case 96: // $@22: %empty
-#line 492 "agent_parser.yy"
+  case 107: // $@23: %empty
+#line 527 "agent_parser.yy"
+                {
+    ctx.unique("type", ctx.loc2pos(yystack_[0].location));
+    ctx.enter(ctx.AUTH_TYPE);
+}
+#line 1265 "agent_parser.cc"
+    break;
+
+  case 108: // auth_type: "type" $@23 ":" auth_type_value
+#line 530 "agent_parser.yy"
+                        {
+    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.leave();
+}
+#line 1274 "agent_parser.cc"
+    break;
+
+  case 109: // auth_type_value: "basic"
+#line 535 "agent_parser.yy"
+                       { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
+#line 1280 "agent_parser.cc"
+    break;
+
+  case 110: // $@24: %empty
+#line 538 "agent_parser.yy"
+             {
+    ctx.unique("realm", ctx.loc2pos(yystack_[0].location));
+    ctx.enter(ctx.NO_KEYWORDS);
+}
+#line 1289 "agent_parser.cc"
+    break;
+
+  case 111: // realm: "realm" $@24 ":" "constant string"
+#line 541 "agent_parser.yy"
+               {
+    ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("realm", realm);
+    ctx.leave();
+}
+#line 1299 "agent_parser.cc"
+    break;
+
+  case 112: // $@25: %empty
+#line 547 "agent_parser.yy"
+                 {
+    ctx.unique("clients", ctx.loc2pos(yystack_[0].location));
+    ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("clients", l);
+    ctx.stack_.push_back(l);
+    ctx.enter(ctx.CLIENTS);
+}
+#line 1311 "agent_parser.cc"
+    break;
+
+  case 113: // clients: "clients" $@25 ":" "[" clients_list "]"
+#line 553 "agent_parser.yy"
+                                                     {
+    ctx.stack_.pop_back();
+    ctx.leave();
+}
+#line 1320 "agent_parser.cc"
+    break;
+
+  case 118: // $@26: %empty
+#line 566 "agent_parser.yy"
+                           {
+    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->add(m);
+    ctx.stack_.push_back(m);
+}
+#line 1330 "agent_parser.cc"
+    break;
+
+  case 119: // basic_auth: "{" $@26 clients_params "}"
+#line 570 "agent_parser.yy"
+                                {
+    ctx.stack_.pop_back();
+}
+#line 1338 "agent_parser.cc"
+    break;
+
+  case 127: // $@27: %empty
+#line 585 "agent_parser.yy"
+           {
+    ctx.unique("user", ctx.loc2pos(yystack_[0].location));
+    ctx.enter(ctx.NO_KEYWORDS);
+}
+#line 1347 "agent_parser.cc"
+    break;
+
+  case 128: // user: "user" $@27 ":" "constant string"
+#line 588 "agent_parser.yy"
+               {
+    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("user", user);
+    ctx.leave();
+}
+#line 1357 "agent_parser.cc"
+    break;
+
+  case 129: // $@28: %empty
+#line 594 "agent_parser.yy"
+                   {
+    ctx.unique("password", ctx.loc2pos(yystack_[0].location));
+    ctx.enter(ctx.NO_KEYWORDS);
+}
+#line 1366 "agent_parser.cc"
+    break;
+
+  case 130: // password: "password" $@28 ":" "constant string"
+#line 597 "agent_parser.yy"
+               {
+    ElementPtr password(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("password", password);
+    ctx.leave();
+}
+#line 1376 "agent_parser.cc"
+    break;
+
+  case 131: // $@29: %empty
+#line 607 "agent_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1230,86 +1384,86 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 1234 "agent_parser.cc"
+#line 1388 "agent_parser.cc"
     break;
 
-  case 97: // loggers: "loggers" $@22 ":" "[" loggers_entries "]"
-#line 498 "agent_parser.yy"
+  case 132: // loggers: "loggers" $@29 ":" "[" loggers_entries "]"
+#line 613 "agent_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1243 "agent_parser.cc"
+#line 1397 "agent_parser.cc"
     break;
 
-  case 100: // $@23: %empty
-#line 510 "agent_parser.yy"
+  case 135: // $@30: %empty
+#line 625 "agent_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 1253 "agent_parser.cc"
+#line 1407 "agent_parser.cc"
     break;
 
-  case 101: // logger_entry: "{" $@23 logger_params "}"
-#line 514 "agent_parser.yy"
+  case 136: // logger_entry: "{" $@30 logger_params "}"
+#line 629 "agent_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 1261 "agent_parser.cc"
+#line 1415 "agent_parser.cc"
     break;
 
-  case 111: // $@24: %empty
-#line 531 "agent_parser.yy"
+  case 146: // $@31: %empty
+#line 646 "agent_parser.yy"
            {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1270 "agent_parser.cc"
+#line 1424 "agent_parser.cc"
     break;
 
-  case 112: // name: "name" $@24 ":" "constant string"
-#line 534 "agent_parser.yy"
+  case 147: // name: "name" $@31 ":" "constant string"
+#line 649 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1280 "agent_parser.cc"
+#line 1434 "agent_parser.cc"
     break;
 
-  case 113: // debuglevel: "debuglevel" ":" "integer"
-#line 540 "agent_parser.yy"
+  case 148: // debuglevel: "debuglevel" ":" "integer"
+#line 655 "agent_parser.yy"
                                      {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 1290 "agent_parser.cc"
+#line 1444 "agent_parser.cc"
     break;
 
-  case 114: // $@25: %empty
-#line 546 "agent_parser.yy"
+  case 149: // $@32: %empty
+#line 661 "agent_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1299 "agent_parser.cc"
+#line 1453 "agent_parser.cc"
     break;
 
-  case 115: // severity: "severity" $@25 ":" "constant string"
-#line 549 "agent_parser.yy"
+  case 150: // severity: "severity" $@32 ":" "constant string"
+#line 664 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 1309 "agent_parser.cc"
+#line 1463 "agent_parser.cc"
     break;
 
-  case 116: // $@26: %empty
-#line 555 "agent_parser.yy"
+  case 151: // $@33: %empty
+#line 670 "agent_parser.yy"
                                     {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1317,106 +1471,106 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 1321 "agent_parser.cc"
+#line 1475 "agent_parser.cc"
     break;
 
-  case 117: // output_options_list: "output_options" $@26 ":" "[" output_options_list_content "]"
-#line 561 "agent_parser.yy"
+  case 152: // output_options_list: "output_options" $@33 ":" "[" output_options_list_content "]"
+#line 676 "agent_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1330 "agent_parser.cc"
+#line 1484 "agent_parser.cc"
     break;
 
-  case 120: // $@27: %empty
-#line 570 "agent_parser.yy"
+  case 155: // $@34: %empty
+#line 685 "agent_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1340 "agent_parser.cc"
+#line 1494 "agent_parser.cc"
     break;
 
-  case 121: // output_entry: "{" $@27 output_params_list "}"
-#line 574 "agent_parser.yy"
+  case 156: // output_entry: "{" $@34 output_params_list "}"
+#line 689 "agent_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 1348 "agent_parser.cc"
+#line 1502 "agent_parser.cc"
     break;
 
-  case 129: // $@28: %empty
-#line 589 "agent_parser.yy"
+  case 164: // $@35: %empty
+#line 704 "agent_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1357 "agent_parser.cc"
+#line 1511 "agent_parser.cc"
     break;
 
-  case 130: // output: "output" $@28 ":" "constant string"
-#line 592 "agent_parser.yy"
+  case 165: // output: "output" $@35 ":" "constant string"
+#line 707 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 1367 "agent_parser.cc"
+#line 1521 "agent_parser.cc"
     break;
 
-  case 131: // flush: "flush" ":" "boolean"
-#line 598 "agent_parser.yy"
+  case 166: // flush: "flush" ":" "boolean"
+#line 713 "agent_parser.yy"
                            {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 1377 "agent_parser.cc"
+#line 1531 "agent_parser.cc"
     break;
 
-  case 132: // maxsize: "maxsize" ":" "integer"
-#line 604 "agent_parser.yy"
+  case 167: // maxsize: "maxsize" ":" "integer"
+#line 719 "agent_parser.yy"
                                {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 1387 "agent_parser.cc"
+#line 1541 "agent_parser.cc"
     break;
 
-  case 133: // maxver: "maxver" ":" "integer"
-#line 610 "agent_parser.yy"
+  case 168: // maxver: "maxver" ":" "integer"
+#line 725 "agent_parser.yy"
                              {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 1397 "agent_parser.cc"
+#line 1551 "agent_parser.cc"
     break;
 
-  case 134: // $@29: %empty
-#line 616 "agent_parser.yy"
+  case 169: // $@36: %empty
+#line 731 "agent_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1406 "agent_parser.cc"
+#line 1560 "agent_parser.cc"
     break;
 
-  case 135: // pattern: "pattern" $@29 ":" "constant string"
-#line 619 "agent_parser.yy"
+  case 170: // pattern: "pattern" $@36 ":" "constant string"
+#line 734 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 1416 "agent_parser.cc"
+#line 1570 "agent_parser.cc"
     break;
 
 
-#line 1420 "agent_parser.cc"
+#line 1574 "agent_parser.cc"
 
             default:
               break;
@@ -1765,37 +1919,42 @@ namespace isc { namespace agent {
   }
 
 
-  const signed char AgentParser::yypact_ninf_ = -75;
+  const signed char AgentParser::yypact_ninf_ = -80;
 
   const signed char AgentParser::yytable_ninf_ = -1;
 
   const short
   AgentParser::yypact_[] =
   {
-     -18,   -75,   -75,   -75,     6,     0,     1,    27,   -75,   -75,
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -75,     0,     8,    60,    -1,   -75,    80,
-      45,    86,    83,    93,   -75,    89,   -75,    96,   -75,   -75,
-      97,   -75,   -75,    98,   -75,    17,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -75,   -75,     0,     0,   -75,    65,   100,
-     -75,   101,    67,   103,   104,   102,   106,   107,   -75,    -1,
-     -75,   -75,   -75,   108,   109,    77,   -75,   110,    81,   -75,
-     113,   115,   -75,     0,    -1,   -75,   -75,   -75,   -75,    15,
-     114,   116,   -75,    42,   -75,   -75,   -75,   -75,    46,   -75,
-     -75,   -75,   -75,   -75,   118,   111,   -75,   -75,    82,   -75,
-     -75,   121,   122,   123,    15,   -75,    -8,   -75,   114,    38,
-     116,   -75,   124,   128,   129,   -75,   -75,   -75,   -75,    52,
-     -75,   -75,   -75,   -75,   -75,   -75,   125,   -75,   -75,   -75,
-     -75,    53,   -75,   -75,   -75,   -75,   -75,   -75,     9,     9,
-       9,   126,   133,     3,   -75,   134,   135,   105,   136,    38,
-     -75,   -75,   -75,   -75,   -75,   -75,    63,   -75,   -75,   -75,
-      74,    75,    84,   110,   -75,    90,   137,   -75,   112,   -75,
-     139,   141,     9,   -75,   -75,   -75,   -75,   -75,   -75,   140,
-     -75,   117,   120,   -75,   -75,    92,   -75,   -75,   -75,   -75,
-      41,   140,   -75,   -75,   142,   144,   145,   -75,    76,   -75,
-     -75,   -75,   -75,   -75,   -75,   -75,   147,    72,   119,   127,
-     148,    41,   -75,   130,   -75,   -75,   -75,   131,   -75,   -75,
-     -75
+      56,   -80,   -80,   -80,     6,     4,     3,     5,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,     4,   -37,    34,    10,   -80,    14,
+      30,    67,    69,    98,   -80,   103,   -80,   113,   -80,   -80,
+     -80,   118,   -80,   -80,   119,   -80,    23,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,     4,     4,   -80,
+      79,   121,   -80,   122,    82,   125,   126,   127,   128,   129,
+     130,   -80,    10,   -80,   -80,   -80,   132,   131,    92,   -80,
+     133,    96,   135,   -80,   134,   138,   -80,     4,    10,   -80,
+     -80,   -80,   -80,    40,    51,   137,   139,   -80,    54,   -80,
+     -80,   -80,   -80,   -80,   -80,    57,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,    83,   -80,   -80,   -80,   -80,   -80,
+     141,   142,   -80,   -80,    13,   -80,   -80,   144,   145,   146,
+      40,   -80,   147,   148,   149,    51,   -80,    -2,   -80,   137,
+       1,   139,   -80,   115,   109,   150,   -80,   151,   152,   153,
+     -80,   -80,   -80,   -80,    84,   -80,   -80,   -80,   -80,   -80,
+     -80,   158,   -80,   -80,   -80,   -80,    85,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   159,    -9,    -9,    -9,
+     161,   163,    88,   -80,   164,   165,   110,   166,     1,   -80,
+     -80,   167,   154,   -80,   -80,   -80,   -80,   -80,   -80,    86,
+     -80,   -80,   -80,    87,    94,   136,   133,   -80,   140,   169,
+     -80,   155,   -80,    59,   -80,   159,   168,   171,    -9,   -80,
+     -80,   -80,   -80,   -80,   -80,   170,   -80,   -80,   -80,   -80,
+     -80,   -80,   104,   -80,   -80,   -80,   -80,   156,   143,   -80,
+     -80,    24,   -80,   172,   174,    59,   -80,   -80,   -80,   -80,
+      43,   170,   -80,   157,   160,   -80,   -80,   175,   176,   178,
+     -80,   106,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,
+     -80,   179,   162,   173,   177,   180,    43,   -80,   181,   -80,
+     -80,   -80,   182,   -80,   -80,   -80
   };
 
   const unsigned char
@@ -1804,147 +1963,177 @@ namespace isc { namespace agent {
        0,     2,     4,     6,     0,     0,     0,     0,     1,    25,
       18,    15,    14,    11,    12,    13,     3,    10,    16,    17,
       32,     5,     8,     7,    27,    21,     0,     0,    29,     0,
-      28,     0,     0,    22,    34,     0,    46,     0,    49,    51,
-       0,    53,    96,     0,    45,     0,    36,    38,    39,    43,
-      44,    41,    40,    42,    26,     0,     0,    19,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,     0,    31,     0,
-       9,    30,    23,     0,     0,     0,    48,     0,     0,    70,
-       0,     0,    37,     0,     0,    47,    20,    50,    52,     0,
-      55,     0,    24,     0,    78,    80,    82,    77,     0,    72,
-      74,    75,    76,    59,     0,    56,    57,   100,     0,    98,
-      35,     0,     0,     0,     0,    71,     0,    54,     0,     0,
-       0,    97,     0,     0,     0,    73,    66,    68,    63,     0,
-      61,    64,    65,    58,   111,   116,     0,   114,   110,   108,
-     109,     0,   102,   104,   106,   107,   105,    99,     0,     0,
-       0,     0,     0,     0,    60,     0,     0,     0,     0,     0,
-     101,    91,    93,    90,    88,    89,     0,    84,    86,    87,
-       0,     0,     0,     0,    62,     0,     0,   113,     0,   103,
-       0,     0,     0,    79,    81,    83,    67,    69,   112,     0,
-     115,     0,     0,    85,   120,     0,   118,    92,    95,    94,
-       0,     0,   117,   129,     0,     0,     0,   134,     0,   122,
-     124,   125,   126,   127,   128,   119,     0,     0,     0,     0,
-       0,     0,   121,     0,   131,   132,   133,     0,   123,   130,
-     135
+      28,     0,     0,    22,    34,     0,    47,     0,    50,    52,
+      97,     0,    54,   131,     0,    46,     0,    36,    38,    39,
+      44,    45,    42,    41,    40,    43,    26,     0,     0,    19,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
+       0,    31,     0,     9,    30,    23,     0,     0,     0,    49,
+       0,     0,     0,    71,     0,     0,    37,     0,     0,    48,
+      20,    51,    53,     0,     0,    56,     0,    24,     0,   107,
+     110,   112,   106,   105,   104,     0,    99,   101,   102,   103,
+      79,    81,    83,    78,     0,    73,    75,    76,    77,    60,
+       0,    57,    58,   135,     0,   133,    35,     0,     0,     0,
+       0,    98,     0,     0,     0,     0,    72,     0,    55,     0,
+       0,     0,   132,     0,     0,     0,   100,     0,     0,     0,
+      74,    67,    69,    64,     0,    62,    65,    66,    59,   146,
+     151,     0,   149,   145,   143,   144,     0,   137,   139,   141,
+     142,   140,   134,   109,   108,   111,   114,     0,     0,     0,
+       0,     0,     0,    61,     0,     0,     0,     0,     0,   136,
+     118,     0,   115,   116,    92,    94,    91,    89,    90,     0,
+      85,    87,    88,     0,     0,     0,     0,    63,     0,     0,
+     148,     0,   138,     0,   113,     0,     0,     0,     0,    80,
+      82,    84,    68,    70,   147,     0,   150,   127,   129,   126,
+     124,   125,     0,   120,   122,   123,   117,     0,     0,    86,
+     155,     0,   153,     0,     0,     0,   119,    93,    96,    95,
+       0,     0,   152,     0,     0,   121,   164,     0,     0,     0,
+     169,     0,   157,   159,   160,   161,   162,   163,   154,   128,
+     130,     0,     0,     0,     0,     0,     0,   156,     0,   166,
+     167,   168,     0,   158,   165,   170
   };
 
   const signed char
   AgentParser::yypgoto_[] =
   {
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,   -75,   -20,   -74,
-     -75,   -19,   -75,   -75,   -75,   -75,   -75,   -75,   -27,   -75,
-     -75,   -75,   -75,    69,    87,   -75,   -75,   -75,   -26,   -75,
-     -25,   -75,   -75,   -75,   -75,   -75,    39,   -75,   -75,     7,
-     -75,   -75,   -75,   -75,   -75,   -75,   -75,    47,   -75,   -75,
-     -75,   -75,   -75,   -75,   -69,   -23,   -75,   -75,   -75,   -75,
-     -75,   -75,   -75,   -75,    43,   -75,   -75,     5,   -75,   -75,
-     -75,   -75,   -75,   -75,   -75,   -75,   -39,   -75,   -75,   -56,
-     -75,   -75,   -75,   -75,   -75,   -75,   -75
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -80,   -17,   -79,
+     -80,   -19,   -80,   -80,   -80,   -80,   -80,   -80,   -27,   -80,
+     -80,   -80,   -80,   102,   120,   -80,   -80,   -80,   -25,   -80,
+     -24,   -80,   -80,   -80,   -80,   -80,    52,   -80,   -80,    11,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,    60,   -80,   -80,
+     -80,   -80,   -80,   -80,   -58,   -22,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,    64,   -80,   -80,   -80,   -80,   -80,
+     -80,   -80,   -80,   -80,   -18,   -80,   -80,   -47,   -80,   -80,
+     -80,   -80,   -80,   -80,   -80,    58,   -80,   -80,    15,   -80,
+     -80,   -80,   -80,   -80,   -80,   -80,   -80,   -45,   -80,   -80,
+     -72,   -80,   -80,   -80,   -80,   -80,   -80,   -80
   };
 
   const short
   AgentParser::yydefgoto_[] =
   {
       -1,     4,     5,     6,     7,    23,    27,    16,    17,    18,
-      25,    87,    32,    33,    19,    24,    29,    30,   163,    21,
-      26,    35,    59,    45,    46,    47,    61,    48,   164,    63,
-     165,    64,    51,    66,   104,   105,   106,   116,   129,   130,
-     131,   151,   132,   152,    52,    89,    98,    99,   100,   111,
-     101,   112,   102,   113,   166,   167,   168,   180,   169,   181,
-     199,    53,    67,   108,   109,   119,   141,   142,   143,   155,
-     144,   145,   158,   146,   156,   195,   196,   200,   208,   209,
-     210,   216,   211,   212,   213,   214,   220
+      25,    91,    32,    33,    19,    24,    29,    30,   196,    21,
+      26,    35,    61,    46,    47,    48,    63,    49,   197,    65,
+     198,    66,    52,    69,   120,   121,   122,   137,   154,   155,
+     156,   180,   157,   181,    53,    94,   114,   115,   116,   132,
+     117,   133,   118,   134,   199,   200,   201,   216,   202,   217,
+     249,    54,    67,   105,   106,   107,   127,   174,   108,   128,
+     109,   129,   191,   192,   193,   213,   232,   233,   234,   243,
+     235,   244,    55,    70,   124,   125,   140,   166,   167,   168,
+     184,   169,   170,   187,   171,   185,   241,   242,   250,   261,
+     262,   263,   271,   264,   265,   266,   267,   275
   };
 
-  const unsigned char
+  const short
   AgentParser::yytable_[] =
   {
-      44,    49,    50,    86,    28,     9,     8,    10,    20,    11,
-      36,    37,    38,    39,    40,   126,   127,     1,     2,     3,
-      69,    41,    38,    39,    42,    70,   126,   127,   161,   162,
-      43,    94,    95,    96,    22,    71,    72,    43,    12,    13,
-      14,    15,    44,    49,    50,    69,    31,    43,    55,   114,
-     110,    38,    39,    43,   115,   153,   159,    44,    49,    50,
-     154,   160,    97,    92,   134,   135,   182,   136,   137,   203,
-      34,   183,   204,   205,   206,   207,    43,   182,   182,   221,
-     170,   171,   184,   185,   222,   120,    54,    97,   121,   128,
-      56,    57,   138,   139,   140,   201,    58,    60,   202,    86,
-      62,    65,    68,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    83,   224,   118,    85,    84,    10,    90,    88,
-      91,   103,   186,   107,   117,   122,   123,   124,   188,   157,
-     172,   148,   138,   139,   140,   149,   150,   173,   175,   176,
-     178,   198,   189,   191,   177,   192,   217,   194,   218,   219,
-     190,   223,   227,    93,   187,   197,    82,   133,   225,   193,
-     174,   125,   215,   147,   179,   228,   226,     0,   229,   230
+      45,    90,    50,    51,    38,    39,     8,    28,    31,     9,
+      20,    10,    22,    11,    38,    39,   141,   194,   195,   142,
+      56,    36,    37,    38,    39,    40,    72,   251,   151,   152,
+     252,    73,    41,    57,   159,   160,    44,   161,   162,    42,
+      74,    75,    43,    44,    34,    45,    44,    50,    51,    12,
+      13,    14,    15,    38,    39,    44,    99,    72,   100,   101,
+     130,    45,   126,    50,    51,   131,   102,   113,   103,   104,
+      97,    58,    38,    39,   110,   111,   112,    59,   256,   227,
+     228,   257,   258,   259,   260,    44,   135,   182,   188,   218,
+     218,   136,   183,   189,   219,   220,    44,   218,     1,     2,
+       3,    60,   221,   102,    44,   103,   104,   245,   113,   276,
+     153,    62,   246,   163,   277,   164,   165,    64,   151,   152,
+     203,   204,    68,    71,    76,    77,    78,    90,    79,    80,
+      81,    82,   173,    84,    85,    83,    87,    89,    88,    95,
+      10,    92,    93,    96,   119,   139,   123,   138,   143,   144,
+     145,   147,   148,   149,   175,   176,   210,   215,   177,   178,
+     179,   163,   186,   164,   165,   205,   190,   206,   208,   209,
+     211,   248,   237,   214,   225,   238,   253,   240,   254,   272,
+     273,   222,   274,   278,   282,   224,   229,   223,   230,   231,
+      98,   158,    86,   207,   146,   150,   239,   236,   255,   172,
+     226,   247,   269,   212,   283,   270,   268,     0,     0,     0,
+     279,     0,     0,     0,     0,     0,     0,     0,   229,   280,
+     230,   231,     0,   281,     0,     0,   284,   285
   };
 
   const short
   AgentParser::yycheck_[] =
   {
-      27,    27,    27,    77,    24,     5,     0,     7,     7,     9,
-      11,    12,    13,    14,    15,    23,    24,    35,    36,    37,
-       3,    22,    13,    14,    25,     8,    23,    24,    19,    20,
-      38,    16,    17,    18,     7,    55,    56,    38,    38,    39,
-      40,    41,    69,    69,    69,     3,    38,    38,     3,     3,
-       8,    13,    14,    38,     8,     3,     3,    84,    84,    84,
-       8,     8,    89,    83,    26,    27,     3,    29,    30,    28,
-      10,     8,    31,    32,    33,    34,    38,     3,     3,     3,
-     149,   150,     8,     8,     8,     3,     6,   114,     6,   116,
-       4,     8,   119,   119,   119,     3,     3,     8,     6,   173,
-       4,     4,     4,    38,     4,     4,    39,     4,     4,     7,
-       4,     4,     4,    41,     3,    38,     7,     7,     5,    38,
-       5,     7,    38,     7,     6,     4,     4,     4,    38,     4,
-       4,     7,   159,   159,   159,     7,     7,     4,     4,     4,
-       4,    21,     5,     4,    39,     4,     4,     7,     4,     4,
-      38,     4,     4,    84,   173,    38,    69,   118,    39,   182,
-     153,   114,   201,   120,   159,   221,    39,    -1,    38,    38
+      27,    80,    27,    27,    13,    14,     0,    24,    45,     5,
+       7,     7,     7,     9,    13,    14,     3,    26,    27,     6,
+       6,    11,    12,    13,    14,    15,     3,     3,    30,    31,
+       6,     8,    22,     3,    33,    34,    45,    36,    37,    29,
+      57,    58,    32,    45,    10,    72,    45,    72,    72,    45,
+      46,    47,    48,    13,    14,    45,    16,     3,    18,    19,
+       3,    88,     8,    88,    88,     8,    93,    94,    93,    93,
+      87,     4,    13,    14,    23,    24,    25,     8,    35,    20,
+      21,    38,    39,    40,    41,    45,     3,     3,     3,     3,
+       3,     8,     8,     8,     8,     8,    45,     3,    42,    43,
+      44,     3,     8,   130,    45,   130,   130,     3,   135,     3,
+     137,     8,     8,   140,     8,   140,   140,     4,    30,    31,
+     178,   179,     4,     4,    45,     4,     4,   206,    46,     4,
+       4,     4,    17,     4,     4,     7,     4,    45,     7,     5,
+       7,    45,     7,     5,     7,     3,     7,     6,     4,     4,
+       4,     4,     4,     4,    45,     5,    46,     3,     7,     7,
+       7,   188,     4,   188,   188,     4,     7,     4,     4,     4,
+       4,    28,     4,     6,     5,     4,     4,     7,     4,     4,
+       4,    45,     4,     4,     4,    45,   213,   206,   213,   213,
+      88,   139,    72,   182,   130,   135,   218,   215,   245,   141,
+      45,    45,    45,   188,   276,    45,   251,    -1,    -1,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   245,    46,
+     245,   245,    -1,    46,    -1,    -1,    45,    45
   };
 
   const unsigned char
   AgentParser::yystos_[] =
   {
-       0,    35,    36,    37,    43,    44,    45,    46,     0,     5,
-       7,     9,    38,    39,    40,    41,    49,    50,    51,    56,
-       7,    61,     7,    47,    57,    52,    62,    48,    50,    58,
-      59,    38,    54,    55,    10,    63,    11,    12,    13,    14,
-      15,    22,    25,    38,    60,    65,    66,    67,    69,    70,
-      72,    74,    86,   103,     6,     3,     4,     8,     3,    64,
-       8,    68,     4,    71,    73,     4,    75,   104,     4,     3,
-       8,    50,    50,    38,     4,     4,    39,     4,     4,     7,
-       4,     4,    66,     4,     7,    38,    51,    53,    38,    87,
-       5,     5,    50,    65,    16,    17,    18,    60,    88,    89,
-      90,    92,    94,     7,    76,    77,    78,     7,   105,   106,
-       8,    91,    93,    95,     3,     8,    79,     6,     3,   107,
-       3,     6,     4,     4,     4,    89,    23,    24,    60,    80,
-      81,    82,    84,    78,    26,    27,    29,    30,    60,    70,
-      72,   108,   109,   110,   112,   113,   115,   106,     7,     7,
-       7,    83,    85,     3,     8,   111,   116,     4,   114,     3,
-       8,    19,    20,    60,    70,    72,    96,    97,    98,   100,
-      96,    96,     4,     4,    81,     4,     4,    39,     4,   109,
-      99,   101,     3,     8,     8,     8,    38,    53,    38,     5,
-      38,     4,     4,    97,     7,   117,   118,    38,    21,   102,
-     119,     3,     6,    28,    31,    32,    33,    34,   120,   121,
-     122,   124,   125,   126,   127,   118,   123,     4,     4,     4,
-     128,     3,     8,     4,    41,    39,    39,     4,   121,    38,
-      38
+       0,    42,    43,    44,    50,    51,    52,    53,     0,     5,
+       7,     9,    45,    46,    47,    48,    56,    57,    58,    63,
+       7,    68,     7,    54,    64,    59,    69,    55,    57,    65,
+      66,    45,    61,    62,    10,    70,    11,    12,    13,    14,
+      15,    22,    29,    32,    45,    67,    72,    73,    74,    76,
+      77,    79,    81,    93,   110,   131,     6,     3,     4,     8,
+       3,    71,     8,    75,     4,    78,    80,   111,     4,    82,
+     132,     4,     3,     8,    57,    57,    45,     4,     4,    46,
+       4,     4,     4,     7,     4,     4,    73,     4,     7,    45,
+      58,    60,    45,     7,    94,     5,     5,    57,    72,    16,
+      18,    19,    67,    77,    79,   112,   113,   114,   117,   119,
+      23,    24,    25,    67,    95,    96,    97,    99,   101,     7,
+      83,    84,    85,     7,   133,   134,     8,   115,   118,   120,
+       3,     8,    98,   100,   102,     3,     8,    86,     6,     3,
+     135,     3,     6,     4,     4,     4,   113,     4,     4,     4,
+      96,    30,    31,    67,    87,    88,    89,    91,    85,    33,
+      34,    36,    37,    67,    77,    79,   136,   137,   138,   140,
+     141,   143,   134,    17,   116,    45,     5,     7,     7,     7,
+      90,    92,     3,     8,   139,   144,     4,   142,     3,     8,
+       7,   121,   122,   123,    26,    27,    67,    77,    79,   103,
+     104,   105,   107,   103,   103,     4,     4,    88,     4,     4,
+      46,     4,   137,   124,     6,     3,   106,   108,     3,     8,
+       8,     8,    45,    60,    45,     5,    45,    20,    21,    67,
+      77,    79,   125,   126,   127,   129,   123,     4,     4,   104,
+       7,   145,   146,   128,   130,     3,     8,    45,    28,   109,
+     147,     3,     6,     4,     4,   126,    35,    38,    39,    40,
+      41,   148,   149,   150,   152,   153,   154,   155,   146,    45,
+      45,   151,     4,     4,     4,   156,     3,     8,     4,    48,
+      46,    46,     4,   149,    45,    45
   };
 
   const unsigned char
   AgentParser::yyr1_[] =
   {
-       0,    42,    44,    43,    45,    43,    46,    43,    48,    47,
-      49,    50,    50,    50,    50,    50,    50,    50,    52,    51,
-      53,    54,    54,    55,    55,    57,    56,    58,    58,    59,
-      59,    60,    62,    61,    64,    63,    65,    65,    66,    66,
-      66,    66,    66,    66,    66,    66,    68,    67,    69,    71,
-      70,    73,    72,    75,    74,    76,    76,    77,    77,    79,
-      78,    80,    80,    80,    81,    81,    83,    82,    85,    84,
-      87,    86,    88,    88,    89,    89,    89,    89,    91,    90,
-      93,    92,    95,    94,    96,    96,    97,    97,    97,    97,
-      97,    99,    98,   101,   100,   102,   104,   103,   105,   105,
-     107,   106,   108,   108,   109,   109,   109,   109,   109,   109,
-     109,   111,   110,   112,   114,   113,   116,   115,   117,   117,
-     119,   118,   120,   120,   121,   121,   121,   121,   121,   123,
-     122,   124,   125,   126,   128,   127
+       0,    49,    51,    50,    52,    50,    53,    50,    55,    54,
+      56,    57,    57,    57,    57,    57,    57,    57,    59,    58,
+      60,    61,    61,    62,    62,    64,    63,    65,    65,    66,
+      66,    67,    69,    68,    71,    70,    72,    72,    73,    73,
+      73,    73,    73,    73,    73,    73,    73,    75,    74,    76,
+      78,    77,    80,    79,    82,    81,    83,    83,    84,    84,
+      86,    85,    87,    87,    87,    88,    88,    90,    89,    92,
+      91,    94,    93,    95,    95,    96,    96,    96,    96,    98,
+      97,   100,    99,   102,   101,   103,   103,   104,   104,   104,
+     104,   104,   106,   105,   108,   107,   109,   111,   110,   112,
+     112,   113,   113,   113,   113,   113,   113,   115,   114,   116,
+     118,   117,   120,   119,   121,   121,   122,   122,   124,   123,
+     125,   125,   126,   126,   126,   126,   126,   128,   127,   130,
+     129,   132,   131,   133,   133,   135,   134,   136,   136,   137,
+     137,   137,   137,   137,   137,   137,   139,   138,   140,   142,
+     141,   144,   143,   145,   145,   147,   146,   148,   148,   149,
+     149,   149,   149,   149,   151,   150,   152,   153,   154,   156,
+     155
   };
 
   const signed char
@@ -1954,16 +2143,20 @@ namespace isc { namespace agent {
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
        1,     0,     1,     3,     5,     0,     4,     0,     1,     1,
        3,     2,     0,     4,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
+       0,     4,     0,     4,     0,     6,     0,     1,     1,     3,
+       0,     4,     1,     3,     1,     1,     1,     0,     4,     0,
+       4,     0,     6,     1,     3,     1,     1,     1,     1,     0,
+       6,     0,     6,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     1,     0,     6,     1,
+       3,     1,     1,     1,     1,     1,     1,     0,     4,     1,
+       0,     4,     0,     6,     0,     1,     1,     3,     0,     4,
+       1,     3,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       4,     0,     4,     0,     6,     0,     1,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     0,     4,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     0,     6,
-       0,     6,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     0,     4,     0,     4,     1,     0,     6,     1,     3,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     3,     0,     4,     0,     6,     1,     3,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     0,
-       4,     3,     3,     3,     0,     4
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     0,     4,     3,     3,     3,     0,
+       4
   };
 
 
@@ -1976,12 +2169,14 @@ namespace isc { namespace agent {
   "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
   "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Control-agent\"",
   "\"http-host\"", "\"http-port\"", "\"user-context\"", "\"comment\"",
-  "\"control-sockets\"", "\"dhcp4\"", "\"dhcp6\"", "\"d2\"",
-  "\"socket-name\"", "\"socket-type\"", "\"unix\"", "\"hooks-libraries\"",
-  "\"library\"", "\"parameters\"", "\"loggers\"", "\"name\"",
-  "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
-  "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"", "START_JSON",
-  "START_AGENT", "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
+  "\"authentication\"", "\"type\"", "\"basic\"", "\"realm\"",
+  "\"clients\"", "\"user\"", "\"password\"", "\"control-sockets\"",
+  "\"dhcp4\"", "\"dhcp6\"", "\"d2\"", "\"socket-name\"", "\"socket-type\"",
+  "\"unix\"", "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
+  "\"loggers\"", "\"name\"", "\"output_options\"", "\"output\"",
+  "\"debuglevel\"", "\"severity\"", "\"flush\"", "\"maxsize\"",
+  "\"maxver\"", "\"pattern\"", "START_JSON", "START_AGENT",
+  "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
   "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
   "$@3", "sub_agent", "$@4", "json", "value", "map", "$@5", "map_value",
   "map_content", "not_empty_map", "list_generic", "$@6", "list_content",
@@ -1995,12 +2190,16 @@ namespace isc { namespace agent {
   "dhcp4_server_socket", "$@17", "dhcp6_server_socket", "$@18",
   "d2_server_socket", "$@19", "control_socket_params",
   "control_socket_param", "socket_name", "$@20", "socket_type", "$@21",
-  "socket_type_value", "loggers", "$@22", "loggers_entries",
-  "logger_entry", "$@23", "logger_params", "logger_param", "name", "$@24",
-  "debuglevel", "severity", "$@25", "output_options_list", "$@26",
-  "output_options_list_content", "output_entry", "$@27",
-  "output_params_list", "output_params", "output", "$@28", "flush",
-  "maxsize", "maxver", "pattern", "$@29", YY_NULLPTR
+  "socket_type_value", "authentication", "$@22", "auth_params",
+  "auth_param", "auth_type", "$@23", "auth_type_value", "realm", "$@24",
+  "clients", "$@25", "clients_list", "not_empty_clients_list",
+  "basic_auth", "$@26", "clients_params", "clients_param", "user", "$@27",
+  "password", "$@28", "loggers", "$@29", "loggers_entries", "logger_entry",
+  "$@30", "logger_params", "logger_param", "name", "$@31", "debuglevel",
+  "severity", "$@32", "output_options_list", "$@33",
+  "output_options_list_content", "output_entry", "$@34",
+  "output_params_list", "output_params", "output", "$@35", "flush",
+  "maxsize", "maxver", "pattern", "$@36", YY_NULLPTR
   };
 #endif
 
@@ -2009,20 +2208,24 @@ namespace isc { namespace agent {
   const short
   AgentParser::yyrline_[] =
   {
-       0,   110,   110,   110,   111,   111,   112,   112,   120,   120,
-     131,   137,   138,   139,   140,   141,   142,   143,   147,   147,
-     158,   163,   164,   172,   177,   185,   185,   191,   192,   195,
-     199,   212,   220,   220,   232,   232,   250,   251,   256,   257,
-     258,   259,   260,   261,   262,   263,   266,   266,   275,   281,
-     281,   306,   306,   334,   334,   345,   346,   349,   350,   353,
-     353,   361,   362,   363,   366,   367,   370,   370,   379,   379,
-     390,   390,   404,   405,   410,   411,   412,   413,   417,   417,
-     429,   429,   441,   441,   453,   454,   458,   459,   460,   461,
-     462,   466,   466,   476,   476,   485,   492,   492,   505,   506,
-     510,   510,   518,   519,   522,   523,   524,   525,   526,   527,
-     528,   531,   531,   540,   546,   546,   555,   555,   566,   567,
-     570,   570,   578,   579,   582,   583,   584,   585,   586,   589,
-     589,   598,   604,   610,   616,   616
+       0,   119,   119,   119,   120,   120,   121,   121,   129,   129,
+     140,   146,   147,   148,   149,   150,   151,   152,   156,   156,
+     167,   172,   173,   181,   186,   194,   194,   200,   201,   204,
+     208,   221,   229,   229,   241,   241,   259,   260,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   276,   276,   285,
+     291,   291,   316,   316,   344,   344,   355,   356,   359,   360,
+     363,   363,   371,   372,   373,   376,   377,   380,   380,   389,
+     389,   400,   400,   414,   415,   420,   421,   422,   423,   427,
+     427,   439,   439,   451,   451,   463,   464,   468,   469,   470,
+     471,   472,   476,   476,   486,   486,   495,   502,   502,   515,
+     516,   519,   520,   521,   522,   523,   524,   527,   527,   535,
+     538,   538,   547,   547,   558,   559,   562,   563,   566,   566,
+     574,   575,   578,   579,   580,   581,   582,   585,   585,   594,
+     594,   607,   607,   620,   621,   625,   625,   633,   634,   637,
+     638,   639,   640,   641,   642,   643,   646,   646,   655,   661,
+     661,   670,   670,   681,   682,   685,   685,   693,   694,   697,
+     698,   699,   700,   701,   704,   704,   713,   719,   725,   731,
+     731
   };
 
   void
@@ -2055,9 +2258,9 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2059 "agent_parser.cc"
+#line 2262 "agent_parser.cc"
 
-#line 625 "agent_parser.yy"
+#line 740 "agent_parser.yy"
 
 
 void
index 40108ac05f423b56d5e942cb1e2ceeb13225089c..ede9b1177c4c65de22513bc9a9fb0721d235fd50 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
@@ -416,6 +416,7 @@ namespace isc { namespace agent {
       // value
       // map_value
       // socket_type_value
+      // auth_type_value
       char dummy1[sizeof (ElementPtr)];
 
       // "boolean"
@@ -492,33 +493,40 @@ namespace isc { namespace agent {
     TOKEN_HTTP_PORT = 267,         // "http-port"
     TOKEN_USER_CONTEXT = 268,      // "user-context"
     TOKEN_COMMENT = 269,           // "comment"
-    TOKEN_CONTROL_SOCKETS = 270,   // "control-sockets"
-    TOKEN_DHCP4_SERVER = 271,      // "dhcp4"
-    TOKEN_DHCP6_SERVER = 272,      // "dhcp6"
-    TOKEN_D2_SERVER = 273,         // "d2"
-    TOKEN_SOCKET_NAME = 274,       // "socket-name"
-    TOKEN_SOCKET_TYPE = 275,       // "socket-type"
-    TOKEN_UNIX = 276,              // "unix"
-    TOKEN_HOOKS_LIBRARIES = 277,   // "hooks-libraries"
-    TOKEN_LIBRARY = 278,           // "library"
-    TOKEN_PARAMETERS = 279,        // "parameters"
-    TOKEN_LOGGERS = 280,           // "loggers"
-    TOKEN_NAME = 281,              // "name"
-    TOKEN_OUTPUT_OPTIONS = 282,    // "output_options"
-    TOKEN_OUTPUT = 283,            // "output"
-    TOKEN_DEBUGLEVEL = 284,        // "debuglevel"
-    TOKEN_SEVERITY = 285,          // "severity"
-    TOKEN_FLUSH = 286,             // "flush"
-    TOKEN_MAXSIZE = 287,           // "maxsize"
-    TOKEN_MAXVER = 288,            // "maxver"
-    TOKEN_PATTERN = 289,           // "pattern"
-    TOKEN_START_JSON = 290,        // START_JSON
-    TOKEN_START_AGENT = 291,       // START_AGENT
-    TOKEN_START_SUB_AGENT = 292,   // START_SUB_AGENT
-    TOKEN_STRING = 293,            // "constant string"
-    TOKEN_INTEGER = 294,           // "integer"
-    TOKEN_FLOAT = 295,             // "floating point"
-    TOKEN_BOOLEAN = 296            // "boolean"
+    TOKEN_AUTHENTICATION = 270,    // "authentication"
+    TOKEN_TYPE = 271,              // "type"
+    TOKEN_BASIC = 272,             // "basic"
+    TOKEN_REALM = 273,             // "realm"
+    TOKEN_CLIENTS = 274,           // "clients"
+    TOKEN_USER = 275,              // "user"
+    TOKEN_PASSWORD = 276,          // "password"
+    TOKEN_CONTROL_SOCKETS = 277,   // "control-sockets"
+    TOKEN_DHCP4_SERVER = 278,      // "dhcp4"
+    TOKEN_DHCP6_SERVER = 279,      // "dhcp6"
+    TOKEN_D2_SERVER = 280,         // "d2"
+    TOKEN_SOCKET_NAME = 281,       // "socket-name"
+    TOKEN_SOCKET_TYPE = 282,       // "socket-type"
+    TOKEN_UNIX = 283,              // "unix"
+    TOKEN_HOOKS_LIBRARIES = 284,   // "hooks-libraries"
+    TOKEN_LIBRARY = 285,           // "library"
+    TOKEN_PARAMETERS = 286,        // "parameters"
+    TOKEN_LOGGERS = 287,           // "loggers"
+    TOKEN_NAME = 288,              // "name"
+    TOKEN_OUTPUT_OPTIONS = 289,    // "output_options"
+    TOKEN_OUTPUT = 290,            // "output"
+    TOKEN_DEBUGLEVEL = 291,        // "debuglevel"
+    TOKEN_SEVERITY = 292,          // "severity"
+    TOKEN_FLUSH = 293,             // "flush"
+    TOKEN_MAXSIZE = 294,           // "maxsize"
+    TOKEN_MAXVER = 295,            // "maxver"
+    TOKEN_PATTERN = 296,           // "pattern"
+    TOKEN_START_JSON = 297,        // START_JSON
+    TOKEN_START_AGENT = 298,       // START_AGENT
+    TOKEN_START_SUB_AGENT = 299,   // START_SUB_AGENT
+    TOKEN_STRING = 300,            // "constant string"
+    TOKEN_INTEGER = 301,           // "integer"
+    TOKEN_FLOAT = 302,             // "floating point"
+    TOKEN_BOOLEAN = 303            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -535,7 +543,7 @@ namespace isc { namespace agent {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 42, ///< Number of tokens.
+        YYNTOKENS = 49, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -552,120 +560,148 @@ namespace isc { namespace agent {
         S_HTTP_PORT = 12,                        // "http-port"
         S_USER_CONTEXT = 13,                     // "user-context"
         S_COMMENT = 14,                          // "comment"
-        S_CONTROL_SOCKETS = 15,                  // "control-sockets"
-        S_DHCP4_SERVER = 16,                     // "dhcp4"
-        S_DHCP6_SERVER = 17,                     // "dhcp6"
-        S_D2_SERVER = 18,                        // "d2"
-        S_SOCKET_NAME = 19,                      // "socket-name"
-        S_SOCKET_TYPE = 20,                      // "socket-type"
-        S_UNIX = 21,                             // "unix"
-        S_HOOKS_LIBRARIES = 22,                  // "hooks-libraries"
-        S_LIBRARY = 23,                          // "library"
-        S_PARAMETERS = 24,                       // "parameters"
-        S_LOGGERS = 25,                          // "loggers"
-        S_NAME = 26,                             // "name"
-        S_OUTPUT_OPTIONS = 27,                   // "output_options"
-        S_OUTPUT = 28,                           // "output"
-        S_DEBUGLEVEL = 29,                       // "debuglevel"
-        S_SEVERITY = 30,                         // "severity"
-        S_FLUSH = 31,                            // "flush"
-        S_MAXSIZE = 32,                          // "maxsize"
-        S_MAXVER = 33,                           // "maxver"
-        S_PATTERN = 34,                          // "pattern"
-        S_START_JSON = 35,                       // START_JSON
-        S_START_AGENT = 36,                      // START_AGENT
-        S_START_SUB_AGENT = 37,                  // START_SUB_AGENT
-        S_STRING = 38,                           // "constant string"
-        S_INTEGER = 39,                          // "integer"
-        S_FLOAT = 40,                            // "floating point"
-        S_BOOLEAN = 41,                          // "boolean"
-        S_YYACCEPT = 42,                         // $accept
-        S_start = 43,                            // start
-        S_44_1 = 44,                             // $@1
-        S_45_2 = 45,                             // $@2
-        S_46_3 = 46,                             // $@3
-        S_sub_agent = 47,                        // sub_agent
-        S_48_4 = 48,                             // $@4
-        S_json = 49,                             // json
-        S_value = 50,                            // value
-        S_map = 51,                              // map
-        S_52_5 = 52,                             // $@5
-        S_map_value = 53,                        // map_value
-        S_map_content = 54,                      // map_content
-        S_not_empty_map = 55,                    // not_empty_map
-        S_list_generic = 56,                     // list_generic
-        S_57_6 = 57,                             // $@6
-        S_list_content = 58,                     // list_content
-        S_not_empty_list = 59,                   // not_empty_list
-        S_unknown_map_entry = 60,                // unknown_map_entry
-        S_agent_syntax_map = 61,                 // agent_syntax_map
-        S_62_7 = 62,                             // $@7
-        S_global_object = 63,                    // global_object
-        S_64_8 = 64,                             // $@8
-        S_global_params = 65,                    // global_params
-        S_global_param = 66,                     // global_param
-        S_http_host = 67,                        // http_host
-        S_68_9 = 68,                             // $@9
-        S_http_port = 69,                        // http_port
-        S_user_context = 70,                     // user_context
-        S_71_10 = 71,                            // $@10
-        S_comment = 72,                          // comment
-        S_73_11 = 73,                            // $@11
-        S_hooks_libraries = 74,                  // hooks_libraries
-        S_75_12 = 75,                            // $@12
-        S_hooks_libraries_list = 76,             // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 77,   // not_empty_hooks_libraries_list
-        S_hooks_library = 78,                    // hooks_library
-        S_79_13 = 79,                            // $@13
-        S_hooks_params = 80,                     // hooks_params
-        S_hooks_param = 81,                      // hooks_param
-        S_library = 82,                          // library
-        S_83_14 = 83,                            // $@14
-        S_parameters = 84,                       // parameters
-        S_85_15 = 85,                            // $@15
-        S_control_sockets = 86,                  // control_sockets
-        S_87_16 = 87,                            // $@16
-        S_control_sockets_params = 88,           // control_sockets_params
-        S_control_socket = 89,                   // control_socket
-        S_dhcp4_server_socket = 90,              // dhcp4_server_socket
-        S_91_17 = 91,                            // $@17
-        S_dhcp6_server_socket = 92,              // dhcp6_server_socket
-        S_93_18 = 93,                            // $@18
-        S_d2_server_socket = 94,                 // d2_server_socket
-        S_95_19 = 95,                            // $@19
-        S_control_socket_params = 96,            // control_socket_params
-        S_control_socket_param = 97,             // control_socket_param
-        S_socket_name = 98,                      // socket_name
-        S_99_20 = 99,                            // $@20
-        S_socket_type = 100,                     // socket_type
-        S_101_21 = 101,                          // $@21
-        S_socket_type_value = 102,               // socket_type_value
-        S_loggers = 103,                         // loggers
-        S_104_22 = 104,                          // $@22
-        S_loggers_entries = 105,                 // loggers_entries
-        S_logger_entry = 106,                    // logger_entry
-        S_107_23 = 107,                          // $@23
-        S_logger_params = 108,                   // logger_params
-        S_logger_param = 109,                    // logger_param
-        S_name = 110,                            // name
-        S_111_24 = 111,                          // $@24
-        S_debuglevel = 112,                      // debuglevel
-        S_severity = 113,                        // severity
-        S_114_25 = 114,                          // $@25
-        S_output_options_list = 115,             // output_options_list
-        S_116_26 = 116,                          // $@26
-        S_output_options_list_content = 117,     // output_options_list_content
-        S_output_entry = 118,                    // output_entry
-        S_119_27 = 119,                          // $@27
-        S_output_params_list = 120,              // output_params_list
-        S_output_params = 121,                   // output_params
-        S_output = 122,                          // output
-        S_123_28 = 123,                          // $@28
-        S_flush = 124,                           // flush
-        S_maxsize = 125,                         // maxsize
-        S_maxver = 126,                          // maxver
-        S_pattern = 127,                         // pattern
-        S_128_29 = 128                           // $@29
+        S_AUTHENTICATION = 15,                   // "authentication"
+        S_TYPE = 16,                             // "type"
+        S_BASIC = 17,                            // "basic"
+        S_REALM = 18,                            // "realm"
+        S_CLIENTS = 19,                          // "clients"
+        S_USER = 20,                             // "user"
+        S_PASSWORD = 21,                         // "password"
+        S_CONTROL_SOCKETS = 22,                  // "control-sockets"
+        S_DHCP4_SERVER = 23,                     // "dhcp4"
+        S_DHCP6_SERVER = 24,                     // "dhcp6"
+        S_D2_SERVER = 25,                        // "d2"
+        S_SOCKET_NAME = 26,                      // "socket-name"
+        S_SOCKET_TYPE = 27,                      // "socket-type"
+        S_UNIX = 28,                             // "unix"
+        S_HOOKS_LIBRARIES = 29,                  // "hooks-libraries"
+        S_LIBRARY = 30,                          // "library"
+        S_PARAMETERS = 31,                       // "parameters"
+        S_LOGGERS = 32,                          // "loggers"
+        S_NAME = 33,                             // "name"
+        S_OUTPUT_OPTIONS = 34,                   // "output_options"
+        S_OUTPUT = 35,                           // "output"
+        S_DEBUGLEVEL = 36,                       // "debuglevel"
+        S_SEVERITY = 37,                         // "severity"
+        S_FLUSH = 38,                            // "flush"
+        S_MAXSIZE = 39,                          // "maxsize"
+        S_MAXVER = 40,                           // "maxver"
+        S_PATTERN = 41,                          // "pattern"
+        S_START_JSON = 42,                       // START_JSON
+        S_START_AGENT = 43,                      // START_AGENT
+        S_START_SUB_AGENT = 44,                  // START_SUB_AGENT
+        S_STRING = 45,                           // "constant string"
+        S_INTEGER = 46,                          // "integer"
+        S_FLOAT = 47,                            // "floating point"
+        S_BOOLEAN = 48,                          // "boolean"
+        S_YYACCEPT = 49,                         // $accept
+        S_start = 50,                            // start
+        S_51_1 = 51,                             // $@1
+        S_52_2 = 52,                             // $@2
+        S_53_3 = 53,                             // $@3
+        S_sub_agent = 54,                        // sub_agent
+        S_55_4 = 55,                             // $@4
+        S_json = 56,                             // json
+        S_value = 57,                            // value
+        S_map = 58,                              // map
+        S_59_5 = 59,                             // $@5
+        S_map_value = 60,                        // map_value
+        S_map_content = 61,                      // map_content
+        S_not_empty_map = 62,                    // not_empty_map
+        S_list_generic = 63,                     // list_generic
+        S_64_6 = 64,                             // $@6
+        S_list_content = 65,                     // list_content
+        S_not_empty_list = 66,                   // not_empty_list
+        S_unknown_map_entry = 67,                // unknown_map_entry
+        S_agent_syntax_map = 68,                 // agent_syntax_map
+        S_69_7 = 69,                             // $@7
+        S_global_object = 70,                    // global_object
+        S_71_8 = 71,                             // $@8
+        S_global_params = 72,                    // global_params
+        S_global_param = 73,                     // global_param
+        S_http_host = 74,                        // http_host
+        S_75_9 = 75,                             // $@9
+        S_http_port = 76,                        // http_port
+        S_user_context = 77,                     // user_context
+        S_78_10 = 78,                            // $@10
+        S_comment = 79,                          // comment
+        S_80_11 = 80,                            // $@11
+        S_hooks_libraries = 81,                  // hooks_libraries
+        S_82_12 = 82,                            // $@12
+        S_hooks_libraries_list = 83,             // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 84,   // not_empty_hooks_libraries_list
+        S_hooks_library = 85,                    // hooks_library
+        S_86_13 = 86,                            // $@13
+        S_hooks_params = 87,                     // hooks_params
+        S_hooks_param = 88,                      // hooks_param
+        S_library = 89,                          // library
+        S_90_14 = 90,                            // $@14
+        S_parameters = 91,                       // parameters
+        S_92_15 = 92,                            // $@15
+        S_control_sockets = 93,                  // control_sockets
+        S_94_16 = 94,                            // $@16
+        S_control_sockets_params = 95,           // control_sockets_params
+        S_control_socket = 96,                   // control_socket
+        S_dhcp4_server_socket = 97,              // dhcp4_server_socket
+        S_98_17 = 98,                            // $@17
+        S_dhcp6_server_socket = 99,              // dhcp6_server_socket
+        S_100_18 = 100,                          // $@18
+        S_d2_server_socket = 101,                // d2_server_socket
+        S_102_19 = 102,                          // $@19
+        S_control_socket_params = 103,           // control_socket_params
+        S_control_socket_param = 104,            // control_socket_param
+        S_socket_name = 105,                     // socket_name
+        S_106_20 = 106,                          // $@20
+        S_socket_type = 107,                     // socket_type
+        S_108_21 = 108,                          // $@21
+        S_socket_type_value = 109,               // socket_type_value
+        S_authentication = 110,                  // authentication
+        S_111_22 = 111,                          // $@22
+        S_auth_params = 112,                     // auth_params
+        S_auth_param = 113,                      // auth_param
+        S_auth_type = 114,                       // auth_type
+        S_115_23 = 115,                          // $@23
+        S_auth_type_value = 116,                 // auth_type_value
+        S_realm = 117,                           // realm
+        S_118_24 = 118,                          // $@24
+        S_clients = 119,                         // clients
+        S_120_25 = 120,                          // $@25
+        S_clients_list = 121,                    // clients_list
+        S_not_empty_clients_list = 122,          // not_empty_clients_list
+        S_basic_auth = 123,                      // basic_auth
+        S_124_26 = 124,                          // $@26
+        S_clients_params = 125,                  // clients_params
+        S_clients_param = 126,                   // clients_param
+        S_user = 127,                            // user
+        S_128_27 = 128,                          // $@27
+        S_password = 129,                        // password
+        S_130_28 = 130,                          // $@28
+        S_loggers = 131,                         // loggers
+        S_132_29 = 132,                          // $@29
+        S_loggers_entries = 133,                 // loggers_entries
+        S_logger_entry = 134,                    // logger_entry
+        S_135_30 = 135,                          // $@30
+        S_logger_params = 136,                   // logger_params
+        S_logger_param = 137,                    // logger_param
+        S_name = 138,                            // name
+        S_139_31 = 139,                          // $@31
+        S_debuglevel = 140,                      // debuglevel
+        S_severity = 141,                        // severity
+        S_142_32 = 142,                          // $@32
+        S_output_options_list = 143,             // output_options_list
+        S_144_33 = 144,                          // $@33
+        S_output_options_list_content = 145,     // output_options_list_content
+        S_output_entry = 146,                    // output_entry
+        S_147_34 = 147,                          // $@34
+        S_output_params_list = 148,              // output_params_list
+        S_output_params = 149,                   // output_params
+        S_output = 150,                          // output
+        S_151_35 = 151,                          // $@35
+        S_flush = 152,                           // flush
+        S_maxsize = 153,                         // maxsize
+        S_maxver = 154,                          // maxver
+        S_pattern = 155,                         // pattern
+        S_156_36 = 156                           // $@36
       };
     };
 
@@ -705,6 +741,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
@@ -837,6 +874,7 @@ switch (yykind)
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.template destroy< ElementPtr > ();
         break;
 
@@ -946,13 +984,13 @@ switch (yykind)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_AUTHENTICATION || tok == token::TOKEN_TYPE || tok == token::TOKEN_BASIC || tok == token::TOKEN_REALM || tok == token::TOKEN_CLIENTS || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_AUTHENTICATION || tok == token::TOKEN_TYPE || tok == token::TOKEN_BASIC || tok == token::TOKEN_REALM || tok == token::TOKEN_CLIENTS || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1280,6 +1318,111 @@ switch (yykind)
         return symbol_type (token::TOKEN_COMMENT, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_AUTHENTICATION (location_type l)
+      {
+        return symbol_type (token::TOKEN_AUTHENTICATION, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_AUTHENTICATION (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_AUTHENTICATION, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_TYPE (location_type l)
+      {
+        return symbol_type (token::TOKEN_TYPE, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_TYPE (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_TYPE, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_BASIC (location_type l)
+      {
+        return symbol_type (token::TOKEN_BASIC, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_BASIC (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_BASIC, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_REALM (location_type l)
+      {
+        return symbol_type (token::TOKEN_REALM, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_REALM (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_REALM, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_CLIENTS (location_type l)
+      {
+        return symbol_type (token::TOKEN_CLIENTS, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_CLIENTS (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_CLIENTS, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_USER (location_type l)
+      {
+        return symbol_type (token::TOKEN_USER, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_USER (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_USER, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_PASSWORD (location_type l)
+      {
+        return symbol_type (token::TOKEN_PASSWORD, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_PASSWORD (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_PASSWORD, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -1715,7 +1858,7 @@ switch (yykind)
 
 
     /// Stored state numbers (used for stacks).
-    typedef unsigned char state_type;
+    typedef short state_type;
 
     /// The arguments of the error message.
     int yy_syntax_error_arguments_ (const context& yyctx,
@@ -1771,7 +1914,7 @@ switch (yykind)
     // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     // positive, shift that token.  If negative, reduce the rule whose
     // number is the opposite.  If YYTABLE_NINF, syntax error.
-    static const unsigned char yytable_[];
+    static const short yytable_[];
 
     static const short yycheck_[];
 
@@ -2015,8 +2158,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 169,     ///< Last index in yytable_.
-      yynnts_ = 87,  ///< Number of nonterminal symbols.
+      yylast_ = 227,     ///< Last index in yytable_.
+      yynnts_ = 108,  ///< Number of nonterminal symbols.
       yyfinal_ = 8 ///< Termination state number.
     };
 
@@ -2065,10 +2208,11 @@ switch (yykind)
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48
     };
     // Last valid token kind.
-    const int code_max = 296;
+    const int code_max = 303;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -2090,6 +2234,7 @@ switch (yykind)
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
@@ -2141,6 +2286,7 @@ switch (yykind)
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
@@ -2223,7 +2369,7 @@ switch (yykind)
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2227 "agent_parser.h"
+#line 2373 "agent_parser.h"
 
 
 
index f46a19682ad3042113dd10cc73cc5c1e18346491..cc2a7a53d5203c7ae501f3c941a2f9cf7b9fd685 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202009132003
+// Generated 202009171327
 // A Bison parser, made by GNU Bison 3.7.2.
 
 // Locations for Bison parsers in C++
index 62bce2b79994e945bd3bcc89871e394d22c9648f..10b5cf2539224d081dee19aceb4ac6656b3e01fa 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202009132003
+// Generated 202009171327
 // A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
index 48f2900a3315f0a534010eec6538cfe76f79b104..ba26efcb3ff3c78132eab37587e70196f5f9c865 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202009132003
+// Generated 202009171327
 // A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
index 308c12cab9713758dfc86d746146be0907fa3c96..fb7f27f491a6933ec7474f732fe691443d1f24c8 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
index 5a7e4182c4bac28e2e883b392ea4830922430ae2..349fafd3f2db18677f1ad1d5bb96d6abe4cf1fee 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
index d2459e1a0802e4611800d3033a9709e0df1955c6..6dd82481b3d2f410ccfada3b601b44c6261c1328 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051557
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171327
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Locations for Bison parsers in C++
 
index 335c0920d464646c9af0a99f7231999c6f974bdb..10b5cf2539224d081dee19aceb4ac6656b3e01fa 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051557
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171327
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index fe52c385c2431863ae3ed2afeb1e1cc5b1747f09..ba26efcb3ff3c78132eab37587e70196f5f9c865 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051557
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171327
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 7737cda319f4640435be51c5b845c104041bfc39..47187029d4ab1f54110d2002d76272611d2913cf 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
index 4c28f79fde38a911cfaf621a733057b935f5f4e5..c566476d6714324a2d6e2d2e85454005c1160e06 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
index f35e6121ef89981541f3b76a0894dd90302a21ec..c4c2b1730a5ca1b5fd9c178c36b2c88649e76e34 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051355
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171326
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Locations for Bison parsers in C++
 
index 97948727f75c60ef4f42e952f6f5ca5817f6678b..326d89ed3eed0b999287027d39d454dfabac807d 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051355
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171326
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index ee3c3d6d22f5dcbe23771c7fd26371012dacae5f..dae87be1a5750a649ea335df35ff4232e64cbb30 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051355
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171326
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 5e26b81c7ab4e4803e4ecf62950fbfb8a30efb47..76e9a97e0edd3ac60a26dda5eb3e60d0e6af79df 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
index c5f15f31584d06d9b11d9fe5b405f6104bb6d732..add461fa968afeef1e6bf0b0f2c36436b914df77 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
index e59dc57d9a1c362e296936b34af4dfb357a947c9..39f94b2c952b49a94dfe70edaee4138674a72d48 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009052011
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171326
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Locations for Bison parsers in C++
 
index fc719a17a6e16d7a8329ccf285a79d7e077319e8..326d89ed3eed0b999287027d39d454dfabac807d 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009052011
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171326
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 3ebfa388601c6bdc6dc3461e65f637a1f66f0ae8..dae87be1a5750a649ea335df35ff4232e64cbb30 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009052011
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171326
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index c330cbecfa3e84c93bb8cdaa7a7588ecde98bd38..24dabec2cbaa5cf246baa01630c25d6509c0f6a6 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051557
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171327
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Locations for Bison parsers in C++
 
index eacb4190c720d676c1870d29c6a0e01b69818529..ae29192d66443514c1914177bca90aa04d7af2db 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
index 14d81ab08c9c945c3f270d96a4db1fb6972bf935..2c6af301945be9b6bd00d40344e9e3be4033e09c 100644 (file)
@@ -1,4 +1,4 @@
-// A Bison parser, made by GNU Bison 3.7.1.
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
index 335c0920d464646c9af0a99f7231999c6f974bdb..10b5cf2539224d081dee19aceb4ac6656b3e01fa 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051557
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171327
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index fe52c385c2431863ae3ed2afeb1e1cc5b1747f09..ba26efcb3ff3c78132eab37587e70196f5f9c865 100644 (file)
@@ -1,5 +1,5 @@
-// Generated 202009051557
-// A Bison parser, made by GNU Bison 3.7.1.
+// Generated 202009171327
+// A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.