diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-04-15 15:06:07 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-05-02 23:30:35 +0200 |
commit | 56d5d7b0d445f66f7ba42d26d5cc535926c0426b (patch) | |
tree | 7f4f88aaa327ea2d62f4842bc8f1a0d6c2f650dd | |
parent | 560963c4d41e153344850e8c98eaac4f131d05cb (diff) |
cache: add set_cache_del() and use it
Update set_cache_del() from the monitor path to remove sets
in the cache.
Fixes: df48e56e987f ("cache: add hashtable cache for sets")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | include/cache.h | 1 | ||||
-rw-r--r-- | src/cache.c | 5 | ||||
-rw-r--r-- | src/monitor.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/include/cache.h b/include/cache.h index 992f993c..f5b4876a 100644 --- a/include/cache.h +++ b/include/cache.h @@ -70,6 +70,7 @@ struct chain; void chain_cache_add(struct chain *chain, struct table *table); struct chain *chain_cache_find(const struct table *table, const char *name); void set_cache_add(struct set *set, struct table *table); +void set_cache_del(struct set *set); struct set *set_cache_find(const struct table *table, const char *name); struct cache { diff --git a/src/cache.c b/src/cache.c index 1aec1266..03b781bb 100644 --- a/src/cache.c +++ b/src/cache.c @@ -319,6 +319,11 @@ void set_cache_add(struct set *set, struct table *table) cache_add(&set->cache, &table->set_cache, hash); } +void set_cache_del(struct set *set) +{ + cache_del(&set->cache); +} + struct set *set_cache_find(const struct table *table, const char *name) { struct set *set; diff --git a/src/monitor.c b/src/monitor.c index ae288f6c..00cf7d13 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -687,7 +687,7 @@ out: static void netlink_events_cache_delset_cb(struct set *s, void *data) { - list_del(&s->list); + set_cache_del(s); set_free(s); } |