aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/ndpi_main.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index d362061fe..4fb3b68cf 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -4417,16 +4417,21 @@ int ndpi_fill_ip_protocol_category(struct ndpi_detection_module_struct *ndpi_str
prefix_t prefix;
patricia_node_t *node;
- /* Make sure all in network byte order otherwise compares wont work */
- fill_prefix_v4(&prefix, (struct in_addr *)&saddr,
- 32, ((patricia_tree_t*)ndpi_str->protocols_ptree)->maxbits);
- node = ndpi_patricia_search_best(ndpi_str->custom_categories.ipAddresses, &prefix);
-
- if(!node) {
- fill_prefix_v4(&prefix, (struct in_addr *)&daddr,
+ if(saddr == 0)
+ node = NULL;
+ else {
+ /* Make sure all in network byte order otherwise compares wont work */
+ fill_prefix_v4(&prefix, (struct in_addr *)&saddr,
32, ((patricia_tree_t*)ndpi_str->protocols_ptree)->maxbits);
node = ndpi_patricia_search_best(ndpi_str->custom_categories.ipAddresses, &prefix);
}
+
+ if(!node) {
+ if(daddr != 0)
+ fill_prefix_v4(&prefix, (struct in_addr *)&daddr,
+ 32, ((patricia_tree_t*)ndpi_str->protocols_ptree)->maxbits);
+ node = ndpi_patricia_search_best(ndpi_str->custom_categories.ipAddresses, &prefix);
+ }
if(node) {
ret->category = (ndpi_protocol_category_t)node->value.user_value;