diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-04-29 20:04:55 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-05-02 23:30:35 +0200 |
commit | 797b4f343fe248ca7a516b68d93895121e574c15 (patch) | |
tree | 6565f3cf5f77d31cdbcf8976c4fb02cda3a5da2b /src/cache.c | |
parent | 3392883f4566030853184f261d3ec1a62a7b4c1d (diff) |
src: pass chain name to chain_cache_find()
You can identify chains through the unique handle in deletions, update
this interface to take a string instead of the handle to prepare for
the introduction of 64-bit handle chain lookups.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/cache.c')
-rw-r--r-- | src/cache.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/cache.c b/src/cache.c index f032171a..b38f3b84 100644 --- a/src/cache.c +++ b/src/cache.c @@ -244,15 +244,14 @@ void chain_cache_add(struct chain *chain, struct table *table) list_add_tail(&chain->cache_list, &table->cache_chain); } -struct chain *chain_cache_find(const struct table *table, - const struct handle *handle) +struct chain *chain_cache_find(const struct table *table, const char *name) { struct chain *chain; uint32_t hash; - hash = djb_hash(handle->chain.name) % NFT_CACHE_HSIZE; + hash = djb_hash(name) % NFT_CACHE_HSIZE; list_for_each_entry(chain, &table->cache_chain_ht[hash], cache_hlist) { - if (!strcmp(chain->handle.chain.name, handle->chain.name)) + if (!strcmp(chain->handle.chain.name, name)) return chain; } @@ -421,7 +420,7 @@ static int cache_init_objects(struct netlink_ctx *ctx, unsigned int flags) if (flags & NFT_CACHE_RULE_BIT) { ret = netlink_list_rules(ctx, &table->handle); list_for_each_entry_safe(rule, nrule, &ctx->list, list) { - chain = chain_cache_find(table, &rule->handle); + chain = chain_cache_find(table, rule->handle.chain.name); if (!chain) chain = chain_binding_lookup(table, rule->handle.chain.name); |