aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2020-08-31 08:47:16 +0200
committerLuca Deri <deri@ntop.org>2020-08-31 08:47:16 +0200
commit460ff3c7aba42d0e7b99a227e0cb846af296e4e0 (patch)
tree8f8cf5b66e98d0dd32802c0c52e1776c8bea9776
parent029448759b4036f7c26444b5055ac3a2607de972 (diff)
Added (optional) notifier for LRU add
-rw-r--r--src/include/ndpi_typedefs.h11
-rw-r--r--src/lib/ndpi_main.c13
-rw-r--r--src/lib/protocols/hangout.c2
-rw-r--r--src/lib/protocols/stun.c5
4 files changed, 28 insertions, 3 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index ab6f56d31..31a718bde 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1017,6 +1017,11 @@ struct pcre_struct {
};
#endif
+typedef enum {
+ ndpi_stun_cache,
+ ndpi_hangout_cache
+} ndpi_lru_cache_type;
+
struct ndpi_detection_module_struct {
NDPI_PROTOCOL_BITMASK detection_bitmask;
NDPI_PROTOCOL_BITMASK generic_http_packet_bitmask;
@@ -1128,9 +1133,10 @@ struct ndpi_detection_module_struct {
ndpi_proto_defaults_t proto_defaults[NDPI_MAX_SUPPORTED_PROTOCOLS+NDPI_MAX_NUM_CUSTOM_PROTOCOLS];
- u_int8_t direction_detect_disable:1, /* disable internal detection of packet direction */
- _pad:7;
+ u_int8_t direction_detect_disable:1, /* disable internal detection of packet direction */ _pad:7;
+ void (*ndpi_notify_lru_add_handler_ptr)(ndpi_lru_cache_type cache_type, u_int32_t proto, u_int32_t app_proto);
+
#ifdef CUSTOM_NDPI_PROTOCOLS
#include "../../../nDPI-custom/custom_ndpi_typedefs.h"
#endif
@@ -1547,5 +1553,4 @@ struct ndpi_bin {
} u;
};
-
#endif /* __NDPI_TYPEDEFS_H__ */
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index a84d650bc..efd8a18a5 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -1968,6 +1968,15 @@ static const char *categories[] = {
/* ******************************************************************** */
+#ifdef TEST_LRU_HANDLER
+void test_lru_handler(ndpi_lru_cache_type cache_type, u_int32_t proto, u_int32_t app_proto) {
+
+ printf("[test_lru_handler] %u / %u / %u\n", cache_type, proto, app_proto);
+}
+#endif
+
+/* ******************************************************************** */
+
struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs prefs) {
struct ndpi_detection_module_struct *ndpi_str = ndpi_malloc(sizeof(struct ndpi_detection_module_struct));
int i;
@@ -1982,6 +1991,10 @@ struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs
memset(ndpi_str, 0, sizeof(struct ndpi_detection_module_struct));
+#ifdef TEST_LRU_HANDLER
+ ndpi_str->ndpi_notify_lru_add_handler_ptr = test_lru_handler;
+#endif
+
#ifdef NDPI_ENABLE_DEBUG_MESSAGES
set_ndpi_debug_function(ndpi_str, (ndpi_debug_function_ptr) ndpi_debug_printf);
NDPI_BITMASK_RESET(ndpi_str->debug_bitmask);
diff --git a/src/lib/protocols/hangout.c b/src/lib/protocols/hangout.c
index fe0d3cb05..acddfed7f 100644
--- a/src/lib/protocols/hangout.c
+++ b/src/lib/protocols/hangout.c
@@ -108,6 +108,8 @@ void ndpi_search_hangout(struct ndpi_detection_module_struct *ndpi_struct,
#endif
ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key, NDPI_PROTOCOL_HANGOUT_DUO);
+ if(ndpi_struct->ndpi_notify_lru_add_handler_ptr)
+ ndpi_struct->ndpi_notify_lru_add_handler_ptr(ndpi_hangout_cache, key, NDPI_PROTOCOL_HANGOUT_DUO);
}
ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_HANGOUT_DUO,
diff --git a/src/lib/protocols/stun.c b/src/lib/protocols/stun.c
index 87d090daf..703b46be7 100644
--- a/src/lib/protocols/stun.c
+++ b/src/lib/protocols/stun.c
@@ -88,7 +88,12 @@ void ndpi_int_stun_add_connection(struct ndpi_detection_module_struct *ndpi_stru
#endif
ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key, app_proto);
+ if(ndpi_struct->ndpi_notify_lru_add_handler_ptr)
+ ndpi_struct->ndpi_notify_lru_add_handler_ptr(ndpi_stun_cache, key, app_proto);
+
ndpi_lru_add_to_cache(ndpi_struct->stun_cache, key_rev, app_proto);
+ if(ndpi_struct->ndpi_notify_lru_add_handler_ptr)
+ ndpi_struct->ndpi_notify_lru_add_handler_ptr(ndpi_stun_cache, key_rev, app_proto);
}
}
}