aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_api.h3
-rw-r--r--src/lib/ndpi_analyze.c19
2 files changed, 18 insertions, 4 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h
index c6d17a4b5..9bb767ca7 100644
--- a/src/include/ndpi_api.h
+++ b/src/include/ndpi_api.h
@@ -903,7 +903,8 @@ extern "C" {
float ndpi_data_variance(struct ndpi_analyze_struct *s);
float ndpi_data_stddev(struct ndpi_analyze_struct *s);
float ndpi_data_ratio(u_int32_t sent, u_int32_t rcvd);
-
+ const char* ndpi_data_ratio2str(float ratio);
+
void ndpi_data_print_window_values(struct ndpi_analyze_struct *s); /* debug */
#ifdef __cplusplus
}
diff --git a/src/lib/ndpi_analyze.c b/src/lib/ndpi_analyze.c
index ce3168165..8facdf371 100644
--- a/src/lib/ndpi_analyze.c
+++ b/src/lib/ndpi_analyze.c
@@ -154,9 +154,22 @@ void ndpi_data_print_window_values(struct ndpi_analyze_struct *s) {
/* ********************************************************************************* */
+/*
+ Upload / download ration
+
+ -1 Download
+ 0 Mixed
+ 1 Upload
+ */
float ndpi_data_ratio(u_int32_t sent, u_int32_t rcvd) {
- int64_t s = (int64_t)sent + (int64_t)rcvd;
- int64_t d = (int64_t)sent - (int64_t)rcvd;
+ float s = (float)((int64_t)sent + (int64_t)rcvd);
+ float d = (float)((int64_t)sent - (int64_t)rcvd);
+
+ return((s == 0) ? 0 : (d/s));
+}
- return((s == 0) ? 0 : ((float)d)/((float)s));
+const char* ndpi_data_ratio2str(float ratio) {
+ if(ratio < -0.2) return("Download");
+ else if(ratio > 0.2) return("Upload");
+ else return("Mixed");
}