[PATCH net 2/2] selftests: net: fib_tests: add tests for IPv6 routes via loopback device
flat view
COLD15d
From: <hidden>
Date: 2026-09-30 15:23:22
Also in:
linux-kselftest, lkml
Subsystem:
kernel selftest framework, networking [general], networking [ipv4/ipv6], the rest · Maintainers:
Shuah Khan, Shuah Khan, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, David Ahern, Ido Schimmel, Linus Torvalds
From: Hengyu Liang <redacted>
Check that an IPv6 route via the loopback device can be added when the
loopback device is down, when a gateway is specified, including an
IPv4-mapped one, and when IPv6 is disabled on the loopback device. Such
routes are promoted to reject routes, so their nexthop is not validated.
Without the previous patch:
# ./fib_tests.sh -t ipv6_route_lo
IPv6 routes via loopback device tests
TEST: Route via loopback device that is down [FAIL]
TEST: Route via loopback device with gateway [FAIL]
TEST: Route via loopback device with IPv4-mapped gateway [FAIL]
TEST: Route via loopback device with IPv6 disabled [FAIL]
Tests passed: 0
Tests failed: 4
With the previous patch:
# ./fib_tests.sh -t ipv6_route_lo
IPv6 routes via loopback device tests
TEST: Route via loopback device that is down [ OK ]
TEST: Route via loopback device with gateway [ OK ]
TEST: Route via loopback device with IPv4-mapped gateway [ OK ]
TEST: Route via loopback device with IPv6 disabled [ OK ]
Tests passed: 4
Tests failed: 0
Signed-off-by: Hengyu Liang <redacted>
---
tools/testing/selftests/net/fib_tests.sh | 31 +++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh
index b338bfb196a2..19e55a8630a2 100755
--- a/tools/testing/selftests/net/fib_tests.sh
+++ b/tools/testing/selftests/net/fib_tests.sh@@ -14,7 +14,7 @@ TESTS="unregister down carrier nexthop suppress ipv6_notify ipv4_notify \ ipv4_mpath_list ipv6_mpath_list ipv4_mpath_balance ipv6_mpath_balance \ ipv4_mpath_balance_preferred ipv4_mpath_oif ipv4_mpath_oif_nh \ ipv4_mpath_oif_vrf ipv6_mpath_oif ipv6_mpath_oif_nh ipv6_mpath_oif_vrf \ - fib6_ra_to_static fib6_temp_addr_renewal" + fib6_ra_to_static fib6_temp_addr_renewal ipv6_route_lo" VERBOSE=0 PAUSE_ON_FAIL=no
@@ -2466,6 +2466,34 @@ ipv4_route_v6_gw_test() route_cleanup } +ipv6_route_lo_test() +{ + echo + echo "IPv6 routes via loopback device tests" + + setup_ns ns1 + IP="$(which ip) -netns $ns1" + + # Routes via the loopback device are promoted to reject routes, so + # their nexthop is not validated. + run_cmd "$IP link set dev lo down" + run_cmd "$IP -6 ro add 2001:db8:101::/64 dev lo" + log_test $? 0 "Route via loopback device that is down" + + run_cmd "$IP link set dev lo up" + run_cmd "$IP -6 ro add 2001:db8:102::/64 via 2001:db8:1::2 dev lo" + log_test $? 0 "Route via loopback device with gateway" + + run_cmd "$IP -6 ro add 2001:db8:103::/64 via ::ffff:192.0.2.2 dev lo" + log_test $? 0 "Route via loopback device with IPv4-mapped gateway" + + run_cmd "ip netns exec $ns1 sysctl -qw net.ipv6.conf.lo.disable_ipv6=1" + run_cmd "$IP -6 ro add 2001:db8:104::/64 dev lo" + log_test $? 0 "Route via loopback device with IPv6 disabled" + + cleanup_ns "$ns1" +} + socat_check() { if [ ! -x "$(command -v socat)" ]; then
@@ -3291,6 +3319,7 @@ do ipv6_route_metrics) ipv6_route_metrics_test;; ipv4_route_metrics) ipv4_route_metrics_test;; ipv4_route_v6_gw) ipv4_route_v6_gw_test;; + ipv6_route_lo) ipv6_route_lo_test;; ipv4_mangle) ipv4_mangle_test;; ipv6_mangle) ipv6_mangle_test;; ipv4_bcast_neigh) ipv4_bcast_neigh_test;;
--
2.53.0