]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
cache: always set on NFT_CACHE_REFRESH for listing
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 25 Oct 2021 21:32:34 +0000 (23:32 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 26 Oct 2021 22:37:34 +0000 (00:37 +0200)
This flag forces a refresh of the cache on list commands, several
object types are missing this flag, this fixes nft --interactive
mode.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/cache.c

index c602f93a3ec67edc9409fbddd489080b931958d6..3cbf99e8e124ef40b9449e062d6856a671ea957e 100644 (file)
@@ -136,7 +136,7 @@ static unsigned int evaluate_cache_list(struct nft_ctx *nft, struct cmd *cmd,
                if (filter && cmd->handle.table.name)
                        filter->table = cmd->handle.table.name;
 
-               flags |= NFT_CACHE_FULL | NFT_CACHE_REFRESH;
+               flags |= NFT_CACHE_FULL;
                break;
        case CMD_OBJ_SET:
        case CMD_OBJ_MAP:
@@ -145,9 +145,9 @@ static unsigned int evaluate_cache_list(struct nft_ctx *nft, struct cmd *cmd,
                        filter->set = cmd->handle.set.name;
                }
                if (nft_output_terse(&nft->output))
-                       flags |= (NFT_CACHE_FULL & ~NFT_CACHE_SETELEM) | NFT_CACHE_REFRESH;
+                       flags |= (NFT_CACHE_FULL & ~NFT_CACHE_SETELEM);
                else
-                       flags |= NFT_CACHE_FULL | NFT_CACHE_REFRESH;
+                       flags |= NFT_CACHE_FULL;
                break;
        case CMD_OBJ_CHAINS:
                flags |= NFT_CACHE_TABLE | NFT_CACHE_CHAIN;
@@ -161,13 +161,14 @@ static unsigned int evaluate_cache_list(struct nft_ctx *nft, struct cmd *cmd,
                break;
        case CMD_OBJ_RULESET:
                if (nft_output_terse(&nft->output))
-                       flags |= (NFT_CACHE_FULL & ~NFT_CACHE_SETELEM) | NFT_CACHE_REFRESH;
+                       flags |= (NFT_CACHE_FULL & ~NFT_CACHE_SETELEM);
                else
-                       flags |= NFT_CACHE_FULL | NFT_CACHE_REFRESH;
+                       flags |= NFT_CACHE_FULL;
        default:
-               flags |= NFT_CACHE_FULL | NFT_CACHE_REFRESH;
+               flags |= NFT_CACHE_FULL;
                break;
        }
+       flags |= NFT_CACHE_REFRESH;
 
        return flags;
 }