@@ -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 {
@@ -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;
@@ -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);
}
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> --- include/cache.h | 1 + src/cache.c | 5 +++++ src/monitor.c | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-)