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
4lib_dir=$(dirname $0)/../../../net/forwarding
5
6ALL_TESTS="
7 create_8021ad_vlan_upper_on_top_front_panel_port
8 create_8021ad_vlan_upper_on_top_bridge_port
9 create_8021ad_vlan_upper_on_top_lag
10 create_8021ad_vlan_upper_on_top_bridge
11 create_8021ad_vlan_upper_on_top_8021ad_bridge
12 create_vlan_upper_on_top_8021ad_bridge
13 create_vlan_upper_on_top_front_panel_enslaved_to_8021ad_bridge
14 create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge
15 enslave_front_panel_with_vlan_upper_to_8021ad_bridge
16 enslave_lag_with_vlan_upper_to_8021ad_bridge
17 add_ip_address_to_8021ad_bridge
18 switch_bridge_protocol_from_8021q_to_8021ad
19"
20NUM_NETIFS=2
21source $lib_dir/lib.sh
22
23setup_prepare()
24{
25 swp1=${NETIFS[p1]}
26 swp2=${NETIFS[p2]}
27
28 ip link set dev $swp1 up
29 ip link set dev $swp2 up
30
31 sleep 10
32}
33
34cleanup()
35{
36 pre_cleanup
37
38 ip link set dev $swp2 down
39 ip link set dev $swp1 down
40}
41
42create_vlan_upper_on_top_of_bridge()
43{
44 RET=0
45
46 local bridge_proto=$1; shift
47 local netdev_proto=$1; shift
48
49 ip link add dev br0 type bridge vlan_filtering 1 \
50 vlan_protocol $bridge_proto vlan_default_pvid 0 mcast_snooping 0
51 ip link set dev br0 addrgenmode none
52
53 ip link set dev br0 up
54 ip link set dev $swp1 master br0
55
56 ip link add name br0.100 link br0 type vlan \
57 protocol $netdev_proto id 100 2>/dev/null
58 check_fail $? "$netdev_proto vlan upper creation on top of an $bridge_proto bridge not rejected"
59
60 ip link add name br0.100 link br0 type vlan \
61 protocol $netdev_proto id 100 2>&1 >/dev/null \
62 | grep -q mlxsw_spectrum
63 check_err $? "$netdev_proto vlan upper creation on top of an $bridge_proto bridge rejected without extack"
64
65 log_test "create $netdev_proto vlan upper on top $bridge_proto bridge"
66
67 ip link del dev br0
68}
69
70create_8021ad_vlan_upper_on_top_front_panel_port()
71{
72 RET=0
73
74 ip link add name $swp1.100 link $swp1 type vlan \
75 protocol 802.1ad id 100 2>/dev/null
76 check_fail $? "802.1ad vlan upper creation on top of a front panel not rejected"
77
78 ip link add name $swp1.100 link $swp1 type vlan \
79 protocol 802.1ad id 100 2>&1 >/dev/null \
80 | grep -q mlxsw_spectrum
81 check_err $? "802.1ad vlan upper creation on top of a front panel rejected without extack"
82
83 log_test "create 802.1ad vlan upper on top of a front panel"
84}
85
86create_8021ad_vlan_upper_on_top_bridge_port()
87{
88 RET=0
89
90 ip link add dev br0 type bridge vlan_filtering 1 \
91 vlan_default_pvid 0 mcast_snooping 0
92 ip link set dev br0 addrgenmode none
93
94 ip link set dev $swp1 master br0
95 ip link set dev br0 up
96
97 ip link add name $swp1.100 link $swp1 type vlan \
98 protocol 802.1ad id 100 2>/dev/null
99 check_fail $? "802.1ad vlan upper creation on top of a bridge port not rejected"
100
101 ip link add name $swp1.100 link $swp1 type vlan \
102 protocol 802.1ad id 100 2>&1 >/dev/null \
103 | grep -q mlxsw_spectrum
104 check_err $? "802.1ad vlan upper creation on top of a bridge port rejected without extack"
105
106 log_test "create 802.1ad vlan upper on top of a bridge port"
107
108 ip link del dev br0
109}
110
111create_8021ad_vlan_upper_on_top_lag()
112{
113 RET=0
114
115 ip link add name bond1 type bond mode 802.3ad
116 ip link set dev $swp1 down
117 ip link set dev $swp1 master bond1
118
119 ip link add name bond1.100 link bond1 type vlan \
120 protocol 802.1ad id 100 2>/dev/null
121 check_fail $? "802.1ad vlan upper creation on top of a lag not rejected"
122
123 ip link add name bond1.100 link bond1 type vlan \
124 protocol 802.1ad id 100 2>&1 >/dev/null \
125 | grep -q mlxsw_spectrum
126 check_err $? "802.1ad vlan upper creation on top of a lag rejected without extack"
127
128 log_test "create 802.1ad vlan upper on top of a lag"
129
130 ip link del dev bond1
131}
132
133create_8021ad_vlan_upper_on_top_bridge()
134{
135 RET=0
136
137 create_vlan_upper_on_top_of_bridge "802.1q" "802.1ad"
138}
139
140create_8021ad_vlan_upper_on_top_8021ad_bridge()
141{
142 RET=0
143
144 create_vlan_upper_on_top_of_bridge "802.1ad" "802.1ad"
145}
146
147create_vlan_upper_on_top_8021ad_bridge()
148{
149 RET=0
150
151 create_vlan_upper_on_top_of_bridge "802.1ad" "802.1q"
152}
153
154create_vlan_upper_on_top_front_panel_enslaved_to_8021ad_bridge()
155{
156 RET=0
157
158 ip link add dev br0 type bridge vlan_filtering 1 \
159 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
160 ip link set dev br0 addrgenmode none
161 ip link set dev br0 up
162
163 ip link set dev $swp1 master br0
164
165 ip link add name $swp1.100 link $swp1 type vlan id 100 2>/dev/null
166 check_fail $? "vlan upper creation on top of front panel enslaved to 802.1ad bridge not rejected"
167
168 ip link add name $swp1.100 link $swp1 type vlan id 100 2>&1 >/dev/null \
169 | grep -q mlxsw_spectrum
170 check_err $? "vlan upper creation on top of front panel enslaved to 802.1ad bridge rejected without extack"
171
172 log_test "create vlan upper on top of front panel enslaved to 802.1ad bridge"
173
174 ip link del dev br0
175}
176
177create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge()
178{
179 RET=0
180
181 ip link add dev br0 type bridge vlan_filtering 1 \
182 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
183 ip link set dev br0 addrgenmode none
184 ip link set dev br0 up
185
186 ip link add name bond1 type bond mode 802.3ad
187 ip link set dev $swp1 down
188 ip link set dev $swp1 master bond1
189 ip link set dev bond1 master br0
190
191 ip link add name bond1.100 link bond1 type vlan id 100 2>/dev/null
192 check_fail $? "vlan upper creation on top of lag enslaved to 802.1ad bridge not rejected"
193
194 ip link add name bond1.100 link bond1 type vlan id 100 2>&1 >/dev/null \
195 | grep -q mlxsw_spectrum
196 check_err $? "vlan upper creation on top of lag enslaved to 802.1ad bridge rejected without extack"
197
198 log_test "create vlan upper on top of lag enslaved to 802.1ad bridge"
199
200 ip link del dev bond1
201 ip link del dev br0
202}
203
204enslave_front_panel_with_vlan_upper_to_8021ad_bridge()
205{
206 RET=0
207
208 ip link add dev br0 type bridge vlan_filtering 1 \
209 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
210 ip link set dev br0 addrgenmode none
211 ip link set dev br0 up
212
213 ip link add name $swp1.100 link $swp1 type vlan id 100
214
215 ip link set dev $swp1 master br0 2>/dev/null
216 check_fail $? "front panel with vlan upper enslavemnt to 802.1ad bridge not rejected"
217
218 ip link set dev $swp1 master br0 2>&1 >/dev/null | grep -q mlxsw_spectrum
219 check_err $? "front panel with vlan upper enslavemnt to 802.1ad bridge rejected without extack"
220
221 log_test "enslave front panel with vlan upper to 802.1ad bridge"
222
223 ip link del dev $swp1.100
224 ip link del dev br0
225}
226
227enslave_lag_with_vlan_upper_to_8021ad_bridge()
228{
229 RET=0
230
231 ip link add dev br0 type bridge vlan_filtering 1 \
232 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
233 ip link set dev br0 addrgenmode none
234 ip link set dev br0 up
235
236 ip link add name bond1 type bond mode 802.3ad
237 ip link set dev $swp1 down
238 ip link set dev $swp1 master bond1
239 ip link add name bond1.100 link bond1 type vlan id 100
240
241 ip link set dev bond1 master br0 2>/dev/null
242 check_fail $? "lag with vlan upper enslavemnt to 802.1ad bridge not rejected"
243
244 ip link set dev bond1 master br0 2>&1 >/dev/null \
245 | grep -q mlxsw_spectrum
246 check_err $? "lag with vlan upper enslavemnt to 802.1ad bridge rejected without extack"
247
248 log_test "enslave lag with vlan upper to 802.1ad bridge"
249
250 ip link del dev bond1
251 ip link del dev br0
252}
253
254
255add_ip_address_to_8021ad_bridge()
256{
257 RET=0
258
259 ip link add dev br0 type bridge vlan_filtering 1 \
260 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
261 ip link set dev br0 addrgenmode none
262
263 ip link set dev br0 up
264 ip link set dev $swp1 master br0
265
266 ip addr add dev br0 192.0.2.17/28 2>/dev/null
267 check_fail $? "IP address addition to 802.1ad bridge not rejected"
268
269 ip addr add dev br0 192.0.2.17/28 2>&1 >/dev/null | grep -q mlxsw_spectrum
270 check_err $? "IP address addition to 802.1ad bridge rejected without extack"
271
272 log_test "IP address addition to 802.1ad bridge"
273
274 ip link del dev br0
275}
276
277switch_bridge_protocol_from_8021q_to_8021ad()
278{
279 RET=0
280
281 ip link add dev br0 type bridge vlan_filtering 1 \
282 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
283 ip link set dev br0 addrgenmode none
284
285 ip link set dev br0 up
286 ip link set dev $swp1 master br0
287
288 ip link set dev br0 type bridge vlan_protocol 802.1q 2>/dev/null
289 check_fail $? "switching bridge protocol from 802.1q to 802.1ad not rejected"
290
291 log_test "switch bridge protocol"
292
293 ip link del dev br0
294}
295
296
297trap cleanup EXIT
298
299setup_prepare
300setup_wait
301
302tests_run
303
304exit $EXIT_STATUS