summaryrefslogtreecommitdiffstats
path: root/src/cache.c
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2023-06-15 15:24:28 +0200
committerPhil Sutter <phil@nwl.cc>2023-07-13 16:57:56 +0200
commit83e0f4402fb731633975b54ee043820d3cc7ed8e (patch)
tree36fa5f53e74d9e9c457305accd6196140709e4f1 /src/cache.c
parente2431ab955fe453b5fd25a3ab3090fbf4bf3e653 (diff)
Implement 'reset {set,map,element}' commands
All these are used to reset state in set/map elements, i.e. reset the timeout or zero quota and counter values. While 'reset element' expects a (list of) elements to be specified which should be reset, 'reset set/map' will reset all elements in the given set/map. Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'src/cache.c')
-rw-r--r--src/cache.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/cache.c b/src/cache.c
index d908ae0a..5cab2622 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -282,6 +282,11 @@ static unsigned int evaluate_cache_reset(struct cmd *cmd, unsigned int flags,
flags |= NFT_CACHE_SET | NFT_CACHE_FLOWTABLE |
NFT_CACHE_OBJECT | NFT_CACHE_CHAIN;
break;
+ case CMD_OBJ_ELEMENTS:
+ case CMD_OBJ_SET:
+ case CMD_OBJ_MAP:
+ flags |= NFT_CACHE_SET;
+ break;
default:
flags |= NFT_CACHE_TABLE;
break;
@@ -1069,7 +1074,7 @@ static int cache_init_objects(struct netlink_ctx *ctx, unsigned int flags,
continue;
ret = netlink_list_setelems(ctx, &set->handle,
- set);
+ set, false);
if (ret < 0)
goto cache_fails;
}
@@ -1082,7 +1087,7 @@ static int cache_init_objects(struct netlink_ctx *ctx, unsigned int flags,
continue;
ret = netlink_list_setelems(ctx, &set->handle,
- set);
+ set, false);
if (ret < 0)
goto cache_fails;
}