diff options
author | Luca Deri <deri@ntop.org> | 2023-09-05 01:17:02 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2023-09-05 01:17:02 +0200 |
commit | cf67f483f4de640665ccef474c9997d24d927fd2 (patch) | |
tree | 265c99f47a427fc1f611c1d8e2e1957e5ee65f84 /src | |
parent | c5ebd84fd80d75dfdbd93fceb3e2d70a54328a47 (diff) |
Classification fixes
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_typedefs.h | 2 | ||||
-rw-r--r-- | src/lib/ndpi_binary_bitmap.c | 17 | ||||
-rw-r--r-- | src/lib/ndpi_domain_classify.c | 26 |
3 files changed, 19 insertions, 26 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h index db2e53a3f..553440a2b 100644 --- a/src/include/ndpi_typedefs.h +++ b/src/include/ndpi_typedefs.h @@ -1181,7 +1181,7 @@ typedef void ndpi_bitmap_iterator; typedef void ndpi_filter; /* Save memory limiting the key to 56 bit */ -#define SAVE_BINARY_BITMAP_MEMORY +//#define SAVE_BINARY_BITMAP_MEMORY PACK_ON struct ndpi_binary_bitmap_entry { diff --git a/src/lib/ndpi_binary_bitmap.c b/src/lib/ndpi_binary_bitmap.c index 9da67e5fb..4360e574f 100644 --- a/src/lib/ndpi_binary_bitmap.c +++ b/src/lib/ndpi_binary_bitmap.c @@ -83,7 +83,11 @@ static int ndpi_binary_bitmap_entry_compare(const void *_a, const void *_b) { struct ndpi_binary_bitmap_entry *a = (struct ndpi_binary_bitmap_entry*)_a; struct ndpi_binary_bitmap_entry *b = (struct ndpi_binary_bitmap_entry*)_b; - return(a->value > b->value) - (a->value < b->value); + // return(a->value > b->value) - (a->value < b->value); + + if (a->value < b->value) return -1; + else if (a->value > b->value) return 1; + else return 0; } /* ********************************************************** */ @@ -139,14 +143,13 @@ bool ndpi_binary_bitmap_isset(ndpi_binary_bitmap *b, u_int64_t value, u_int8_t * struct ndpi_binary_bitmap_entry *rc; struct ndpi_binary_bitmap_entry tofind; - tofind.value = value; - rc = (struct ndpi_binary_bitmap_entry*)bsearch(&tofind, b->entries, + tofind.value = value; rc = (struct ndpi_binary_bitmap_entry*)bsearch(&tofind, b->entries, b->num_used_entries, sizeof(struct ndpi_binary_bitmap_entry), - ndpi_binary_bitmap_entry_compare); - - if(rc != NULL) *out_category = rc->category; - + ndpi_binary_bitmap_entry_compare); + if(rc != NULL) + *out_category = rc->category; + return(rc == NULL ? false : true); } else return(false); diff --git a/src/lib/ndpi_domain_classify.c b/src/lib/ndpi_domain_classify.c index 228c7dbc0..0f0232d38 100644 --- a/src/lib/ndpi_domain_classify.c +++ b/src/lib/ndpi_domain_classify.c @@ -155,8 +155,9 @@ bool ndpi_domain_classify_contains(ndpi_domain_classify *c, u_int8_t *class_id /* out */, char *domain) { u_int32_t len; - char *dot, *elem; - + char *dot; + u_int64_t hash; + if(!domain) return(false); if((len = strlen(domain)) == 0) return(false); if((dot = strrchr(domain, '.')) == NULL) return(false); @@ -179,28 +180,17 @@ bool ndpi_domain_classify_contains(ndpi_domain_classify *c, return(false); } - elem = domain; - - while(true) { - u_int64_t hash; - - hash = ndpi_quick_hash64(elem, strlen(elem)); + hash = ndpi_quick_hash64(domain, strlen(domain)); #ifdef DEBUG_CONTAINS - printf("[contains] Searching %s [hash: %llu]\n", elem, hash); + printf("[contains] Searching %s [hash: %llu]\n", domain, hash); #endif - if(ndpi_binary_bitmap_isset(c->bitmap, hash, class_id)) { + if(ndpi_binary_bitmap_isset(c->bitmap, hash, class_id)) { #ifdef DEBUG_CONTAINS - printf("[contains] %s = %d\n", domain, *class_id); + printf("[contains] %s = %d\n", domain, *class_id); #endif - return(true); - } - - if((elem = strchr(elem, '.')) == NULL) - break; - else - elem = &elem[1]; + return(true); } #ifdef DEBUG_CONTAINS |