]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
seg6: fix seg6 lwtunnel output redirect for L2 reduced encap mode
authorAndrea Mayer <andrea.mayer@uniroma2.it>
Sat, 18 Apr 2026 16:28:38 +0000 (18:28 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 23 Apr 2026 03:32:38 +0000 (20:32 -0700)
When SEG6_IPTUN_MODE_L2ENCAP_RED (L2ENCAP_RED) was introduced, the
condition in seg6_build_state() that excludes L2 encap modes from
setting LWTUNNEL_STATE_OUTPUT_REDIRECT was not updated to account for
the new mode.
As a consequence, L2ENCAP_RED routes incorrectly trigger seg6_output()
on the output path, where the packet is silently dropped because
skb_mac_header_was_set() fails on L3 packets.

Extend the check to also exclude L2ENCAP_RED, consistent with L2ENCAP.

Fixes: 13f0296be8ec ("seg6: add support for SRv6 H.L2Encaps.Red behavior")
Cc: stable@vger.kernel.org
Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
Reviewed-by: Justin Iurman <justin.iurman@gmail.com>
Link: https://patch.msgid.link/20260418162838.31979-1-andrea.mayer@uniroma2.it
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/seg6_iptunnel.c

index 97b50d9b13658e318ccf670ef24e00c7237de482..9b64343ebad6866b79aad86b5e6c1ca5e58345af 100644 (file)
@@ -746,7 +746,8 @@ static int seg6_build_state(struct net *net, struct nlattr *nla,
        newts->type = LWTUNNEL_ENCAP_SEG6;
        newts->flags |= LWTUNNEL_STATE_INPUT_REDIRECT;
 
-       if (tuninfo->mode != SEG6_IPTUN_MODE_L2ENCAP)
+       if (tuninfo->mode != SEG6_IPTUN_MODE_L2ENCAP &&
+           tuninfo->mode != SEG6_IPTUN_MODE_L2ENCAP_RED)
                newts->flags |= LWTUNNEL_STATE_OUTPUT_REDIRECT;
 
        newts->headroom = seg6_lwt_headroom(tuninfo);