selftests: mlxsw: Add blackhole_nexthop trap test
authorIdo Schimmel <idosch@nvidia.com>
Mon, 23 Nov 2020 07:12:30 +0000 (09:12 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 24 Nov 2020 20:14:56 +0000 (12:14 -0800)
Test that packets hitting a blackhole nexthop are trapped to the CPU
when the trap is enabled. Test that packets are not reported when the
trap is disabled.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_drops.sh

index f5abb1e..4029833 100755 (executable)
@@ -52,6 +52,7 @@ ALL_TESTS="
        blackhole_route_test
        irif_disabled_test
        erif_disabled_test
+       blackhole_nexthop_test
 "
 
 NUM_NETIFS=4
@@ -647,6 +648,41 @@ erif_disabled_test()
        devlink_trap_action_set $trap_name "drop"
 }
 
+__blackhole_nexthop_test()
+{
+       local flags=$1; shift
+       local subnet=$1; shift
+       local proto=$1; shift
+       local dip=$1; shift
+       local trap_name="blackhole_nexthop"
+       local mz_pid
+
+       RET=0
+
+       ip -$flags nexthop add id 1 blackhole
+       ip -$flags route add $subnet nhid 1
+       tc filter add dev $rp2 egress protocol $proto pref 1 handle 101 \
+               flower skip_hw dst_ip $dip ip_proto udp action drop
+
+       # Generate packets to the blackhole nexthop
+       $MZ $h1 -$flags -t udp "sp=54321,dp=12345" -c 0 -p 100 -b $rp1mac \
+               -B $dip -d 1msec -q &
+       mz_pid=$!
+
+       devlink_trap_drop_test $trap_name $rp2 101
+       log_test "Blackhole nexthop: IPv$flags"
+
+       devlink_trap_drop_cleanup $mz_pid $rp2 $proto 1 101
+       ip -$flags route del $subnet
+       ip -$flags nexthop del id 1
+}
+
+blackhole_nexthop_test()
+{
+       __blackhole_nexthop_test "4" "198.51.100.0/30" "ip" $h2_ipv4
+       __blackhole_nexthop_test "6" "2001:db8:2::/120" "ipv6" $h2_ipv6
+}
+
 trap cleanup EXIT
 
 setup_prepare