Tunnel object listing support was missing. Now it is possible to list tunnels. Example: sudo nft list tunnel netdev x y table netdev x { tunnel y { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 10 dport 20 ttl 10 erspan { version 1 index 2 } } } Fixes: a937a5dc02db ("src: add tunnel statement and expression support") Signed-off-by: Fernando Fernandez Mancera --- src/cache.c | 4 ++++ src/evaluate.c | 3 +++ src/parser_bison.y | 8 ++++++++ src/scanner.l | 1 - 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/cache.c b/src/cache.c index 09aa20bf..bb005c10 100644 --- a/src/cache.c +++ b/src/cache.c @@ -296,6 +296,10 @@ static unsigned int evaluate_cache_list(struct nft_ctx *nft, struct cmd *cmd, case CMD_OBJ_SYNPROXYS: obj_filter_setup(cmd, &flags, filter, NFT_OBJECT_SYNPROXY); break; + case CMD_OBJ_TUNNEL: + case CMD_OBJ_TUNNELS: + obj_filter_setup(cmd, &flags, filter, NFT_OBJECT_TUNNEL); + break; case CMD_OBJ_RULESET: default: flags |= NFT_CACHE_FULL; diff --git a/src/evaluate.c b/src/evaluate.c index 5a5e6cb5..4be52992 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -6279,6 +6279,8 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd) return cmd_evaluate_list_obj(ctx, cmd, NFT_OBJECT_CT_EXPECT); case CMD_OBJ_SYNPROXY: return cmd_evaluate_list_obj(ctx, cmd, NFT_OBJECT_SYNPROXY); + case CMD_OBJ_TUNNEL: + return cmd_evaluate_list_obj(ctx, cmd, NFT_OBJECT_TUNNEL); case CMD_OBJ_COUNTERS: case CMD_OBJ_QUOTAS: case CMD_OBJ_CT_HELPERS: @@ -6289,6 +6291,7 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd) case CMD_OBJ_SYNPROXYS: case CMD_OBJ_CT_TIMEOUTS: case CMD_OBJ_CT_EXPECTATIONS: + case CMD_OBJ_TUNNELS: 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 52730f71..3ceef794 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -1737,6 +1737,14 @@ list_cmd : TABLE table_spec { $$ = cmd_alloc(CMD_LIST, CMD_OBJ_HOOKS, &$2, &@$, NULL); } + | TUNNELS list_cmd_spec_any + { + $$ = cmd_alloc(CMD_LIST, CMD_OBJ_TUNNELS, &$2, &@$, NULL); + } + | TUNNEL obj_spec close_scope_tunnel + { + $$ = cmd_alloc(CMD_LIST, CMD_OBJ_TUNNEL, &$2, &@$, NULL); + } ; basehook_device_name : DEVICE STRING diff --git a/src/scanner.l b/src/scanner.l index 8085c93b..df8e536b 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -404,7 +404,6 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) "maps" { return MAPS; } "secmarks" { return SECMARKS; } "synproxys" { return SYNPROXYS; } - "tunnel" { return TUNNEL; } "tunnels" { return TUNNELS; } "hooks" { return HOOKS; } } -- 2.51.0