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/netlink.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/netlink.c')
-rw-r--r-- | src/netlink.c | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/src/netlink.c b/src/netlink.c index 12352557..6323fe4e 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -1517,25 +1517,6 @@ static int list_obj_cb(struct nftnl_obj *nls, void *arg) return 0; } -int netlink_list_objs(struct netlink_ctx *ctx, const struct handle *h) -{ - struct nftnl_obj_list *obj_cache; - int err; - - obj_cache = mnl_nft_obj_dump(ctx, h->family, - h->table.name, NULL, 0, true, false); - if (obj_cache == NULL) { - if (errno == EINTR) - return -1; - - return 0; - } - - err = nftnl_obj_list_foreach(obj_cache, list_obj_cb, ctx); - nftnl_obj_list_free(obj_cache); - return err; -} - int netlink_reset_objs(struct netlink_ctx *ctx, const struct cmd *cmd, uint32_t type, bool dump) { |