mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 02:21:39 -04:00
ipip: reject unsupported configurations in fill_forward_path
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> Link: https://patch.msgid.link/20260725-ipip-fill-forward-path-fix-v1-1-bc69fd3127d5@kernel.org Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
7d34154b64
commit
d25c5beea9
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user