aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2019-11-10 22:57:21 +0100
committerLuca Deri <deri@ntop.org>2019-11-10 22:57:21 +0100
commit8181d63a95cdf8ff593e602d84a48c341338974d (patch)
treeec03a4e237ba4c510cf0790308ea2676ed99c10e
parentd0e7e6955293b656e1a1d7b01aebc1b5beefe711 (diff)
Added ndpi_init_detection_module() API preferences
-rw-r--r--example/ndpiReader.c2
-rw-r--r--example/reader_util.c2
-rw-r--r--src/include/ndpi_api.h3
-rw-r--r--src/include/ndpi_typedefs.h8
-rw-r--r--src/lib/ndpi_main.c12
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