Skip to content

Commit d6810fc

Browse files
committed
Nettisa - fix invalid time conversion
1 parent 334bda5 commit d6810fc

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

process/nettisa.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include <cmath>
1111
#include <iostream>
12+
#include <ipfixprobe/utils.hpp>
1213

1314
namespace 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-
3225
ProcessPlugin* 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;

process/nettisa.hpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ struct RecordExtNETTISA : public RecordExt {
6868
float switching_ratio;
6969

7070
uint16_t prev_payload;
71-
long prev_time;
71+
uint64_t prev_time;
7272

7373
RecordExtNETTISA()
7474
: RecordExt(REGISTERED_ID)
@@ -169,10 +169,6 @@ struct RecordExtNETTISA : public RecordExt {
169169
*/
170170
class NETTISAPlugin : public ProcessPlugin {
171171
public:
172-
NETTISAPlugin();
173-
~NETTISAPlugin();
174-
void init(const char* params);
175-
void close();
176172
OptionsParser* get_parser() const { return new OptionsParser("nettisa", "Parse NetTiSA flow"); }
177173
std::string get_name() const { return "nettisa"; }
178174
RecordExt* get_ext() const { return new RecordExtNETTISA(); }

0 commit comments

Comments
 (0)