From b301f2ed198804015c4434f925c75e0bd224c4ef Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Tue, 7 Apr 2020 13:47:54 +0200 Subject: nft: cache: Improve fake cache integration With NFT_CL_FAKE being highest cache level while at the same time __nft_build_cache() treating it equal to NFT_CL_TABLES, no special handling for fake cache is required anymore. Signed-off-by: Phil Sutter --- iptables/nft-cache.c | 16 +++------------- iptables/nft-cache.h | 1 - iptables/xtables-restore.c | 2 +- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/iptables/nft-cache.c b/iptables/nft-cache.c index e0c13870..2c6a1708 100644 --- a/iptables/nft-cache.c +++ b/iptables/nft-cache.c @@ -442,6 +442,8 @@ __nft_build_cache(struct nft_handle *h, enum nft_cache_level level, if (h->cache_level >= NFT_CL_TABLES) fetch_table_cache(h); + if (h->cache_level == NFT_CL_FAKE) + return; if (h->cache_level >= NFT_CL_CHAINS) fetch_chain_cache(h, t, chain); if (h->cache_level >= NFT_CL_SETS) @@ -450,15 +452,6 @@ __nft_build_cache(struct nft_handle *h, enum nft_cache_level level, fetch_rule_cache(h, t); } -void nft_fake_cache(struct nft_handle *h) -{ - fetch_table_cache(h); - - h->cache_level = NFT_CL_FAKE; - h->cache_init = true; - mnl_genid_get(h, &h->nft_genid); -} - static void __nft_flush_cache(struct nft_handle *h) { if (!h->cache_index) { @@ -570,10 +563,7 @@ void nft_rebuild_cache(struct nft_handle *h) h->cache_init = false; } - if (h->cache_level == NFT_CL_FAKE) - nft_fake_cache(h); - else - __nft_build_cache(h, h->cache_level, NULL, NULL, NULL); + __nft_build_cache(h, h->cache_level, NULL, NULL, NULL); } void nft_cache_build(struct nft_handle *h) diff --git a/iptables/nft-cache.h b/iptables/nft-cache.h index 8c63d8d5..01dd15e1 100644 --- a/iptables/nft-cache.h +++ b/iptables/nft-cache.h @@ -4,7 +4,6 @@ struct nft_handle; void nft_cache_level_set(struct nft_handle *h, int level); -void nft_fake_cache(struct nft_handle *h); void nft_rebuild_cache(struct nft_handle *h); void nft_release_cache(struct nft_handle *h); void flush_chain_cache(struct nft_handle *h, const char *tablename); diff --git a/iptables/xtables-restore.c b/iptables/xtables-restore.c index 0b0febdf..28ef366c 100644 --- a/iptables/xtables-restore.c +++ b/iptables/xtables-restore.c @@ -261,7 +261,7 @@ void xtables_restore_parse(struct nft_handle *h, char buffer[10240] = {}; if (!h->noflush) - nft_fake_cache(h); + nft_cache_level_set(h, NFT_CL_FAKE); line = 0; while (fgets(buffer, sizeof(buffer), p->in)) { -- cgit v1.2.3