summaryrefslogtreecommitdiffstats
path: root/src/libnftables.c
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2017-10-23 17:33:17 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2017-10-24 15:23:55 +0200
commit2a3f699d99898c50c51987f8fb64cd5b11ad0dd6 (patch)
tree63a383caa67527ec57f52009e73d3048b9048cf1 /src/libnftables.c
parent49900d448ac95ecabd038a9936d467d6e37aacec (diff)
libnftables: Introduce nft_ctx_flush_cache()
This allows an application to explicitly flush caches associated with a given nft context, as seen in cli_complete(). Note that this is a bit inconsistent in that it releases the global interface cache, but nft_ctx_free() does the same so at least it's not a regression. Note that there is no need for explicit cache update routine since cache is populated during command execution depending on whether it is needed or not. Signed-off-by: Phil Sutter <phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/libnftables.c')
-rw-r--r--src/libnftables.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libnftables.c b/src/libnftables.c
index 9bc51dd8..d34e5275 100644
--- a/src/libnftables.c
+++ b/src/libnftables.c
@@ -147,13 +147,18 @@ struct nft_ctx *nft_ctx_new(uint32_t flags)
return ctx;
}
+void nft_ctx_flush_cache(struct nft_ctx *ctx)
+{
+ iface_cache_release();
+ cache_release(&ctx->cache);
+}
+
void nft_ctx_free(struct nft_ctx *ctx)
{
if (ctx->nf_sock)
netlink_close_sock(ctx->nf_sock);
- iface_cache_release();
- cache_release(&ctx->cache);
+ nft_ctx_flush_cache(ctx);
xfree(ctx);
nft_exit();
}