From 433313ef4c9eba10cea3b81cbb0745877e792e45 Mon Sep 17 00:00:00 2001 From: Marcin Siodelski Date: Mon, 24 Jul 2017 13:52:27 +0200 Subject: [PATCH] [5315] Config Manager now returns non-const pointer to current config. --- src/lib/dhcpsrv/cfgmgr.cc | 2 +- src/lib/dhcpsrv/cfgmgr.h | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/lib/dhcpsrv/cfgmgr.cc b/src/lib/dhcpsrv/cfgmgr.cc index 201ae97e19..2896b8bc4a 100644 --- a/src/lib/dhcpsrv/cfgmgr.cc +++ b/src/lib/dhcpsrv/cfgmgr.cc @@ -150,7 +150,7 @@ CfgMgr::revert(const size_t index) { commit(); } -ConstSrvConfigPtr +SrvConfigPtr CfgMgr::getCurrentCfg() { ensureCurrentAllocated(); return (configuration_); diff --git a/src/lib/dhcpsrv/cfgmgr.h b/src/lib/dhcpsrv/cfgmgr.h index bf0c6e4590..2afccb15b8 100644 --- a/src/lib/dhcpsrv/cfgmgr.h +++ b/src/lib/dhcpsrv/cfgmgr.h @@ -196,10 +196,26 @@ public: /// /// This function returns pointer to the current configuration. If the /// current configuration is not set it will create a default configuration - /// and return it. Current configuration returned is read-only. - /// - /// @return Non-null const pointer to the current configuration. - ConstSrvConfigPtr getCurrentCfg(); + /// and return it. + /// + /// In the previous Kea releases this method used to return a const pointer + /// to the current configuration to ensure that it is not accidentally + /// modified while the server is running. This has been changed in Kea 1.3 + /// release and now this function returns a non-const pointer. The reason + /// is that there are certain use cases when current configuration must + /// be modified without going through a full cycle of server + /// reconfiguration, e.g. add a subnet to the current configuration as + /// a result of receiving a command over control API. In such case the + /// performance of processing such command is critical and rebuilding the + /// whole configuration just for this small configuration change is out + /// of question. + /// + /// Nevertheless, such configuration updates should always be made with + /// caution and one has to make sure that the configuration data integrity + /// is preserved. + /// + /// @return Non-null pointer to the current configuration. + SrvConfigPtr getCurrentCfg(); /// @brief Returns a pointer to the staging configuration. /// -- 2.47.2