Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05DCAC38142 for ; Tue, 31 Jan 2023 03:47:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230430AbjAaDrG (ORCPT ); Mon, 30 Jan 2023 22:47:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230272AbjAaDq7 (ORCPT ); Mon, 30 Jan 2023 22:46:59 -0500 Received: from gate2.alliedtelesis.co.nz (gate2.alliedtelesis.co.nz [IPv6:2001:df5:b000:5::4]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19ED3EFBF for ; Mon, 30 Jan 2023 19:46:58 -0800 (PST) Received: from svr-chch-seg1.atlnz.lc (mmarshal3.atlnz.lc [10.32.18.43]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by gate2.alliedtelesis.co.nz (Postfix) with ESMTPS id BED6E2C0108; Tue, 31 Jan 2023 16:46:54 +1300 (NZDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alliedtelesis.co.nz; s=mail181024; t=1675136814; bh=U9KFztAChA6oGuRtVHcip1cs8BS/t3P2PSFd6k0wIRI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1bEjIej9laiKD/KpeJEi2oph3a0HF7YBdFydbEQETLDEfJ04PfKICs95qYBEQsfe+ 29tiruVcqIVGK2RHFGdnOr9K81ewmQa9JRy4dkKLhme5LcB93Y8wh1vjNdgIsWysCX cffQIkU86pOdpf98450zFCTu3GX1M6xLe4luZDgm5sNLGGmgLp1qPbpJcxsvUQpzvg qSgDBhuHhK7JbO/iV3Wz5IYjtOAkvCTUgVs97GlKg98VNa0zi7/mpPtqQz2ePhlrFu 4uEdLiM4KaAyy/CiZ2K4HWUB6SUE22NYvM22cjtQOA/UC3o8BKu+tIyAr4CDMyOh98 s679ledbrxEMQ== Received: from pat.atlnz.lc (Not Verified[10.32.16.33]) by svr-chch-seg1.atlnz.lc with Trustwave SEG (v8,2,6,11305) id ; Tue, 31 Jan 2023 16:46:54 +1300 Received: from thomaswi-dl.ws.atlnz.lc (thomaswi-dl.ws.atlnz.lc [10.33.25.46]) by pat.atlnz.lc (Postfix) with ESMTP id 7971913EE8F; Tue, 31 Jan 2023 16:46:54 +1300 (NZDT) Received: by thomaswi-dl.ws.atlnz.lc (Postfix, from userid 1719) id 7819C3E089B; Tue, 31 Jan 2023 16:46:54 +1300 (NZDT) From: Thomas Winter To: davem@davemloft.net, yoshfuji@linux-ipv6.org, dsahern@kernel.org, pabeni@redhat.com, edumazet@google.com, kuba@kernel.org, a@unstable.cc, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Thomas Winter Subject: [PATCH v5 2/2] ip/ip6_gre: Fix non-point-to-point tunnel not generating IPv6 link local address Date: Tue, 31 Jan 2023 16:46:46 +1300 Message-Id: <20230131034646.237671-3-Thomas.Winter@alliedtelesis.co.nz> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230131034646.237671-1-Thomas.Winter@alliedtelesis.co.nz> References: <20230131034646.237671-1-Thomas.Winter@alliedtelesis.co.nz> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SEG-SpamProfiler-Analysis: v=2.3 cv=a6lOCnaF c=1 sm=1 tr=0 a=KLBiSEs5mFS1a/PbTCJxuA==:117 a=RvmDmJFTN0MA:10 a=grpyvFInbdX5ElKdMEcA:9 X-SEG-SpamProfiler-Score: 0 x-atlnz-ls: pat Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We recently found that our non-point-to-point tunnels were not generating any IPv6 link local address and instead generating an IPv6 compat address, breaking IPv6 communication on the tunnel. Previously, addrconf_gre_config always would call addrconf_addr_gen and generate a EUI64 link local address for the tunnel. Then commit e5dd729460ca changed the code path so that add_v4_addrs is called but this only generates a compat IPv6 address for non-point-to-point tunnels. I assume the compat address is specifically for SIT tunnels so have kept that only for SIT - GRE tunnels now always generate link local addresses. Fixes: e5dd729460ca ("ip/ip6_gre: use the same logic as SIT interfaces wh= en computing v6LL address") Signed-off-by: Thomas Winter --- net/ipv6/addrconf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index f4ba68e096ac..faa47f9ea73a 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3127,17 +3127,17 @@ static void add_v4_addrs(struct inet6_dev *idev) offset =3D sizeof(struct in6_addr) - 4; memcpy(&addr.s6_addr32[3], idev->dev->dev_addr + offset, 4); =20 - if (idev->dev->flags&IFF_POINTOPOINT) { + if (!(idev->dev->flags & IFF_POINTOPOINT) && idev->dev->type =3D=3D ARP= HRD_SIT) { + scope =3D IPV6_ADDR_COMPATv4; + plen =3D 96; + pflags |=3D RTF_NONEXTHOP; + } else { if (idev->cnf.addr_gen_mode =3D=3D IN6_ADDR_GEN_MODE_NONE) return; =20 addr.s6_addr32[0] =3D htonl(0xfe800000); scope =3D IFA_LINK; plen =3D 64; - } else { - scope =3D IPV6_ADDR_COMPATv4; - plen =3D 96; - pflags |=3D RTF_NONEXTHOP; } =20 if (addr.s6_addr32[3]) { --=20 2.39.0