diff options
| author | Fernando Fernandez Mancera <fmancera@suse.de> | 2025-11-12 19:42:04 +0100 |
|---|---|---|
| committer | Florian Westphal <fw@strlen.de> | 2025-11-15 12:53:42 +0100 |
| commit | 6cee2d0e7b4dc3274728ae6681d87e356ddcf31a (patch) | |
| tree | f99caf890f7a66a325816117ff9de80095d7d16a /src | |
| parent | f2813fb53b00d6edde8bc9409712820c45de4c1e (diff) | |
tunnel: add missing tunnel object list support
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 <fmancera@suse.de>
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src')
| -rw-r--r-- | src/cache.c | 4 | ||||
| -rw-r--r-- | src/evaluate.c | 3 | ||||
| -rw-r--r-- | src/parser_bison.y | 8 | ||||
| -rw-r--r-- | src/scanner.l | 1 |
4 files changed, 15 insertions, 1 deletions
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; } } |
