mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-07-25 16:19:48 +02:00
selftests: net: fib-onlink-tests: Convert to use namespaces by default
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: 4ed591c8ab ("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>
Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
Link: https://patch.msgid.link/20260113-selftests-net-fib-onlink-v2-1-89de2b931389@suse.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
4d10edfd14
commit
4f5f148dd7
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user