aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_classify.c
diff options
context:
space:
mode:
authorLuca Deri <lucaderi@users.noreply.github.com>2019-09-29 07:59:02 +0200
committerGitHub <noreply@github.com>2019-09-29 07:59:02 +0200
commit3b06d2191ce69d53aae02235ebe45587038616e6 (patch)
treea1f62cec5c290f3a407c429f90c57f92b4cf6207 /src/lib/ndpi_classify.c
parente9df2b187c5e2e334d08a5abe2f392155f07c8a5 (diff)
parente29032085df18b034fe9e7b036869f187187ea4b (diff)
Merge pull request #770 from ntop/ndpi_icmp
Add icmp and icmp6 to calculate splt and bd values.
Diffstat (limited to 'src/lib/ndpi_classify.c')
-rw-r--r--src/lib/ndpi_classify.c38
1 files changed, 30 insertions, 8 deletions
diff --git a/src/lib/ndpi_classify.c b/src/lib/ndpi_classify.c
index 96b2ecbb0..7a814f7ce 100644
--- a/src/lib/ndpi_classify.c
+++ b/src/lib/ndpi_classify.c
@@ -299,6 +299,8 @@ ndpi_merge_splt_arrays (const uint16_t *pkt_len, const struct timeval *pkt_time,
tmp = pkt_time_twin[r];
ndpi_timer_sub(&tmp, &ts_start, &tmp_r);
merged_times[s+r] = ndpi_timeval_to_milliseconds(tmp_r);
+ if (merged_times[s+r] == 0)
+ merged_times[s+r] = ndpi_timeval_to_microseconds(tmp_r);
ts_start = tmp;
r++;
} else if (r >= r_idx) {
@@ -306,27 +308,35 @@ ndpi_merge_splt_arrays (const uint16_t *pkt_len, const struct timeval *pkt_time,
tmp = pkt_time[s];
ndpi_timer_sub(&tmp, &ts_start, &tmp_r);
merged_times[s+r] = ndpi_timeval_to_milliseconds(tmp_r);
+ if (merged_times[s+r] == 0)
+ merged_times[s+r] = ndpi_timeval_to_microseconds(tmp_r);
ts_start = tmp;
s++;
} else {
if (ndpi_timer_lt(&pkt_time[s], &pkt_time_twin[r])) {
merged_lens[s+r] = pkt_len[s];
- tmp = pkt_time[s];
- ndpi_timer_sub(&tmp, &ts_start, &tmp_r);
- merged_times[s+r] = ndpi_timeval_to_milliseconds(tmp_r);
- ts_start = tmp;
+ tmp = pkt_time[s];
+ ndpi_timer_sub(&tmp, &ts_start, &tmp_r);
+ merged_times[s+r] = ndpi_timeval_to_milliseconds(tmp_r);
+ if (merged_times[s+r] == 0)
+ merged_times[s+r] = ndpi_timeval_to_microseconds(tmp_r);
+ ts_start = tmp;
s++;
} else {
merged_lens[s+r] = pkt_len_twin[r];
- tmp = pkt_time_twin[r];
- ndpi_timer_sub(&tmp, &ts_start, &tmp_r);
- merged_times[s+r] = ndpi_timeval_to_milliseconds(tmp_r);
- ts_start = tmp;
+ tmp = pkt_time_twin[r];
+ ndpi_timer_sub(&tmp, &ts_start, &tmp_r);
+ merged_times[s+r] = ndpi_timeval_to_milliseconds(tmp_r);
+ if (merged_times[s+r] == 0)
+ merged_times[s+r] = ndpi_timeval_to_microseconds(tmp_r);
+ ts_start = tmp;
r++;
}
}
}
merged_times[0] = ndpi_timeval_to_milliseconds(start_m);
+ if (merged_times[0] == 0)
+ merged_times[0] = ndpi_timeval_to_microseconds(start_m);
}
/* transform lens array to Markov chain */
@@ -656,6 +666,18 @@ ndpi_timeval_to_milliseconds(struct timeval ts)
return result;
}
+/**
+ * \brief Calculate the microseconds representation of a timeval.
+ * \param ts Timeval
+ * \return unsigned int - Milliseconds
+ */
+unsigned int
+ndpi_timeval_to_microseconds(struct timeval ts)
+{
+ unsigned int result = ts.tv_usec + ts.tv_sec * 1000 * 1000;
+ return result;
+}
+
void
ndpi_log_timestamp(char *log_ts, u_int log_ts_len)
{