public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default
@ 2026-01-13 15:37 Ricardo B. Marlière
  2026-01-15  9:05 ` Ido Schimmel
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Ricardo B. Marlière @ 2026-01-13 15:37 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Simon Horman, Shuah Khan, David Ahern
  Cc: netdev, linux-kselftest, linux-kernel, Fernando Fernandez Mancera,
	Ricardo B. Marlière

Currently, the test breaks if the SUT already has a default route
configured for IPv6. Fix by avoiding the use of the default namespace.

Fixes: 4ed591c8ab44 ("net/ipv6: Allow onlink routes to have a device mismatch if it is the default route")
Suggested-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Ricardo B. Marlière <rbm@suse.com>
---
Changes in v2:
- Don't use the default namespace, instead of simply increasing the metric
- Link to v1: https://lore.kernel.org/r/20251218-rbm-selftests-net-fib-onlink-v1-1-96302a5555c3@suse.com
---
 tools/testing/selftests/net/fib-onlink-tests.sh | 71 +++++++++++--------------
 1 file changed, 30 insertions(+), 41 deletions(-)

diff --git a/tools/testing/selftests/net/fib-onlink-tests.sh b/tools/testing/selftests/net/fib-onlink-tests.sh
index ec2d6ceb1f08..c01be076b210 100755
--- a/tools/testing/selftests/net/fib-onlink-tests.sh
+++ b/tools/testing/selftests/net/fib-onlink-tests.sh
@@ -120,7 +120,7 @@ log_subsection()
 
 run_cmd()
 {
-	local cmd="$*"
+	local cmd="$1"
 	local out
 	local rc
 
@@ -145,7 +145,7 @@ get_linklocal()
 	local pfx
 	local addr
 
-	addr=$(${pfx} ip -6 -br addr show dev ${dev} | \
+	addr=$(${pfx} ${IP} -6 -br addr show dev ${dev} | \
 	awk '{
 		for (i = 3; i <= NF; ++i) {
 			if ($i ~ /^fe80/)
@@ -173,58 +173,48 @@ setup()
 
 	set -e
 
-	# create namespace
-	setup_ns PEER_NS
+	# create namespaces
+	setup_ns ns1
+	IP="ip -netns $ns1"
+	setup_ns ns2
 
 	# add vrf table
-	ip li add ${VRF} type vrf table ${VRF_TABLE}
-	ip li set ${VRF} up
-	ip ro add table ${VRF_TABLE} unreachable default metric 8192
-	ip -6 ro add table ${VRF_TABLE} unreachable default metric 8192
+	${IP} li add ${VRF} type vrf table ${VRF_TABLE}
+	${IP} li set ${VRF} up
+	${IP} ro add table ${VRF_TABLE} unreachable default metric 8192
+	${IP} -6 ro add table ${VRF_TABLE} unreachable default metric 8192
 
 	# create test interfaces
-	ip li add ${NETIFS[p1]} type veth peer name ${NETIFS[p2]}
-	ip li add ${NETIFS[p3]} type veth peer name ${NETIFS[p4]}
-	ip li add ${NETIFS[p5]} type veth peer name ${NETIFS[p6]}
-	ip li add ${NETIFS[p7]} type veth peer name ${NETIFS[p8]}
+	${IP} li add ${NETIFS[p1]} type veth peer name ${NETIFS[p2]}
+	${IP} li add ${NETIFS[p3]} type veth peer name ${NETIFS[p4]}
+	${IP} li add ${NETIFS[p5]} type veth peer name ${NETIFS[p6]}
+	${IP} li add ${NETIFS[p7]} type veth peer name ${NETIFS[p8]}
 
 	# enslave vrf interfaces
 	for n in 5 7; do
-		ip li set ${NETIFS[p${n}]} vrf ${VRF}
+		${IP} li set ${NETIFS[p${n}]} vrf ${VRF}
 	done
 
 	# add addresses
 	for n in 1 3 5 7; do
-		ip li set ${NETIFS[p${n}]} up
-		ip addr add ${V4ADDRS[p${n}]}/24 dev ${NETIFS[p${n}]}
-		ip addr add ${V6ADDRS[p${n}]}/64 dev ${NETIFS[p${n}]} nodad
+		${IP} li set ${NETIFS[p${n}]} up
+		${IP} addr add ${V4ADDRS[p${n}]}/24 dev ${NETIFS[p${n}]}
+		${IP} addr add ${V6ADDRS[p${n}]}/64 dev ${NETIFS[p${n}]} nodad
 	done
 
 	# move peer interfaces to namespace and add addresses
 	for n in 2 4 6 8; do
-		ip li set ${NETIFS[p${n}]} netns ${PEER_NS} up
-		ip -netns ${PEER_NS} addr add ${V4ADDRS[p${n}]}/24 dev ${NETIFS[p${n}]}
-		ip -netns ${PEER_NS} addr add ${V6ADDRS[p${n}]}/64 dev ${NETIFS[p${n}]} nodad
+		${IP} li set ${NETIFS[p${n}]} netns ${ns2} up
+		ip -netns $ns2 addr add ${V4ADDRS[p${n}]}/24 dev ${NETIFS[p${n}]}
+		ip -netns $ns2 addr add ${V6ADDRS[p${n}]}/64 dev ${NETIFS[p${n}]} nodad
 	done
 
-	ip -6 ro add default via ${V6ADDRS[p3]/::[0-9]/::64}
-	ip -6 ro add table ${VRF_TABLE} default via ${V6ADDRS[p7]/::[0-9]/::64}
+	${IP} -6 ro add default via ${V6ADDRS[p3]/::[0-9]/::64}
+	${IP} -6 ro add table ${VRF_TABLE} default via ${V6ADDRS[p7]/::[0-9]/::64}
 
 	set +e
 }
 
-cleanup()
-{
-	# make sure we start from a clean slate
-	cleanup_ns ${PEER_NS} 2>/dev/null
-	for n in 1 3 5 7; do
-		ip link del ${NETIFS[p${n}]} 2>/dev/null
-	done
-	ip link del ${VRF} 2>/dev/null
-	ip ro flush table ${VRF_TABLE}
-	ip -6 ro flush table ${VRF_TABLE}
-}
-
 ################################################################################
 # IPv4 tests
 #
@@ -241,7 +231,7 @@ run_ip()
 	# dev arg may be empty
 	[ -n "${dev}" ] && dev="dev ${dev}"
 
-	run_cmd ip ro add table "${table}" "${prefix}"/32 via "${gw}" "${dev}" onlink
+	run_cmd "${IP} ro add table ${table} ${prefix}/32 via ${gw} ${dev} onlink"
 	log_test $? ${exp_rc} "${desc}"
 }
 
@@ -257,8 +247,8 @@ run_ip_mpath()
 	# dev arg may be empty
 	[ -n "${dev}" ] && dev="dev ${dev}"
 
-	run_cmd ip ro add table "${table}" "${prefix}"/32 \
-		nexthop via ${nh1} nexthop via ${nh2}
+	run_cmd "${IP} ro add table ${table} ${prefix}/32 \
+		nexthop via ${nh1} nexthop via ${nh2}"
 	log_test $? ${exp_rc} "${desc}"
 }
 
@@ -339,7 +329,7 @@ run_ip6()
 	# dev arg may be empty
 	[ -n "${dev}" ] && dev="dev ${dev}"
 
-	run_cmd ip -6 ro add table "${table}" "${prefix}"/128 via "${gw}" "${dev}" onlink
+	run_cmd "${IP} -6 ro add table ${table} ${prefix}/128 via ${gw} ${dev} onlink"
 	log_test $? ${exp_rc} "${desc}"
 }
 
@@ -353,8 +343,8 @@ run_ip6_mpath()
 	local exp_rc="$6"
 	local desc="$7"
 
-	run_cmd ip -6 ro add table "${table}" "${prefix}"/128 "${opts}" \
-		nexthop via ${nh1} nexthop via ${nh2}
+	run_cmd "${IP} -6 ro add table ${table} ${prefix}/128 ${opts} \
+		nexthop via ${nh1} nexthop via ${nh2}"
 	log_test $? ${exp_rc} "${desc}"
 }
 
@@ -491,10 +481,9 @@ do
 	esac
 done
 
-cleanup
 setup
 run_onlink_tests
-cleanup
+cleanup_ns ${ns1} ${ns2}
 
 if [ "$TESTS" != "none" ]; then
 	printf "\nTests passed: %3d\n" ${nsuccess}

---
base-commit: 50e194b6da721e4fa1fc6ebcf5969803c214929a
change-id: 20260107-selftests-net-fib-onlink-73bd8643ad3e

Best regards,
-- 
Ricardo B. Marlière <rbm@suse.com>


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

* Re: [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default
  2026-01-13 15:37 [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default Ricardo B. Marlière
@ 2026-01-15  9:05 ` Ido Schimmel
  2026-01-15 10:51 ` Fernando Fernandez Mancera
  2026-01-16  4:00 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Ido Schimmel @ 2026-01-15  9:05 UTC (permalink / raw)
  To: Ricardo B. Marlière
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Simon Horman, Shuah Khan, David Ahern, netdev, linux-kselftest,
	linux-kernel, Fernando Fernandez Mancera

On Tue, Jan 13, 2026 at 12:37:44PM -0300, Ricardo B. Marlière wrote:
> Currently, the test breaks if the SUT already has a default route
> configured for IPv6. Fix by avoiding the use of the default namespace.
> 
> Fixes: 4ed591c8ab44 ("net/ipv6: Allow onlink routes to have a device mismatch if it is the default route")
> Suggested-by: Fernando Fernandez Mancera <fmancera@suse.de>
> Signed-off-by: Ricardo B. Marlière <rbm@suse.com>

Reviewed-by: Ido Schimmel <idosch@nvidia.com>

I made some changes to this test in net-next [1], but I tried merging
net with this patch into net-next and didn't hit any conflicts. The test
still passes with this patch.

[1] https://lore.kernel.org/netdev/20260111120813.159799-1-idosch@nvidia.com/

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

* Re: [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default
  2026-01-13 15:37 [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default Ricardo B. Marlière
  2026-01-15  9:05 ` Ido Schimmel
