Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3#
4# Test devlink-trap ACL drops functionality over mlxsw.
5
6lib_dir=$(dirname $0)/../../../net/forwarding
7
8ALL_TESTS="
9 ingress_flow_action_drop_test
10 egress_flow_action_drop_test
11"
12NUM_NETIFS=4
13source $lib_dir/tc_common.sh
14source $lib_dir/lib.sh
15source $lib_dir/devlink_lib.sh
16
17h1_create()
18{
19 simple_if_init $h1
20}
21
22h1_destroy()
23{
24 simple_if_fini $h1
25}
26
27h2_create()
28{
29 simple_if_init $h2
30}
31
32h2_destroy()
33{
34 simple_if_fini $h2
35}
36
37switch_create()
38{
39 ip link add dev br0 type bridge vlan_filtering 1 mcast_snooping 0
40
41 ip link set dev $swp1 master br0
42 ip link set dev $swp2 master br0
43
44 ip link set dev br0 up
45 ip link set dev $swp1 up
46 ip link set dev $swp2 up
47
48 tc qdisc add dev $swp1 clsact
49 tc qdisc add dev $swp2 clsact
50}
51
52switch_destroy()
53{
54 tc qdisc del dev $swp2 clsact
55 tc qdisc del dev $swp1 clsact
56
57 ip link set dev $swp2 down
58 ip link set dev $swp1 down
59
60 ip link del dev br0
61}
62
63setup_prepare()
64{
65 h1=${NETIFS[p1]}
66 swp1=${NETIFS[p2]}
67
68 swp2=${NETIFS[p3]}
69 h2=${NETIFS[p4]}
70
71 h1mac=$(mac_get $h1)
72 h2mac=$(mac_get $h2)
73
74 vrf_prepare
75
76 h1_create
77 h2_create
78
79 switch_create
80}
81
82cleanup()
83{
84 pre_cleanup
85
86 switch_destroy
87
88 h2_destroy
89 h1_destroy
90
91 vrf_cleanup
92}
93
94ingress_flow_action_drop_test()
95{
96 local mz_pid
97
98 tc filter add dev $swp2 egress protocol ip pref 1 handle 101 \
99 flower src_mac $h1mac action pass
100
101 tc filter add dev $swp1 ingress protocol ip pref 1 handle 101 \
102 flower dst_ip 192.0.2.2 action drop
103
104 $MZ $h1 -c 0 -p 100 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \
105 -t ip -d 1msec -q &
106 mz_pid=$!
107
108 RET=0
109
110 devlink_trap_drop_test ingress_flow_action_drop $swp2 101
111
112 log_test "ingress_flow_action_drop"
113
114 tc filter del dev $swp1 ingress protocol ip pref 1 handle 101 flower
115
116 devlink_trap_drop_cleanup $mz_pid $swp2 ip 1 101
117}
118
119egress_flow_action_drop_test()
120{
121 local mz_pid
122
123 tc filter add dev $swp2 egress protocol ip pref 2 handle 102 \
124 flower src_mac $h1mac action pass
125
126 tc filter add dev $swp2 egress protocol ip pref 1 handle 101 \
127 flower dst_ip 192.0.2.2 action drop
128
129 $MZ $h1 -c 0 -p 100 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \
130 -t ip -d 1msec -q &
131 mz_pid=$!
132
133 RET=0
134
135 devlink_trap_drop_test egress_flow_action_drop $swp2 102
136
137 log_test "egress_flow_action_drop"
138
139 tc filter del dev $swp2 egress protocol ip pref 1 handle 101 flower
140
141 devlink_trap_drop_cleanup $mz_pid $swp2 ip 2 102
142}
143
144trap cleanup EXIT
145
146setup_prepare
147setup_wait
148
149tests_run
150
151exit $EXIT_STATUS