Add a test case to simulate the loopback packet case fixed in the previous patch.
This test gets passed after the fix: IPv4 rp_filter tests TEST: rp_filter passes local packets [ OK ] TEST: rp_filter passes loopback packets [ OK ] Cc: David Ahern <dsah...@gmail.com> Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com> --- tools/testing/selftests/net/fib_tests.sh | 30 +++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh index 9457aaeae092..a9e45471edfe 100755 --- a/tools/testing/selftests/net/fib_tests.sh +++ b/tools/testing/selftests/net/fib_tests.sh @@ -9,12 +9,13 @@ ret=0 ksft_skip=4 # all tests in this script. Can be overridden with -t option -TESTS="unregister down carrier nexthop ipv6_rt ipv4_rt ipv6_addr_metric ipv4_addr_metric ipv6_route_metrics ipv4_route_metrics ipv4_route_v6_gw" +TESTS="unregister down carrier nexthop ipv6_rt ipv4_rt ipv6_addr_metric ipv4_addr_metric ipv6_route_metrics ipv4_route_metrics ipv4_route_v6_gw rp_filter" VERBOSE=0 PAUSE_ON_FAIL=no PAUSE=no IP="ip -netns ns1" +NETNS="ip netns exec ns1" log_test() { @@ -433,6 +434,32 @@ fib_carrier_test() fib_carrier_unicast_test } +fib_rp_filter_test() +{ + echo + echo "IPv4 rp_filter tests" + + setup + + $IP link set dev lo address 52:54:00:6a:c7:5e + $IP link set dev dummy0 address 52:54:00:6a:c7:5e + echo 1 | $NETNS tee /proc/sys/net/ipv4/conf/all/rp_filter > /dev/null + echo 1 | $NETNS tee /proc/sys/net/ipv4/conf/all/accept_local > /dev/null + echo 1 | $NETNS tee /proc/sys/net/ipv4/conf/all/route_localnet > /dev/null + + $NETNS tc qd add dev dummy0 parent root handle 1: fq_codel + $NETNS tc filter add dev dummy0 parent 1: protocol arp basic action mirred egress redirect dev lo + $NETNS tc filter add dev dummy0 parent 1: protocol ip basic action mirred egress redirect dev lo + + run_cmd "ip netns exec ns1 ping -I dummy0 -w1 -c1 198.51.100.1" + log_test $? 0 "rp_filter passes local packets" + + run_cmd "ip netns exec ns1 ping -I dummy0 -w1 -c1 127.0.0.1" + log_test $? 0 "rp_filter passes loopback packets" + + cleanup +} + ################################################################################ # Tests on nexthop spec @@ -1557,6 +1584,7 @@ do fib_unreg_test|unregister) fib_unreg_test;; fib_down_test|down) fib_down_test;; fib_carrier_test|carrier) fib_carrier_test;; + fib_rp_filter_test|rp_filter) fib_rp_filter_test;; fib_nexthop_test|nexthop) fib_nexthop_test;; ipv6_route_test|ipv6_rt) ipv6_route_test;; ipv4_route_test|ipv4_rt) ipv4_route_test;; -- 2.21.0