]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3978] Tentative leases-reclaim command
authorFrancis Dupont <fdupont@isc.org>
Fri, 16 Oct 2015 21:01:33 +0000 (23:01 +0200)
committerFrancis Dupont <fdupont@isc.org>
Fri, 16 Oct 2015 21:01:33 +0000 (23:01 +0200)
src/bin/dhcp4/ctrl_dhcp4_srv.cc
src/bin/dhcp4/ctrl_dhcp4_srv.h
src/bin/dhcp6/ctrl_dhcp6_srv.cc
src/bin/dhcp6/ctrl_dhcp6_srv.h

index cddadb086a6474ab54d5f3674d8285994f9a1dc5..097b045fd2cdc5df95f06c7ae048cf770ab24870 100644 (file)
@@ -107,6 +107,16 @@ ControlledDhcpv4Srv::processCommand(const string& command,
     }
 }
 
+ConstElementPtr
+ControlledDhcpv4Srv::commandLeasesReclaimHandler(const string&, ConstElementPtr args) {
+
+
+    server_->alloc_engine_->reclaimExpiredLeases4(0, 0, true);
+    ConstElementPtr answer = isc::config::createAnswer(0,
+                             "Leases successfully reclaimed/");
+    return (answer);
+}
+
 isc::data::ConstElementPtr
 ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
 
@@ -212,6 +222,9 @@ ControlledDhcpv4Srv::ControlledDhcpv4Srv(uint16_t port /*= DHCP4_SERVER_PORT*/)
     /// @todo: register config-reload (see CtrlDhcpv4Srv::commandConfigReloadHandler)
     /// @todo: register libreload (see CtrlDhcpv4Srv::commandLibReloadHandler)
 
+    CommandMgr::instance().registerCommand("leases-reclaim",
+        boost::bind(&ControlledDhcpv4Srv::commandLeasesReclaimHandler, this, _1, _2));
+
     // Register statistic related commands
     CommandMgr::instance().registerCommand("statistic-get",
         boost::bind(&StatsMgr::statisticGetHandler, _1, _2));
@@ -251,6 +264,7 @@ ControlledDhcpv4Srv::~ControlledDhcpv4Srv() {
 
         // Deregister any registered commands
         CommandMgr::instance().deregisterCommand("shutdown");
+        CommandMgr::instance().deregisterCommand("leases-reclaim");
         CommandMgr::instance().deregisterCommand("statistic-get");
         CommandMgr::instance().deregisterCommand("statistic-reset");
         CommandMgr::instance().deregisterCommand("statistic-remove");
index 1cd7f78561d8b5ce1667342e8e12f06b86984d62..338dbfe2f8f03ee46aaf260d715ce65125c4776e 100644 (file)
@@ -151,6 +151,19 @@ private:
                                isc::data::ConstElementPtr args);
 
 
+    /// @brief handler for processing 'leases-reclaim' command
+    ///
+    /// This handler processes leases-reclaim command, which triggers
+    /// the leases reclamation immediately
+    ///
+    /// @param command (parameter ignored)
+    /// @param args (parameter ignored)
+    ///
+    /// @return status of the command
+    isc::data::ConstElementPtr
+    commandLeasesReclaimHandler(const std::string& command,
+                                isc::data::ConstElementPtr args);
+
     /// @brief Reclaims expired IPv4 leases and reschedules timer.
     ///
     /// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases4.
index 91f983cf6a03ac9c907b9d4236da6473fc2db7a3..f3247436ab31a0842efa5e68c56090d7a5a15432 100644 (file)
@@ -69,6 +69,16 @@ ControlledDhcpv6Srv::commandConfigReloadHandler(const string&, ConstElementPtr a
     return (processConfig(args));
 }
 
+ConstElementPtr
+ControlledDhcpv6Srv::commandLeasesReclaimHandler(const string&, ConstElementPtr args) {
+
+
+    server_->alloc_engine_->reclaimExpiredLeases6(0, 0, true);
+    ConstElementPtr answer = isc::config::createAnswer(0,
+                             "Leases successfully reclaimed/");
+    return (answer);
+}
+
 isc::data::ConstElementPtr
 ControlledDhcpv6Srv::processCommand(const std::string& command,
                                     isc::data::ConstElementPtr args) {
@@ -208,6 +218,9 @@ ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port)
     /// @todo: register config-reload (see CtrlDhcpv4Srv::commandConfigReloadHandler)
     /// @todo: register libreload (see CtrlDhcpv4Srv::commandLibReloadHandler)
 
+    CommandMgr::instance().registerCommand("leases-reclaim",
+        boost::bind(&ControlledDhcpv6Srv::commandLeasesReclaimHandler, this, _1, _2));
+
     // Register statistic related commands
     CommandMgr::instance().registerCommand("statistic-get",
         boost::bind(&StatsMgr::statisticGetHandler, _1, _2));
@@ -247,6 +260,7 @@ ControlledDhcpv6Srv::~ControlledDhcpv6Srv() {
 
         // Deregister any registered commands
         CommandMgr::instance().deregisterCommand("shutdown");
+        CommandMgr::instance().deregisterCommand("leases-reclaim");
         CommandMgr::instance().deregisterCommand("statistic-get");
         CommandMgr::instance().deregisterCommand("statistic-reset");
         CommandMgr::instance().deregisterCommand("statistic-remove");
index 07c411c10c1d9322fb91e916e1e55d8ae08664a7..3e1c26f28acc3cd80643a8f3fea7cf1b51280565 100644 (file)
@@ -150,6 +150,19 @@ private:
     commandConfigReloadHandler(const std::string& command,
                                isc::data::ConstElementPtr args);
 
+    /// @brief handler for processing 'leases-reclaim' command
+    ///
+    /// This handler processes leases-reclaim command, which triggers
+    /// the leases reclamation immediately
+    ///
+    /// @param command (parameter ignored)
+    /// @param args (parameter ignored)
+    ///
+    /// @return status of the command
+    isc::data::ConstElementPtr
+    commandLeasesReclaimHandler(const std::string& command,
+                                isc::data::ConstElementPtr args);
+
     /// @brief Reclaims expired IPv6 leases and reschedules timer.
     ///
     /// This is a wrapper method for @c AllocEngine::reclaimExpiredLeases6.