linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] selftest: add selftest for anycast notifications
@ 2025-06-18 10:40 Yuyang Huang
  2025-06-18 18:20 ` Simon Horman
  0 siblings, 1 reply; 3+ messages in thread
From: Yuyang Huang @ 2025-06-18 10:40 UTC (permalink / raw)
  To: Yuyang Huang
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Simon Horman, Shuah Khan, netdev, linux-kselftest, linux-kernel

This commit adds a new kernel selftest to verify RTNLGRP_IPV6_ACADDR
notifications. The test works by adding/removing a dummy interface,
enabling packet forwarding, and then confirming that user space can
correctly receive anycast notifications.

The test relies on the iproute2 version to be 6.13+.

Tested by the following command:
$ vng -v --user root --cpus 16 -- \
make -C tools/testing/selftests TARGETS=net
TEST_PROGS=rtnetlink_notification.sh \
TEST_GEN_PROGS="" run_tests

Signed-off-by: Yuyang Huang <yuyanghuang@google.com>
---
 .../selftests/net/rtnetlink_notification.sh   | 52 +++++++++++++++++--
 1 file changed, 47 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/net/rtnetlink_notification.sh b/tools/testing/selftests/net/rtnetlink_notification.sh
index 39c1b815bbe4..2d938861197c 100755
--- a/tools/testing/selftests/net/rtnetlink_notification.sh
+++ b/tools/testing/selftests/net/rtnetlink_notification.sh
@@ -8,9 +8,11 @@
 
 ALL_TESTS="
 	kci_test_mcast_addr_notification
+	kci_test_anycast_addr_notification
 "
 
 source lib.sh
+test_dev="test-dummy1"
 
 kci_test_mcast_addr_notification()
 {
@@ -18,12 +20,11 @@ kci_test_mcast_addr_notification()
 	local tmpfile
 	local monitor_pid
 	local match_result
-	local test_dev="test-dummy1"
 
 	tmpfile=$(mktemp)
 	defer rm "$tmpfile"
 
-	ip monitor maddr > $tmpfile &
+	ip monitor maddr > "$tmpfile" &
 	monitor_pid=$!
 	defer kill_process "$monitor_pid"
 
@@ -32,7 +33,7 @@ kci_test_mcast_addr_notification()
 	if [ ! -e "/proc/$monitor_pid" ]; then
 		RET=$ksft_skip
 		log_test "mcast addr notification: iproute2 too old"
-		return $RET
+		return "$RET"
 	fi
 
 	ip link add name "$test_dev" type dummy
@@ -53,7 +54,48 @@ kci_test_mcast_addr_notification()
 		RET=$ksft_fail
 	fi
 	log_test "mcast addr notification: Expected 4 matches, got $match_result"
-	return $RET
+	return "$RET"
+}
+
+kci_test_anycast_addr_notification()
+{
+	RET=0
+	local tmpfile
+	local monitor_pid
+	local match_result
+
+	tmpfile=$(mktemp)
+	defer rm "$tmpfile"
+
+	ip monitor acaddress > "$tmpfile" &
+	monitor_pid=$!
+	defer kill_process "$monitor_pid"
+	sleep 1
+
+	if [ ! -e "/proc/$monitor_pid" ]; then
+		RET=$ksft_skip
+		log_test "anycast addr notification: iproute2 too old"
+		return "$RET"
+	fi
+
+	ip link add name "$test_dev" type dummy
+	check_err $? "failed to add dummy interface"
+	ip link set "$test_dev" up
+	check_err $? "failed to set dummy interface up"
+	sysctl -qw net.ipv6.conf."$test_dev".forwarding=1
+	ip link del dev "$test_dev"
+	check_err $? "Failed to delete dummy interface"
+	sleep 1
+
+	# There should be 2 line matches as follows.
+	# 9: dummy2    inet6 any fe80:: scope global
+	# Deleted 9: dummy2    inet6 any fe80:: scope global
+	match_result=$(grep -cE "$test_dev.*(fe80::)" "$tmpfile")
+	if [ "$match_result" -ne 2 ]; then
+		RET=$ksft_fail
+	fi
+	log_test "anycast addr notification: Expected 2 matches, got $match_result"
+	return "$RET"
 }
 
 #check for needed privileges
@@ -67,4 +109,4 @@ require_command ip
 
 tests_run
 
-exit $EXIT_STATUS
+exit "$EXIT_STATUS"
-- 
2.50.0.rc2.761.g2dc52ea45b-goog


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH net-next] selftest: add selftest for anycast notifications
  2025-06-18 10:40 [PATCH net-next] selftest: add selftest for anycast notifications Yuyang Huang
@ 2025-06-18 18:20 ` Simon Horman
  2025-06-18 23:55   ` Yuyang Huang
  0 siblings, 1 reply; 3+ messages in thread
From: Simon Horman @ 2025-06-18 18:20 UTC (permalink / raw)
  To: Yuyang Huang
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Shuah Khan, netdev, linux-kselftest, linux-kernel

On Wed, Jun 18, 2025 at 07:40:25PM +0900, Yuyang Huang wrote:
> This commit adds a new kernel selftest to verify RTNLGRP_IPV6_ACADDR
> notifications. The test works by adding/removing a dummy interface,
> enabling packet forwarding, and then confirming that user space can
> correctly receive anycast notifications.
> 
> The test relies on the iproute2 version to be 6.13+.
> 
> Tested by the following command:
> $ vng -v --user root --cpus 16 -- \
> make -C tools/testing/selftests TARGETS=net
> TEST_PROGS=rtnetlink_notification.sh \
> TEST_GEN_PROGS="" run_tests
> 
> Signed-off-by: Yuyang Huang <yuyanghuang@google.com>
> ---
>  .../selftests/net/rtnetlink_notification.sh   | 52 +++++++++++++++++--
>  1 file changed, 47 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/testing/selftests/net/rtnetlink_notification.sh b/tools/testing/selftests/net/rtnetlink_notification.sh

...

> @@ -18,12 +20,11 @@ kci_test_mcast_addr_notification()
>  	local tmpfile
>  	local monitor_pid
>  	local match_result
> -	local test_dev="test-dummy1"
>  
>  	tmpfile=$(mktemp)
>  	defer rm "$tmpfile"
>  
> -	ip monitor maddr > $tmpfile &
> +	ip monitor maddr > "$tmpfile" &
>  	monitor_pid=$!
>  	defer kill_process "$monitor_pid"
>  
> @@ -32,7 +33,7 @@ kci_test_mcast_addr_notification()
>  	if [ ! -e "/proc/$monitor_pid" ]; then
>  		RET=$ksft_skip
>  		log_test "mcast addr notification: iproute2 too old"
> -		return $RET
> +		return "$RET"
>  	fi
>  
>  	ip link add name "$test_dev" type dummy

> @@ -53,7 +54,48 @@ kci_test_mcast_addr_notification()
>  		RET=$ksft_fail
>  	fi
>  	log_test "mcast addr notification: Expected 4 matches, got $match_result"
> -	return $RET
> +	return "$RET"
> +}

...

> @@ -67,4 +109,4 @@ require_command ip
>  
>  tests_run
>  
> -exit $EXIT_STATUS
> +exit "$EXIT_STATUS"

Hi,

While I like the changes above (that I haven't trimmed-out)
these seem to be clean-ups that aren't strictly related
to the subject of this patch. IOW, they don't belong in this patch
(but could be a separate patch).

-- 
pw-bot: changes-requested

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net-next] selftest: add selftest for anycast notifications
  2025-06-18 18:20 ` Simon Horman
