selftests: mlxsw: Move IPv6 decap_error test to shared directory
authorIdo Schimmel <idosch@nvidia.com>
Wed, 7 Dec 2022 12:36:47 +0000 (13:36 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 9 Dec 2022 02:46:32 +0000 (18:46 -0800)
Now that Spectrum-1 gained ip6gre support we can move the test out of
the Spectrum-2 directory.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Amit Cohen <amcohen@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/mlxsw/devlink_trap_tunnel_ipip6.sh [new file with mode: 0755]
tools/testing/selftests/drivers/net/mlxsw/spectrum-2/devlink_trap_tunnel_ipip6.sh [deleted file]

diff --git a/tools/testing/selftests/drivers/net/mlxsw/devlink_trap_tunnel_ipip6.sh b/tools/testing/selftests/drivers/net/mlxsw/devlink_trap_tunnel_ipip6.sh
new file mode 100755 (executable)
index 0000000..8781250
--- /dev/null
@@ -0,0 +1,250 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Test devlink-trap tunnel exceptions functionality over mlxsw.
+# Check all exception traps to make sure they are triggered under the right
+# conditions.
+
+# +-------------------------+
+# | H1                      |
+# |               $h1 +     |
+# |  2001:db8:1::1/64 |     |
+# +-------------------|-----+
+#                     |
+# +-------------------|-----+
+# | SW1               |     |
+# |             $swp1 +     |
+# |  2001:db8:1::2/64       |
+# |                         |
+# |  + g1 (ip6gre)          |
+# |    loc=2001:db8:3::1    |
+# |    rem=2001:db8:3::2    |
+# |    tos=inherit          |
+# |                         |
+# |  + $rp1                 |
+# |  | 2001:db8:10::1/64    |
+# +--|----------------------+
+#    |
+# +--|----------------------+
+# |  |                 VRF2 |
+# |  + $rp2                 |
+# |    2001:db8:10::2/64    |
+# +-------------------------+
+
+lib_dir=$(dirname $0)/../../../net/forwarding
+
+ALL_TESTS="
+       decap_error_test
+"
+
+NUM_NETIFS=4
+source $lib_dir/lib.sh
+source $lib_dir/tc_common.sh
+source $lib_dir/devlink_lib.sh
+
+h1_create()
+{
+       simple_if_init $h1 2001:db8:1::1/64
+}
+
+h1_destroy()
+{
+       simple_if_fini $h1 2001:db8:1::1/64
+}
+
+vrf2_create()
+{
+       simple_if_init $rp2 2001:db8:10::2/64
+}
+
+vrf2_destroy()
+{
+       simple_if_fini $rp2 2001:db8:10::2/64
+}
+
+switch_create()
+{
+       ip link set dev $swp1 up
+       __addr_add_del $swp1 add 2001:db8:1::2/64
+       tc qdisc add dev $swp1 clsact
+
+       tunnel_create g1 ip6gre 2001:db8:3::1 2001:db8:3::2 tos inherit \
+               ttl inherit
+       ip link set dev g1 up
+       __addr_add_del g1 add 2001:db8:3::1/128
+
+       ip link set dev $rp1 up
+       __addr_add_del $rp1 add 2001:db8:10::1/64
+}
+
+switch_destroy()
+{
+       __addr_add_del $rp1 del 2001:db8:10::1/64
+       ip link set dev $rp1 down
+
+       __addr_add_del g1 del 2001:db8:3::1/128
+       ip link set dev g1 down
+       tunnel_destroy g1
+
+       tc qdisc del dev $swp1 clsact
+       __addr_add_del $swp1 del 2001:db8:1::2/64
+       ip link set dev $swp1 down
+}
+
+setup_prepare()
+{
+       h1=${NETIFS[p1]}
+       swp1=${NETIFS[p2]}
+
+       rp1=${NETIFS[p3]}
+       rp2=${NETIFS[p4]}
+
+       forwarding_enable
+       vrf_prepare
+       h1_create
+       switch_create
+       vrf2_create
+}
+
+cleanup()
+{
+       pre_cleanup
+
+       vrf2_destroy
+       switch_destroy
+       h1_destroy
+       vrf_cleanup
+       forwarding_restore
+}
+
+ipip_payload_get()
+{
+       local saddr="20:01:0d:b8:00:02:00:00:00:00:00:00:00:00:00:01"
+       local daddr="20:01:0d:b8:00:01:00:00:00:00:00:00:00:00:00:01"
+       local flags=$1; shift
+       local key=$1; shift
+
+       p=$(:
+               )"$flags"$(                   : GRE flags
+               )"0:00:"$(                    : Reserved + version
+               )"86:dd:"$(                   : ETH protocol type
+               )"$key"$(                     : Key
+               )"6"$(                        : IP version
+               )"0:0"$(                      : Traffic class
+               )"0:00:00:"$(                 : Flow label
+               )"00:00:"$(                   : Payload length
+               )"3a:"$(                      : Next header
+               )"04:"$(                      : Hop limit
+               )"$saddr:"$(                  : IP saddr
+               )"$daddr:"$(                  : IP daddr
+               )
+       echo $p
+}
+
+ecn_payload_get()
+{
+       echo $(ipip_payload_get "0")
+}
+
+ecn_decap_test()
+{
+       local trap_name="decap_error"
+       local desc=$1; shift
+       local ecn_desc=$1; shift
+       local outer_tos=$1; shift
+       local mz_pid
+
+       RET=0
+
+       tc filter add dev $swp1 egress protocol ipv6 pref 1 handle 101 \
+               flower src_ip 2001:db8:2::1 dst_ip 2001:db8:1::1 skip_sw \
+               action pass
+
+       rp1_mac=$(mac_get $rp1)
+       rp2_mac=$(mac_get $rp2)
+       payload=$(ecn_payload_get)
+
+       ip vrf exec v$rp2 $MZ -6 $rp2 -c 0 -d 1msec -a $rp2_mac -b $rp1_mac \
+               -A 2001:db8:3::2 -B 2001:db8:3::1 -t ip \
+                       tos=$outer_tos,next=47,p=$payload -q &
+       mz_pid=$!
+
+       devlink_trap_exception_test $trap_name
+
+       tc_check_packets "dev $swp1 egress" 101 0
+       check_err $? "Packets were not dropped"
+
+       log_test "$desc: Inner ECN is not ECT and outer is $ecn_desc"
+
+       kill $mz_pid && wait $mz_pid &> /dev/null
+       tc filter del dev $swp1 egress protocol ipv6 pref 1 handle 101 flower
+}
+
+no_matching_tunnel_test()
+{
+       local trap_name="decap_error"
+       local desc=$1; shift
+       local sip=$1; shift
+       local mz_pid
+
+       RET=0
+
+       tc filter add dev $swp1 egress protocol ipv6 pref 1 handle 101 \
+               flower src_ip 2001:db8:2::1 dst_ip 2001:db8:1::1 action pass
+
+       rp1_mac=$(mac_get $rp1)
+       rp2_mac=$(mac_get $rp2)
+       payload=$(ipip_payload_get "$@")
+
+       ip vrf exec v$rp2 $MZ -6 $rp2 -c 0 -d 1msec -a $rp2_mac -b $rp1_mac \
+               -A $sip -B 2001:db8:3::1 -t ip next=47,p=$payload -q &
+       mz_pid=$!
+
+       devlink_trap_exception_test $trap_name
+
+       tc_check_packets "dev $swp1 egress" 101 0
+       check_err $? "Packets were not dropped"
+
+       log_test "$desc"
+
+       kill $mz_pid && wait $mz_pid &> /dev/null
+       tc filter del dev $swp1 egress protocol ipv6 pref 1 handle 101 flower
+}
+
+decap_error_test()
+{
+       # Correct source IP - the remote address
+       local sip=2001:db8:3::2
+
+       ecn_decap_test "Decap error" "ECT(1)" 01
+       ecn_decap_test "Decap error" "ECT(0)" 02
+       ecn_decap_test "Decap error" "CE" 03
+
+       no_matching_tunnel_test "Decap error: Source IP check failed" \
+               2001:db8:4::2 "0"
+       no_matching_tunnel_test \
+               "Decap error: Key exists but was not expected" $sip "2" \
+               "00:00:00:E9:"
+
+       # Destroy the tunnel and create new one with key
+       __addr_add_del g1 del 2001:db8:3::1/128
+       tunnel_destroy g1
+
+       tunnel_create g1 ip6gre 2001:db8:3::1 2001:db8:3::2 tos inherit \
+               ttl inherit key 233
+       __addr_add_del g1 add 2001:db8:3::1/128
+
+       no_matching_tunnel_test \
+               "Decap error: Key does not exist but was expected" $sip "0"
+       no_matching_tunnel_test \
+               "Decap error: Packet has a wrong key field" $sip "2" \
+               "00:00:00:E8:"
+}
+
+trap cleanup EXIT
+
+setup_prepare
+setup_wait
+tests_run
+
+exit $EXIT_STATUS
diff --git a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/devlink_trap_tunnel_ipip6.sh b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/devlink_trap_tunnel_ipip6.sh
deleted file mode 100755 (executable)
index f62ce47..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0
-#
-# Test devlink-trap tunnel exceptions functionality over mlxsw.
-# Check all exception traps to make sure they are triggered under the right
-# conditions.
-
-# +-------------------------+
-# | H1                      |
-# |               $h1 +     |
-# |  2001:db8:1::1/64 |     |
-# +-------------------|-----+
-#                     |
-# +-------------------|-----+
-# | SW1               |     |
-# |             $swp1 +     |
-# |  2001:db8:1::2/64       |
-# |                         |
-# |  + g1 (ip6gre)          |
-# |    loc=2001:db8:3::1    |
-# |    rem=2001:db8:3::2    |
-# |    tos=inherit          |
-# |                         |
-# |  + $rp1                 |
-# |  | 2001:db8:10::1/64    |
-# +--|----------------------+
-#    |
-# +--|----------------------+
-# |  |                 VRF2 |
-# |  + $rp2                 |
-# |    2001:db8:10::2/64    |
-# +-------------------------+
-
-lib_dir=$(dirname $0)/../../../../net/forwarding
-
-ALL_TESTS="
-       decap_error_test
-"
-
-NUM_NETIFS=4
-source $lib_dir/lib.sh
-source $lib_dir/tc_common.sh
-source $lib_dir/devlink_lib.sh
-
-h1_create()
-{
-       simple_if_init $h1 2001:db8:1::1/64
-}
-
-h1_destroy()
-{
-       simple_if_fini $h1 2001:db8:1::1/64
-}
-
-vrf2_create()
-{
-       simple_if_init $rp2 2001:db8:10::2/64
-}
-
-vrf2_destroy()
-{
-       simple_if_fini $rp2 2001:db8:10::2/64
-}
-
-switch_create()
-{
-       ip link set dev $swp1 up
-       __addr_add_del $swp1 add 2001:db8:1::2/64
-       tc qdisc add dev $swp1 clsact
-
-       tunnel_create g1 ip6gre 2001:db8:3::1 2001:db8:3::2 tos inherit \
-               ttl inherit
-       ip link set dev g1 up
-       __addr_add_del g1 add 2001:db8:3::1/128
-
-       ip link set dev $rp1 up
-       __addr_add_del $rp1 add 2001:db8:10::1/64
-}
-
-switch_destroy()
-{
-       __addr_add_del $rp1 del 2001:db8:10::1/64
-       ip link set dev $rp1 down
-
-       __addr_add_del g1 del 2001:db8:3::1/128
-       ip link set dev g1 down
-       tunnel_destroy g1
-
-       tc qdisc del dev $swp1 clsact
-       __addr_add_del $swp1 del 2001:db8:1::2/64
-       ip link set dev $swp1 down
-}
-
-setup_prepare()
-{
-       h1=${NETIFS[p1]}
-       swp1=${NETIFS[p2]}
-
-       rp1=${NETIFS[p3]}
-       rp2=${NETIFS[p4]}
-
-       forwarding_enable
-       vrf_prepare
-       h1_create
-       switch_create
-       vrf2_create
-}
-
-cleanup()
-{
-       pre_cleanup
-
-       vrf2_destroy
-       switch_destroy
-       h1_destroy
-       vrf_cleanup
-       forwarding_restore
-}
-
-ipip_payload_get()
-{
-       local saddr="20:01:0d:b8:00:02:00:00:00:00:00:00:00:00:00:01"
-       local daddr="20:01:0d:b8:00:01:00:00:00:00:00:00:00:00:00:01"
-       local flags=$1; shift
-       local key=$1; shift
-
-       p=$(:
-               )"$flags"$(                   : GRE flags
-               )"0:00:"$(                    : Reserved + version
-               )"86:dd:"$(                   : ETH protocol type
-               )"$key"$(                     : Key
-               )"6"$(                        : IP version
-               )"0:0"$(                      : Traffic class
-               )"0:00:00:"$(                 : Flow label
-               )"00:00:"$(                   : Payload length
-               )"3a:"$(                      : Next header
-               )"04:"$(                      : Hop limit
-               )"$saddr:"$(                  : IP saddr
-               )"$daddr:"$(                  : IP daddr
-               )
-       echo $p
-}
-
-ecn_payload_get()
-{
-       echo $(ipip_payload_get "0")
-}
-
-ecn_decap_test()
-{
-       local trap_name="decap_error"
-       local desc=$1; shift
-       local ecn_desc=$1; shift
-       local outer_tos=$1; shift
-       local mz_pid
-
-       RET=0
-
-       tc filter add dev $swp1 egress protocol ipv6 pref 1 handle 101 \
-               flower src_ip 2001:db8:2::1 dst_ip 2001:db8:1::1 skip_sw \
-               action pass
-
-       rp1_mac=$(mac_get $rp1)
-       rp2_mac=$(mac_get $rp2)
-       payload=$(ecn_payload_get)
-
-       ip vrf exec v$rp2 $MZ -6 $rp2 -c 0 -d 1msec -a $rp2_mac -b $rp1_mac \
-               -A 2001:db8:3::2 -B 2001:db8:3::1 -t ip \
-                       tos=$outer_tos,next=47,p=$payload -q &
-       mz_pid=$!
-
-       devlink_trap_exception_test $trap_name
-
-       tc_check_packets "dev $swp1 egress" 101 0
-       check_err $? "Packets were not dropped"
-
-       log_test "$desc: Inner ECN is not ECT and outer is $ecn_desc"
-
-       kill $mz_pid && wait $mz_pid &> /dev/null
-       tc filter del dev $swp1 egress protocol ipv6 pref 1 handle 101 flower
-}
-
-no_matching_tunnel_test()
-{
-       local trap_name="decap_error"
-       local desc=$1; shift
-       local sip=$1; shift
-       local mz_pid
-
-       RET=0
-
-       tc filter add dev $swp1 egress protocol ipv6 pref 1 handle 101 \
-               flower src_ip 2001:db8:2::1 dst_ip 2001:db8:1::1 action pass
-
-       rp1_mac=$(mac_get $rp1)
-       rp2_mac=$(mac_get $rp2)
-       payload=$(ipip_payload_get "$@")
-
-       ip vrf exec v$rp2 $MZ -6 $rp2 -c 0 -d 1msec -a $rp2_mac -b $rp1_mac \
-               -A $sip -B 2001:db8:3::1 -t ip next=47,p=$payload -q &
-       mz_pid=$!
-
-       devlink_trap_exception_test $trap_name
-
-       tc_check_packets "dev $swp1 egress" 101 0
-       check_err $? "Packets were not dropped"
-
-       log_test "$desc"
-
-       kill $mz_pid && wait $mz_pid &> /dev/null
-       tc filter del dev $swp1 egress protocol ipv6 pref 1 handle 101 flower
-}
-
-decap_error_test()
-{
-       # Correct source IP - the remote address
-       local sip=2001:db8:3::2
-
-       ecn_decap_test "Decap error" "ECT(1)" 01
-       ecn_decap_test "Decap error" "ECT(0)" 02
-       ecn_decap_test "Decap error" "CE" 03
-
-       no_matching_tunnel_test "Decap error: Source IP check failed" \
-               2001:db8:4::2 "0"
-       no_matching_tunnel_test \
-               "Decap error: Key exists but was not expected" $sip "2" \
-               "00:00:00:E9:"
-
-       # Destroy the tunnel and create new one with key
-       __addr_add_del g1 del 2001:db8:3::1/128
-       tunnel_destroy g1
-
-       tunnel_create g1 ip6gre 2001:db8:3::1 2001:db8:3::2 tos inherit \
-               ttl inherit key 233
-       __addr_add_del g1 add 2001:db8:3::1/128
-
-       no_matching_tunnel_test \
-               "Decap error: Key does not exist but was expected" $sip "0"
-       no_matching_tunnel_test \
-               "Decap error: Packet has a wrong key field" $sip "2" \
-               "00:00:00:E8:"
-}
-
-trap cleanup EXIT
-
-setup_prepare
-setup_wait
-tests_run
-
-exit $EXIT_STATUS