diff options
-rw-r--r-- | src/include/ndpi_api.h | 1 | ||||
-rw-r--r-- | src/lib/ndpi_domain_classify.c | 16 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h index 9189a3a95..8de858188 100644 --- a/src/include/ndpi_api.h +++ b/src/include/ndpi_api.h @@ -2104,6 +2104,7 @@ extern "C" { u_int32_t ndpi_domain_classify_add_domains(ndpi_domain_classify *s, u_int8_t class_id, char *file_path); + bool ndpi_domain_classify_finalize(ndpi_domain_classify *s); bool ndpi_domain_classify_contains(ndpi_domain_classify *s, u_int8_t *class_id /* out */, const char *domain); diff --git a/src/lib/ndpi_domain_classify.c b/src/lib/ndpi_domain_classify.c index b56101a7e..c475c46f9 100644 --- a/src/lib/ndpi_domain_classify.c +++ b/src/lib/ndpi_domain_classify.c @@ -179,6 +179,22 @@ u_int32_t ndpi_domain_classify_add_domains(ndpi_domain_classify *s, /* ********************************************************** */ +bool ndpi_domain_classify_finalize(ndpi_domain_classify *s) { + u_int32_t i; + + if(!s) + return(false); + + for(i=0; i<MAX_NUM_NDPI_DOMAIN_CLASSIFICATIONS; i++) { + if(s->classes[i].class_id != 0) { + ndpi_bitmap64_compress(s->classes[i].domains); + } + } + return(true); +} + +/* ********************************************************** */ + static bool is_valid_domain_char(u_char c) { if(((c >= 'A')&& (c <= 'Z')) || ((c >= 'a')&& (c <= 'z')) diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index c2a5b2f2f..6cbbcf252 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -6959,6 +6959,7 @@ int ndpi_enable_loaded_categories(struct ndpi_detection_module_struct *ndpi_str) } #else ndpi_domain_classify_free(ndpi_str->custom_categories.sc_hostnames); + ndpi_domain_classify_finalize(ndpi_str->custom_categories.sc_hostnames_shadow); ndpi_str->custom_categories.sc_hostnames = ndpi_str->custom_categories.sc_hostnames_shadow; ndpi_str->custom_categories.sc_hostnames_shadow = ndpi_domain_classify_alloc(); #endif |