summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2021-04-15 15:06:07 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2021-05-02 23:30:35 +0200
commit56d5d7b0d445f66f7ba42d26d5cc535926c0426b (patch)
tree7f4f88aaa327ea2d62f4842bc8f1a0d6c2f650dd
parent560963c4d41e153344850e8c98eaac4f131d05cb (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.h1
-rw-r--r--src/cache.c5
-rw-r--r--src/monitor.c2
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);
}