99
1010#include < cmath>
1111#include < iostream>
12+ #include < ipfixprobe/utils.hpp>
1213
1314namespace ipxp {
1415
@@ -21,14 +22,6 @@ __attribute__((constructor)) static void register_this_plugin()
2122 RecordExtNETTISA::REGISTERED_ID = register_extension ();
2223}
2324
24- NETTISAPlugin::NETTISAPlugin () {}
25-
26- NETTISAPlugin::~NETTISAPlugin () {}
27-
28- void NETTISAPlugin::init (const char * params) {}
29-
30- void NETTISAPlugin::close () {}
31-
3225ProcessPlugin* NETTISAPlugin::copy ()
3326{
3427 return new NETTISAPlugin (*this );
@@ -41,8 +34,10 @@ void NETTISAPlugin::update_record(
4134{
4235 float variation_from_mean = pkt.payload_len_wire - nettisa_data->mean ;
4336 uint32_t n = rec.dst_packets + rec.src_packets ;
44- long diff_time = pkt.ts .tv_usec - nettisa_data->prev_time ;
45- nettisa_data->prev_time = pkt.ts .tv_usec ;
37+ uint64_t packet_time = timeval2usec (pkt.ts );
38+ uint64_t record_time = timeval2usec (rec.time_first );
39+ float diff_time = fmax (packet_time - nettisa_data->prev_time , 0 );
40+ nettisa_data->prev_time = packet_time;
4641 // MEAN
4742 nettisa_data->mean += (variation_from_mean) / n;
4843 // MIN
@@ -57,7 +52,7 @@ void NETTISAPlugin::update_record(
5752 nettisa_data->kurtosis += pow (variation_from_mean, 4 );
5853 // MEAN SCALED TIME
5954 nettisa_data->mean_scaled_time
60- += (pkt. ts . tv_usec - rec. time_first . tv_usec - nettisa_data->mean_scaled_time ) / n;
55+ += (packet_time - record_time - nettisa_data->mean_scaled_time ) / n;
6156 // MEAN TIME DIFFERENCES
6257 nettisa_data->mean_difftimes += (diff_time - nettisa_data->mean_difftimes ) / n;
6358 // MIN
@@ -78,7 +73,7 @@ int NETTISAPlugin::post_create(Flow& rec, const Packet& pkt)
7873 RecordExtNETTISA* nettisa_data = new RecordExtNETTISA ();
7974 rec.add_extension (nettisa_data);
8075
81- nettisa_data->prev_time = pkt.ts . tv_usec ;
76+ nettisa_data->prev_time = timeval2usec ( pkt.ts ) ;
8277
8378 update_record (nettisa_data, pkt, rec);
8479 return 0 ;
0 commit comments