Browse Source

change casts in calculateLastIntervalIPsEntropy

add TODOs and FIXMEs
Jens Keim 5 years ago
parent
commit
d1376fc550
1 changed files with 10 additions and 7 deletions
  1. 10 7
      code_boost/src/cxx/statistics.cpp

+ 10 - 7
code_boost/src/cxx/statistics.cpp

@@ -47,16 +47,18 @@ void statistics::checkTCPChecksum(const std::string &ipAddressSender, const std:
  */
 std::vector<float> statistics::calculateLastIntervalIPsEntropy(std::chrono::microseconds intervalStartTimestamp){
     if(this->getDoExtraTests()) {
+        // TODO: change datastructures
         std::vector<int> IPsSrcPktsCounts;
         std::vector<int> IPsDstPktsCounts;
 
-        std::vector<float> IPsSrcProb;
-        std::vector<float> IPsDstProb;
+        std::vector<double> IPsSrcProb;
+        std::vector<double> IPsDstProb;
 
         int pktsSent = 0, pktsReceived = 0;
 
         for (auto i = ip_statistics.begin(); i != ip_statistics.end(); i++) {
             int IPsSrcPktsCount = 0;
+            // TODO: iter backwards and break
             for (auto j = i->second.pkts_sent_timestamp.begin(); j != i->second.pkts_sent_timestamp.end(); j++) {
                 if(*j >= intervalStartTimestamp)
                     IPsSrcPktsCount++;
@@ -78,26 +80,27 @@ std::vector<float> statistics::calculateLastIntervalIPsEntropy(std::chrono::micr
         }
 
         for (auto i = IPsSrcPktsCounts.begin(); i != IPsSrcPktsCounts.end(); i++) {
-            IPsSrcProb.push_back((float) *i / pktsSent);
+            IPsSrcProb.push_back(static_cast<double>(*i) / static_cast<double>(pktsSent));
         }
         for (auto i = IPsDstPktsCounts.begin(); i != IPsDstPktsCounts.end(); i++) {
-            IPsDstProb.push_back((float) *i / pktsReceived);
+            IPsDstProb.push_back(static_cast<double>(*i) / static_cast<double>(pktsReceived));
         }
 
         // Calculate IP source entropy
-        float IPsSrcEntropy = 0;
+        double IPsSrcEntropy = 0;
         for (unsigned i = 0; i < IPsSrcProb.size(); i++) {
             if (IPsSrcProb[i] > 0)
                 IPsSrcEntropy += -IPsSrcProb[i] * log2(IPsSrcProb[i]);
         }
         // Calculate IP destination entropy
-        float IPsDstEntropy = 0;
+        double IPsDstEntropy = 0;
         for (unsigned i = 0; i < IPsDstProb.size(); i++) {
             if (IPsDstProb[i] > 0)
                 IPsDstEntropy += -IPsDstProb[i] * log2(IPsDstProb[i]);
         }
 
-        std::vector<float> entropies = {IPsSrcEntropy, IPsDstEntropy};
+        // FIXME: return doubles not floats
+        std::vector<float> entropies = {static_cast<float>(IPsSrcEntropy), static_cast<float>(IPsDstEntropy)};
         return entropies;
     }
     else {