Re: [PATCH net-next] ipip: reject unsupported configurations in fill_forward_path
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: 2026-07-26 09:46:14
quoted hunk ↗ jump to hunk
The ipip fill_forward_path callback currently does not check for configurations that cannot be offloaded to hardware: - Collect metadata (flow-based) tunnels have no fixed destination and rely on per-packet tunnel metadata, so the forward path cannot be pre-computed. - TOS inheritance (parms.iph.tos & 0x1) requires copying the outer TOS from the inner packet at encapsulation time, which is not known during forward path resolution. Return -EOPNOTSUPP for both cases to fall back to the software forwarding path. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- net/ipv4/ipip.c | 6 ++++++ 1 file changed, 6 insertions(+)diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c index d1aa048a6099..0831f6b81717 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c@@ -360,6 +360,12 @@ static int ipip_fill_forward_path(struct net_device_path_ctx *ctx, const struct iphdr *tiph = &tunnel->parms.iph; struct rtable *rt; + if (tunnel->collect_md) + return -EOPNOTSUPP; + + if (tunnel->parms.iph.tos & 0x1) + return -EOPNOTSUPP; + rt = ip_route_output(dev_net(ctx->dev), tiph->daddr, tiph->saddr, inet_dsfield_to_dscp(tiph->tos), tunnel->parms.link, RT_SCOPE_UNIVERSE);
commenting on sashiko's report: https://sashiko.dev/#/patchset/20260725-ipip-fill-forward-path-fix-v1-1-bc69fd3127d5%40kernel.org - This is a pre-existing issue, but should the IPv6 equivalent callback, ip6_tnl_fill_forward_path() in net/ipv6/ip6_tunnel.c, also receive similar checks? - already fixed in the following patch: https://lore.kernel.org/netdev/20260724-ip6ip6-route-lookup-fill_forward_path-v3-1-7b7991538614@kernel.org/ (local) Regards, Lorenzo
--- base-commit: 04026c998c24ac47eb76886b9790c5710b603eb4 change-id: 20260725-ipip-fill-forward-path-fix-543c41000a57 Best regards, -- Lorenzo Bianconi [off-list ref]
Attachments
- signature.asc [application/pgp-signature] 228 bytes