]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#893] enable command line parameters
authorRazvan Becheriu <razvan@isc.org>
Mon, 16 Mar 2020 15:42:45 +0000 (17:42 +0200)
committerRazvan Becheriu <razvan@isc.org>
Wed, 18 Mar 2020 14:14:29 +0000 (16:14 +0200)
src/bin/dhcp4/ctrl_dhcp4_srv.cc
src/bin/dhcp4/json_config_parser.cc
src/bin/dhcp4/json_config_parser.h
src/bin/dhcp4/main.cc
src/bin/dhcp6/ctrl_dhcp6_srv.cc
src/bin/dhcp6/json_config_parser.cc
src/bin/dhcp6/json_config_parser.h
src/bin/dhcp6/main.cc

index 4a7b6bc84037cc0bde371a233ab76923a760e35a..0cae34571bfdf5108c1b1abcb33183cf2fcd6f58 100644 (file)
@@ -170,7 +170,15 @@ ControlledDhcpv4Srv::loadConfigFile(const std::string& file_name) {
         }
 
         // @todo enable multi-threading - disabled for now
-        MultiThreadingMgr::instance().apply(false,
+        bool enabled = false;
+        if (srv_thread_count >= 0) {
+            enabled = true;
+        }
+        if (enabled) {
+            CfgMgr::instance().getCurrentCfg()->setServerThreadCount(srv_thread_count);
+            CfgMgr::instance().getCurrentCfg()->setServerMaxThreadQueueSize(4);
+        }
+        MultiThreadingMgr::instance().apply(enabled,
             CfgMgr::instance().getCurrentCfg()->getServerThreadCount());
 
         // Now check is the returned result is successful (rcode=0) or not
@@ -193,10 +201,10 @@ ControlledDhcpv4Srv::loadConfigFile(const std::string& file_name) {
                   << file_name << "': " << ex.what());
     }
 
-    LOG_INFO(dhcp4_logger, DHCP4_MULTI_THREADING_INFO)
-        .arg(MultiThreadingMgr::instance().getMode())
+    LOG_WARN(dhcp4_logger, DHCP4_MULTI_THREADING_INFO)
+        .arg(MultiThreadingMgr::instance().getMode() ? "yes" : "no")
         .arg(MultiThreadingMgr::instance().getPktThreadPoolSize())
-        .arg(CfgMgr::instance().getCurrentCfg()->getServerMaxThreadQueueSize());
+        .arg(CfgMgr::instance().getCurrentCfg()->getPktThreadQueueSize());
 
     return (result);
 }
index 267bf0e255095efc1f3f1addb9a801cced00996d..ba25c2b1f138791ac72007be4dc4905aa40a84ba 100644 (file)
@@ -713,5 +713,7 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set,
     return (answer);
 }
 
-}; // end of isc::dhcp namespace
-}; // end of isc namespace
+int srv_thread_count = -1;
+
+}  // namespace dhcp
+}  // namespace isc
index 8d1cb9057e945d36ebc0961b789ac9111cdbb8db..797a7244095712515662e9077a3d47009d6cb1ee 100644 (file)
@@ -60,7 +60,9 @@ configureDhcp4Server(Dhcpv4Srv&,
                      isc::data::ConstElementPtr config_set,
                      bool check_only = false);
 
-}; // end of isc::dhcp namespace
-}; // end of isc namespace
+extern int srv_thread_count;
+
+}  // namespace dhcp
+}  // namespace isc
 
 #endif // DHCP4_CONFIG_PARSER_H
index 9d72cebaab318d25a992462dd564c87b0e4fc73d..5978ce67c5d6ff86572681dcdd7cbade6fd70af2 100644 (file)
@@ -59,8 +59,8 @@ usage() {
          << "(useful for testing only)" << endl;
     cerr << "  -P number: specify non-standard client port number 1-65535 "
          << "(useful for testing only)" << endl;
-    cerr << "  -N number: specify thread count 0-65535 "
-         << "(0 means multi-threading disabled)" << endl;
+    cerr << "  -N number: enable multi-threading and set thread count 0-65535 "
+         << "(0 means auto detect)" << endl;
     exit(EXIT_FAILURE);
 }
 }  // namespace
