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>
This commit is contained in:
Fernando Fernandez Mancera 2025-11-12 19:42:04 +01:00 committed by Florian Westphal
parent f2813fb53b
commit 6cee2d0e7b
4 changed files with 15 additions and 1 deletions

View File

@ -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;

View File

@ -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,

View File

@ -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

View File

@ -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; }
}