From df7b56c0f706eced1ad12152a208971fbe518d5b Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 14 Nov 2019 15:45:07 +0100 Subject: cache: Reduce caching for get command Introduce a function to distinguish which command object was given and request only the necessary bits to have sets and their elements available for 'get element' command. Signed-off-by: Phil Sutter Acked-by: Pablo Neira Ayuso --- src/cache.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/cache.c b/src/cache.c index a778650a..0c28a28d 100644 --- a/src/cache.c +++ b/src/cache.c @@ -63,6 +63,21 @@ static unsigned int evaluate_cache_del(struct cmd *cmd, unsigned int flags) return flags; } +static unsigned int evaluate_cache_get(struct cmd *cmd, unsigned int flags) +{ + switch (cmd->obj) { + case CMD_OBJ_SETELEM: + flags |= NFT_CACHE_TABLE | + NFT_CACHE_SET | + NFT_CACHE_SETELEM; + break; + default: + break; + } + + return flags; +} + static unsigned int evaluate_cache_flush(struct cmd *cmd, unsigned int flags) { switch (cmd->obj) { @@ -121,6 +136,8 @@ unsigned int cache_evaluate(struct nft_ctx *nft, struct list_head *cmds) flags = evaluate_cache_del(cmd, flags); break; case CMD_GET: + flags = evaluate_cache_get(cmd, flags); + break; case CMD_LIST: case CMD_RESET: case CMD_EXPORT: -- cgit v1.2.3