mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-30 13:37:55 +00:00
[#2960] removed deprecated libreload command
This commit is contained in:
parent
6f66da2371
commit
6d10d6424e
@ -68,7 +68,6 @@ src/share/api/lease6-update.json
|
|||||||
src/share/api/lease6-wipe.json
|
src/share/api/lease6-wipe.json
|
||||||
src/share/api/lease6-write.json
|
src/share/api/lease6-write.json
|
||||||
src/share/api/leases-reclaim.json
|
src/share/api/leases-reclaim.json
|
||||||
src/share/api/libreload.json
|
|
||||||
src/share/api/list-commands.json
|
src/share/api/list-commands.json
|
||||||
src/share/api/network4-add.json
|
src/share/api/network4-add.json
|
||||||
src/share/api/network4-del.json
|
src/share/api/network4-del.json
|
||||||
|
@ -537,31 +537,6 @@ returning client that previously used that lease. See :ref:`lease-affinity`
|
|||||||
for details. Also, see :ref:`lease-reclamation` for general
|
for details. Also, see :ref:`lease-reclamation` for general
|
||||||
information about the processing of expired leases (lease reclamation).
|
information about the processing of expired leases (lease reclamation).
|
||||||
|
|
||||||
.. isccmd:: libreload
|
|
||||||
.. _command-libreload:
|
|
||||||
|
|
||||||
The ``libreload`` Command
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
This command is now deprecated and will be removed in future Kea versions.
|
|
||||||
|
|
||||||
The :isccmd:`libreload` command first unloads and then loads all currently
|
|
||||||
loaded hook libraries. This is primarily intended to allow one or more
|
|
||||||
hook libraries to be replaced with newer versions, without requiring Kea
|
|
||||||
servers to be reconfigured or restarted. The hook libraries
|
|
||||||
are passed the same parameter values (if any) that were passed when they
|
|
||||||
were originally loaded.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
{
|
|
||||||
"command": "libreload",
|
|
||||||
"arguments": { }
|
|
||||||
}
|
|
||||||
|
|
||||||
The server responds with a result of either 0, indicating success,
|
|
||||||
or 1, indicating failure.
|
|
||||||
|
|
||||||
.. isccmd:: list-commands
|
.. isccmd:: list-commands
|
||||||
.. _command-list-commands:
|
.. _command-list-commands:
|
||||||
|
|
||||||
|
@ -650,11 +650,3 @@ Sysrepo 0.x or 1.x
|
|||||||
Kea 2.3.2 introduced support for Sysrepo 2.x. Unfortunately,
|
Kea 2.3.2 introduced support for Sysrepo 2.x. Unfortunately,
|
||||||
Sysrepo continues to undergo major changes that are backward-incompatible,
|
Sysrepo continues to undergo major changes that are backward-incompatible,
|
||||||
and current Kea versions do not support Sysrepo earlier than versions 2.x.
|
and current Kea versions do not support Sysrepo earlier than versions 2.x.
|
||||||
|
|
||||||
:isccmd:`libreload` command
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
The :isccmd:`libreload` command was deprecated in Kea 2.3.4. The code to handle this command is
|
|
||||||
still there, but there are reports of it being buggy and not really usable.
|
|
||||||
Kea 2.3 and 2.4 versions produce a warning when this command
|
|
||||||
is used, and it will be removed entirely sometime in the 2.5 branch.
|
|
||||||
|
@ -228,43 +228,6 @@ ControlledDhcpv4Srv::commandShutdownHandler(const string&, ConstElementPtr args)
|
|||||||
return (createAnswer(CONTROL_RESULT_SUCCESS, "Shutting down."));
|
return (createAnswer(CONTROL_RESULT_SUCCESS, "Shutting down."));
|
||||||
}
|
}
|
||||||
|
|
||||||
ConstElementPtr
|
|
||||||
ControlledDhcpv4Srv::commandLibReloadHandler(const string&, ConstElementPtr) {
|
|
||||||
LOG_WARN(dhcp4_logger, DHCP4_DEPRECATED).arg("libreload command");
|
|
||||||
|
|
||||||
// stop thread pool (if running)
|
|
||||||
MultiThreadingCriticalSection cs;
|
|
||||||
|
|
||||||
// Clear the packet queue.
|
|
||||||
MultiThreadingMgr::instance().getThreadPool().reset();
|
|
||||||
|
|
||||||
try {
|
|
||||||
/// Get list of currently loaded libraries and reload them.
|
|
||||||
HookLibsCollection loaded = HooksManager::getLibraryInfo();
|
|
||||||
HooksManager::prepareUnloadLibraries();
|
|
||||||
static_cast<void>(HooksManager::unloadLibraries());
|
|
||||||
IOServiceMgr::instance().clearIOServices();
|
|
||||||
bool multi_threading_enabled = true;
|
|
||||||
uint32_t thread_count = 0;
|
|
||||||
uint32_t queue_size = 0;
|
|
||||||
CfgMultiThreading::extract(CfgMgr::instance().getStagingCfg()->getDHCPMultiThreading(),
|
|
||||||
multi_threading_enabled, thread_count, queue_size);
|
|
||||||
bool status = HooksManager::loadLibraries(loaded, multi_threading_enabled);
|
|
||||||
if (!status) {
|
|
||||||
isc_throw(Unexpected, "Failed to reload hooks libraries "
|
|
||||||
"(WARNING: libreload is deprecated).");
|
|
||||||
}
|
|
||||||
} catch (const std::exception& ex) {
|
|
||||||
LOG_ERROR(dhcp4_logger, DHCP4_HOOKS_LIBS_RELOAD_FAIL);
|
|
||||||
ConstElementPtr answer = isc::config::createAnswer(CONTROL_RESULT_ERROR, ex.what());
|
|
||||||
return (answer);
|
|
||||||
}
|
|
||||||
ConstElementPtr answer = isc::config::createAnswer(CONTROL_RESULT_SUCCESS,
|
|
||||||
"Hooks libraries successfully reloaded "
|
|
||||||
"(WARNING: libreload is deprecated).");
|
|
||||||
return (answer);
|
|
||||||
}
|
|
||||||
|
|
||||||
ConstElementPtr
|
ConstElementPtr
|
||||||
ControlledDhcpv4Srv::commandConfigReloadHandler(const string&,
|
ControlledDhcpv4Srv::commandConfigReloadHandler(const string&,
|
||||||
ConstElementPtr /*args*/) {
|
ConstElementPtr /*args*/) {
|
||||||
@ -891,9 +854,6 @@ ControlledDhcpv4Srv::processCommand(const string& command,
|
|||||||
if (command == "shutdown") {
|
if (command == "shutdown") {
|
||||||
return (srv->commandShutdownHandler(command, args));
|
return (srv->commandShutdownHandler(command, args));
|
||||||
|
|
||||||
} else if (command == "libreload") {
|
|
||||||
return (srv->commandLibReloadHandler(command, args));
|
|
||||||
|
|
||||||
} else if (command == "config-reload") {
|
} else if (command == "config-reload") {
|
||||||
return (srv->commandConfigReloadHandler(command, args));
|
return (srv->commandConfigReloadHandler(command, args));
|
||||||
|
|
||||||
@ -1235,9 +1195,6 @@ ControlledDhcpv4Srv::ControlledDhcpv4Srv(uint16_t server_port /*= DHCP4_SERVER_P
|
|||||||
CommandMgr::instance().registerCommand("dhcp-disable",
|
CommandMgr::instance().registerCommand("dhcp-disable",
|
||||||
std::bind(&ControlledDhcpv4Srv::commandDhcpDisableHandler, this, ph::_1, ph::_2));
|
std::bind(&ControlledDhcpv4Srv::commandDhcpDisableHandler, this, ph::_1, ph::_2));
|
||||||
|
|
||||||
CommandMgr::instance().registerCommand("libreload",
|
|
||||||
std::bind(&ControlledDhcpv4Srv::commandLibReloadHandler, this, ph::_1, ph::_2));
|
|
||||||
|
|
||||||
CommandMgr::instance().registerCommand("leases-reclaim",
|
CommandMgr::instance().registerCommand("leases-reclaim",
|
||||||
std::bind(&ControlledDhcpv4Srv::commandLeasesReclaimHandler, this, ph::_1, ph::_2));
|
std::bind(&ControlledDhcpv4Srv::commandLeasesReclaimHandler, this, ph::_1, ph::_2));
|
||||||
|
|
||||||
@ -1322,7 +1279,6 @@ ControlledDhcpv4Srv::~ControlledDhcpv4Srv() {
|
|||||||
CommandMgr::instance().deregisterCommand("dhcp-disable");
|
CommandMgr::instance().deregisterCommand("dhcp-disable");
|
||||||
CommandMgr::instance().deregisterCommand("dhcp-enable");
|
CommandMgr::instance().deregisterCommand("dhcp-enable");
|
||||||
CommandMgr::instance().deregisterCommand("leases-reclaim");
|
CommandMgr::instance().deregisterCommand("leases-reclaim");
|
||||||
CommandMgr::instance().deregisterCommand("libreload");
|
|
||||||
CommandMgr::instance().deregisterCommand("server-tag-get");
|
CommandMgr::instance().deregisterCommand("server-tag-get");
|
||||||
CommandMgr::instance().deregisterCommand("shutdown");
|
CommandMgr::instance().deregisterCommand("shutdown");
|
||||||
CommandMgr::instance().deregisterCommand("statistic-get");
|
CommandMgr::instance().deregisterCommand("statistic-get");
|
||||||
|
@ -81,7 +81,6 @@ public:
|
|||||||
///
|
///
|
||||||
/// Currently supported commands are:
|
/// Currently supported commands are:
|
||||||
/// - shutdown
|
/// - shutdown
|
||||||
/// - libreload
|
|
||||||
/// - config-reload
|
/// - config-reload
|
||||||
/// - config-set
|
/// - config-set
|
||||||
/// - config-get
|
/// - config-get
|
||||||
@ -168,19 +167,6 @@ private:
|
|||||||
commandShutdownHandler(const std::string& command,
|
commandShutdownHandler(const std::string& command,
|
||||||
isc::data::ConstElementPtr args);
|
isc::data::ConstElementPtr args);
|
||||||
|
|
||||||
/// @brief Handler for processing 'libreload' command
|
|
||||||
///
|
|
||||||
/// This handler processes libreload command, which unloads all hook
|
|
||||||
/// libraries and reloads them.
|
|
||||||
///
|
|
||||||
/// @param command (parameter ignored)
|
|
||||||
/// @param args (parameter ignored)
|
|
||||||
///
|
|
||||||
/// @return status of the command
|
|
||||||
isc::data::ConstElementPtr
|
|
||||||
commandLibReloadHandler(const std::string& command,
|
|
||||||
isc::data::ConstElementPtr args);
|
|
||||||
|
|
||||||
/// @brief Handler for processing 'config-reload' command
|
/// @brief Handler for processing 'config-reload' command
|
||||||
///
|
///
|
||||||
/// This handler processes config-reload command, which processes
|
/// This handler processes config-reload command, which processes
|
||||||
|
@ -77,7 +77,6 @@ extern const isc::log::MessageID DHCP4_EMPTY_HOSTNAME = "DHCP4_EMPTY_HOSTNAME";
|
|||||||
extern const isc::log::MessageID DHCP4_FLEX_ID = "DHCP4_FLEX_ID";
|
extern const isc::log::MessageID DHCP4_FLEX_ID = "DHCP4_FLEX_ID";
|
||||||
extern const isc::log::MessageID DHCP4_GENERATE_FQDN = "DHCP4_GENERATE_FQDN";
|
extern const isc::log::MessageID DHCP4_GENERATE_FQDN = "DHCP4_GENERATE_FQDN";
|
||||||
extern const isc::log::MessageID DHCP4_HANDLE_SIGNAL_EXCEPTION = "DHCP4_HANDLE_SIGNAL_EXCEPTION";
|
extern const isc::log::MessageID DHCP4_HANDLE_SIGNAL_EXCEPTION = "DHCP4_HANDLE_SIGNAL_EXCEPTION";
|
||||||
extern const isc::log::MessageID DHCP4_HOOKS_LIBS_RELOAD_FAIL = "DHCP4_HOOKS_LIBS_RELOAD_FAIL";
|
|
||||||
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_DROP = "DHCP4_HOOK_BUFFER_RCVD_DROP";
|
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_DROP = "DHCP4_HOOK_BUFFER_RCVD_DROP";
|
||||||
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_SKIP = "DHCP4_HOOK_BUFFER_RCVD_SKIP";
|
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_SKIP = "DHCP4_HOOK_BUFFER_RCVD_SKIP";
|
||||||
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_SEND_SKIP = "DHCP4_HOOK_BUFFER_SEND_SKIP";
|
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_SEND_SKIP = "DHCP4_HOOK_BUFFER_SEND_SKIP";
|
||||||
@ -266,7 +265,6 @@ const char* values[] = {
|
|||||||
"DHCP4_FLEX_ID", "%1: flexible identifier generated for incoming packet: %2",
|
"DHCP4_FLEX_ID", "%1: flexible identifier generated for incoming packet: %2",
|
||||||
"DHCP4_GENERATE_FQDN", "%1: client did not send a FQDN or hostname; FQDN will be generated for the client",
|
"DHCP4_GENERATE_FQDN", "%1: client did not send a FQDN or hostname; FQDN will be generated for the client",
|
||||||
"DHCP4_HANDLE_SIGNAL_EXCEPTION", "An exception was thrown while handing signal: %1",
|
"DHCP4_HANDLE_SIGNAL_EXCEPTION", "An exception was thrown while handing signal: %1",
|
||||||
"DHCP4_HOOKS_LIBS_RELOAD_FAIL", "reload of hooks libraries failed",
|
|
||||||
"DHCP4_HOOK_BUFFER_RCVD_DROP", "received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag",
|
"DHCP4_HOOK_BUFFER_RCVD_DROP", "received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag",
|
||||||
"DHCP4_HOOK_BUFFER_RCVD_SKIP", "received buffer from %1 to %2 over interface %3 is not parsed because a callout set the next step to SKIP.",
|
"DHCP4_HOOK_BUFFER_RCVD_SKIP", "received buffer from %1 to %2 over interface %3 is not parsed because a callout set the next step to SKIP.",
|
||||||
"DHCP4_HOOK_BUFFER_SEND_SKIP", "%1: prepared response is dropped because a callout set the next step to SKIP.",
|
"DHCP4_HOOK_BUFFER_SEND_SKIP", "%1: prepared response is dropped because a callout set the next step to SKIP.",
|
||||||
|
@ -78,7 +78,6 @@ extern const isc::log::MessageID DHCP4_EMPTY_HOSTNAME;
|
|||||||
extern const isc::log::MessageID DHCP4_FLEX_ID;
|
extern const isc::log::MessageID DHCP4_FLEX_ID;
|
||||||
extern const isc::log::MessageID DHCP4_GENERATE_FQDN;
|
extern const isc::log::MessageID DHCP4_GENERATE_FQDN;
|
||||||
extern const isc::log::MessageID DHCP4_HANDLE_SIGNAL_EXCEPTION;
|
extern const isc::log::MessageID DHCP4_HANDLE_SIGNAL_EXCEPTION;
|
||||||
extern const isc::log::MessageID DHCP4_HOOKS_LIBS_RELOAD_FAIL;
|
|
||||||
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_DROP;
|
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_DROP;
|
||||||
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_SKIP;
|
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_RCVD_SKIP;
|
||||||
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_SEND_SKIP;
|
extern const isc::log::MessageID DHCP4_HOOK_BUFFER_SEND_SKIP;
|
||||||
|
@ -413,11 +413,6 @@ create DNS entries for unsophisticated clients.
|
|||||||
This error message is printed when an ISC or standard exception was raised during signal
|
This error message is printed when an ISC or standard exception was raised during signal
|
||||||
processing. This likely indicates a coding error and should be reported to ISC.
|
processing. This likely indicates a coding error and should be reported to ISC.
|
||||||
|
|
||||||
% DHCP4_HOOKS_LIBS_RELOAD_FAIL reload of hooks libraries failed
|
|
||||||
A "libreload" command was issued to reload the hooks libraries but for
|
|
||||||
some reason the reload failed. Other error messages issued from the
|
|
||||||
hooks framework will indicate the nature of the problem.
|
|
||||||
|
|
||||||
% DHCP4_HOOK_BUFFER_RCVD_DROP received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag
|
% DHCP4_HOOK_BUFFER_RCVD_DROP received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag
|
||||||
This debug message is printed when a callout installed on buffer4_receive
|
This debug message is printed when a callout installed on buffer4_receive
|
||||||
hook point set the drop flag. For this particular hook point, the
|
hook point set the drop flag. For this particular hook point, the
|
||||||
|
@ -448,96 +448,6 @@ TEST_F(CtrlChannelDhcpv4SrvTest, commands) {
|
|||||||
EXPECT_EQ(77, server_->getExitValue());
|
EXPECT_EQ(77, server_->getExitValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the "libreload" command will reload libraries
|
|
||||||
TEST_F(CtrlChannelDhcpv4SrvTest, libreload) {
|
|
||||||
createUnixChannelServer();
|
|
||||||
|
|
||||||
// Ensure no marker files to start with.
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(LOAD_MARKER_FILE));
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Load two libraries
|
|
||||||
HookLibsCollection libraries;
|
|
||||||
libraries.push_back(make_pair(CALLOUT_LIBRARY_1, ConstElementPtr()));
|
|
||||||
HooksManager::loadLibraries(libraries);
|
|
||||||
|
|
||||||
// Check they are loaded.
|
|
||||||
HookLibsCollection loaded_libraries =
|
|
||||||
HooksManager::getLibraryInfo();
|
|
||||||
ASSERT_TRUE(libraries == loaded_libraries);
|
|
||||||
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "1"));
|
|
||||||
EXPECT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Now execute the "libreload" command. This should cause the libraries
|
|
||||||
// to unload and to reload.
|
|
||||||
std::string response;
|
|
||||||
sendUnixCommand("{ \"command\": \"libreload\" }", response);
|
|
||||||
EXPECT_EQ("{ \"result\": 0, "
|
|
||||||
"\"text\": \"Hooks libraries successfully reloaded "
|
|
||||||
"(WARNING: libreload is deprecated).\" }"
|
|
||||||
, response);
|
|
||||||
|
|
||||||
// Check that the libraries have unloaded and reloaded. The libraries are
|
|
||||||
// unloaded in the reverse order to which they are loaded. When they load,
|
|
||||||
// they should append information to the loading marker file.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(UNLOAD_MARKER_FILE, "1"));
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "11"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check that the "libreload" command will fail to reload libraries which are
|
|
||||||
// not compatible when multi-threading is enabled
|
|
||||||
TEST_F(CtrlChannelDhcpv4SrvTest, libreloadFailMultiThreading) {
|
|
||||||
createUnixChannelServer();
|
|
||||||
|
|
||||||
// Ensure no marker files to start with.
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(LOAD_MARKER_FILE));
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Disable multi-threading to temporarily trick the hook manager
|
|
||||||
// into loading single-threaded libraries.
|
|
||||||
MultiThreadingMgr::instance().setMode(false);
|
|
||||||
|
|
||||||
// Load two libraries
|
|
||||||
HookLibsCollection libraries;
|
|
||||||
libraries.push_back(make_pair(CALLOUT_LIBRARY_1, ConstElementPtr()));
|
|
||||||
libraries.push_back(make_pair(CALLOUT_LIBRARY_2, ConstElementPtr()));
|
|
||||||
HooksManager::loadLibraries(libraries);
|
|
||||||
|
|
||||||
// Check they are loaded.
|
|
||||||
HookLibsCollection loaded_libraries =
|
|
||||||
HooksManager::getLibraryInfo();
|
|
||||||
ASSERT_TRUE(libraries == loaded_libraries);
|
|
||||||
|
|
||||||
// ... which also included checking that the marker file created by the
|
|
||||||
// load functions exists and holds the correct value (of "12" - the
|
|
||||||
// first library appends "1" to the file, the second appends "2"). Also
|
|
||||||
// check that the unload marker file does not yet exist.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "12"));
|
|
||||||
EXPECT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Enable multi-threading before libreload command which should now fail
|
|
||||||
// as the second library is not multi-threading compatible.
|
|
||||||
MultiThreadingMgr::instance().setMode(true);
|
|
||||||
|
|
||||||
// Now execute the "libreload" command. This should cause the libraries
|
|
||||||
// to unload and to reload.
|
|
||||||
std::string response;
|
|
||||||
sendUnixCommand("{ \"command\": \"libreload\" }", response);
|
|
||||||
EXPECT_EQ("{ \"result\": 1, "
|
|
||||||
"\"text\": \"Failed to reload hooks libraries"
|
|
||||||
" (WARNING: libreload is deprecated).\" }"
|
|
||||||
, response);
|
|
||||||
|
|
||||||
// Check that the libraries have unloaded and failed to reload. The
|
|
||||||
// libraries are unloaded in the reverse order to which they are loaded.
|
|
||||||
// When they load, they should append information to the loading marker
|
|
||||||
// file. Failing to load the second library will also unload the first
|
|
||||||
// library.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(UNLOAD_MARKER_FILE, "211"));
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "121"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// This test checks which commands are registered by the DHCPv4 server.
|
// This test checks which commands are registered by the DHCPv4 server.
|
||||||
TEST_F(CtrlChannelDhcpv4SrvTest, commandsRegistration) {
|
TEST_F(CtrlChannelDhcpv4SrvTest, commandsRegistration) {
|
||||||
|
|
||||||
@ -570,7 +480,6 @@ TEST_F(CtrlChannelDhcpv4SrvTest, commandsRegistration) {
|
|||||||
EXPECT_TRUE(command_list.find("\"config-set\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"config-set\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"config-write\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"config-write\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"leases-reclaim\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"leases-reclaim\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"libreload\"") != string::npos);
|
|
||||||
EXPECT_TRUE(command_list.find("\"server-tag-get\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"server-tag-get\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"shutdown\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"shutdown\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"statistic-get\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-get\"") != string::npos);
|
||||||
@ -1509,7 +1418,6 @@ TEST_F(CtrlChannelDhcpv4SrvTest, listCommands) {
|
|||||||
checkListCommands(rsp, "config-write");
|
checkListCommands(rsp, "config-write");
|
||||||
checkListCommands(rsp, "list-commands");
|
checkListCommands(rsp, "list-commands");
|
||||||
checkListCommands(rsp, "leases-reclaim");
|
checkListCommands(rsp, "leases-reclaim");
|
||||||
checkListCommands(rsp, "libreload");
|
|
||||||
checkListCommands(rsp, "version-get");
|
checkListCommands(rsp, "version-get");
|
||||||
checkListCommands(rsp, "server-tag-get");
|
checkListCommands(rsp, "server-tag-get");
|
||||||
checkListCommands(rsp, "shutdown");
|
checkListCommands(rsp, "shutdown");
|
||||||
|
@ -231,43 +231,6 @@ ControlledDhcpv6Srv::commandShutdownHandler(const string&, ConstElementPtr args)
|
|||||||
return (createAnswer(CONTROL_RESULT_SUCCESS, "Shutting down."));
|
return (createAnswer(CONTROL_RESULT_SUCCESS, "Shutting down."));
|
||||||
}
|
}
|
||||||
|
|
||||||
ConstElementPtr
|
|
||||||
ControlledDhcpv6Srv::commandLibReloadHandler(const string&, ConstElementPtr) {
|
|
||||||
LOG_WARN(dhcp6_logger, DHCP6_DEPRECATED).arg("libreload command");
|
|
||||||
|
|
||||||
// stop thread pool (if running)
|
|
||||||
MultiThreadingCriticalSection cs;
|
|
||||||
|
|
||||||
// Clear the packet queue.
|
|
||||||
MultiThreadingMgr::instance().getThreadPool().reset();
|
|
||||||
|
|
||||||
try {
|
|
||||||
/// Get list of currently loaded libraries and reload them.
|
|
||||||
HookLibsCollection loaded = HooksManager::getLibraryInfo();
|
|
||||||
HooksManager::prepareUnloadLibraries();
|
|
||||||
static_cast<void>(HooksManager::unloadLibraries());
|
|
||||||
IOServiceMgr::instance().clearIOServices();
|
|
||||||
bool multi_threading_enabled = true;
|
|
||||||
uint32_t thread_count = 0;
|
|
||||||
uint32_t queue_size = 0;
|
|
||||||
CfgMultiThreading::extract(CfgMgr::instance().getStagingCfg()->getDHCPMultiThreading(),
|
|
||||||
multi_threading_enabled, thread_count, queue_size);
|
|
||||||
bool status = HooksManager::loadLibraries(loaded, multi_threading_enabled);
|
|
||||||
if (!status) {
|
|
||||||
isc_throw(Unexpected, "Failed to reload hooks libraries "
|
|
||||||
"(WARNING: libreload is deprecated).");
|
|
||||||
}
|
|
||||||
} catch (const std::exception& ex) {
|
|
||||||
LOG_ERROR(dhcp6_logger, DHCP6_HOOKS_LIBS_RELOAD_FAIL);
|
|
||||||
ConstElementPtr answer = isc::config::createAnswer(CONTROL_RESULT_ERROR, ex.what());
|
|
||||||
return (answer);
|
|
||||||
}
|
|
||||||
ConstElementPtr answer = isc::config::createAnswer(CONTROL_RESULT_SUCCESS,
|
|
||||||
"Hooks libraries successfully reloaded "
|
|
||||||
"(WARNING: libreload is deprecated).");
|
|
||||||
return (answer);
|
|
||||||
}
|
|
||||||
|
|
||||||
ConstElementPtr
|
ConstElementPtr
|
||||||
ControlledDhcpv6Srv::commandConfigReloadHandler(const string&,
|
ControlledDhcpv6Srv::commandConfigReloadHandler(const string&,
|
||||||
ConstElementPtr /*args*/) {
|
ConstElementPtr /*args*/) {
|
||||||
@ -896,9 +859,6 @@ ControlledDhcpv6Srv::processCommand(const string& command,
|
|||||||
if (command == "shutdown") {
|
if (command == "shutdown") {
|
||||||
return (srv->commandShutdownHandler(command, args));
|
return (srv->commandShutdownHandler(command, args));
|
||||||
|
|
||||||
} else if (command == "libreload") {
|
|
||||||
return (srv->commandLibReloadHandler(command, args));
|
|
||||||
|
|
||||||
} else if (command == "config-reload") {
|
} else if (command == "config-reload") {
|
||||||
return (srv->commandConfigReloadHandler(command, args));
|
return (srv->commandConfigReloadHandler(command, args));
|
||||||
|
|
||||||
@ -1258,9 +1218,6 @@ ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t server_port /*= DHCP6_SERVER_P
|
|||||||
CommandMgr::instance().registerCommand("dhcp-disable",
|
CommandMgr::instance().registerCommand("dhcp-disable",
|
||||||
std::bind(&ControlledDhcpv6Srv::commandDhcpDisableHandler, this, ph::_1, ph::_2));
|
std::bind(&ControlledDhcpv6Srv::commandDhcpDisableHandler, this, ph::_1, ph::_2));
|
||||||
|
|
||||||
CommandMgr::instance().registerCommand("libreload",
|
|
||||||
std::bind(&ControlledDhcpv6Srv::commandLibReloadHandler, this, ph::_1, ph::_2));
|
|
||||||
|
|
||||||
CommandMgr::instance().registerCommand("leases-reclaim",
|
CommandMgr::instance().registerCommand("leases-reclaim",
|
||||||
std::bind(&ControlledDhcpv6Srv::commandLeasesReclaimHandler, this, ph::_1, ph::_2));
|
std::bind(&ControlledDhcpv6Srv::commandLeasesReclaimHandler, this, ph::_1, ph::_2));
|
||||||
|
|
||||||
@ -1345,7 +1302,6 @@ ControlledDhcpv6Srv::~ControlledDhcpv6Srv() {
|
|||||||
CommandMgr::instance().deregisterCommand("dhcp-disable");
|
CommandMgr::instance().deregisterCommand("dhcp-disable");
|
||||||
CommandMgr::instance().deregisterCommand("dhcp-enable");
|
CommandMgr::instance().deregisterCommand("dhcp-enable");
|
||||||
CommandMgr::instance().deregisterCommand("leases-reclaim");
|
CommandMgr::instance().deregisterCommand("leases-reclaim");
|
||||||
CommandMgr::instance().deregisterCommand("libreload");
|
|
||||||
CommandMgr::instance().deregisterCommand("server-tag-get");
|
CommandMgr::instance().deregisterCommand("server-tag-get");
|
||||||
CommandMgr::instance().deregisterCommand("shutdown");
|
CommandMgr::instance().deregisterCommand("shutdown");
|
||||||
CommandMgr::instance().deregisterCommand("statistic-get");
|
CommandMgr::instance().deregisterCommand("statistic-get");
|
||||||
|
@ -81,7 +81,6 @@ public:
|
|||||||
///
|
///
|
||||||
/// Currently supported commands are:
|
/// Currently supported commands are:
|
||||||
/// - shutdown
|
/// - shutdown
|
||||||
/// - libreload
|
|
||||||
/// - config-reload
|
/// - config-reload
|
||||||
/// - config-set
|
/// - config-set
|
||||||
/// - config-get
|
/// - config-get
|
||||||
@ -168,19 +167,6 @@ private:
|
|||||||
commandShutdownHandler(const std::string& command,
|
commandShutdownHandler(const std::string& command,
|
||||||
isc::data::ConstElementPtr args);
|
isc::data::ConstElementPtr args);
|
||||||
|
|
||||||
/// @brief Handler for processing 'libreload' command
|
|
||||||
///
|
|
||||||
/// This handler processes libreload command, which unloads all hook
|
|
||||||
/// libraries and reloads them.
|
|
||||||
///
|
|
||||||
/// @param command (parameter ignored)
|
|
||||||
/// @param args (parameter ignored)
|
|
||||||
///
|
|
||||||
/// @return status of the command
|
|
||||||
isc::data::ConstElementPtr
|
|
||||||
commandLibReloadHandler(const std::string& command,
|
|
||||||
isc::data::ConstElementPtr args);
|
|
||||||
|
|
||||||
/// @brief Handler for processing 'config-reload' command
|
/// @brief Handler for processing 'config-reload' command
|
||||||
///
|
///
|
||||||
/// This handler processes config-reload command, which processes
|
/// This handler processes config-reload command, which processes
|
||||||
|
@ -69,7 +69,6 @@ extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_FAIL = "DHCP6_DYN
|
|||||||
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS = "DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS";
|
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS = "DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS";
|
||||||
extern const isc::log::MessageID DHCP6_FLEX_ID = "DHCP6_FLEX_ID";
|
extern const isc::log::MessageID DHCP6_FLEX_ID = "DHCP6_FLEX_ID";
|
||||||
extern const isc::log::MessageID DHCP6_HANDLE_SIGNAL_EXCEPTION = "DHCP6_HANDLE_SIGNAL_EXCEPTION";
|
extern const isc::log::MessageID DHCP6_HANDLE_SIGNAL_EXCEPTION = "DHCP6_HANDLE_SIGNAL_EXCEPTION";
|
||||||
extern const isc::log::MessageID DHCP6_HOOKS_LIBS_RELOAD_FAIL = "DHCP6_HOOKS_LIBS_RELOAD_FAIL";
|
|
||||||
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_DROP = "DHCP6_HOOK_BUFFER_RCVD_DROP";
|
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_DROP = "DHCP6_HOOK_BUFFER_RCVD_DROP";
|
||||||
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_SKIP = "DHCP6_HOOK_BUFFER_RCVD_SKIP";
|
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_SKIP = "DHCP6_HOOK_BUFFER_RCVD_SKIP";
|
||||||
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_SEND_SKIP = "DHCP6_HOOK_BUFFER_SEND_SKIP";
|
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_SEND_SKIP = "DHCP6_HOOK_BUFFER_SEND_SKIP";
|
||||||
@ -247,7 +246,6 @@ const char* values[] = {
|
|||||||
"DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS", "dynamic server reconfiguration succeeded with file: %1",
|
"DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS", "dynamic server reconfiguration succeeded with file: %1",
|
||||||
"DHCP6_FLEX_ID", "%1: flexible identifier generated for incoming packet: %2",
|
"DHCP6_FLEX_ID", "%1: flexible identifier generated for incoming packet: %2",
|
||||||
"DHCP6_HANDLE_SIGNAL_EXCEPTION", "An exception was thrown while handing signal: %1",
|
"DHCP6_HANDLE_SIGNAL_EXCEPTION", "An exception was thrown while handing signal: %1",
|
||||||
"DHCP6_HOOKS_LIBS_RELOAD_FAIL", "reload of hooks libraries failed",
|
|
||||||
"DHCP6_HOOK_BUFFER_RCVD_DROP", "received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag",
|
"DHCP6_HOOK_BUFFER_RCVD_DROP", "received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag",
|
||||||
"DHCP6_HOOK_BUFFER_RCVD_SKIP", "received buffer from %1 to %2 over interface %3 is not parsed because a callout set the next step to SKIP",
|
"DHCP6_HOOK_BUFFER_RCVD_SKIP", "received buffer from %1 to %2 over interface %3 is not parsed because a callout set the next step to SKIP",
|
||||||
"DHCP6_HOOK_BUFFER_SEND_SKIP", "%1: prepared DHCPv6 response was dropped because a callout set the next step to SKIP",
|
"DHCP6_HOOK_BUFFER_SEND_SKIP", "%1: prepared DHCPv6 response was dropped because a callout set the next step to SKIP",
|
||||||
|
@ -70,7 +70,6 @@ extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_FAIL;
|
|||||||
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS;
|
extern const isc::log::MessageID DHCP6_DYNAMIC_RECONFIGURATION_SUCCESS;
|
||||||
extern const isc::log::MessageID DHCP6_FLEX_ID;
|
extern const isc::log::MessageID DHCP6_FLEX_ID;
|
||||||
extern const isc::log::MessageID DHCP6_HANDLE_SIGNAL_EXCEPTION;
|
extern const isc::log::MessageID DHCP6_HANDLE_SIGNAL_EXCEPTION;
|
||||||
extern const isc::log::MessageID DHCP6_HOOKS_LIBS_RELOAD_FAIL;
|
|
||||||
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_DROP;
|
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_DROP;
|
||||||
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_SKIP;
|
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_RCVD_SKIP;
|
||||||
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_SEND_SKIP;
|
extern const isc::log::MessageID DHCP6_HOOK_BUFFER_SEND_SKIP;
|
||||||
|
@ -368,11 +368,6 @@ debugging assistance for flexible identifier.
|
|||||||
This error message is printed when an exception was raised during signal
|
This error message is printed when an exception was raised during signal
|
||||||
processing. This likely indicates a coding error and should be reported to ISC.
|
processing. This likely indicates a coding error and should be reported to ISC.
|
||||||
|
|
||||||
% DHCP6_HOOKS_LIBS_RELOAD_FAIL reload of hooks libraries failed
|
|
||||||
A "libreload" command was issued to reload the hooks libraries but for
|
|
||||||
some reason the reload failed. Other error messages issued from the
|
|
||||||
hooks framework will indicate the nature of the problem.
|
|
||||||
|
|
||||||
% DHCP6_HOOK_BUFFER_RCVD_DROP received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag
|
% DHCP6_HOOK_BUFFER_RCVD_DROP received buffer from %1 to %2 over interface %3 was dropped because a callout set the drop flag
|
||||||
This debug message is printed when a callout installed on buffer6_receive
|
This debug message is printed when a callout installed on buffer6_receive
|
||||||
hook point set the drop flag. For this particular hook point, the
|
hook point set the drop flag. For this particular hook point, the
|
||||||
|
@ -472,100 +472,6 @@ TEST_F(CtrlDhcpv6SrvTest, commands) {
|
|||||||
EXPECT_EQ(77, srv->getExitValue());
|
EXPECT_EQ(77, srv->getExitValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the "libreload" command will reload libraries
|
|
||||||
TEST_F(CtrlChannelDhcpv6SrvTest, libreload) {
|
|
||||||
createUnixChannelServer();
|
|
||||||
|
|
||||||
// Ensure no marker files to start with.
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(LOAD_MARKER_FILE));
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Load two libraries
|
|
||||||
HookLibsCollection libraries;
|
|
||||||
libraries.push_back(make_pair(CALLOUT_LIBRARY_1, ConstElementPtr()));
|
|
||||||
HooksManager::loadLibraries(libraries);
|
|
||||||
|
|
||||||
// Check they are loaded.
|
|
||||||
HookLibsCollection loaded_libraries =
|
|
||||||
HooksManager::getLibraryInfo();
|
|
||||||
ASSERT_TRUE(libraries == loaded_libraries);
|
|
||||||
|
|
||||||
// ... which also included checking that the marker file created by the
|
|
||||||
// load functions exists and holds the correct value (of "12" - the
|
|
||||||
// first library appends "1" to the file, the second appends "2"). Also
|
|
||||||
// check that the unload marker file does not yet exist.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "1"));
|
|
||||||
EXPECT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Now execute the "libreload" command. This should cause the libraries
|
|
||||||
// to unload and to reload.
|
|
||||||
std::string response;
|
|
||||||
sendUnixCommand("{ \"command\": \"libreload\" }", response);
|
|
||||||
EXPECT_EQ("{ \"result\": 0, "
|
|
||||||
"\"text\": \"Hooks libraries successfully reloaded"
|
|
||||||
" (WARNING: libreload is deprecated).\" }"
|
|
||||||
, response);
|
|
||||||
|
|
||||||
// Check that the libraries have unloaded and reloaded. The libraries are
|
|
||||||
// unloaded in the reverse order to which they are loaded. When they load,
|
|
||||||
// they should append information to the loading marker file.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(UNLOAD_MARKER_FILE, "1"));
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "11"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check that the "libreload" command will fail to reload libraries which are
|
|
||||||
// not compatible when multi-threading is enabled
|
|
||||||
TEST_F(CtrlChannelDhcpv6SrvTest, libreloadFailMultiThreading) {
|
|
||||||
createUnixChannelServer();
|
|
||||||
|
|
||||||
// Ensure no marker files to start with.
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(LOAD_MARKER_FILE));
|
|
||||||
ASSERT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Disable multi-threading to temporarily trick the hook manager
|
|
||||||
// into loading single-threaded libraries.
|
|
||||||
MultiThreadingMgr::instance().setMode(false);
|
|
||||||
|
|
||||||
// Load two libraries
|
|
||||||
HookLibsCollection libraries;
|
|
||||||
libraries.push_back(make_pair(CALLOUT_LIBRARY_1, ConstElementPtr()));
|
|
||||||
libraries.push_back(make_pair(CALLOUT_LIBRARY_2, ConstElementPtr()));
|
|
||||||
HooksManager::loadLibraries(libraries);
|
|
||||||
|
|
||||||
// Check they are loaded.
|
|
||||||
HookLibsCollection loaded_libraries =
|
|
||||||
HooksManager::getLibraryInfo();
|
|
||||||
ASSERT_TRUE(libraries == loaded_libraries);
|
|
||||||
|
|
||||||
// ... which also included checking that the marker file created by the
|
|
||||||
// load functions exists and holds the correct value (of "12" - the
|
|
||||||
// first library appends "1" to the file, the second appends "2"). Also
|
|
||||||
// check that the unload marker file does not yet exist.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "12"));
|
|
||||||
EXPECT_FALSE(checkMarkerFileExists(UNLOAD_MARKER_FILE));
|
|
||||||
|
|
||||||
// Enable multi-threading before libreload command which should now fail
|
|
||||||
// as the second library is not multi-threading compatible.
|
|
||||||
MultiThreadingMgr::instance().setMode(true);
|
|
||||||
|
|
||||||
// Now execute the "libreload" command. This should cause the libraries
|
|
||||||
// to unload and to reload.
|
|
||||||
std::string response;
|
|
||||||
sendUnixCommand("{ \"command\": \"libreload\" }", response);
|
|
||||||
EXPECT_EQ("{ \"result\": 1, "
|
|
||||||
"\"text\": \"Failed to reload hooks libraries "
|
|
||||||
"(WARNING: libreload is deprecated).\" }"
|
|
||||||
, response);
|
|
||||||
|
|
||||||
// Check that the libraries have unloaded and failed to reload. The
|
|
||||||
// libraries are unloaded in the reverse order to which they are loaded.
|
|
||||||
// When they load, they should append information to the loading marker
|
|
||||||
// file. Failing to load the second library will also unload the first
|
|
||||||
// library.
|
|
||||||
EXPECT_TRUE(checkMarkerFile(UNLOAD_MARKER_FILE, "211"));
|
|
||||||
EXPECT_TRUE(checkMarkerFile(LOAD_MARKER_FILE, "121"));
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef std::map<std::string, isc::data::ConstElementPtr> ElementMap;
|
typedef std::map<std::string, isc::data::ConstElementPtr> ElementMap;
|
||||||
|
|
||||||
// This test checks which commands are registered by the DHCPv6 server.
|
// This test checks which commands are registered by the DHCPv6 server.
|
||||||
@ -601,7 +507,6 @@ TEST_F(CtrlDhcpv6SrvTest, commandsRegistration) {
|
|||||||
EXPECT_TRUE(command_list.find("\"config-set\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"config-set\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"config-write\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"config-write\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"leases-reclaim\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"leases-reclaim\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"libreload\"") != string::npos);
|
|
||||||
EXPECT_TRUE(command_list.find("\"server-tag-get\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"server-tag-get\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"shutdown\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"shutdown\"") != string::npos);
|
||||||
EXPECT_TRUE(command_list.find("\"statistic-get\"") != string::npos);
|
EXPECT_TRUE(command_list.find("\"statistic-get\"") != string::npos);
|
||||||
@ -1549,7 +1454,6 @@ TEST_F(CtrlChannelDhcpv6SrvTest, listCommands) {
|
|||||||
checkListCommands(rsp, "config-write");
|
checkListCommands(rsp, "config-write");
|
||||||
checkListCommands(rsp, "list-commands");
|
checkListCommands(rsp, "list-commands");
|
||||||
checkListCommands(rsp, "leases-reclaim");
|
checkListCommands(rsp, "leases-reclaim");
|
||||||
checkListCommands(rsp, "libreload");
|
|
||||||
checkListCommands(rsp, "version-get");
|
checkListCommands(rsp, "version-get");
|
||||||
checkListCommands(rsp, "server-tag-get");
|
checkListCommands(rsp, "server-tag-get");
|
||||||
checkListCommands(rsp, "shutdown");
|
checkListCommands(rsp, "shutdown");
|
||||||
|
@ -21,10 +21,7 @@ HooksConfig::verifyLibraries(const Element::Position& position,
|
|||||||
bool multi_threading_enabled) const {
|
bool multi_threading_enabled) const {
|
||||||
// The code used to follow this logic:
|
// The code used to follow this logic:
|
||||||
//
|
//
|
||||||
// Check if the list of libraries has changed. If not, nothing is done
|
// Check if the list of libraries has changed. If not, nothing is done.
|
||||||
// - the command "DhcpN libreload" is required to reload the same
|
|
||||||
// libraries (this prevents needless reloads when anything else in the
|
|
||||||
// configuration is changed).
|
|
||||||
//
|
//
|
||||||
// We no longer rely on this. Parameters can change. And even if the
|
// We no longer rely on this. Parameters can change. And even if the
|
||||||
// parameters stay the same, they could point to files that could
|
// parameters stay the same, they could point to files that could
|
||||||
|
@ -68,7 +68,6 @@ api_files += $(top_srcdir)/src/share/api/lease6-update.json
|
|||||||
api_files += $(top_srcdir)/src/share/api/lease6-wipe.json
|
api_files += $(top_srcdir)/src/share/api/lease6-wipe.json
|
||||||
api_files += $(top_srcdir)/src/share/api/lease6-write.json
|
api_files += $(top_srcdir)/src/share/api/lease6-write.json
|
||||||
api_files += $(top_srcdir)/src/share/api/leases-reclaim.json
|
api_files += $(top_srcdir)/src/share/api/leases-reclaim.json
|
||||||
api_files += $(top_srcdir)/src/share/api/libreload.json
|
|
||||||
api_files += $(top_srcdir)/src/share/api/list-commands.json
|
api_files += $(top_srcdir)/src/share/api/list-commands.json
|
||||||
api_files += $(top_srcdir)/src/share/api/network4-add.json
|
api_files += $(top_srcdir)/src/share/api/network4-add.json
|
||||||
api_files += $(top_srcdir)/src/share/api/network4-del.json
|
api_files += $(top_srcdir)/src/share/api/network4-del.json
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"access": "write",
|
|
||||||
"avail": "1.2.0",
|
|
||||||
"brief": [
|
|
||||||
"This command first unloads and then reloads all currently loaded hooks libraries.",
|
|
||||||
"This command is deprecated and will be removed in future Kea versions."
|
|
||||||
],
|
|
||||||
"cmd-comment": [
|
|
||||||
"The server responds with 0, indicating success, or 1, indicating a failure."
|
|
||||||
],
|
|
||||||
"cmd-syntax": [
|
|
||||||
"{",
|
|
||||||
" \"command\": \"libreload\",",
|
|
||||||
" \"arguments\": { }",
|
|
||||||
"}"
|
|
||||||
],
|
|
||||||
"description": "See <xref linkend=\"command-libreload\"/>",
|
|
||||||
"name": "libreload",
|
|
||||||
"support": [
|
|
||||||
"kea-dhcp4",
|
|
||||||
"kea-dhcp6"
|
|
||||||
]
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user