From nobody Tue May 31 19:34:25 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C23391B65559; Tue, 31 May 2022 19:34:28 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (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-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LCMsw5Bdfz3LN0; Tue, 31 May 2022 19:34:28 +0000 (UTC) (envelope-from kp@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654025668; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bdAGOAosjWtHxLzd0iLtnF6Xg+J0S7PjdOdcdY16Mpo=; b=qxWbhFbp4oS3Fh7icXEln+iR7uDvd99r2kCtLko8Sl9yedFEhGW8FGoVVC1JLdfJp8N+Qw zAE4JZi64kMbz37R5gmTfnDZ+rBtqSNfN8cPKoD6WCL62bgcdrVdCTiQO9AcIs9Orblb0y EgXLi7W0vevEZnfebcKGehx5x/0Sjq6lMV+mE7czP2VE6xYM4+uL6Z/h8OptCuMc+y6kOA juLMEuAYy2k7Kif1dSPRrv/Qh7WoL396QXdSmLF9/REsbxcXvE1k3n/BVP8EFGMrkGLaSK 29USGXUeA0S1XghMybxZdoFeK7KqEjSxlNPtUBJdswHZqfJ82z7pIDdeTwzCdg== Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mx1.codepro.be", Issuer "R3" (verified OK)) (Authenticated sender: kp) by smtp.freebsd.org (Postfix) with ESMTPSA id 78FE82E67F; Tue, 31 May 2022 19:34:28 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: by venus.codepro.be (Postfix, authenticated sender kp) id 4080D416B1; Tue, 31 May 2022 21:34:26 +0200 (CEST) From: Kristof Provost To: "Alexander V. Chernikov" Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: d6cd20cc5c47 - main - netinet6: fix ndp proxying Date: Tue, 31 May 2022 21:34:25 +0200 X-Mailer: MailMate (1.14r5852) Message-ID: <9BB758A5-D0C4-476E-ACD4-A27C98276F7B@FreeBSD.org> In-Reply-To: <202205301054.24UAs4m6066923@gitrepo.freebsd.org> References: <202205301054.24UAs4m6066923@gitrepo.freebsd.org> List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1654025668; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bdAGOAosjWtHxLzd0iLtnF6Xg+J0S7PjdOdcdY16Mpo=; b=Kbmory6zSN3RS9eROHLQ/otP+Z0xy+qGOd0dTd6KuCfy3XG9zPvbRcDY0pOnPd9CAXmv1O 07o64yi6r3otbNmVrQs7YnNFsMK24RAKoKxfidnd6k7U1rs3Ma8vbFBHT1Q4bOt0CjoEfc 5Ayzf4XASzeOrZwxzVLJH4ca1LhZnpCygnFVDp6Npuk6hFTKnmNFr9tbighRgdc+Y8QlX+ mCYIwnvmE02xpYFeRui5Fky0hNkOSJo0B5yzHlMcHlj9tmIBypv50gle4dEDbYORIYXv3w 2w7sDQPpm/7MkzwN2THFRucM0fSdG+ROTNZPxGihoY9Axz6CB02b51fKBBshbQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1654025668; a=rsa-sha256; cv=none; b=yHF1xlx4owT7HrUa/63ZxySwqM6zapx97L4W3ocmgHYXGw0rV4MG8bO0ypenLXpL2l++1v Iz7CsDrJBuVdWlOD9gGOGntr443isxV2ifpGlxnpFXQ9Sa+bkoMW7JstGjMotZq3IpRFNb dlFZ7L4kcgFbPYkxwhVZv7lOLuK70/QNDlvxB5sge04lXAV297bjBF0ZTPyFfq6Fbxd2QX iYbCgIIL8CMuwREvsYJ/rSIsn9ZAjBDYJ2Oq7Tb3YUx9vP5Jq6qsPDkNNr+j58WxMcdHZu JntWOZDTBY7C2LMTJcDK5xF3jyTQB+hKkGP9kolxW/9vD6zGmTRTxvz0SoLC3w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N On 30 May 2022, at 12:54, Alexander V. Chernikov wrote: > The branch main has been updated by melifaro: > > URL: https://cgit.FreeBSD.org/src/commit/?id=3Dd6cd20cc5c475e8bbf257ac1= 474ff490ae4dcab6 > > commit d6cd20cc5c475e8bbf257ac1474ff490ae4dcab6 > Author: KUROSAWA Takahiro > AuthorDate: 2022-05-30 07:51:15 +0000 > Commit: Alexander V. Chernikov > CommitDate: 2022-05-30 10:53:33 +0000 > > netinet6: fix ndp proxying > > We could insert proxy NDP entries by the ndp command, but the host > with proxy ndp entries had not responded to Neighbor Solicitations.= > Change the following points for proxy NDP to work as expected: > * join solicited-node multicast addresses for proxy NDP entries > in order to receive Neighbor Solicitations. > * look up proxy NDP entries not on the routing table but on the > link-level address table when receiving Neighbor Solicitations. > > Reviewed By: melifaro > Differential Revision: https://reviews.freebsd.org/D35307 > MFC after: 2 weeks > --- > sys/net/if.c | 10 ++ > sys/net/if_llatbl.c | 48 +++++++++ > sys/net/if_llatbl.h | 12 ++- > sys/netinet6/in6.c | 111 ++++++++++++++++++-- > sys/netinet6/in6_var.h | 2 + > sys/netinet6/nd6_nbr.c | 57 ++++++----- > tests/sys/netinet6/Makefile | 3 +- > tests/sys/netinet6/proxy_ndp.sh | 222 ++++++++++++++++++++++++++++++++= ++++++++ > 8 files changed, 425 insertions(+), 40 deletions(-) > > diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c > index a39f7734e0ba..857e05c0f112 100644 > --- a/sys/netinet6/in6.c > +++ b/sys/netinet6/in6.c > @@ -2621,3 +2643,72 @@ in6_sin_2_v4mapsin6_in_sock(struct sockaddr **na= m) > free(*nam, M_SONAME); > *nam =3D (struct sockaddr *)sin6_p; > } > + > +/* > + * Join/leave the solicited multicast groups for proxy NDP entries. > + */ > +static void > +in6_join_proxy_ndp_mc(struct ifnet *ifp, const struct in6_addr *dst) > +{ > + struct in6_multi *inm; > + struct in6_addr mltaddr; > + char ip6buf[INET6_ADDRSTRLEN]; > + int error; > + > + if (in6_solicited_node_maddr(&mltaddr, ifp, dst) !=3D 0) > + return; /* error logged in in6_solicited_node_maddr. */ > + > + error =3D in6_joingroup(ifp, &mltaddr, NULL, &inm, 0); > + if (error !=3D 0) { > + nd6log((LOG_WARNING, > + "%s: in6_joingroup failed for %s on %s (errno=3D%d)\n", > + __func__, ip6_sprintf(ip6buf, &mltaddr), if_name(ifp), > + error)); > + } > +} > + > +static void > +in6_leave_proxy_ndp_mc(struct ifnet *ifp, const struct in6_addr *dst) > +{ > + struct epoch_tracker et; > + struct in6_multi *inm; > + struct in6_addr mltaddr; > + char ip6buf[INET6_ADDRSTRLEN]; > + > + if (in6_solicited_node_maddr(&mltaddr, ifp, dst) !=3D 0) > + return; /* error logged in in6_solicited_node_maddr. */ > + > + NET_EPOCH_ENTER(et); > + inm =3D in6m_lookup(ifp, &mltaddr); > + NET_EPOCH_EXIT(et); > + if (inm !=3D NULL) > + in6_leavegroup(inm, NULL); > + else > + nd6log((LOG_WARNING, "%s: in6m_lookup failed for %s on %s\n", > + __func__, ip6_sprintf(ip6buf, &mltaddr), if_name(ifp))); > +} > + > +static bool > +in6_lle_match_pub(struct lltable *llt, struct llentry *lle, void *farg= ) > +{ > + return ((lle->la_flags & LLE_PUB) !=3D 0); > +} > + > +void > +in6_purge_proxy_ndp(struct ifnet *ifp) > +{ > + struct lltable *llt; > + bool need_purge; > + > + llt =3D LLTABLE6(ifp); This panics here when I kldunload pfsync. This fixes it for me: https://reviews.freebsd.org/D35374 Kristof