From nobody Tue Jul 15 05:13:00 2025 X-Original-To: dev-commits-src-main@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 4bh6lK2p9cz61xBj; Tue, 15 Jul 2025 05:13:01 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bh6lK0l5Nz3mLN; Tue, 15 Jul 2025 05:13:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752556381; 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=XhANFNSOKN0aC7J0yoGvAYmjqE2GkL8PspMCuoF3qBU=; b=v1qCzBn8RGIDlxf+ytIMI5O8CB/eGxw8Xqm59NE8ppcz5Xz6PasL00pFRttF97ZBdpPlOF KRCeQ71595usSo8uxYp4ph741Wp9w9g2LBT8TMvuL/Rac6ES2O2H68FF7mbkiA6nq7UMlu IP5Co22waODu9//PjeZKND8RPjzl2tEuPnzSlXFJf7fy91SP/kscQO1xoLmm0PHgj1o71/ rJj8t3odDxciTvE0Xr6E5gOWcjIePMS6fGuwGf5nJSGiRRdB66RMMU7ODzWK889Ns4yZBu NgVkD/8aHn+DEAfL11gekPuWhgShi73B2PuvdYsn5xALIknjCEEnufKcSYnIzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752556381; 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=XhANFNSOKN0aC7J0yoGvAYmjqE2GkL8PspMCuoF3qBU=; b=oFjwoQThCX86K2q3cMytTay2qFDZ3r1KNd0ZOHcfaf1qiwV2WdotCFOC1nJK7URXSLOzix 11ULPHnEfGjfnn3HFW99tOJvYqbrHgjGxcTWVTxk3P5A/M6S4t80Wv0PhAp2W5ehq2nZPs j7Awu5D6avEiUzlXFn314My6gLg2Es27huUni2G8wP/IaCfH/hUU2JW+jv6m1Yq+8iJsJC OPCqsa/rNNYtNuJY9/nB6HQ4kPfhjO0W7IcuDD1gcuEx/r4nKWafB2lY31Qeu+oAAOsusA +vErEncuSNNpj7KkKdPUgrPsp0jWx07EqzUHbccQh9BV3AQ98FbomqGBf9Slwg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1752556381; a=rsa-sha256; cv=none; b=F6bEQELQWf8g2kkKO4yZyO5MYC++2euQ02Xx/cBNrKRwdD/AflEMjndBYpc9tDMWty32iA h7fq0z8AUOTSybONuNFSSFXi8w4jdt0mx8ehjrdKvmwz9tstU0Vcwg/iC75QSYBTCmNLLW wGNrqEuh7zNfU2wZZhnTSKlOlst2iF3pyiiyi+ho0riygUbJ4JVzxzyr4eSWmRpPI9uQ8q wA6FFr1LNFQ0qNx2foXOlolWKhbtG2gJfymbgGEcTb4u3vf+QOWHzfJytn/IYHSSnrJSt0 G5dYjYORYZOqrRNFaLFlcWb5YfuOYckIff/mmxsT+O24lK6qZYiM2puopVVRXw== 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 4bh6lJ6tt0z9B5; Tue, 15 Jul 2025 05:13:00 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56F5D0D9079956; Tue, 15 Jul 2025 05:13:00 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56F5D058079953; Tue, 15 Jul 2025 05:13:00 GMT (envelope-from git) Date: Tue, 15 Jul 2025 05:13:00 GMT Message-Id: <202507150513.56F5D058079953@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Lexi Winter Subject: git: 7d4673d3a439 - main - netinet6: allow binding a raw socket to an anycast address List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ivy X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7d4673d3a439d1394df6bed0f9a50235eab5630f Auto-Submitted: auto-generated The branch main has been updated by ivy: URL: https://cgit.FreeBSD.org/src/commit/?id=7d4673d3a439d1394df6bed0f9a50235eab5630f commit 7d4673d3a439d1394df6bed0f9a50235eab5630f Author: Lexi Winter AuthorDate: 2025-07-15 05:11:40 +0000 Commit: Lexi Winter CommitDate: 2025-07-15 05:12:45 +0000 netinet6: allow binding a raw socket to an anycast address Raw sockets have a separate check for this in rip6_bind() that was missed in the previous change. This fixes e.g. 'ping -S' using an anycast address. Fixes: ca4b046105f6 ("netinet6: allow binding to anycast addresses") Reviewed by: tuexen, kevans, des (previous version) Approved by: kevans (mentor) Differential Revision: https://reviews.freebsd.org/D50438 --- sys/netinet6/raw_ip6.c | 3 +-- tests/sys/netinet6/addr6.sh | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c index 0379ef7c789a..c90a1213bd66 100644 --- a/sys/netinet6/raw_ip6.c +++ b/sys/netinet6/raw_ip6.c @@ -765,8 +765,7 @@ rip6_bind(struct socket *so, struct sockaddr *nam, struct thread *td) } if (ifa != NULL && ((struct in6_ifaddr *)ifa)->ia6_flags & - (IN6_IFF_ANYCAST|IN6_IFF_NOTREADY| - IN6_IFF_DETACHED|IN6_IFF_DEPRECATED)) { + (IN6_IFF_NOTREADY|IN6_IFF_DETACHED|IN6_IFF_DEPRECATED)) { NET_EPOCH_EXIT(et); return (EADDRNOTAVAIL); } diff --git a/tests/sys/netinet6/addr6.sh b/tests/sys/netinet6/addr6.sh index 38e4bb152240..6fd66d5aa0c7 100755 --- a/tests/sys/netinet6/addr6.sh +++ b/tests/sys/netinet6/addr6.sh @@ -39,7 +39,32 @@ addr6_invalid_addr_cleanup() vnet_cleanup } +atf_test_case "anycast_raw_addr" "cleanup" +anycast_raw_addr_head() +{ + atf_set descr "a raw socket can bind to an anycast address" + atf_set require.user root +} + +anycast_raw_addr_body() +{ + # lo0 needs to be up in the test jail for this test to work + ifconfig lo0 up + + netif=$(ifconfig lo create) + echo $netif >netif + atf_check -s exit:0 ifconfig $netif inet6 2001:db8::1/128 up + atf_check -s exit:0 ifconfig $netif inet6 2001:db8::2/128 anycast + atf_check -s exit:0 -o ignore ping -c1 -S 2001:db8::2 2001:db8::1 +} + +anycast_raw_addr_cleanup() +{ + ifconfig $(cat netif) destroy +} + atf_init_test_cases() { atf_add_test_case "addr6_invalid_addr" + atf_add_test_case "anycast_raw_addr" }