Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Apr 2026 13:13:20 +0000
From:      Siva Mahadevan <siva@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 60000d94b4e8 - main - tests/pf/nat: endpoint_independent: wait for tcpdump to start
Message-ID:  <69ea1af0.1e037.100e6738@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by siva:

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

commit 60000d94b4e85caf931230a8a7ae86888db00d01
Author:     Siva Mahadevan <siva@FreeBSD.org>
AuthorDate: 2026-04-22 17:20:38 +0000
Commit:     Siva Mahadevan <siva@FreeBSD.org>
CommitDate: 2026-04-23 13:11:08 +0000

    tests/pf/nat: endpoint_independent: wait for tcpdump to start
    
    This matches pflog.sh tests and fixes flaky tests found in CI[0].
    
    [0] https://ci.freebsd.org/job/FreeBSD-main-amd64-test/28126/testReport/junit/sys.netpfil.pf/nat/endpoint_independent_exhaust/
    
    PR:     289628
    Reviewed by:    glebius
    Approved by:    lwhsu (mentor)
    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D56145
---
 tests/sys/netpfil/pf/nat.sh | 44 ++++++++++++++++++++++++++++----------------
 1 file changed, 28 insertions(+), 16 deletions(-)

diff --git a/tests/sys/netpfil/pf/nat.sh b/tests/sys/netpfil/pf/nat.sh
index 600688a8dbc9..6d68b62b07c1 100644
--- a/tests/sys/netpfil/pf/nat.sh
+++ b/tests/sys/netpfil/pf/nat.sh
@@ -162,20 +162,26 @@ endpoint_independent_common()
 	pft_set_rules nat "${1}"
 
 	jexec server1 tcpdump -i ${epair_server1}a -w ${PWD}/server1.pcap \
-		--immediate-mode $filter &
+		--immediate-mode $filter -c 1 &
 	server1tcppid="$!"
 	jexec server2 tcpdump -i ${epair_server2}a -w ${PWD}/server2.pcap \
-		--immediate-mode $filter &
+		--immediate-mode $filter -c 1 &
 	server2tcppid="$!"
 
-	# send out multiple packets
-	for i in $(seq 1 10); do
-		echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242 -w 0
-		echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242 -w 0
+	# wait for tcpdumps to fully attach and block in bpfread()
+	for p in ${server1tcppid} ${server2tcppid}; do
+		while [ $(ps -o wchan ${p} | tr "\n" " " | cut -w -f 2) != "bpf" ]; do
+			sleep 0.01;
+		done
 	done
 
-	kill $server1tcppid
-	kill $server2tcppid
+	echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242
+	echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242
+
+	for p in ${server1tcppid} ${server2tcppid}; do
+		wait ${p}
+		atf_check_equal 0 $?
+	done
 
 	tuple_server1=$(tcpdump -r ${PWD}/server1.pcap | awk '{addr=$3} END {print addr}')
 	tuple_server2=$(tcpdump -r ${PWD}/server2.pcap | awk '{addr=$3} END {print addr}')
@@ -201,20 +207,26 @@ endpoint_independent_common()
 	pft_set_rules nat "${2}"
 
 	jexec server1 tcpdump -i ${epair_server1}a -w ${PWD}/server1.pcap \
-		--immediate-mode $filter &
+		--immediate-mode $filter -c 1 &
 	server1tcppid="$!"
 	jexec server2 tcpdump -i ${epair_server2}a -w ${PWD}/server2.pcap \
-		--immediate-mode $filter &
+		--immediate-mode $filter -c 1 &
 	server2tcppid="$!"
 
-	# send out multiple packets,  sometimes one fails to go through
-	for i in $(seq 1 10); do
-		echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242 -w 0
-		echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242 -w 0
+	# wait for tcpdumps to fully attach and block in bpfread()
+	for p in ${server1tcppid} ${server2tcppid}; do
+		while [ $(ps -o wchan ${p} | tr "\n" " " | cut -w -f 2) != "bpf" ]; do
+			sleep 0.01;
+		done
 	done
 
-	kill $server1tcppid
-	kill $server2tcppid
+	echo "ping" | jexec client nc -u 198.51.100.32 1234 -p 4242
+	echo "ping" | jexec client nc -u 198.51.100.22 1234 -p 4242
+
+	for p in ${server1tcppid} ${server2tcppid}; do
+		wait ${p}
+		atf_check_equal 0 $?
+	done
 
 	tuple_server1=$(tcpdump -r ${PWD}/server1.pcap | awk '{addr=$3} END {print addr}')
 	tuple_server2=$(tcpdump -r ${PWD}/server2.pcap | awk '{addr=$3} END {print addr}')


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69ea1af0.1e037.100e6738>