aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2023-09-05 01:17:02 +0200
committerLuca Deri <deri@ntop.org>2023-09-05 01:17:02 +0200
commitcf67f483f4de640665ccef474c9997d24d927fd2 (patch)
tree265c99f47a427fc1f611c1d8e2e1957e5ee65f84 /src
parentc5ebd84fd80d75dfdbd93fceb3e2d70a54328a47 (diff)
Classification fixes
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_typedefs.h2
-rw-r--r--src/lib/ndpi_binary_bitmap.c17
-rw-r--r--src/lib/ndpi_domain_classify.c26
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