0001
0002
0003
0004
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