From: Razvan Becheriu Date: Mon, 16 Mar 2020 15:42:45 +0000 (+0200) Subject: [#893] enable command line parameters X-Git-Tag: Kea-1.7.6~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd334bd557b7dbd2714c61585f40af599ee542b4;p=thirdparty%2Fkea.git [#893] enable command line parameters --- diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index 4a7b6bc840..0cae34571b 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -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); } diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index 267bf0e255..ba25c2b1f1 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -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 diff --git a/src/bin/dhcp4/json_config_parser.h b/src/bin/dhcp4/json_config_parser.h index 8d1cb9057e..797a724409 100644 --- a/src/bin/dhcp4/json_config_parser.h +++ b/src/bin/dhcp4/json_config_parser.h @@ -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 diff --git a/src/bin/dhcp4/main.cc b/src/bin/dhcp4/main.cc index 9d72cebaab..5978ce67c5 100644 --- a/src/bin/dhcp4/main.cc +++ b/src/bin/dhcp4/main.cc @@ -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; diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index 26f85932fd..3679f00e6e 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -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); } diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index 43d5f4dd29..8d7d785160 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -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 diff --git a/src/bin/dhcp6/json_config_parser.h b/src/bin/dhcp6/json_config_parser.h index 3267eac4ba..5a61de83cb 100644 --- a/src/bin/dhcp6/json_config_parser.h +++ b/src/bin/dhcp6/json_config_parser.h @@ -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 diff --git a/src/bin/dhcp6/main.cc b/src/bin/dhcp6/main.cc index b4fde4cbd4..98cb461dfd 100644 --- a/src/bin/dhcp6/main.cc +++ b/src/bin/dhcp6/main.cc @@ -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;