0001
0002
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