@@ -148,6 +148,8 @@ main(int argc, char* argv[]) {
                 cerr << "Failed to parse thread count number: [" << optarg
                      << "], 0-65535 allowed." << endl;
                 usage();
+            } else {
+                srv_thread_count = thread_count;
             }
             break;
 
index 26f85932fd55a5fb7a880c91f624cffbce0fa7e2..3679f00e6ec5cc906a89444f633a485631798ae8 100644 (file)
@@ -141,7 +141,15 @@ ControlledDhcpv6Srv::loadConfigFile(const std::string& file_name) {
         }
 
         // @todo enable multi-threading - disabled for now
-        MultiThreadingMgr::instance().apply(false,
+        bool enabled = false;
+        if (srv_thread_count >= 0) {
+            enabled = true;
+        }
+        if (enabled) {
+            CfgMgr::instance().getCurrentCfg()->setServerThreadCount(srv_thread_count);
+            CfgMgr::instance().getCurrentCfg()->setServerMaxThreadQueueSize(4);
+        }
+        MultiThreadingMgr::instance().apply(enabled,
             CfgMgr::instance().getCurrentCfg()->getServerThreadCount());
 
         // Now check is the returned result is successful (rcode=0) or not
@@ -164,10 +172,10 @@ ControlledDhcpv6Srv::loadConfigFile(const std::string& file_name) {
                   << file_name << "': " << ex.what());
     }
 
-    LOG_INFO(dhcp6_logger, DHCP6_MULTI_THREADING_INFO)
-        .arg(MultiThreadingMgr::instance().getMode())
+    LOG_WARN(dhcp6_logger, DHCP6_MULTI_THREADING_INFO)
+        .arg(MultiThreadingMgr::instance().getMode() ? "yes" : "no")
         .arg(MultiThreadingMgr::instance().getPktThreadPoolSize())
-        .arg(CfgMgr::instance().getCurrentCfg()->getServerMaxThreadQueueSize());
+        .arg(CfgMgr::instance().getCurrentCfg()->getPktThreadQueueSize());
 
     return (result);
 }
index 43d5f4dd2950e2f0c4a47726326412bbad5d5b7f..8d7d7851600d47c13268e061056fa4bd8e42e69e 100644 (file)
@@ -841,5 +841,7 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
     return (answer);
 }
 
-}; // end of isc::dhcp namespace
-}; // end of isc namespace
+int srv_thread_count = -1;
+
+}  // namespace dhcp
+}  // namespace isc
index 3267eac4ba16f265c617f809955fa663bcc9a23c..5a61de83cb203f670b65d92321bb84492d7773cc 100644 (file)
@@ -44,7 +44,9 @@ isc::data::ConstElementPtr
 configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set,
                      bool check_only = false);
 
-}; // end of isc::dhcp namespace
-}; // end of isc namespace
+extern int srv_thread_count;
+
+}  // namespace dhcp
+}  // namespace isc
 
 #endif // DHCP6_CONFIG_PARSER_H
index b4fde4cbd4b5cbba7489aa721288ddbf7eee7755..98cb461dfd69bc5a8b866bb23a951422fe88ef7c 100644 (file)
@@ -59,8 +59,8 @@ usage() {
          << "(useful for testing only)" << endl;
     cerr << "  -P number: specify non-standard client port number 1-65535 "
          << "(useful for testing only)" << endl;
-    cerr << "  -N number: specify thread count 0-65535 "
-         << "(0 means multi-threading disabled)" << endl;
+    cerr << "  -N number: enable multi-threading and set thread count 0-65535 "
+         << "(0 means auto detect)" << endl;
     exit(EXIT_FAILURE);
 }
 }  // namespace
@@ -148,6 +148,8 @@ main(int argc, char* argv[]) {
                 cerr << "Failed to parse thread count number: [" << optarg
                      << "], 0-65535 allowed." << endl;
                 usage();
+            } else {
+                srv_thread_count = thread_count;
             }
             break;