]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3446] addressed review
authorRazvan Becheriu <razvan@isc.org>
Tue, 16 Jul 2024 06:55:32 +0000 (09:55 +0300)
committerRazvan Becheriu <razvan@isc.org>
Tue, 16 Jul 2024 12:43:21 +0000 (12:43 +0000)
ChangeLog
src/lib/dhcpsrv/network_state.cc

index 26f814e29a2c1761fa06e55438db8af5ee1cfca7..fa56e5dc1e73ea1ea55acc5d9387f9ae7149156d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
 2261.  [bug]           razvan
        Reset the local and remote disabled state when applying
-       configuration.
+       configuration. The dhcp-state is now included in the 'status-get'
+       command. It indicates if the dhcp service is enabled or the
+       reason why it is disabled (user command, HA command or database
+       connection failure).
        (Gitlab #3446)
 
 2260.  [bug]           razvan
index 4bf7c098db3680cbe6c21c48adc63e4ba879543a..061ada84e1c224e437c2d4f193adbc0f339f283c 100644 (file)
@@ -93,11 +93,12 @@ public:
     void resetForLocalCommands() {
         auto disabled_by_origin = disabled_by_origin_;
         for (auto const& origin : disabled_by_origin) {
-            if (origin >= NetworkState::HA_LOCAL_COMMAND && origin < NetworkState::HA_REMOTE_COMMAND) {
+            if (origin >= NetworkState::HA_LOCAL_COMMAND &&
+                origin < NetworkState::HA_REMOTE_COMMAND) {
                 disabled_by_origin_.erase(origin);
             }
         }
-        if (disabled_by_origin_.empty()) {
+        if (disabled_by_origin_.empty() && disabled_by_db_connection_ == 0) {
             globally_disabled_ = false;
         }
     }
@@ -108,11 +109,12 @@ public:
     void resetForRemoteCommands() {
         auto disabled_by_origin = disabled_by_origin_;
         for (auto const& origin : disabled_by_origin) {
-            if (origin >= NetworkState::HA_REMOTE_COMMAND && origin < NetworkState::DB_CONNECTION) {
+            if (origin >= NetworkState::HA_REMOTE_COMMAND &&
+                origin < NetworkState::DB_CONNECTION) {
                 disabled_by_origin_.erase(origin);
             }
         }
-        if (disabled_by_origin_.empty()) {
+        if (disabled_by_origin_.empty() && disabled_by_db_connection_ == 0) {
             globally_disabled_ = false;
         }
     }
@@ -183,7 +185,7 @@ public:
         bool disabled_by_user = false;
         ElementPtr local_origin = Element::createList();
         ElementPtr remote_origin = Element::createList();
-        std::set<uint32_t> ordered(disabled_by_origin_.begin(), disabled_by_origin_.end());
+        std::set<unsigned int> ordered(disabled_by_origin_.begin(), disabled_by_origin_.end());
         for (auto const& origin : ordered) {
             if (origin == NetworkState::USER_COMMAND) {
                 disabled_by_user = true;
@@ -218,7 +220,7 @@ public:
     TimerMgrPtr timer_mgr_;
 
     /// @brief A set of requests to disable the service by origin.
-    std::unordered_set<uint32_t> disabled_by_origin_;
+    std::unordered_set<unsigned int> disabled_by_origin_;
 
     /// @brief Flag which indicates the state has been disabled by a DB
     /// connection loss.