From nobody Mon Feb 07 18:56:39 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 394A719B9645; Mon, 7 Feb 2022 18:56:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JswNS18lDz3CLn; Mon, 7 Feb 2022 18:56:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644260200; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tit2/Tj8EOVyF9H3cPjl10oGmtHg+jdEKqihgOGi0EE=; b=DicbIXL3QFn5NfGJHqTLRCQLyxak52WJ5YEZyPPuxpML19rlTzM1ufSf6xiUenFKZ6b5Di C52l3XAhIerK9mjRiXhjOM6F9Sj8BNbsDHmZyRhDe4rhS688nguVflFlpmOPCucBniBRcP yzeVWTXWqtryTa1rIOcjNFu8HCz6g4muVF+cnzpJdYjJnAxjeTdeBZizbwga4cQ63DRbBE 0Twm895JbZNLIiiFJeOovsnC6yMQgirLbv4yJ0BIv/YY0u9LH9Bn8gUG6iih+CWhkxBxp3 Dh9v3GwTxV3ev/2a/p2+ZbDk48FAURoEKrPG1fzrLwwT72nlQNa5gLwHjZaaaA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EDAA32957; Mon, 7 Feb 2022 18:56:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 217IudL1089179; Mon, 7 Feb 2022 18:56:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 217IudaL089178; Mon, 7 Feb 2022 18:56:39 GMT (envelope-from git) Date: Mon, 7 Feb 2022 18:56:39 GMT Message-Id: <202202071856.217IudaL089178@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Gleb Smirnoff Subject: git: d2e24c54ef83 - stable/13 - nd6: use CARP link level address in SLLAO for NS sent out 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; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: d2e24c54ef8311a053eddb05a0ce336daf890abb Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1644260200; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=tit2/Tj8EOVyF9H3cPjl10oGmtHg+jdEKqihgOGi0EE=; b=QvHomQnY+ocVSV63foY+9tlQ+vHM1juHddKwdnr5/CBJqh9i49Xx43hw4XdnIjuo4MPt5V vExtp8uKrggbkqtaxpF6j3mXBkJZg9tbls16endlANaYs4UJRf7zfvKYO5ev9FysitcMju r6lkhd1hn/7S2EfHT/yRFZZH9KzUUoRb5gFOuiREjRVzXnFsFLZhpK+AZQnsapw7SNwJPv GOoaDwGM92SbgWnh/PkKhUiKWfLQP5gBF+jHMQpBmreKQKqAis6hlnAB3zqtej+Ns8pdBM 5UU2OGu8IBprSRgf4F0VoQiDQ6cwNInWdlnXQff9EjJALzlptcE9ZFVyNxAGnw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1644260200; a=rsa-sha256; cv=none; b=lwaAxer5PcJNPkRtW/yPCwqS5NMWvm7Ikk0PMYybv36Hb/rY+J0SyuqzkufWZpFj/Nwtpn mubvG1vF+rqibvxl1AOQMNPZcOPhey5YTDwOc9RCFEkUYTvoHEhmpQP8p+6otycy16qlg0 xjn+wXHp2P5Lir2Vev0tFF0vA/IlWpXAVj8Pu9UIgiZTyCytt62p7krUiVkDrufq9LDrGg p4CAybws/NptP423Wfhmg/7LZFWnEQ3NoLmcoyR0C+P8uxvX+atc0ygi2fssQMhEz5owfe SfcDcPcLRaWv1Q+5QAr+DbyMHFy525f+593eFby7sn6E0yKxujqyVckhs7IXnQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=d2e24c54ef8311a053eddb05a0ce336daf890abb commit d2e24c54ef8311a053eddb05a0ce336daf890abb Author: Thomas Steen Rasmussen AuthorDate: 2022-01-25 05:02:47 +0000 Commit: Gleb Smirnoff CommitDate: 2022-02-07 18:55:54 +0000 nd6: use CARP link level address in SLLAO for NS sent out When sending an NS, check if we are using a IPv6 CARP address and if we do, then put proper CARP link level address into ND_OPT_SOURCE_LINKADDR option and also put PACKET_TAG_CARP tag on the packet. The latter will enforce CARP link level address at the data link layer too, which might be necessary for broken implementations. The code really follows what NA sending code has been doing since introduction of carp(4). While here, bring to style(9) the whole block of code. PR: 193280 Differential revision: https://reviews.freebsd.org/D33858 (cherry picked from commit bc6abdd97e951b54294d331698317a607246255d) --- sys/netinet6/nd6_nbr.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/sys/netinet6/nd6_nbr.c b/sys/netinet6/nd6_nbr.c index 2100700733ad..0c6dd9e0361f 100644 --- a/sys/netinet6/nd6_nbr.c +++ b/sys/netinet6/nd6_nbr.c @@ -411,7 +411,6 @@ nd6_ns_output_fib(struct ifnet *ifp, const struct in6_addr *saddr6, struct ip6_moptions im6o; int icmp6len; int maxlen; - caddr_t mac; NET_EPOCH_ASSERT(); @@ -534,19 +533,30 @@ nd6_ns_output_fib(struct ifnet *ifp, const struct in6_addr *saddr6, * Multicast NS MUST add one add the option * Unicast NS SHOULD add one add the option */ - if (nonce == NULL && (mac = nd6_ifptomac(ifp))) { - int optlen = sizeof(struct nd_opt_hdr) + ifp->if_addrlen; - struct nd_opt_hdr *nd_opt = (struct nd_opt_hdr *)(nd_ns + 1); - /* 8 byte alignments... */ - optlen = (optlen + 7) & ~7; - - m->m_pkthdr.len += optlen; - m->m_len += optlen; - icmp6len += optlen; - bzero((caddr_t)nd_opt, optlen); - nd_opt->nd_opt_type = ND_OPT_SOURCE_LINKADDR; - nd_opt->nd_opt_len = optlen >> 3; - bcopy(mac, (caddr_t)(nd_opt + 1), ifp->if_addrlen); + if (nonce == NULL) { + struct nd_opt_hdr *nd_opt; + char *mac; + int optlen; + + mac = NULL; + if (ifp->if_carp) + mac = (*carp_macmatch6_p)(ifp, m, &ip6->ip6_src); + if (mac == NULL) + mac = nd6_ifptomac(ifp); + + if (mac != NULL) { + nd_opt = (struct nd_opt_hdr *)(nd_ns + 1); + optlen = sizeof(struct nd_opt_hdr) + ifp->if_addrlen; + /* 8 byte alignments... */ + optlen = (optlen + 7) & ~7; + m->m_pkthdr.len += optlen; + m->m_len += optlen; + icmp6len += optlen; + bzero(nd_opt, optlen); + nd_opt->nd_opt_type = ND_OPT_SOURCE_LINKADDR; + nd_opt->nd_opt_len = optlen >> 3; + bcopy(mac, nd_opt + 1, ifp->if_addrlen); + } } /* * Add a Nonce option (RFC 3971) to detect looped back NS messages.