]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[755-Kea-DHCP-servers-observations-should-be-reset-to-some-initial] changes to way...
authorFranciszek Gorski <fagorski9@gmail.com>
Wed, 4 Sep 2019 12:49:33 +0000 (14:49 +0200)
committerMarcin Siodelski <marcin@isc.org>
Fri, 6 Sep 2019 09:34:54 +0000 (11:34 +0200)
src/bin/dhcp4/dhcp4_srv.cc
src/bin/dhcp4/dhcp4_srv.h

index b84e5c3be3a691ad37266aa772a115f8f6d0fd05..dc8a37f568a70097e77b789777379a2308e7c3b0 100644 (file)
@@ -107,7 +107,25 @@ struct Dhcp4Hooks {
         hook_index_host4_identifier_  = HooksManager::registerHook("host4_identifier");
     }
 };
-
+    /// Set of all statistics observed in DHCPv4 server
+    std::set<std::string> dhcp4_statistics = {
+        "pkt4-received",
+        "pkt4-discover-received",
+        "pkt4-offer-received",
+        "pkt4-request-received",
+        "pkt4-ack-received",
+        "pkt4-nak-received",
+        "pkt4-release-received",
+        "pkt4-decline-received",
+        "pkt4-inform-received",
+        "pkt4-unknown-received",
+        "pkt4-sent",
+        "pkt4-offer-sent",
+        "pkt4-ack-sent",
+        "pkt4-nak-sent",
+        "pkt4-parse-failed",
+        "pkt4-receive-drop"
+    };
 } // end of anonymous namespace
 
 // Declare a Hooks object. As this is outside any function or method, it
@@ -481,51 +499,22 @@ Dhcpv4Srv::Dhcpv4Srv(uint16_t server_port, uint16_t client_port,
         return;
     }
 
-    // Initializing all observations with zero value
-    isc::stats::StatsMgr::instance().setValue("pkt4-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-discover-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-offer-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-request-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-ack-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-nak-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-release-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-decline-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-inform-received",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-unknown-received",
-                                              static_cast<int64_t>(0));
-
-    isc::stats::StatsMgr::instance().setValue("pkt4-sent",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-offer-sent",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-ack-sent",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-nak-sent",
-                                              static_cast<int64_t>(0));
-
-    isc::stats::StatsMgr::instance().setValue("pkt4-parse-failed",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("pkt4-receive-drop",
-                                              static_cast<int64_t>(0));
-
-    isc::stats::StatsMgr::instance().setValue("reclaimed-leases",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("declined-addresses",
-                                              static_cast<int64_t>(0));
-    isc::stats::StatsMgr::instance().setValue("reclaimed-declined-addresses",
-                                              static_cast<int64_t>(0));
+    // Initializing all observations with default value
+    setPacketStatisticsDefaults();
     shutdown_ = false;
 }
 
+void Dhcpv4Srv::setPacketStatisticsDefaults() {
+    std::set<std::string>::iterator it;
+    isc::stats::StatsMgr& stats_mgr = isc::stats::StatsMgr::instance();
+
+    // Iterate over set of observed statistics
+    for (it = dhcp4_statistics.begin(); it != dhcp4_statistics.end(); ++it) {
+        // Initialize them with default value 0
+        stats_mgr.setValue((*it), static_cast<int64_t>(0));
+    }
+}
+
 Dhcpv4Srv::~Dhcpv4Srv() {
     // Discard any cached packets or parked packets
     discardPackets();
index 72680fff36e85f773dcc610d57a3e41d63653c30..a28fc6e1e606f1ded9fc048b940cb35f85f9c23a 100644 (file)
@@ -234,6 +234,9 @@ public:
     /// @brief Destructor. Used during DHCPv4 service shutdown.
     virtual ~Dhcpv4Srv();
 
+    /// @brief This function set to defaults all statistics starting with pkt4-.
+    void setPacketStatisticsDefaults();
+
     /// @brief Checks if the server is running in a test mode.
     ///
     /// @return true if the server is running in the test mode,