Forráskód Böngészése

Fix a bug in the condition that call addIntervalStat

aidmar.wainakh 6 éve
szülő
commit
443227a044

BIN
code_boost/src/cmake-build-debug/cpp-pcapreader


+ 2 - 3
code_boost/src/cxx/pcap_processor.cpp

@@ -146,7 +146,7 @@ void pcap_processor::collect_statistics() {
             std::chrono::microseconds currentCaptureDuration = lastPktTimestamp - firstTimestamp;
             std::chrono::microseconds barrier =  timeIntervalCounter*timeInterval;
             // For each interval
-            if(currentCaptureDuration>barrier){                    
+            if(currentCaptureDuration>barrier && barrier.count() > 0){ // barrier becomes negative in last interval
                 stats.addIntervalStat(timeInterval, intervalStartTimestamp, lastPktTimestamp, previousPacketCount, previousSumPacketSize);
                 timeIntervalCounter++;   
                 intervalStartTimestamp = lastPktTimestamp;
@@ -165,7 +165,6 @@ void pcap_processor::collect_statistics() {
         // Aidmar
         //tests.get_checksum_incorrect_ratio();
         //tests.get_payload_ratio();
-    
     }
 }
 
@@ -321,7 +320,7 @@ bool inline pcap_processor::file_exists(const std::string &filePath) {
  */
 //int main() {
 //    std::cout << "Starting application." << std::endl;
-//    pcap_processor pcap = pcap_processor("/home/anonymous/Downloads/ID2T-toolkit/captures/capture_1.pcap");
+//    pcap_processor pcap = pcap_processor("/home/anonymous/Downloads/ID2T-toolkit/captures/iscx/40min_iscx_11jun.pcap");
 //
 //    long double t = pcap.get_timestamp_mu_sec(87);
 //    std::cout << t << std::endl;

+ 11 - 3
code_boost/src/cxx/statistics.cpp

@@ -66,12 +66,20 @@ std::vector<float> statistics::calculateIPsCumEntropy(){
     std::vector <std::string> IPs; 
     std::vector <float> IPsSrcProb; 
     std::vector <float> IPsDstProb;
+
+    std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now();
+
     for (auto i = ip_statistics.begin(); i != ip_statistics.end(); i++) {
-        IPs.push_back(i->first);        
+        IPs.push_back(i->first);
         IPsSrcProb.push_back((float)i->second.pkts_sent/packetCount);
         IPsDstProb.push_back((float)i->second.pkts_received/packetCount);
     }
-    
+
+    std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now();
+    auto duration = std::chrono::duration_cast<std::chrono::microseconds>( t2 - t1 ).count()*1e-6;
+    std::cout<< "CumEntCalc -> ip_statistics loop: " << duration << " sec" << std::endl;
+
+
     // Calculate IP source entropy 
     float IPsSrcEntropy = 0;
     for(unsigned i=0; i < IPsSrcProb.size();i++){
@@ -123,7 +131,7 @@ void statistics::addIntervalStat(std::chrono::duration<int, std::micro> interval
     calculateIPIntervalPacketRate(interval, intervalStartTimestamp);
     
     std::vector<float> ipEntopies = calculateLastIntervalIPsEntropy(intervalStartTimestamp);
-    //std::vector<float> ipCumEntopies = calculateIPsCumEntropy();    
+    std::vector<float> ipCumEntopies = calculateIPsCumEntropy();
     std::string lastPktTimestamp_s = std::to_string(intervalEndTimestamp.count());
     
     interval_statistics[lastPktTimestamp_s].pkts_count = packetCount - previousPacketCount;