]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2947] Extra updates
authorFrancis Dupont <fdupont@isc.org>
Wed, 28 Jun 2023 15:20:30 +0000 (17:20 +0200)
committerFrancis Dupont <fdupont@isc.org>
Thu, 29 Jun 2023 13:45:26 +0000 (15:45 +0200)
src/bin/dhcp4/ctrl_dhcp4_srv.cc
src/bin/dhcp4/tests/hooks_unittest.cc
src/bin/dhcp6/ctrl_dhcp6_srv.cc
src/bin/dhcp6/tests/hooks_unittest.cc
src/lib/config/base_command_mgr.cc
src/lib/process/d_controller.cc

index d1775e757018cbd5a2778bb69b99f02481b65f22..e5a5e8821703cdbef900408f60bf716fe3f77598 100644 (file)
@@ -296,7 +296,7 @@ ControlledDhcpv4Srv::commandConfigGetHandler(const string&,
 ConstElementPtr
 ControlledDhcpv4Srv::commandConfigHashGetHandler(const string&,
                                                  ConstElementPtr /*args*/) {
-    ElementPtr config = CfgMgr::instance().getCurrentCfg()->toElement();
+    ConstElementPtr config = CfgMgr::instance().getCurrentCfg()->toElement();
 
     string hash = BaseCommandMgr::getHash(config);
 
index 5d60a75096691552e2d4f2970b3cca3e4e1b1c80..cbb5d52058a59ad2fd97052a4c48b40d0de4c525 100644 (file)
@@ -3273,8 +3273,8 @@ TEST_F(LoadUnloadDhcpv4SrvTest, Dhcpv4SrvConfigured) {
         parseAnswer(status_code, answer);
         if (parameters.empty()) {
             EXPECT_EQ(0, status_code);
-            EXPECT_EQ(answer->str(), "{ \"arguments\": { \"hash\": \"FA868B7A5983A80A83A7E9EFD8E"
-            "3DA4CC78B57A44817AEB9EF9DD6E4B9B0B116\" }, \"result\": 0, \"text\": "
+            EXPECT_EQ(answer->str(), "{ \"arguments\": { \"hash\": \"C725E95F74A5BD2DC085B2F8A2877257"
+            "1BE04E99F127D3D78439264071A315B1\" }, \"result\": 0, \"text\": "
             "\"Configuration successful.\" }");
         } else {
             EXPECT_EQ(1, status_code);
index dea58cd57c4f7639515b3e7b0d72c911f0d9098c..94244c14dbb6ae080725b827e789ea2d48f076a6 100644 (file)
@@ -299,7 +299,7 @@ ControlledDhcpv6Srv::commandConfigGetHandler(const string&,
 ConstElementPtr
 ControlledDhcpv6Srv::commandConfigHashGetHandler(const string&,
                                                  ConstElementPtr /*args*/) {
-    ElementPtr config = CfgMgr::instance().getCurrentCfg()->toElement();
+    ConstElementPtr config = CfgMgr::instance().getCurrentCfg()->toElement();
     string hash = BaseCommandMgr::getHash(config);
 
     ElementPtr params = Element::createMap();
index 06a5d21c17efd762dd0f840626f731c2eb3bacc4..79f79a81c9207d112a6e7effd765ccf4cfab18a4 100644 (file)
@@ -5675,8 +5675,8 @@ TEST_F(LoadUnloadDhcpv6SrvTest, Dhcpv6SrvConfigured) {
         if (parameters.empty()) {
             EXPECT_EQ(0, status_code);
 
-            EXPECT_EQ(answer->str(), "{ \"arguments\": { \"hash\": \"AF30DC19D03AB71CB5AB6A77C0B8D"
-            "2B4D8C5F5A939D7457DF723CBFB09F80744\" }, \"result\": 0, \"text\": "
+            EXPECT_EQ(answer->str(), "{ \"arguments\": { \"hash\": \"A6695A043B32703BA06D981929076F1C"
+            "94DEC0CF414E45AF146CEF5B50DB3EAA\" }, \"result\": 0, \"text\": "
             "\"Configuration successful.\" }");
         } else {
             EXPECT_EQ(1, status_code);
index d2d7201da64fea811164fd1fdbb12e8c2b317ecf..ff1d2d86c0b5453b971430670615645952008876 100644 (file)
@@ -193,6 +193,11 @@ BaseCommandMgr::listCommandsHandler(const std::string& /* name */,
 std::string
 BaseCommandMgr::getHash(const isc::data::ConstElementPtr& config) {
 
+    // Sanity.
+    if (!config) {
+        isc_throw(Unexpected, "BaseCommandMgr::getHash called with null");
+    }
+
     // First, get the string representation.
     std::string config_txt = config->str();
     isc::util::OutputBuffer hash_data(0);
@@ -213,6 +218,5 @@ BaseCommandMgr::getHash(const isc::data::ConstElementPtr& config) {
     return (isc::util::encode::encodeHex(hash));
 }
 
-
 } // namespace isc::config
 } // namespace isc
index feee1b178d6fd576f2138b52de032260007d183d..3611907ed800b591767f35ac324669ac88440080 100644 (file)
@@ -462,7 +462,7 @@ DControllerBase::configGetHandler(const std::string&,
 ConstElementPtr
 DControllerBase::configHashGetHandler(const std::string&,
                                       ConstElementPtr /*args*/) {
-    ElementPtr config = process_->getCfgMgr()->getContext()->toElement();
+    ConstElementPtr config = process_->getCfgMgr()->getContext()->toElement();
     std::string hash = BaseCommandMgr::getHash(config);
     ElementPtr params = Element::createMap();
     params->set("hash", Element::create(hash));
@@ -650,6 +650,13 @@ DControllerBase::configSetHandler(const std::string&, ConstElementPtr args) {
         ConstElementPtr answer = updateConfig(module_config);
         int rcode = 0;
         parseAnswer(rcode, answer);
+
+        // When succeeded append the SHA256 hash of the config that
+        // was just set to the response.
+        if (rcode == CONTROL_RESULT_SUCCESS) {
+            // @todo
+        }
+
         // In all cases the right logging configuration is in the context.
         process_->getCfgMgr()->getContext()->applyLoggingCfg();
         return (answer);