From: hengyul@cs.unc.edu
To: netdev@vger.kernel.org
Cc: "David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@kernel.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>, David Ahern <dsahern@kernel.org>,
Ido Schimmel <idosch@nvidia.com>,
Jiayuan Chen <jiayuan.chen@shopee.com>,
Jiayuan Chen <jiayuan.chen@linux.dev>,
Shuah Khan <shuah@kernel.org>,
linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
Hengyu Liang <hengyul@cs.unc.edu>
Subject: [PATCH net 2/2] selftests: net: fib_tests: add tests for IPv6 routes via loopback device
Date: Wed, 30 Sep 2026 11:22:29 -0400 [thread overview]
Message-ID: <20260930152229.1453929-3-hengyul@cs.unc.edu> (raw)
In-Reply-To: <20260930152229.1453929-1-hengyul@cs.unc.edu>
From: Hengyu Liang <hengyul@cs.unc.edu>
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 <hengyul@cs.unc.edu>
---
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
next prev parent reply other threads:[~2026-09-30 15:23 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 15:22 [PATCH net 0/2] ipv6: route: fix adding routes via the loopback device hengyul
2026-09-30 15:22 ` [PATCH net 1/2] ipv6: route: do not validate nexthop of routes promoted to reject routes hengyul
2026-10-01 15:46 ` Ido Schimmel
2026-10-02 3:21 ` Hengyu Liang
2026-09-30 15:22 ` hengyul [this message]
2026-09-30 15:28 ` [PATCH net 0/2] ipv6: route: fix adding routes via the loopback device netdev-bot+sinfo
2026-10-01 20:44 ` [syzbot ci] " syzbot ci
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260930152229.1453929-3-hengyul@cs.unc.edu \
--to=hengyul@cs.unc.edu \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@kernel.org \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=jiayuan.chen@linux.dev \
--cc=jiayuan.chen@shopee.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox