From: Francis Dupont Date: Tue, 2 Sep 2025 08:11:17 +0000 (+0200) Subject: [#2305] Added LM getStatus X-Git-Tag: Kea-3.1.2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6358fbd3cd640e628ee89897fc3c3e008605053e;p=thirdparty%2Fkea.git [#2305] Added LM getStatus --- diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index a013dd9532..e1fc9df534 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -1158,6 +1158,17 @@ ControlledDhcpv4Srv::commandStatusGetHandler(const string&, status->set("multi-threading-enabled", Element::create(false)); } + // Merge lease manager status. + ElementPtr lm_info; + if (LeaseMgrFactory::haveInstance()) { + lm_info = LeaseMgrFactory::instance().getStatus(); + } + if (lm_info && (lm_info->getType() == Element::map)) { + for (auto const& entry : lm_info->mapValue()) { + status->set(entry.first, entry.second); + } + } + // Iterate through the interfaces and get all the errors. ElementPtr socket_errors(Element::createList()); for (IfacePtr const& interface : IfaceMgr::instance().getIfaces()) { diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index b3b9868207..10e56be192 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -922,6 +922,17 @@ ControlledDhcpv6Srv::commandStatusGetHandler(const string&, status->set("multi-threading-enabled", Element::create(false)); } + // Merge lease manager status. + ElementPtr lm_info; + if (LeaseMgrFactory::haveInstance()) { + lm_info = LeaseMgrFactory::instance().getStatus(); + } + if (lm_info && (lm_info->getType() == Element::map)) { + for (auto const& entry : lm_info->mapValue()) { + status->set(entry.first, entry.second); + } + } + status->set("extended-info-tables", Element::create( CfgMgr::instance().getCurrentCfg()->getCfgDbAccess()->getExtendedInfoTablesEnabled())); diff --git a/src/lib/dhcpsrv/lease_mgr.cc b/src/lib/dhcpsrv/lease_mgr.cc index 958510e45a..004160e084 100644 --- a/src/lib/dhcpsrv/lease_mgr.cc +++ b/src/lib/dhcpsrv/lease_mgr.cc @@ -1306,6 +1306,11 @@ LeaseMgr::byRemoteId6size() const { return (0); } +ElementPtr +LeaseMgr::getStatus() const { + return (ElementPtr()); +} + ConstElementPtr LeaseMgr::lfcStartHandler() { ostringstream msg; diff --git a/src/lib/dhcpsrv/lease_mgr.h b/src/lib/dhcpsrv/lease_mgr.h index 7610e39042..8c4749fd97 100644 --- a/src/lib/dhcpsrv/lease_mgr.h +++ b/src/lib/dhcpsrv/lease_mgr.h @@ -1065,6 +1065,13 @@ public: /// @return Always 0. virtual size_t byRemoteId6size() const; + /// @brief Return status information. + /// + /// Can be derived by backends (currently memfile). + /// + /// @return Null or a map to add to status-get command output. + virtual data::ElementPtr getStatus() const; + /// @brief Handler for kea-lfc-start command. /// /// Derived by the memfile backend.