diff options
author | Luca Deri <deri@ntop.org> | 2019-11-10 22:57:21 +0100 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2019-11-10 22:57:21 +0100 |
commit | 8181d63a95cdf8ff593e602d84a48c341338974d (patch) | |
tree | ec03a4e237ba4c510cf0790308ea2676ed99c10e /src | |
parent | d0e7e6955293b656e1a1d7b01aebc1b5beefe711 (diff) |
Added ndpi_init_detection_module() API preferences
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_api.h | 3 | ||||
-rw-r--r-- | src/include/ndpi_typedefs.h | 8 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 12 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h index ed3e40d04..14de814f6 100644 --- a/src/include/ndpi_api.h +++ b/src/include/ndpi_api.h @@ -142,10 +142,11 @@ extern "C" { * hosts and do other things. As soon as you are ready to use * it do not forget to call first ndpi_finalize_initalization() * + * @par prefs = load preferences * @return the initialized detection module * */ - struct ndpi_detection_module_struct *ndpi_init_detection_module(void); + struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs prefs); /** * Completes the initialization (2nd step) diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index 0b1572249..dc529e22b 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -1379,6 +1379,14 @@ typedef struct { u_int8_t value; } ndpi_network; +typedef u_int32_t ndpi_init_prefs; + +typedef enum + { + ndpi_no_prefs = 0, + ndpi_dont_load_tor_hosts, + } ndpi_prefs; + typedef struct { int protocol_id; ndpi_protocol_category_t protocol_category; diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index 35ba7087f..1c7becdde 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -1946,13 +1946,17 @@ static patricia_node_t* add_to_ptree(patricia_tree_t *tree, int family, /* ******************************************* */ static void ndpi_init_ptree_ipv4(struct ndpi_detection_module_struct *ndpi_str, - void *ptree, ndpi_network host_list[]) { + void *ptree, ndpi_network host_list[], + u_int8_t skip_tor_hosts) { int i; for(i=0; host_list[i].network != 0x0; i++) { struct in_addr pin; patricia_node_t *node; + if(skip_tor_hosts && (host_list[i].value == NDPI_PROTOCOL_TOR)) + continue; + pin.s_addr = htonl(host_list[i].network); if((node = add_to_ptree(ptree, AF_INET, &pin, host_list[i].cidr /* bits */)) != NULL) @@ -2135,7 +2139,7 @@ static const char* categories[] = { /* ******************************************************************** */ -struct ndpi_detection_module_struct *ndpi_init_detection_module(void) { +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; @@ -2153,7 +2157,9 @@ struct ndpi_detection_module_struct *ndpi_init_detection_module(void) { #endif /* NDPI_ENABLE_DEBUG_MESSAGES */ if((ndpi_str->protocols_ptree = ndpi_New_Patricia(32 /* IPv4 */)) != NULL) - ndpi_init_ptree_ipv4(ndpi_str, ndpi_str->protocols_ptree, host_protocol_list); + ndpi_init_ptree_ipv4(ndpi_str, ndpi_str->protocols_ptree, + host_protocol_list, + prefs & ndpi_dont_load_tor_hosts); NDPI_BITMASK_RESET(ndpi_str->detection_bitmask); #ifdef NDPI_ENABLE_DEBUG_MESSAGES |