summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFernando Fernandez Mancera <fmancera@suse.de>2025-11-12 19:42:04 +0100
committerFlorian Westphal <fw@strlen.de>2025-11-15 12:53:42 +0100
commit6cee2d0e7b4dc3274728ae6681d87e356ddcf31a (patch)
treef99caf890f7a66a325816117ff9de80095d7d16a /src
parentf2813fb53b00d6edde8bc9409712820c45de4c1e (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.c4
-rw-r--r--src/evaluate.c3
-rw-r--r--src/parser_bison.y8
-rw-r--r--src/scanner.l1
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; }
}