Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 lib_dir=$(dirname $0)/../../../net/forwarding
0005 
0006 ALL_TESTS="
0007         create_8021ad_vlan_upper_on_top_front_panel_port
0008         create_8021ad_vlan_upper_on_top_bridge_port
0009         create_8021ad_vlan_upper_on_top_lag
0010         create_8021ad_vlan_upper_on_top_bridge
0011         create_8021ad_vlan_upper_on_top_8021ad_bridge
0012         create_vlan_upper_on_top_8021ad_bridge
0013         create_vlan_upper_on_top_front_panel_enslaved_to_8021ad_bridge
0014         create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge
0015         enslave_front_panel_with_vlan_upper_to_8021ad_bridge
0016         enslave_lag_with_vlan_upper_to_8021ad_bridge
0017         add_ip_address_to_8021ad_bridge
0018         switch_bridge_protocol_from_8021q_to_8021ad
0019 "
0020 NUM_NETIFS=2
0021 source $lib_dir/lib.sh
0022 
0023 setup_prepare()
0024 {
0025         swp1=${NETIFS[p1]}
0026         swp2=${NETIFS[p2]}
0027 
0028         ip link set dev $swp1 up
0029         ip link set dev $swp2 up
0030 
0031         sleep 10
0032 }
0033 
0034 cleanup()
0035 {
0036         pre_cleanup
0037 
0038         ip link set dev $swp2 down
0039         ip link set dev $swp1 down
0040 }
0041 
0042 create_vlan_upper_on_top_of_bridge()
0043 {
0044         RET=0
0045 
0046         local bridge_proto=$1; shift
0047         local netdev_proto=$1; shift
0048 
0049         ip link add dev br0 type bridge vlan_filtering 1 \
0050                 vlan_protocol $bridge_proto vlan_default_pvid 0 mcast_snooping 0
0051 
0052         ip link set dev br0 up
0053         ip link set dev $swp1 master br0
0054 
0055         ip link add name br0.100 link br0 type vlan \
0056                 protocol $netdev_proto id 100 2>/dev/null
0057         check_fail $? "$netdev_proto vlan upper creation on top of an $bridge_proto bridge not rejected"
0058 
0059         ip link add name br0.100 link br0 type vlan \
0060                 protocol $netdev_proto id 100 2>&1 >/dev/null \
0061                 | grep -q mlxsw_spectrum
0062         check_err $? "$netdev_proto vlan upper creation on top of an $bridge_proto bridge rejected without extack"
0063 
0064         log_test "create $netdev_proto vlan upper on top $bridge_proto bridge"
0065 
0066         ip link del dev br0
0067 }
0068 
0069 create_8021ad_vlan_upper_on_top_front_panel_port()
0070 {
0071         RET=0
0072 
0073         ip link add name $swp1.100 link $swp1 type vlan \
0074                 protocol 802.1ad id 100 2>/dev/null
0075         check_fail $? "802.1ad vlan upper creation on top of a front panel not rejected"
0076 
0077         ip link add name $swp1.100 link $swp1 type vlan \
0078                 protocol 802.1ad id 100 2>&1 >/dev/null \
0079                 | grep -q mlxsw_spectrum
0080         check_err $? "802.1ad vlan upper creation on top of a front panel rejected without extack"
0081 
0082         log_test "create 802.1ad vlan upper on top of a front panel"
0083 }
0084 
0085 create_8021ad_vlan_upper_on_top_bridge_port()
0086 {
0087         RET=0
0088 
0089         ip link add dev br0 type bridge vlan_filtering 1 \
0090                 vlan_default_pvid 0 mcast_snooping 0
0091 
0092         ip link set dev $swp1 master br0
0093         ip link set dev br0 up
0094 
0095         ip link add name $swp1.100 link $swp1 type vlan \
0096                 protocol 802.1ad id 100 2>/dev/null
0097         check_fail $? "802.1ad vlan upper creation on top of a bridge port not rejected"
0098 
0099         ip link add name $swp1.100 link $swp1 type vlan \
0100                 protocol 802.1ad id 100 2>&1 >/dev/null \
0101                 | grep -q mlxsw_spectrum
0102         check_err $? "802.1ad vlan upper creation on top of a bridge port rejected without extack"
0103 
0104         log_test "create 802.1ad vlan upper on top of a bridge port"
0105 
0106         ip link del dev br0
0107 }
0108 
0109 create_8021ad_vlan_upper_on_top_lag()
0110 {
0111         RET=0
0112 
0113         ip link add name bond1 type bond mode 802.3ad
0114         ip link set dev $swp1 down
0115         ip link set dev $swp1 master bond1
0116 
0117         ip link add name bond1.100 link bond1 type vlan \
0118                 protocol 802.1ad id 100 2>/dev/null
0119         check_fail $? "802.1ad vlan upper creation on top of a lag not rejected"
0120 
0121         ip link add name bond1.100 link bond1 type vlan \
0122                 protocol 802.1ad id 100 2>&1 >/dev/null \
0123                 | grep -q mlxsw_spectrum
0124         check_err $? "802.1ad vlan upper creation on top of a lag rejected without extack"
0125 
0126         log_test "create 802.1ad vlan upper on top of a lag"
0127 
0128         ip link del dev bond1
0129 }
0130 
0131 create_8021ad_vlan_upper_on_top_bridge()
0132 {
0133         RET=0
0134 
0135         create_vlan_upper_on_top_of_bridge "802.1q" "802.1ad"
0136 }
0137 
0138 create_8021ad_vlan_upper_on_top_8021ad_bridge()
0139 {
0140         RET=0
0141 
0142         create_vlan_upper_on_top_of_bridge "802.1ad" "802.1ad"
0143 }
0144 
0145 create_vlan_upper_on_top_8021ad_bridge()
0146 {
0147         RET=0
0148 
0149         create_vlan_upper_on_top_of_bridge "802.1ad" "802.1q"
0150 }
0151 
0152 create_vlan_upper_on_top_front_panel_enslaved_to_8021ad_bridge()
0153 {
0154         RET=0
0155 
0156         ip link add dev br0 type bridge vlan_filtering 1 \
0157                 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
0158         ip link set dev br0 up
0159 
0160         ip link set dev $swp1 master br0
0161 
0162         ip link add name $swp1.100 link $swp1 type vlan id 100 2>/dev/null
0163         check_fail $? "vlan upper creation on top of front panel enslaved to 802.1ad bridge not rejected"
0164 
0165         ip link add name $swp1.100 link $swp1 type vlan id 100 2>&1 >/dev/null \
0166                 | grep -q mlxsw_spectrum
0167         check_err $? "vlan upper creation on top of front panel enslaved to 802.1ad bridge rejected without extack"
0168 
0169         log_test "create vlan upper on top of front panel enslaved to 802.1ad bridge"
0170 
0171         ip link del dev br0
0172 }
0173 
0174 create_vlan_upper_on_top_lag_enslaved_to_8021ad_bridge()
0175 {
0176         RET=0
0177 
0178         ip link add dev br0 type bridge vlan_filtering 1 \
0179                 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
0180         ip link set dev br0 up
0181 
0182         ip link add name bond1 type bond mode 802.3ad
0183         ip link set dev $swp1 down
0184         ip link set dev $swp1 master bond1
0185         ip link set dev bond1 master br0
0186 
0187         ip link add name bond1.100 link bond1 type vlan id 100 2>/dev/null
0188         check_fail $? "vlan upper creation on top of lag enslaved to 802.1ad bridge not rejected"
0189 
0190         ip link add name bond1.100 link bond1 type vlan id 100 2>&1 >/dev/null \
0191                 | grep -q mlxsw_spectrum
0192         check_err $? "vlan upper creation on top of lag enslaved to 802.1ad bridge rejected without extack"
0193 
0194         log_test "create vlan upper on top of lag enslaved to 802.1ad bridge"
0195 
0196         ip link del dev bond1
0197         ip link del dev br0
0198 }
0199 
0200 enslave_front_panel_with_vlan_upper_to_8021ad_bridge()
0201 {
0202         RET=0
0203 
0204         ip link add dev br0 type bridge vlan_filtering 1 \
0205                 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
0206         ip link set dev br0 up
0207 
0208         ip link add name $swp1.100 link $swp1 type vlan id 100
0209 
0210         ip link set dev $swp1 master br0 2>/dev/null
0211         check_fail $? "front panel with vlan upper enslavemnt to 802.1ad bridge not rejected"
0212 
0213         ip link set dev $swp1 master br0 2>&1 >/dev/null | grep -q mlxsw_spectrum
0214         check_err $? "front panel with vlan upper enslavemnt to 802.1ad bridge rejected without extack"
0215 
0216         log_test "enslave front panel with vlan upper to 802.1ad bridge"
0217 
0218         ip link del dev $swp1.100
0219         ip link del dev br0
0220 }
0221 
0222 enslave_lag_with_vlan_upper_to_8021ad_bridge()
0223 {
0224         RET=0
0225 
0226         ip link add dev br0 type bridge vlan_filtering 1 \
0227                 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
0228         ip link set dev br0 up
0229 
0230         ip link add name bond1 type bond mode 802.3ad
0231         ip link set dev $swp1 down
0232         ip link set dev $swp1 master bond1
0233         ip link add name bond1.100 link bond1 type vlan id 100
0234 
0235         ip link set dev bond1 master br0 2>/dev/null
0236         check_fail $? "lag with vlan upper enslavemnt to 802.1ad bridge not rejected"
0237 
0238         ip link set dev bond1 master br0 2>&1 >/dev/null \
0239                 | grep -q mlxsw_spectrum
0240         check_err $? "lag with vlan upper enslavemnt to 802.1ad bridge rejected without extack"
0241 
0242         log_test "enslave lag with vlan upper to 802.1ad bridge"
0243 
0244         ip link del dev bond1
0245         ip link del dev br0
0246 }
0247 
0248 
0249 add_ip_address_to_8021ad_bridge()
0250 {
0251         RET=0
0252 
0253         ip link add dev br0 type bridge vlan_filtering 1 \
0254                 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
0255 
0256         ip link set dev br0 up
0257         ip link set dev $swp1 master br0
0258 
0259         ip addr add dev br0 192.0.2.17/28 2>/dev/null
0260         check_fail $? "IP address addition to 802.1ad bridge not rejected"
0261 
0262         ip addr add dev br0 192.0.2.17/28 2>&1 >/dev/null | grep -q mlxsw_spectrum
0263         check_err $? "IP address addition to 802.1ad bridge rejected without extack"
0264 
0265         log_test "IP address addition to 802.1ad bridge"
0266 
0267         ip link del dev br0
0268 }
0269 
0270 switch_bridge_protocol_from_8021q_to_8021ad()
0271 {
0272         RET=0
0273 
0274         ip link add dev br0 type bridge vlan_filtering 1 \
0275                 vlan_protocol 802.1ad vlan_default_pvid 0 mcast_snooping 0
0276 
0277         ip link set dev br0 up
0278         ip link set dev $swp1 master br0
0279 
0280         ip link set dev br0 type bridge vlan_protocol 802.1q 2>/dev/null
0281         check_fail $? "switching bridge protocol from 802.1q to 802.1ad not rejected"
0282 
0283         log_test "switch bridge protocol"
0284 
0285         ip link del dev br0
0286 }
0287 
0288 
0289 trap cleanup EXIT
0290 
0291 setup_prepare
0292 setup_wait
0293 
0294 tests_run
0295 
0296 exit $EXIT_STATUS