@ 2026-01-15 10:51 ` Fernando Fernandez Mancera
  2026-01-16  4:00 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Fernando Fernandez Mancera @ 2026-01-15 10:51 UTC (permalink / raw)
  To: Ricardo B. Marlière, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Simon Horman, Shuah Khan,
	David Ahern
  Cc: netdev, linux-kselftest, linux-kernel

On 1/13/26 4:37 PM, Ricardo B. Marlière wrote:
> Currently, the test breaks if the SUT already has a default route
> configured for IPv6. Fix by avoiding the use of the default namespace.
> 
> Fixes: 4ed591c8ab44 ("net/ipv6: Allow onlink routes to have a device mismatch if it is the default route")
> Suggested-by: Fernando Fernandez Mancera <fmancera@suse.de>
> Signed-off-by: Ricardo B. Marlière <rbm@suse.com>

Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>

LGTM and passes on my side. Thanks.

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

* Re: [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default
  2026-01-13 15:37 [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default Ricardo B. Marlière
  2026-01-15  9:05 ` Ido Schimmel
  2026-01-15 10:51 ` Fernando Fernandez Mancera
@ 2026-01-16  4:00 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-01-16  4:00 UTC (permalink / raw)
  To: =?utf-8?b?UmljYXJkbyBCLiBNYXJsacOocmUgPHJibUBzdXNlLmNvbT4=?=
  Cc: davem, edumazet, kuba, pabeni, horms, shuah, dsahern, netdev,
	linux-kselftest, linux-kernel, fmancera

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 13 Jan 2026 12:37:44 -0300 you wrote:
> Currently, the test breaks if the SUT already has a default route
> configured for IPv6. Fix by avoiding the use of the default namespace.
> 
> Fixes: 4ed591c8ab44 ("net/ipv6: Allow onlink routes to have a device mismatch if it is the default route")
> Suggested-by: Fernando Fernandez Mancera <fmancera@suse.de>
> Signed-off-by: Ricardo B. Marlière <rbm@suse.com>
> 
> [...]

Here is the summary with links:
  - [net,v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default
    https://git.kernel.org/netdev/net/c/4f5f148dd7c0

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2026-01-16  4:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-13 15:37 [PATCH net v2] selftests: net: fib-onlink-tests: Convert to use namespaces by default Ricardo B. Marlière
2026-01-15  9:05 ` Ido Schimmel
2026-01-15 10:51 ` Fernando Fernandez Mancera
2026-01-16  4:00 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox