diff options
author | Florian Westphal <fw@strlen.de> | 2023-07-28 21:04:13 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2023-07-31 15:04:57 +0200 |
commit | a8ff324dc64fd76f7d218d3d94c5885250951258 (patch) | |
tree | d5ef01980340ebe3046f3a7d8fb59d40514a09e7 /src | |
parent | 8beafab74c391130fbb9111bfccab8613644e3b9 (diff) |
ct expectation: fix 'list object x' vs. 'list objects in table' confusion
Just like "ct timeout", "ct expectation" is in need of the same fix,
we get segfault on "nft list ct expectation table t", if table t exists.
This is the exact same pattern as resolved for "ct timeout" in commit
1d2e22fc0521 ("ct timeout: fix 'list object x' vs. 'list objects in table' confusion").
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/cache.c | 1 | ||||
-rw-r--r-- | src/evaluate.c | 1 | ||||
-rw-r--r-- | src/parser_bison.y | 2 | ||||
-rw-r--r-- | src/rule.c | 1 |
4 files changed, 4 insertions, 1 deletions
diff --git a/src/cache.c b/src/cache.c index 5cab2622..b6a7e194 100644 --- a/src/cache.c +++ b/src/cache.c @@ -377,6 +377,7 @@ static int nft_handle_validate(const struct cmd *cmd, struct list_head *msgs) case CMD_OBJ_CT_TIMEOUT: case CMD_OBJ_CT_TIMEOUTS: case CMD_OBJ_CT_EXPECT: + case CMD_OBJ_CT_EXPECTATIONS: if (h->table.name && strlen(h->table.name) > NFT_NAME_MAXLEN) { loc = &h->table.location; diff --git a/src/evaluate.c b/src/evaluate.c index 33e4ac93..8fc1ca7e 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -5425,6 +5425,7 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd) case CMD_OBJ_SECMARKS: case CMD_OBJ_SYNPROXYS: case CMD_OBJ_CT_TIMEOUTS: + case CMD_OBJ_CT_EXPECTATIONS: if (cmd->handle.table.name == NULL) return 0; if (!table_cache_find(&ctx->nft->cache.table_cache, diff --git a/src/parser_bison.y b/src/parser_bison.y index 553ddf97..ef5011c1 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -4770,7 +4770,7 @@ ct_obj_type : HELPER { $$ = NFT_OBJECT_CT_HELPER; } ct_cmd_type : HELPERS { $$ = CMD_OBJ_CT_HELPERS; } | TIMEOUT { $$ = CMD_OBJ_CT_TIMEOUTS; } - | EXPECTATION { $$ = CMD_OBJ_CT_EXPECT; } + | EXPECTATION { $$ = CMD_OBJ_CT_EXPECTATIONS; } ; ct_l4protoname : TCP close_scope_tcp { $$ = IPPROTO_TCP; } @@ -2360,6 +2360,7 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd) case CMD_OBJ_CT_TIMEOUTS: return do_list_obj(ctx, cmd, NFT_OBJECT_CT_TIMEOUT); case CMD_OBJ_CT_EXPECT: + case CMD_OBJ_CT_EXPECTATIONS: return do_list_obj(ctx, cmd, NFT_OBJECT_CT_EXPECT); case CMD_OBJ_LIMIT: case CMD_OBJ_LIMITS: |