@@ -37,6 +37,7 @@ void NETTISAPlugin::update_record(
3737 uint64_t packet_time = timeval2usec (pkt.ts );
3838 uint64_t record_time = timeval2usec (rec.time_first );
3939 float diff_time = fmax (packet_time - nettisa_data->prev_time , 0 );
40+ nettisa_data->sum_payload += pkt.payload_len_wire ;
4041 nettisa_data->prev_time = packet_time;
4142 // MEAN
4243 nettisa_data->mean += (variation_from_mean) / n;
@@ -83,6 +84,7 @@ int NETTISAPlugin::post_update(Flow& rec, const Packet& pkt)
8384{
8485 RecordExtNETTISA* nettisa_data
8586 = (RecordExtNETTISA*) rec.get_extension (RecordExtNETTISA::REGISTERED_ID);
87+
8688 update_record (nettisa_data, pkt, rec);
8789 return 0 ;
8890}
@@ -92,15 +94,26 @@ void NETTISAPlugin::pre_export(Flow& rec)
9294 RecordExtNETTISA* nettisa_data
9395 = (RecordExtNETTISA*) rec.get_extension (RecordExtNETTISA::REGISTERED_ID);
9496 uint32_t n = rec.src_packets + rec.dst_packets ;
95- nettisa_data->switching_ratio = nettisa_data->switching_ratio / ((n - 1 ) / 2 );
96- nettisa_data->stdev = pow (
97- (nettisa_data->root_mean_square / n) - pow ((rec.src_bytes + rec.dst_bytes ) / n, 2 ),
98- 0.5 );
97+ if (n == 1 ) {
98+ nettisa_data->switching_ratio = 0 ;
99+ nettisa_data->stdev = 0 ;
100+ nettisa_data->kurtosis = 0 ;
101+ nettisa_data->time_distribution = 0 ;
102+ } else {
103+ nettisa_data->switching_ratio = nettisa_data->switching_ratio / n;
104+ nettisa_data->stdev = pow (
105+ (nettisa_data->root_mean_square / n) - pow (nettisa_data->sum_payload / n, 2 ),
106+ 0.5 );
107+ if (nettisa_data->stdev == 0 ) {
108+ nettisa_data->kurtosis = 0 ;
109+ } else {
110+ nettisa_data->kurtosis = nettisa_data->kurtosis / (n * pow (nettisa_data->stdev , 4 ));
111+ }
112+ nettisa_data->time_distribution = (nettisa_data->time_distribution / (n - 1 ))
113+ / (nettisa_data->max_difftimes - nettisa_data->min );
114+ }
99115 nettisa_data->root_mean_square = pow (nettisa_data->root_mean_square / n, 0.5 );
100116 nettisa_data->average_dispersion = nettisa_data->average_dispersion / n;
101- nettisa_data->kurtosis = nettisa_data->kurtosis / (n * pow (nettisa_data->stdev , 4 ));
102- nettisa_data->time_distribution = (nettisa_data->time_distribution / (n - 1 ))
103- / (nettisa_data->max_difftimes - nettisa_data->min );
104117}
105118
106119} // namespace ipxp
0 commit comments