From: Tomek Mrugalski Date: Thu, 9 Mar 2017 15:54:09 +0000 (+0100) Subject: [experiments/get-config] Experimental implementation X-Git-Tag: trac102b_base~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4126296cec17fc8ce89723959f1b67d5ace88d76;p=thirdparty%2Fkea.git [experiments/get-config] Experimental implementation --- diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index 4eac126187..c6c902936b 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -66,6 +66,14 @@ ControlledDhcpv4Srv::commandConfigReloadHandler(const string&, return (commandSetConfigHandler("set-config", args)); } +ConstElementPtr +ControlledDhcpv4Srv::commandGetConfigHandler(const string&, + ConstElementPtr /*args*/) { + ConstElementPtr config = CfgMgr::instance().getCurrentCfg()->toElement(); + + return (createAnswer(0, config)); +} + ConstElementPtr ControlledDhcpv4Srv::commandSetConfigHandler(const string&, ConstElementPtr args) { @@ -181,6 +189,9 @@ ControlledDhcpv4Srv::processCommand(const string& command, } else if (command == "set-config") { return (srv->commandSetConfigHandler(command, args)); + } else if (command == "get-config") { + return (srv->commandGetConfigHandler(command, args)); + } else if (command == "leases-reclaim") { return (srv->commandLeasesReclaimHandler(command, args)); } @@ -323,6 +334,9 @@ ControlledDhcpv4Srv::ControlledDhcpv4Srv(uint16_t port /*= DHCP4_SERVER_PORT*/) CommandMgr::instance().registerCommand("set-config", boost::bind(&ControlledDhcpv4Srv::commandSetConfigHandler, this, _1, _2)); + CommandMgr::instance().registerCommand("get-config", + boost::bind(&ControlledDhcpv4Srv::commandGetConfigHandler, this, _1, _2)); + CommandMgr::instance().registerCommand("leases-reclaim", boost::bind(&ControlledDhcpv4Srv::commandLeasesReclaimHandler, this, _1, _2)); @@ -364,6 +378,7 @@ ControlledDhcpv4Srv::~ControlledDhcpv4Srv() { CommandMgr::instance().closeCommandSocket(); // Deregister any registered commands + CommandMgr::instance().deregisterCommand("get-config"); CommandMgr::instance().deregisterCommand("shutdown"); CommandMgr::instance().deregisterCommand("libreload"); CommandMgr::instance().deregisterCommand("set-config"); diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.h b/src/bin/dhcp4/ctrl_dhcp4_srv.h index 169c869043..719b7a1359 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.h +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.h @@ -144,6 +144,10 @@ private: commandConfigReloadHandler(const std::string& command, isc::data::ConstElementPtr args); + isc::data::ConstElementPtr + commandGetConfigHandler(const std::string& command, + isc::data::ConstElementPtr args); + /// @brief handler for processing 'set-config' command /// /// This handler processes set-config command, which processes diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index 11c2122a0e..9d169fa8b6 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -71,6 +71,14 @@ ControlledDhcpv6Srv::commandConfigReloadHandler(const string&, ConstElementPtr a return (commandSetConfigHandler("set-config", args)); } +ConstElementPtr +ControlledDhcpv6Srv::commandGetConfigHandler(const string&, + ConstElementPtr /*args*/) { + ConstElementPtr config = CfgMgr::instance().getCurrentCfg()->toElement(); + + return (createAnswer(0, config)); +} + ConstElementPtr ControlledDhcpv6Srv::commandSetConfigHandler(const string&, ConstElementPtr args) { @@ -189,6 +197,9 @@ ControlledDhcpv6Srv::processCommand(const std::string& command, } else if (command == "set-config") { return (srv->commandSetConfigHandler(command, args)); + } else if (command == "get-config") { + return (srv->commandGetConfigHandler(command, args)); + } else if (command == "leases-reclaim") { return (srv->commandLeasesReclaimHandler(command, args)); } @@ -352,6 +363,9 @@ ControlledDhcpv6Srv::ControlledDhcpv6Srv(uint16_t port) CommandMgr::instance().registerCommand("set-config", boost::bind(&ControlledDhcpv6Srv::commandSetConfigHandler, this, _1, _2)); + CommandMgr::instance().registerCommand("get-config", + boost::bind(&ControlledDhcpv6Srv::commandGetConfigHandler, this, _1, _2)); + CommandMgr::instance().registerCommand("leases-reclaim", boost::bind(&ControlledDhcpv6Srv::commandLeasesReclaimHandler, this, _1, _2)); @@ -393,6 +407,7 @@ ControlledDhcpv6Srv::~ControlledDhcpv6Srv() { CommandMgr::instance().closeCommandSocket(); // Deregister any registered commands + CommandMgr::instance().deregisterCommand("get-config"); CommandMgr::instance().deregisterCommand("shutdown"); CommandMgr::instance().deregisterCommand("libreload"); CommandMgr::instance().deregisterCommand("set-config"); diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.h b/src/bin/dhcp6/ctrl_dhcp6_srv.h index 76bc1a181b..d05383e208 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.h +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.h @@ -144,6 +144,10 @@ private: commandConfigReloadHandler(const std::string& command, isc::data::ConstElementPtr args); + isc::data::ConstElementPtr + commandGetConfigHandler(const std::string& command, + isc::data::ConstElementPtr args); + /// @brief handler for processing 'set-config' command /// /// This handler processes set-config command, which processes