From: Thomas Markwalder Date: Wed, 4 Jan 2017 20:46:12 +0000 (-0500) Subject: [master] Implement set-config command in kea-dhcp4/6 X-Git-Tag: trac5030_base~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4afbdcf89c9f83d944f774d05bd401d3f2768d10;p=thirdparty%2Fkea.git [master] Implement set-config command in kea-dhcp4/6 Merges in branch 'trac5046' --- 4afbdcf89c9f83d944f774d05bd401d3f2768d10 diff --cc src/bin/dhcp4/ctrl_dhcp4_srv.cc index e95ffa3de4,b540cfc2be..4eac126187 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@@ -254,9 -317,11 +317,12 @@@ ControlledDhcpv4Srv::ControlledDhcpv4Sr /// @todo: register config-reload (see CtrlDhcpv4Srv::commandConfigReloadHandler) + CommandMgr::instance().registerCommand("libreload", + boost::bind(&ControlledDhcpv4Srv::commandLibReloadHandler, this, _1, _2)); + + CommandMgr::instance().registerCommand("set-config", + boost::bind(&ControlledDhcpv4Srv::commandSetConfigHandler, this, _1, _2)); + - /// @todo: register libreload (see CtrlDhcpv4Srv::commandLibReloadHandler) - CommandMgr::instance().registerCommand("leases-reclaim", boost::bind(&ControlledDhcpv4Srv::commandLeasesReclaimHandler, this, _1, _2)); @@@ -299,7 -364,7 +365,8 @@@ ControlledDhcpv4Srv::~ControlledDhcpv4S // Deregister any registered commands CommandMgr::instance().deregisterCommand("shutdown"); + CommandMgr::instance().deregisterCommand("libreload"); + CommandMgr::instance().deregisterCommand("set-config"); CommandMgr::instance().deregisterCommand("leases-reclaim"); CommandMgr::instance().deregisterCommand("statistic-get"); CommandMgr::instance().deregisterCommand("statistic-reset"); diff --cc src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc index 536b9169a7,615274e5f5..50fcbf55a9 --- a/src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc +++ b/src/bin/dhcp4/tests/ctrl_dhcp4_srv_unittest.cc @@@ -118,9 -119,15 +120,16 @@@ public ASSERT_NO_THROW(server_.reset(new NakedControlledDhcpv4Srv())); - ConstElementPtr config = Element::fromJSON(config_txt); + ConstElementPtr config; + ASSERT_NO_THROW(config = parseDHCP4(config_txt)); ConstElementPtr answer = server_->processConfig(config); + + // Commit the configuration so any subsequent reconfigurations + // will only close the command channel if its configuration has + // changed. + CfgMgr::instance().commit(); + + ASSERT_TRUE(answer); int status = 0; diff --cc src/bin/dhcp4/tests/kea_controller_unittest.cc index 8cd9a617e0,ccdd355c1a..44109d1852 --- a/src/bin/dhcp4/tests/kea_controller_unittest.cc +++ b/src/bin/dhcp4/tests/kea_controller_unittest.cc @@@ -63,9 -62,7 +63,8 @@@ public ~JSONFileBackendTest() { LeaseMgrFactory::destroy(); - isc::log::setDefaultLoggingOutput(); static_cast(remove(TEST_FILE)); + static_cast(remove(TEST_INCLUDE)); }; /// @brief writes specified content to a well known file diff --cc src/bin/dhcp6/ctrl_dhcp6_srv.cc index 0d9f7331c6,f2c558e0c1..11c2122a0e --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@@ -116,6 -178,6 +178,8 @@@ ControlledDhcpv6Srv::processCommand(con if (command == "shutdown") { return (srv->commandShutdownHandler(command, args)); ++ /// @todo: register config-reload (see CtrlDhcpv6Srv::commandConfigReloadHandler) ++ } else if (command == "libreload") { return (srv->commandLibReloadHandler(command, args)); @@@ -279,11 -344,13 +346,12 @@@ ControlledDhcpv6Srv::ControlledDhcpv6Sr CommandMgr::instance().registerCommand("shutdown", boost::bind(&ControlledDhcpv6Srv::commandShutdownHandler, this, _1, _2)); -- /// @todo: register config-reload (see CtrlDhcpv4Srv::commandConfigReloadHandler) - + CommandMgr::instance().registerCommand("libreload", + boost::bind(&ControlledDhcpv6Srv::commandLibReloadHandler, this, _1, _2)); + CommandMgr::instance().registerCommand("set-config", + boost::bind(&ControlledDhcpv6Srv::commandSetConfigHandler, this, _1, _2)); + - /// @todo: register libreload (see CtrlDhcpv4Srv::commandLibReloadHandler) - CommandMgr::instance().registerCommand("leases-reclaim", boost::bind(&ControlledDhcpv6Srv::commandLeasesReclaimHandler, this, _1, _2)); @@@ -326,7 -393,7 +394,8 @@@ ControlledDhcpv6Srv::~ControlledDhcpv6S // Deregister any registered commands CommandMgr::instance().deregisterCommand("shutdown"); + CommandMgr::instance().deregisterCommand("libreload"); + CommandMgr::instance().deregisterCommand("set-config"); CommandMgr::instance().deregisterCommand("leases-reclaim"); CommandMgr::instance().deregisterCommand("statistic-get"); CommandMgr::instance().deregisterCommand("statistic-reset"); diff --cc src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc index efd2098f55,12647f96ee..aa03ca333e --- a/src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc +++ b/src/bin/dhcp6/tests/ctrl_dhcp6_srv_unittest.cc @@@ -145,9 -148,15 +148,15 @@@ public ASSERT_NO_THROW(server_.reset(new NakedControlledDhcpv6Srv())); - ConstElementPtr config = Element::fromJSON(config_txt); - + ConstElementPtr config; + ASSERT_NO_THROW(config = parseDHCP6(config_txt)); ConstElementPtr answer = server_->processConfig(config); + + // Commit the configuration so any subsequent reconfigurations + // will only close the command channel if its configuration has + // changed. + CfgMgr::instance().commit(); + ASSERT_TRUE(answer); int status = 0; @@@ -310,10 -329,9 +319,10 @@@ TEST_F(CtrlDhcpv6SrvTest, configReload " \"pools\": [ { \"pool\": \"2001:db8:3::/80\" } ]," " \"subnet\": \"2001:db8:3::/64\" " " } ]," - "\"valid-lifetime\": 4000 }"; + "\"valid-lifetime\": 4000 }}"; - ElementPtr config = Element::fromJSON(config_txt); + ConstElementPtr config; - ASSERT_NO_THROW(config = parseDHCP6(config_txt)); ++ ASSERT_NO_THROW(config = parseJSON(config_txt)); // Make sure there are no subnets configured. CfgMgr::instance().clear();