305 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4lib_dir=$(dirname $0)/../../../net/forwarding5 6ALL_TESTS="7 create_8021ad_vlan_upper_on_top_front_panel_port8 create_8021ad_vlan_upper_on_top_bridge_port9 create_8021ad_vlan_upper_on_top_lag10 create_8021ad_vlan_upper_on_top_bridge11 create_8021ad_vlan_upper_on_top_8021ad_bridge12 create_vlan_upper_on_top_8021ad_bridge13 create_vlan_upper_on_top_front_panel_enslaved_to_8021ad_bridge14 create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge15 enslave_front_panel_with_vlan_upper_to_8021ad_bridge16 enslave_lag_with_vlan_upper_to_8021ad_bridge17 add_ip_address_to_8021ad_bridge18 switch_bridge_protocol_from_8021q_to_8021ad19"20NUM_NETIFS=221source $lib_dir/lib.sh22 23setup_prepare()24{25 swp1=${NETIFS[p1]}26 swp2=${NETIFS[p2]}27 28 ip link set dev $swp1 up29 ip link set dev $swp2 up30 31 sleep 1032}33 34cleanup()35{36 pre_cleanup37 38 ip link set dev $swp2 down39 ip link set dev $swp1 down40}41 42create_vlan_upper_on_top_of_bridge()43{44 RET=045 46 local bridge_proto=$1; shift47 local netdev_proto=$1; shift48 49 ip link add dev br0 type bridge vlan_filtering 1 \50 vlan_protocol $bridge_proto vlan_default_pvid 0 mcast_snooping 051 ip link set dev br0 addrgenmode none52 53 ip link set dev br0 up54 ip link set dev $swp1 master br055 56 ip link add name br0.100 link br0 type vlan \57 protocol $netdev_proto id 100 2>/dev/null58 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_spectrum63 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 br068}69 70create_8021ad_vlan_upper_on_top_front_panel_port()71{72 RET=073 74 ip link add name $swp1.100 link $swp1 type vlan \75 protocol 802.1ad id 100 2>/dev/null76 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_spectrum81 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=089 90 ip link add dev br0 type bridge vlan_filtering 1 \91 vlan_default_pvid 0 mcast_snooping 092 ip link set dev br0 addrgenmode none93 94 ip link set dev $swp1 master br095 ip link set dev br0 up96 97 ip link add name $swp1.100 link $swp1 type vlan \98 protocol 802.1ad id 100 2>/dev/null99 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_spectrum104 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 br0109}110 111create_8021ad_vlan_upper_on_top_lag()112{113 RET=0114 115 ip link add name bond1 type bond mode 802.3ad116 ip link set dev $swp1 down117 ip link set dev $swp1 master bond1118 119 ip link add name bond1.100 link bond1 type vlan \120 protocol 802.1ad id 100 2>/dev/null121 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_spectrum126 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 bond1131}132 133create_8021ad_vlan_upper_on_top_bridge()134{135 RET=0136 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=0143 144 create_vlan_upper_on_top_of_bridge "802.1ad" "802.1ad"145}146 147create_vlan_upper_on_top_8021ad_bridge()148{149 RET=0150 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=0157 158 ip link add dev br0 type bridge vlan_filtering 1 \159 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0160 ip link set dev br0 addrgenmode none161 ip link set dev br0 up162 163 ip link set dev $swp1 master br0164 165 ip link add name $swp1.100 link $swp1 type vlan id 100 2>/dev/null166 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_spectrum170 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 br0175}176 177create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge()178{179 RET=0180 181 ip link add dev br0 type bridge vlan_filtering 1 \182 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0183 ip link set dev br0 addrgenmode none184 ip link set dev br0 up185 186 ip link add name bond1 type bond mode 802.3ad187 ip link set dev $swp1 down188 ip link set dev $swp1 master bond1189 ip link set dev bond1 master br0190 191 ip link add name bond1.100 link bond1 type vlan id 100 2>/dev/null192 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_spectrum196 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 bond1201 ip link del dev br0202}203 204enslave_front_panel_with_vlan_upper_to_8021ad_bridge()205{206 RET=0207 208 ip link add dev br0 type bridge vlan_filtering 1 \209 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0210 ip link set dev br0 addrgenmode none211 ip link set dev br0 up212 213 ip link add name $swp1.100 link $swp1 type vlan id 100214 215 ip link set dev $swp1 master br0 2>/dev/null216 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_spectrum219 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.100224 ip link del dev br0225}226 227enslave_lag_with_vlan_upper_to_8021ad_bridge()228{229 RET=0230 231 ip link add dev br0 type bridge vlan_filtering 1 \232 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0233 ip link set dev br0 addrgenmode none234 ip link set dev br0 up235 236 ip link add name bond1 type bond mode 802.3ad237 ip link set dev $swp1 down238 ip link set dev $swp1 master bond1239 ip link add name bond1.100 link bond1 type vlan id 100240 241 ip link set dev bond1 master br0 2>/dev/null242 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_spectrum246 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 bond1251 ip link del dev br0252}253 254 255add_ip_address_to_8021ad_bridge()256{257 RET=0258 259 ip link add dev br0 type bridge vlan_filtering 1 \260 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0261 ip link set dev br0 addrgenmode none262 263 ip link set dev br0 up264 ip link set dev $swp1 master br0265 266 ip addr add dev br0 192.0.2.17/28 2>/dev/null267 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_spectrum270 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 br0275}276 277switch_bridge_protocol_from_8021q_to_8021ad()278{279 RET=0280 281 ip link add dev br0 type bridge vlan_filtering 1 \282 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0283 ip link set dev br0 addrgenmode none284 285 ip link set dev br0 up286 ip link set dev $swp1 master br0287 288 ip link set dev br0 type bridge vlan_protocol 802.1q 2>/dev/null289 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 br0294}295 296 297trap cleanup EXIT298 299setup_prepare300setup_wait301 302tests_run303 304exit $EXIT_STATUS305