File Index
Files and directories
Sign in
FILE

q_in_q_veto.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/drivers/net/mlxsw/q_in_q_veto.sh BASH
  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
~/ Read-only file preview.