diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-04-29 22:09:15 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-05-02 23:30:35 +0200 |
commit | 45a84088ecbdd7403de849e169fe2f57f34a8bf1 (patch) | |
tree | e36851f77d717209b9befc6d584f77c91d0ebc69 /src/monitor.c | |
parent | eac934393c18c094da3dba2131340f3a82459d97 (diff) |
cache: add hashtable cache for object
This patch adds a hashtable for object lookups.
This patch also splits table->objs in two:
- Sets that reside in the cache are stored in the new
tables->cache_obj and tables->cache_obj_ht.
- Set that defined via command line / ruleset file reside in
tables->obj.
Sets in the cache (already in the kernel) are not placed in the
table->objs list.
By keeping separated lists, objs defined via command line / ruleset file
can be added to cache.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/monitor.c')
-rw-r--r-- | src/monitor.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/monitor.c b/src/monitor.c index dc3f0848..ae288f6c 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -477,7 +477,7 @@ static int netlink_events_obj_cb(const struct nlmsghdr *nlh, int type, nlo = netlink_obj_alloc(nlh); obj = netlink_delinearize_obj(monh->ctx, nlo); - if (obj == NULL) { + if (!obj) { nftnl_obj_free(nlo); return MNL_CB_ERROR; } @@ -727,7 +727,7 @@ static void netlink_events_cache_addobj(struct netlink_mon_handler *monh, goto out; } - obj_add_hash(obj, t); + obj_cache_add(obj, t); out: nftnl_obj_free(nlo); } @@ -756,13 +756,13 @@ static void netlink_events_cache_delobj(struct netlink_mon_handler *monh, goto out; } - obj = obj_lookup(t, name, type); + obj = obj_cache_find(t, name, type); if (obj == NULL) { fprintf(stderr, "W: Unable to find object in cache\n"); goto out; } - list_del(&obj->list); + obj_cache_del(obj); obj_free(obj); out: nftnl_obj_free(nlo); |