Commit 392baa33 authored by Nikolay Aleksandrov's avatar Nikolay Aleksandrov Committed by David S. Miller

selftests: net: add delete nexthop route warning test

Add a test which causes a WARNING on kernels which treat a
nexthop route like a normal route when comparing for deletion and a
device is specified. That is, a route is found but we hit a warning while
matching it. The warning is from fib_info_nh() in include/net/nexthop.h
because we run it on a fib_info with nexthop object. The call chain is:
 inet_rtm_delroute -> fib_table_delete -> fib_nh_match (called with a
nexthop fib_info and also with fc_oif set thus calling fib_info_nh on
the fib_info and triggering the warning).

Repro steps:
 $ ip nexthop add id 12 via 172.16.1.3 dev veth1
 $ ip route add 172.16.101.1/32 nhid 12
 $ ip route delete 172.16.101.1/32 dev veth1
Signed-off-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6bf92d70
......@@ -1208,6 +1208,20 @@ ipv4_fcnal()
set +e
check_nexthop "dev veth1" ""
log_test $? 0 "Nexthops removed on admin down"
# nexthop route delete warning: route add with nhid and delete
# using device
run_cmd "$IP li set dev veth1 up"
run_cmd "$IP nexthop add id 12 via 172.16.1.3 dev veth1"
out1=`dmesg | grep "WARNING:.*fib_nh_match.*" | wc -l`
run_cmd "$IP route add 172.16.101.1/32 nhid 12"
run_cmd "$IP route delete 172.16.101.1/32 dev veth1"
out2=`dmesg | grep "WARNING:.*fib_nh_match.*" | wc -l`
[ $out1 -eq $out2 ]
rc=$?
log_test $rc 0 "Delete nexthop route warning"
run_cmd "$IP ip route delete 172.16.101.1/32 nhid 12"
run_cmd "$IP ip nexthop del id 12"
}
ipv4_grp_fcnal()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment