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 | |
parent | d0e7e6955293b656e1a1d7b01aebc1b5beefe711 (diff) |
Added ndpi_init_detection_module() API preferences
-rw-r--r-- | example/ndpiReader.c | 2 | ||||
-rw-r--r-- | example/reader_util.c | 2 | ||||
-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 |
5 files changed, 21 insertions, 6 deletions
diff --git a/example/ndpiReader.c b/example/ndpiReader.c index 3d9deea86..481254292 100644 --- a/example/ndpiReader.c +++ b/example/ndpiReader.c @@ -4169,7 +4169,7 @@ int orginal_main(int argc, char **argv) { analyzeUnitTest(); gettimeofday(&startup_time, NULL); - ndpi_info_mod = ndpi_init_detection_module(); + ndpi_info_mod = ndpi_init_detection_module(0 /* Don't skip tor hosts */); if(ndpi_info_mod == NULL) return -1; diff --git a/example/reader_util.c b/example/reader_util.c index dd6676cec..e7fe521a9 100644 --- a/example/reader_util.c +++ b/example/reader_util.c @@ -413,7 +413,7 @@ struct ndpi_workflow* ndpi_workflow_init(const struct ndpi_workflow_prefs * pref set_ndpi_flow_malloc(NULL), set_ndpi_flow_free(NULL); /* TODO: just needed here to init ndpi malloc wrapper */ - module = ndpi_init_detection_module(); + module = ndpi_init_detection_module(ndpi_no_prefs); if(module == NULL) { NDPI_LOG(0, NULL, NDPI_LOG_ERROR, "global structure initialization failed\n"); 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 |