mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
selftests: netdevsim: Add FIB notification tests for nexthop objects
Add IPv4 and IPv6 test cases that program a route that uses a nexthop
object and check that two notifications are emitted for it, with the
second one carrying the RTM_F_TRAP flag.
The new route_nexthop_check() helper follows the same pattern as the
existing route_{addition,deletion,replacement}_check() helpers.
Without "ipv6: Hold RCU when emitting route hardware flags
notification", the IPv6 test case passes, but triggers suspicious RCU
usage splats. The IPv4 test case is added for completeness.
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Eric Dumazet <edumazet@kernel.org>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://patch.msgid.link/20261019140337.2886875-3-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
7c9cb1edaf
commit
b5dc3fde8b
|
|
@ -8,10 +8,12 @@ ALL_TESTS="
|
|||
ipv4_route_deletion_test
|
||||
ipv4_route_replacement_test
|
||||
ipv4_route_offload_failed_test
|
||||
ipv4_route_nexthop_test
|
||||
ipv6_route_addition_test
|
||||
ipv6_route_deletion_test
|
||||
ipv6_route_replacement_test
|
||||
ipv6_route_offload_failed_test
|
||||
ipv6_route_nexthop_test
|
||||
"
|
||||
|
||||
NETDEVSIM_PATH=/sys/bus/netdevsim/
|
||||
|
|
@ -269,6 +271,50 @@ ipv4_route_offload_failed_test()
|
|||
log_test "IPv4 route offload failed"
|
||||
}
|
||||
|
||||
route_nexthop_check()
|
||||
{
|
||||
local ip=$1; shift
|
||||
local route=$1; shift
|
||||
local nhid=$1; shift
|
||||
local expected_num_notifications=$1; shift
|
||||
local outfile
|
||||
|
||||
ip netns exec testns1 sysctl -qw net.$ip.fib_notify_on_flag_change=1
|
||||
|
||||
outfile=$(mktemp)
|
||||
|
||||
$IP monitor route &> $outfile &
|
||||
sleep 1
|
||||
$IP route add $route nhid $nhid
|
||||
sleep 1
|
||||
kill_process %%
|
||||
|
||||
route_notify_check $outfile $expected_num_notifications
|
||||
rm -f $outfile
|
||||
|
||||
$IP route del $route nhid $nhid
|
||||
}
|
||||
|
||||
ipv4_route_nexthop_test()
|
||||
{
|
||||
RET=0
|
||||
|
||||
local ip="ipv4"
|
||||
local route=192.0.2.0/24
|
||||
local nhid=1
|
||||
|
||||
$IP -4 nexthop add id $nhid dev dummy1
|
||||
|
||||
# Make sure two notifications will be emitted for a programmed route
|
||||
# that uses a nexthop object.
|
||||
local expected_num_notifications=2
|
||||
route_nexthop_check $ip $route $nhid $expected_num_notifications
|
||||
|
||||
$IP nexthop del id $nhid
|
||||
|
||||
log_test "IPv4 route with nexthop object"
|
||||
}
|
||||
|
||||
ipv6_route_addition_test()
|
||||
{
|
||||
RET=0
|
||||
|
|
@ -385,6 +431,26 @@ ipv6_route_offload_failed_test()
|
|||
log_test "IPv6 route offload failed"
|
||||
}
|
||||
|
||||
ipv6_route_nexthop_test()
|
||||
{
|
||||
RET=0
|
||||
|
||||
local ip="ipv6"
|
||||
local route=2001:db8:1::/64
|
||||
local nhid=1
|
||||
|
||||
$IP -6 nexthop add id $nhid dev dummy1
|
||||
|
||||
# Make sure two notifications will be emitted for a programmed route
|
||||
# that uses a nexthop object.
|
||||
local expected_num_notifications=2
|
||||
route_nexthop_check $ip $route $nhid $expected_num_notifications
|
||||
|
||||
$IP nexthop del id $nhid
|
||||
|
||||
log_test "IPv6 route with nexthop object"
|
||||
}
|
||||
|
||||
setup_prepare()
|
||||
{
|
||||
modprobe netdevsim &> /dev/null
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user