@ 2025-06-18 23:55   ` Yuyang Huang
  0 siblings, 0 replies; 3+ messages in thread
From: Yuyang Huang @ 2025-06-18 23:55 UTC (permalink / raw)
  To: Simon Horman
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Shuah Khan, netdev, linux-kselftest, linux-kernel

Thanks for the review feedback, I will move the clean up to a seaparte patch.

On Thu, Jun 19, 2025 at 3:20 AM Simon Horman <horms@kernel.org> wrote:
>
> On Wed, Jun 18, 2025 at 07:40:25PM +0900, Yuyang Huang wrote:
> > This commit adds a new kernel selftest to verify RTNLGRP_IPV6_ACADDR
> > notifications. The test works by adding/removing a dummy interface,
> > enabling packet forwarding, and then confirming that user space can
> > correctly receive anycast notifications.
> >
> > The test relies on the iproute2 version to be 6.13+.
> >
> > Tested by the following command:
> > $ vng -v --user root --cpus 16 -- \
> > make -C tools/testing/selftests TARGETS=net
> > TEST_PROGS=rtnetlink_notification.sh \
> > TEST_GEN_PROGS="" run_tests
> >
> > Signed-off-by: Yuyang Huang <yuyanghuang@google.com>
> > ---
> >  .../selftests/net/rtnetlink_notification.sh   | 52 +++++++++++++++++--
> >  1 file changed, 47 insertions(+), 5 deletions(-)
> >
> > diff --git a/tools/testing/selftests/net/rtnetlink_notification.sh b/tools/testing/selftests/net/rtnetlink_notification.sh
>
> ...
>
> > @@ -18,12 +20,11 @@ kci_test_mcast_addr_notification()
> >       local tmpfile
> >       local monitor_pid
> >       local match_result
> > -     local test_dev="test-dummy1"
> >
> >       tmpfile=$(mktemp)
> >       defer rm "$tmpfile"
> >
> > -     ip monitor maddr > $tmpfile &
> > +     ip monitor maddr > "$tmpfile" &
> >       monitor_pid=$!
> >       defer kill_process "$monitor_pid"
> >
> > @@ -32,7 +33,7 @@ kci_test_mcast_addr_notification()
> >       if [ ! -e "/proc/$monitor_pid" ]; then
> >               RET=$ksft_skip
> >               log_test "mcast addr notification: iproute2 too old"
> > -             return $RET
> > +             return "$RET"
> >       fi
> >
> >       ip link add name "$test_dev" type dummy
>
> > @@ -53,7 +54,48 @@ kci_test_mcast_addr_notification()
> >               RET=$ksft_fail
> >       fi
> >       log_test "mcast addr notification: Expected 4 matches, got $match_result"
> > -     return $RET
> > +     return "$RET"
> > +}
>
> ...
>
> > @@ -67,4 +109,4 @@ require_command ip
> >
> >  tests_run
> >
> > -exit $EXIT_STATUS
> > +exit "$EXIT_STATUS"
>
> Hi,
>
> While I like the changes above (that I haven't trimmed-out)
> these seem to be clean-ups that aren't strictly related
> to the subject of this patch. IOW, they don't belong in this patch
> (but could be a separate patch).
>
> --
> pw-bot: changes-requested

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-06-18 23:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-18 10:40 [PATCH net-next] selftest: add selftest for anycast notifications Yuyang Huang
2025-06-18 18:20 ` Simon Horman
2025-06-18 23:55   ` Yuyang Huang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).