aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlfredo Cardigliano <cardigliano@ntop.org>2021-02-23 10:23:52 +0100
committerAlfredo Cardigliano <cardigliano@ntop.org>2021-02-23 10:23:52 +0100
commit888ddfcd1716390a477a5364929ba99b1051b592 (patch)
tree5fd74b72833935bacd98aecc62f1e2c696e655da /src
parentf8e83f7e35ae76473d55359c250eed76c3cb6077 (diff)
Update ndpi_patricia_walk_inorder API
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_api.h.in2
-rw-r--r--src/include/ndpi_typedefs.h7
-rw-r--r--src/lib/third_party/src/ndpi_patricia.c8
3 files changed, 9 insertions, 8 deletions
diff --git a/src/include/ndpi_api.h.in b/src/include/ndpi_api.h.in
index 8446c9ca6..8ccb868f8 100644
--- a/src/include/ndpi_api.h.in
+++ b/src/include/ndpi_api.h.in
@@ -975,7 +975,7 @@ extern "C" {
ndpi_patricia_node_t *ndpi_patricia_search_exact(ndpi_patricia_tree_t *patricia, ndpi_prefix_t *prefix);
ndpi_patricia_node_t *ndpi_patricia_search_best(ndpi_patricia_tree_t *patricia, ndpi_prefix_t *prefix);
ndpi_patricia_node_t *ndpi_patricia_lookup(ndpi_patricia_tree_t *patricia, ndpi_prefix_t *prefix);
- size_t ndpi_patricia_walk_inorder(ndpi_patricia_node_t *node, ndpi_void_fn2_t func);
+ size_t ndpi_patricia_walk_inorder(ndpi_patricia_node_t *node, ndpi_void_fn3_t func, void *data);
void ndpi_patricia_remove(ndpi_patricia_tree_t *patricia, ndpi_patricia_node_t *node);
void ndpi_patricia_set_node_u64(ndpi_patricia_node_t *node, u_int64_t value);
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index d2579c0eb..ef3d8f60b 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1597,12 +1597,13 @@ typedef struct _ndpi_prefix_t {
} add;
} ndpi_prefix_t;
-typedef void (*ndpi_void_fn_t)(void *data);
-typedef void (*ndpi_void_fn2_t)(ndpi_prefix_t *prefix, void *data);
-
typedef struct _ndpi_patricia_node_t ndpi_patricia_node_t;
typedef struct _ndpi_patricia_tree_t ndpi_patricia_tree_t;
+typedef void (*ndpi_void_fn_t)(void *data);
+typedef void (*ndpi_void_fn2_t)(ndpi_prefix_t *prefix, void *data);
+typedef void (*ndpi_void_fn3_t)(ndpi_patricia_node_t *node, void *data, void *user_data);
+
/* **************************************** */
typedef struct ndpi_ptree ndpi_ptree_t;
diff --git a/src/lib/third_party/src/ndpi_patricia.c b/src/lib/third_party/src/ndpi_patricia.c
index c0da14da3..c4a574f62 100644
--- a/src/lib/third_party/src/ndpi_patricia.c
+++ b/src/lib/third_party/src/ndpi_patricia.c
@@ -428,22 +428,22 @@ ndpi_patricia_clone (const ndpi_patricia_tree_t * const from)
}
size_t
-ndpi_patricia_walk_inorder(ndpi_patricia_node_t *node, ndpi_void_fn2_t func)
+ndpi_patricia_walk_inorder(ndpi_patricia_node_t *node, ndpi_void_fn3_t func, void *data)
{
size_t n = 0;
assert(func);
if(node->l) {
- n += ndpi_patricia_walk_inorder(node->l, func);
+ n += ndpi_patricia_walk_inorder(node->l, func, data);
}
if(node->prefix) {
- func(node->prefix, node->data);
+ func(node, node->data, data);
n++;
}
if(node->r) {
- n += ndpi_patricia_walk_inorder(node->r, func);
+ n += ndpi_patricia_walk_inorder(node->r, func, data);
}
return n;