Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Oct 2025 18:42:35 GMT
From:      Dag-Erling =?utf-8?Q?Sm=C3=B8rgrav?= <des@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: ec6ad605ecea - main - rc: Improve netwait DAD logic
Message-ID:  <202510051842.595IgZiu096589@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by des:

URL: https://cgit.FreeBSD.org/src/commit/?id=ec6ad605ecea5c4a76d2e744df0265cc3f3a01b9

commit ec6ad605ecea5c4a76d2e744df0265cc3f3a01b9
Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2025-10-05 18:40:39 +0000
Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2025-10-05 18:42:33 +0000

    rc: Improve netwait DAD logic
    
    Disable if IPv6 is not supported, and instead of 10 seconds, default to
    one more than the value of net.inet6.ip6.dad_count.
    
    Fixes:          5ead817c3b7a ("rc: Teach netwait to wait for DAD")
    Reviewed by:    bz
    Differential Revision:  https://reviews.freebsd.org/D52905
---
 libexec/rc/rc.conf       |  3 ++-
 libexec/rc/rc.d/netwait  | 10 ++++++----
 share/man/man5/rc.conf.5 |  9 ++++++---
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf
index 2589e2614c35..c776a815003c 100644
--- a/libexec/rc/rc.conf
+++ b/libexec/rc/rc.conf
@@ -501,7 +501,8 @@ netwait_timeout="60"		# Total number of seconds to perform pings.
 #netwait_if=""			# Wait for active link on each intf in this list.
 netwait_if_timeout="30"		# Total number of seconds to monitor link state.
 netwait_dad="NO"		# Wait for DAD to complete
-netwait_dad_timeout="10"	# Total number of seconds to wait for DAD.
+netwait_dad_timeout=""		# Total number of seconds to wait for DAD, zero
+				# or unset to autodetect
 
 ### Miscellaneous network options: ###
 icmp_bmcastecho="NO"	# respond to broadcast ping packets
diff --git a/libexec/rc/rc.d/netwait b/libexec/rc/rc.d/netwait
index b609440a2e4e..05874552cf1c 100755
--- a/libexec/rc/rc.d/netwait
+++ b/libexec/rc/rc.d/netwait
@@ -36,13 +36,15 @@ netwait_start()
 		err 1 "Nothing to wait for"
 	fi
 
-	if ! [ "${netwait_if_timeout}" -ge 1 ]; then
+	if ! [ "${netwait_if_timeout:=0}" -ge 1 ]; then
 		err 1 "netwait_if_timeout must be >= 1"
 	fi
-	if ! [ "${netwait_dad_timeout}" -ge 1 ]; then
-		err 1 "netwait_dad_timeout must be >= 1"
+	if ! check_kern_features inet6; then
+		netwait_dad="NO"
+	elif ! [ "${netwait_dad_timeout:=0}" -ge 1 ]; then
+		netwait_dad_timeout=$(($(sysctl -n net.inet6.ip6.dad_count)+1))
 	fi
-	if ! [ "${netwait_timeout}" -ge 1 ]; then
+	if ! [ "${netwait_timeout:=0}" -ge 1 ]; then
 		err 1 "netwait_timeout must be >= 1"
 	fi
 
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index c0048f27c740..edbfa937f8df 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd October 2, 2025
+.Dd October 5, 2025
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -4618,8 +4618,11 @@ Set to
 to enable waiting for DAD to complete.
 .It Va netwait_dad_timeout
 .Pq Vt int
-Indicates the total number of seconds to wait for DAD to complete.
-The default is 10.
+Unset by default.
+Indicates the maximum number of seconds to wait for DAD to complete.
+If zero or unset, the timeout will be one more than the value of the
+.Va net.inet6.ip6.dad_count
+sysctl variable.
 .It Va rctl_enable
 .Pq Vt bool
 If set to



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510051842.595IgZiu096589>