Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 #
0004 # Test devlink-trap ACL drops functionality over mlxsw.
0005 
0006 lib_dir=$(dirname $0)/../../../net/forwarding
0007 
0008 ALL_TESTS="
0009         ingress_flow_action_drop_test
0010         egress_flow_action_drop_test
0011 "
0012 NUM_NETIFS=4
0013 source $lib_dir/tc_common.sh
0014 source $lib_dir/lib.sh
0015 source $lib_dir/devlink_lib.sh
0016 
0017 h1_create()
0018 {
0019         simple_if_init $h1
0020 }
0021 
0022 h1_destroy()
0023 {
0024         simple_if_fini $h1
0025 }
0026 
0027 h2_create()
0028 {
0029         simple_if_init $h2
0030 }
0031 
0032 h2_destroy()
0033 {
0034         simple_if_fini $h2
0035 }
0036 
0037 switch_create()
0038 {
0039         ip link add dev br0 type bridge vlan_filtering 1 mcast_snooping 0
0040 
0041         ip link set dev $swp1 master br0
0042         ip link set dev $swp2 master br0
0043 
0044         ip link set dev br0 up
0045         ip link set dev $swp1 up
0046         ip link set dev $swp2 up
0047 
0048         tc qdisc add dev $swp1 clsact
0049         tc qdisc add dev $swp2 clsact
0050 }
0051 
0052 switch_destroy()
0053 {
0054         tc qdisc del dev $swp2 clsact
0055         tc qdisc del dev $swp1 clsact
0056 
0057         ip link set dev $swp2 down
0058         ip link set dev $swp1 down
0059 
0060         ip link del dev br0
0061 }
0062 
0063 setup_prepare()
0064 {
0065         h1=${NETIFS[p1]}
0066         swp1=${NETIFS[p2]}
0067 
0068         swp2=${NETIFS[p3]}
0069         h2=${NETIFS[p4]}
0070 
0071         h1mac=$(mac_get $h1)
0072         h2mac=$(mac_get $h2)
0073 
0074         vrf_prepare
0075 
0076         h1_create
0077         h2_create
0078 
0079         switch_create
0080 }
0081 
0082 cleanup()
0083 {
0084         pre_cleanup
0085 
0086         switch_destroy
0087 
0088         h2_destroy
0089         h1_destroy
0090 
0091         vrf_cleanup
0092 }
0093 
0094 ingress_flow_action_drop_test()
0095 {
0096         local mz_pid
0097 
0098         tc filter add dev $swp2 egress protocol ip pref 1 handle 101 \
0099                 flower src_mac $h1mac action pass
0100 
0101         tc filter add dev $swp1 ingress protocol ip pref 1 handle 101 \
0102                 flower dst_ip 192.0.2.2 action drop
0103 
0104         $MZ $h1 -c 0 -p 100 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \
0105                 -t ip -d 1msec -q &
0106         mz_pid=$!
0107 
0108         RET=0
0109 
0110         devlink_trap_drop_test ingress_flow_action_drop $swp2 101
0111 
0112         log_test "ingress_flow_action_drop"
0113 
0114         tc filter del dev $swp1 ingress protocol ip pref 1 handle 101 flower
0115 
0116         devlink_trap_drop_cleanup $mz_pid $swp2 ip 1 101
0117 }
0118 
0119 egress_flow_action_drop_test()
0120 {
0121         local mz_pid
0122 
0123         tc filter add dev $swp2 egress protocol ip pref 2 handle 102 \
0124                 flower src_mac $h1mac action pass
0125 
0126         tc filter add dev $swp2 egress protocol ip pref 1 handle 101 \
0127                 flower dst_ip 192.0.2.2 action drop
0128 
0129         $MZ $h1 -c 0 -p 100 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \
0130                 -t ip -d 1msec -q &
0131         mz_pid=$!
0132 
0133         RET=0
0134 
0135         devlink_trap_drop_test egress_flow_action_drop $swp2 102
0136 
0137         log_test "egress_flow_action_drop"
0138 
0139         tc filter del dev $swp2 egress protocol ip pref 1 handle 101 flower
0140 
0141         devlink_trap_drop_cleanup $mz_pid $swp2 ip 2 102
0142 }
0143 
0144 trap cleanup EXIT
0145 
0146 setup_prepare
0147 setup_wait
0148 
0149 tests_run
0150 
0151 exit $EXIT_STATUS