162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_ci# 462306a36Sopenharmony_ci# Test operations that we expect to report extended ack. 562306a36Sopenharmony_ci 662306a36Sopenharmony_cilib_dir=$(dirname $0)/../../../net/forwarding 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciALL_TESTS=" 962306a36Sopenharmony_ci netdev_pre_up_test 1062306a36Sopenharmony_ci vxlan_vlan_add_test 1162306a36Sopenharmony_ci vxlan_bridge_create_test 1262306a36Sopenharmony_ci bridge_create_test 1362306a36Sopenharmony_ci" 1462306a36Sopenharmony_ciNUM_NETIFS=2 1562306a36Sopenharmony_cisource $lib_dir/lib.sh 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cisetup_prepare() 1862306a36Sopenharmony_ci{ 1962306a36Sopenharmony_ci swp1=${NETIFS[p1]} 2062306a36Sopenharmony_ci swp2=${NETIFS[p2]} 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci ip link set dev $swp1 up 2362306a36Sopenharmony_ci ip link set dev $swp2 up 2462306a36Sopenharmony_ci} 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cicleanup() 2762306a36Sopenharmony_ci{ 2862306a36Sopenharmony_ci pre_cleanup 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci ip link set dev $swp2 down 3162306a36Sopenharmony_ci ip link set dev $swp1 down 3262306a36Sopenharmony_ci} 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cinetdev_pre_up_test() 3562306a36Sopenharmony_ci{ 3662306a36Sopenharmony_ci RET=0 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci ip link add name br1 type bridge vlan_filtering 0 mcast_snooping 0 3962306a36Sopenharmony_ci ip link set dev br1 addrgenmode none 4062306a36Sopenharmony_ci ip link set dev br1 up 4162306a36Sopenharmony_ci ip link add name vx1 up type vxlan id 1000 \ 4262306a36Sopenharmony_ci local 192.0.2.17 remote 192.0.2.18 \ 4362306a36Sopenharmony_ci dstport 4789 nolearning noudpcsum tos inherit ttl 100 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci ip link set dev vx1 master br1 4662306a36Sopenharmony_ci check_err $? 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci ip link set dev $swp1 master br1 4962306a36Sopenharmony_ci check_err $? 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci ip link add name br2 type bridge vlan_filtering 0 mcast_snooping 0 5262306a36Sopenharmony_ci ip link set dev br2 addrgenmode none 5362306a36Sopenharmony_ci ip link set dev br2 up 5462306a36Sopenharmony_ci ip link add name vx2 up type vxlan id 2000 \ 5562306a36Sopenharmony_ci local 192.0.2.17 remote 192.0.2.18 \ 5662306a36Sopenharmony_ci dstport 4789 nolearning noudpcsum tos inherit ttl 100 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci ip link set dev vx2 master br2 5962306a36Sopenharmony_ci check_err $? 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci ip link set dev $swp2 master br2 6262306a36Sopenharmony_ci check_err $? 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci # Unsupported configuration: mlxsw demands that all offloaded VXLAN 6562306a36Sopenharmony_ci # devices have the same TTL. 6662306a36Sopenharmony_ci ip link set dev vx2 down 6762306a36Sopenharmony_ci ip link set dev vx2 type vxlan ttl 200 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci ip link set dev vx2 up &>/dev/null 7062306a36Sopenharmony_ci check_fail $? 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum 7362306a36Sopenharmony_ci check_err $? 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci log_test "extack - NETDEV_PRE_UP" 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci ip link del dev vx2 7862306a36Sopenharmony_ci ip link del dev br2 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci ip link del dev vx1 8162306a36Sopenharmony_ci ip link del dev br1 8262306a36Sopenharmony_ci} 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_civxlan_vlan_add_test() 8562306a36Sopenharmony_ci{ 8662306a36Sopenharmony_ci RET=0 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0 8962306a36Sopenharmony_ci ip link set dev br1 addrgenmode none 9062306a36Sopenharmony_ci ip link set dev br1 up 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum". 9362306a36Sopenharmony_ci ip link add name vx1 up type vxlan id 1000 \ 9462306a36Sopenharmony_ci local 192.0.2.17 remote 192.0.2.18 \ 9562306a36Sopenharmony_ci dstport 4789 tos inherit ttl 100 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci ip link set dev vx1 master br1 9862306a36Sopenharmony_ci check_err $? 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci bridge vlan add dev vx1 vid 1 10162306a36Sopenharmony_ci check_err $? 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci ip link set dev $swp1 master br1 10462306a36Sopenharmony_ci check_err $? 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \ 10762306a36Sopenharmony_ci | grep -q mlxsw_spectrum 10862306a36Sopenharmony_ci check_err $? 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci log_test "extack - map VLAN at VXLAN device" 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci ip link del dev vx1 11362306a36Sopenharmony_ci ip link del dev br1 11462306a36Sopenharmony_ci} 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_civxlan_bridge_create_test() 11762306a36Sopenharmony_ci{ 11862306a36Sopenharmony_ci RET=0 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum". 12162306a36Sopenharmony_ci ip link add name vx1 up type vxlan id 1000 \ 12262306a36Sopenharmony_ci local 192.0.2.17 remote 192.0.2.18 \ 12362306a36Sopenharmony_ci dstport 4789 tos inherit ttl 100 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci # Test with VLAN-aware bridge. 12662306a36Sopenharmony_ci ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0 12762306a36Sopenharmony_ci ip link set dev br1 addrgenmode none 12862306a36Sopenharmony_ci ip link set dev br1 up 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci ip link set dev vx1 master br1 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci ip link set dev $swp1 master br1 2>&1 > /dev/null \ 13362306a36Sopenharmony_ci | grep -q mlxsw_spectrum 13462306a36Sopenharmony_ci check_err $? 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci # Test with VLAN-unaware bridge. 13762306a36Sopenharmony_ci ip link set dev br1 type bridge vlan_filtering 0 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci ip link set dev $swp1 master br1 2>&1 > /dev/null \ 14062306a36Sopenharmony_ci | grep -q mlxsw_spectrum 14162306a36Sopenharmony_ci check_err $? 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci log_test "extack - bridge creation with VXLAN" 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci ip link del dev br1 14662306a36Sopenharmony_ci ip link del dev vx1 14762306a36Sopenharmony_ci} 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_cibridge_create_test() 15062306a36Sopenharmony_ci{ 15162306a36Sopenharmony_ci RET=0 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci ip link add name br1 type bridge vlan_filtering 1 15462306a36Sopenharmony_ci ip link set dev br1 addrgenmode none 15562306a36Sopenharmony_ci ip link set dev br1 up 15662306a36Sopenharmony_ci ip link add name br2 type bridge vlan_filtering 1 15762306a36Sopenharmony_ci ip link set dev br2 addrgenmode none 15862306a36Sopenharmony_ci ip link set dev br2 up 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci ip link set dev $swp1 master br1 16162306a36Sopenharmony_ci check_err $? 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci # Only one VLAN-aware bridge is supported, so this should fail with 16462306a36Sopenharmony_ci # an extack. 16562306a36Sopenharmony_ci ip link set dev $swp2 master br2 2>&1 > /dev/null \ 16662306a36Sopenharmony_ci | grep -q mlxsw_spectrum 16762306a36Sopenharmony_ci check_err $? 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci log_test "extack - multiple VLAN-aware bridges creation" 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci ip link del dev br2 17262306a36Sopenharmony_ci ip link del dev br1 17362306a36Sopenharmony_ci} 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_citrap cleanup EXIT 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_cisetup_prepare 17862306a36Sopenharmony_cisetup_wait 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_citests_run 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ciexit $EXIT_STATUS 183