aboutsummaryrefslogtreecommitdiff
path: root/src
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 /src
parentd0e7e6955293b656e1a1d7b01aebc1b5beefe711 (diff)
Added ndpi_init_detection_module() API preferences
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_api.h3
-rw-r--r--src/include/ndpi_typedefs.h8
-rw-r--r--src/lib/ndpi_main.c12
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