diff options
author | Luca Deri <deri@ntop.org> | 2020-07-15 10:30:45 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2020-07-15 10:30:45 +0200 |
commit | 9f3e3e8456f204edfc2d626b6473bb2278a1b9cb (patch) | |
tree | 504a68a1dedc607c76ef44277b74638df935ed86 | |
parent | 91d132ea3dd99e10012916f1a1ededad2e0eefab (diff) |
Add ndpi_hll_reset() API call
Fixes bug in ndpi_data_window_average() with zero points
-rw-r--r-- | src/include/ndpi_api.h.in | 3 | ||||
-rw-r--r-- | src/lib/ndpi_analyze.c | 7 | ||||
-rw-r--r-- | src/lib/third_party/src/hll/hll.c | 4 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/include/ndpi_api.h.in b/src/include/ndpi_api.h.in index 4b36fd3b2..c272d66c8 100644 --- a/src/include/ndpi_api.h.in +++ b/src/include/ndpi_api.h.in @@ -1059,7 +1059,8 @@ extern "C" { /* Memory lifecycle */ int ndpi_hll_init(struct ndpi_hll *hll, u_int8_t bits); void ndpi_hll_destroy(struct ndpi_hll *hll); - + void ndpi_hll_reset(struct ndpi_hll *hll); + /* Add values */ void ndpi_hll_add(struct ndpi_hll *hll, const char *data, size_t data_len); void ndpi_hll_add_number(struct ndpi_hll *hll, u_int32_t value) ; diff --git a/src/lib/ndpi_analyze.c b/src/lib/ndpi_analyze.c index 79a3dcf59..4b4fbf72b 100644 --- a/src/lib/ndpi_analyze.c +++ b/src/lib/ndpi_analyze.c @@ -144,6 +144,9 @@ float ndpi_data_window_average(struct ndpi_analyze_struct *s) { float sum = 0.0; u_int16_t i, n = ndpi_min(s->num_data_entries, s->num_values_array_len); + if(n == 0) + return(0); + for(i=0; i<n; i++) sum += s->values[i]; @@ -228,6 +231,10 @@ void ndpi_hll_destroy(struct ndpi_hll *hll) { hll_destroy(hll); } +void ndpi_hll_reset(struct ndpi_hll *hll) { + hll_reset(hll); +} + void ndpi_hll_add(struct ndpi_hll *hll, const char *data, size_t data_len) { hll_add(hll, (const void *)data, data_len); } diff --git a/src/lib/third_party/src/hll/hll.c b/src/lib/third_party/src/hll/hll.c index 07d33f6dd..f8cd817db 100644 --- a/src/lib/third_party/src/hll/hll.c +++ b/src/lib/third_party/src/hll/hll.c @@ -67,6 +67,10 @@ void hll_destroy(struct ndpi_hll *hll) { hll->registers = NULL; } +void hll_reset(struct ndpi_hll *hll) { + memset(hll->registers, 0, hll->size); +} + static __inline void _hll_add_hash(struct ndpi_hll *hll, u_int32_t hash) { u_int32_t index = hash >> (32 - hll->bits); u_int8_t rank = _hll_rank(hash, hll->bits); |