diff options
author | Alfredo Cardigliano <cardigliano@ntop.org> | 2021-02-23 10:23:52 +0100 |
---|---|---|
committer | Alfredo Cardigliano <cardigliano@ntop.org> | 2021-02-23 10:23:52 +0100 |
commit | 888ddfcd1716390a477a5364929ba99b1051b592 (patch) | |
tree | 5fd74b72833935bacd98aecc62f1e2c696e655da /src | |
parent | f8e83f7e35ae76473d55359c250eed76c3cb6077 (diff) |
Update ndpi_patricia_walk_inorder API
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_api.h.in | 2 | ||||
-rw-r--r-- | src/include/ndpi_typedefs.h | 7 | ||||
-rw-r--r-- | src/lib/third_party/src/ndpi_patricia.c | 8 |
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; |