summaryrefslogtreecommitdiffstats
path: root/src/hooks/dhcp/stat_cmds/stat_cmds_callouts.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/hooks/dhcp/stat_cmds/stat_cmds_callouts.cc')
-rw-r--r--src/hooks/dhcp/stat_cmds/stat_cmds_callouts.cc71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/hooks/dhcp/stat_cmds/stat_cmds_callouts.cc b/src/hooks/dhcp/stat_cmds/stat_cmds_callouts.cc
new file mode 100644
index 0000000..d13533e
--- /dev/null
+++ b/src/hooks/dhcp/stat_cmds/stat_cmds_callouts.cc
@@ -0,0 +1,71 @@
+// Copyright (C) 2018-2020 Internet Systems Consortium, Inc. ("ISC")
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Functions accessed by the hooks framework use C linkage to avoid the name
+// mangling that accompanies use of the C++ compiler as well as to avoid
+// issues related to namespaces.
+
+#include <config.h>
+
+#include <stat_cmds.h>
+#include <stat_cmds_log.h>
+#include <cc/command_interpreter.h>
+#include <hooks/hooks.h>
+
+using namespace isc::hooks;
+using namespace isc::stat_cmds;
+
+extern "C" {
+
+/// @brief This is a command callout for 'stat-lease4-get' command.
+///
+/// @param handle Callout handle used to retrieve a command and
+/// provide a response.
+/// @return 0 if this callout has been invoked successfully,
+/// 1 otherwise.
+int stat_lease4_get(CalloutHandle& handle) {
+ StatCmds stat_cmds;
+ return(stat_cmds.statLease4GetHandler(handle));
+}
+
+/// @brief This is a command callout for 'stat-lease6-get' command.
+///
+/// @param handle Callout handle used to retrieve a command and
+/// provide a response.
+/// @return 0 if this callout has been invoked successfully,
+/// 1 otherwise.
+int stat_lease6_get(CalloutHandle& handle) {
+ StatCmds stat_cmds;
+ return(stat_cmds.statLease6GetHandler(handle));
+}
+
+/// @brief This function is called when the library is loaded.
+///
+/// @param handle library handle
+/// @return 0 when initialization is successful, 1 otherwise
+int load(LibraryHandle& handle) {
+ handle.registerCommandCallout("stat-lease4-get", stat_lease4_get);
+ handle.registerCommandCallout("stat-lease6-get", stat_lease6_get);
+ LOG_INFO(stat_cmds_logger, STAT_CMDS_INIT_OK);
+ return (0);
+}
+
+/// @brief This function is called when the library is unloaded.
+///
+/// @return 0 if deregistration was successful, 1 otherwise
+int unload() {
+ LOG_INFO(stat_cmds_logger, STAT_CMDS_DEINIT_OK);
+ return (0);
+}
+
+/// @brief This function is called to retrieve the multi-threading compatibility.
+///
+/// @return 1 which means compatible with multi-threading.
+int multi_threading_compatible() {
+ return (1);
+}
+
+} // end extern "C"