]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
cache: add set_cache_del() and use it
authorPablo Neira Ayuso <pablo@netfilter.org>
Thu, 15 Apr 2021 13:06:07 +0000 (15:06 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sun, 2 May 2021 21:30:35 +0000 (23:30 +0200)
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
src/cache.c
src/monitor.c

index 992f993c0667f8e539f2d4e5153c8885647126ec..f5b4876a4d402bdb6415840cf54078bf5caff0d9 100644 (file)
@@ -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 {
index 1aec12666d52ab190c686b078c1b7e0f476397cf..03b781bb4834117f81b87d5ac0c1443dc540bda5 100644 (file)
@@ -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;
index ae288f6cb212e4af8d10c41b4dd863b1c41f367f..00cf7d1350341e6f2bc2e1461149f1e1b2770e0a 100644 (file)
@@ -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);
 }