diff options
author | Luca Deri <deri@ntop.org> | 2020-08-31 08:47:16 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2020-08-31 08:47:16 +0200 |
commit | 460ff3c7aba42d0e7b99a227e0cb846af296e4e0 (patch) | |
tree | 8f8cf5b66e98d0dd32802c0c52e1776c8bea9776 | |
parent | 029448759b4036f7c26444b5055ac3a2607de972 (diff) |
Added (optional) notifier for LRU add
-rw-r--r-- | src/include/ndpi_typedefs.h | 11 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 13 | ||||
-rw-r--r-- | src/lib/protocols/hangout.c | 2 | ||||
-rw-r--r-- | src/lib/protocols/stun.c | 5 |
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); } } } |