diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cache.c | 4 | ||||
-rw-r--r-- | src/rule.c | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/cache.c b/src/cache.c index 0c28a28d..05f0d68e 100644 --- a/src/cache.c +++ b/src/cache.c @@ -138,8 +138,10 @@ unsigned int cache_evaluate(struct nft_ctx *nft, struct list_head *cmds) case CMD_GET: flags = evaluate_cache_get(cmd, flags); break; - case CMD_LIST: case CMD_RESET: + flags |= NFT_CACHE_TABLE; + break; + case CMD_LIST: case CMD_EXPORT: case CMD_MONITOR: flags |= NFT_CACHE_FULL; @@ -2582,7 +2582,8 @@ static int do_command_reset(struct netlink_ctx *ctx, struct cmd *cmd) ret = netlink_reset_objs(ctx, cmd, type, dump); list_for_each_entry_safe(obj, next, &ctx->list, list) { table = table_lookup(&obj->handle, &ctx->nft->cache); - list_move(&obj->list, &table->objs); + if (!obj_lookup(table, obj->handle.obj.name, obj->type)) + list_move(&obj->list, &table->objs); } if (ret < 0) return ret; |