11ba1daedSPetr Machata#!/bin/bash 21ba1daedSPetr Machata# SPDX-License-Identifier: GPL-2.0 31ba1daedSPetr Machata# 41ba1daedSPetr Machata# Test operations that we expect to report extended ack. 51ba1daedSPetr Machata 61ba1daedSPetr Machatalib_dir=$(dirname $0)/../../../net/forwarding 71ba1daedSPetr Machata 81ba1daedSPetr MachataALL_TESTS=" 91ba1daedSPetr Machata netdev_pre_up_test 10b498dc7dSPetr Machata vxlan_vlan_add_test 11bdc58beaSIdo Schimmel vxlan_bridge_create_test 126c4e61ffSIdo Schimmel bridge_create_test 131ba1daedSPetr Machata" 141ba1daedSPetr MachataNUM_NETIFS=2 151ba1daedSPetr Machatasource $lib_dir/lib.sh 161ba1daedSPetr Machata 171ba1daedSPetr Machatasetup_prepare() 181ba1daedSPetr Machata{ 191ba1daedSPetr Machata swp1=${NETIFS[p1]} 201ba1daedSPetr Machata swp2=${NETIFS[p2]} 211ba1daedSPetr Machata 221ba1daedSPetr Machata ip link set dev $swp1 up 231ba1daedSPetr Machata ip link set dev $swp2 up 241ba1daedSPetr Machata} 251ba1daedSPetr Machata 261ba1daedSPetr Machatacleanup() 271ba1daedSPetr Machata{ 281ba1daedSPetr Machata pre_cleanup 291ba1daedSPetr Machata 301ba1daedSPetr Machata ip link set dev $swp2 down 311ba1daedSPetr Machata ip link set dev $swp1 down 321ba1daedSPetr Machata} 331ba1daedSPetr Machata 341ba1daedSPetr Machatanetdev_pre_up_test() 351ba1daedSPetr Machata{ 361ba1daedSPetr Machata RET=0 371ba1daedSPetr Machata 38*a758dc46SPetr Machata ip link add name br1 type bridge vlan_filtering 0 mcast_snooping 0 39*a758dc46SPetr Machata ip link set dev br1 addrgenmode none 40*a758dc46SPetr Machata ip link set dev br1 up 411ba1daedSPetr Machata ip link add name vx1 up type vxlan id 1000 \ 421ba1daedSPetr Machata local 192.0.2.17 remote 192.0.2.18 \ 431ba1daedSPetr Machata dstport 4789 nolearning noudpcsum tos inherit ttl 100 441ba1daedSPetr Machata 451ba1daedSPetr Machata ip link set dev vx1 master br1 461ba1daedSPetr Machata check_err $? 471ba1daedSPetr Machata 481ba1daedSPetr Machata ip link set dev $swp1 master br1 491ba1daedSPetr Machata check_err $? 501ba1daedSPetr Machata 51*a758dc46SPetr Machata ip link add name br2 type bridge vlan_filtering 0 mcast_snooping 0 52*a758dc46SPetr Machata ip link set dev br2 addrgenmode none 53*a758dc46SPetr Machata ip link set dev br2 up 541ba1daedSPetr Machata ip link add name vx2 up type vxlan id 2000 \ 551ba1daedSPetr Machata local 192.0.2.17 remote 192.0.2.18 \ 561ba1daedSPetr Machata dstport 4789 nolearning noudpcsum tos inherit ttl 100 571ba1daedSPetr Machata 581ba1daedSPetr Machata ip link set dev vx2 master br2 591ba1daedSPetr Machata check_err $? 601ba1daedSPetr Machata 611ba1daedSPetr Machata ip link set dev $swp2 master br2 621ba1daedSPetr Machata check_err $? 631ba1daedSPetr Machata 641ba1daedSPetr Machata # Unsupported configuration: mlxsw demands that all offloaded VXLAN 651ba1daedSPetr Machata # devices have the same TTL. 661ba1daedSPetr Machata ip link set dev vx2 down 671ba1daedSPetr Machata ip link set dev vx2 type vxlan ttl 200 681ba1daedSPetr Machata 691ba1daedSPetr Machata ip link set dev vx2 up &>/dev/null 701ba1daedSPetr Machata check_fail $? 711ba1daedSPetr Machata 721ba1daedSPetr Machata ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum 731ba1daedSPetr Machata check_err $? 741ba1daedSPetr Machata 751ba1daedSPetr Machata log_test "extack - NETDEV_PRE_UP" 761ba1daedSPetr Machata 771ba1daedSPetr Machata ip link del dev vx2 781ba1daedSPetr Machata ip link del dev br2 791ba1daedSPetr Machata 801ba1daedSPetr Machata ip link del dev vx1 811ba1daedSPetr Machata ip link del dev br1 821ba1daedSPetr Machata} 831ba1daedSPetr Machata 84b498dc7dSPetr Machatavxlan_vlan_add_test() 85b498dc7dSPetr Machata{ 86b498dc7dSPetr Machata RET=0 87b498dc7dSPetr Machata 88*a758dc46SPetr Machata ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0 89*a758dc46SPetr Machata ip link set dev br1 addrgenmode none 90*a758dc46SPetr Machata ip link set dev br1 up 91b498dc7dSPetr Machata 92b498dc7dSPetr Machata # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum". 93b498dc7dSPetr Machata ip link add name vx1 up type vxlan id 1000 \ 94b498dc7dSPetr Machata local 192.0.2.17 remote 192.0.2.18 \ 95b498dc7dSPetr Machata dstport 4789 tos inherit ttl 100 96b498dc7dSPetr Machata 97b498dc7dSPetr Machata ip link set dev vx1 master br1 98b498dc7dSPetr Machata check_err $? 99b498dc7dSPetr Machata 100b498dc7dSPetr Machata bridge vlan add dev vx1 vid 1 101b498dc7dSPetr Machata check_err $? 102b498dc7dSPetr Machata 103b498dc7dSPetr Machata ip link set dev $swp1 master br1 104b498dc7dSPetr Machata check_err $? 105b498dc7dSPetr Machata 106b498dc7dSPetr Machata bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \ 107b498dc7dSPetr Machata | grep -q mlxsw_spectrum 108b498dc7dSPetr Machata check_err $? 109b498dc7dSPetr Machata 110b498dc7dSPetr Machata log_test "extack - map VLAN at VXLAN device" 111b498dc7dSPetr Machata 112b498dc7dSPetr Machata ip link del dev vx1 113b498dc7dSPetr Machata ip link del dev br1 114b498dc7dSPetr Machata} 115b498dc7dSPetr Machata 116bdc58beaSIdo Schimmelvxlan_bridge_create_test() 117bdc58beaSIdo Schimmel{ 118bdc58beaSIdo Schimmel RET=0 119bdc58beaSIdo Schimmel 120bdc58beaSIdo Schimmel # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum". 121bdc58beaSIdo Schimmel ip link add name vx1 up type vxlan id 1000 \ 122bdc58beaSIdo Schimmel local 192.0.2.17 remote 192.0.2.18 \ 123bdc58beaSIdo Schimmel dstport 4789 tos inherit ttl 100 124bdc58beaSIdo Schimmel 125bdc58beaSIdo Schimmel # Test with VLAN-aware bridge. 126*a758dc46SPetr Machata ip link add name br1 type bridge vlan_filtering 1 mcast_snooping 0 127*a758dc46SPetr Machata ip link set dev br1 addrgenmode none 128*a758dc46SPetr Machata ip link set dev br1 up 129bdc58beaSIdo Schimmel 130bdc58beaSIdo Schimmel ip link set dev vx1 master br1 131bdc58beaSIdo Schimmel 132bdc58beaSIdo Schimmel ip link set dev $swp1 master br1 2>&1 > /dev/null \ 133bdc58beaSIdo Schimmel | grep -q mlxsw_spectrum 134bdc58beaSIdo Schimmel check_err $? 135bdc58beaSIdo Schimmel 136bdc58beaSIdo Schimmel # Test with VLAN-unaware bridge. 137bdc58beaSIdo Schimmel ip link set dev br1 type bridge vlan_filtering 0 138bdc58beaSIdo Schimmel 139bdc58beaSIdo Schimmel ip link set dev $swp1 master br1 2>&1 > /dev/null \ 140bdc58beaSIdo Schimmel | grep -q mlxsw_spectrum 141bdc58beaSIdo Schimmel check_err $? 142bdc58beaSIdo Schimmel 143bdc58beaSIdo Schimmel log_test "extack - bridge creation with VXLAN" 144bdc58beaSIdo Schimmel 145bdc58beaSIdo Schimmel ip link del dev br1 146bdc58beaSIdo Schimmel ip link del dev vx1 147bdc58beaSIdo Schimmel} 148bdc58beaSIdo Schimmel 1496c4e61ffSIdo Schimmelbridge_create_test() 1506c4e61ffSIdo Schimmel{ 1516c4e61ffSIdo Schimmel RET=0 1526c4e61ffSIdo Schimmel 153*a758dc46SPetr Machata ip link add name br1 type bridge vlan_filtering 1 154*a758dc46SPetr Machata ip link set dev br1 addrgenmode none 155*a758dc46SPetr Machata ip link set dev br1 up 156*a758dc46SPetr Machata ip link add name br2 type bridge vlan_filtering 1 157*a758dc46SPetr Machata ip link set dev br2 addrgenmode none 158*a758dc46SPetr Machata ip link set dev br2 up 1596c4e61ffSIdo Schimmel 1606c4e61ffSIdo Schimmel ip link set dev $swp1 master br1 1616c4e61ffSIdo Schimmel check_err $? 1626c4e61ffSIdo Schimmel 1636c4e61ffSIdo Schimmel # Only one VLAN-aware bridge is supported, so this should fail with 1646c4e61ffSIdo Schimmel # an extack. 1656c4e61ffSIdo Schimmel ip link set dev $swp2 master br2 2>&1 > /dev/null \ 1666c4e61ffSIdo Schimmel | grep -q mlxsw_spectrum 1676c4e61ffSIdo Schimmel check_err $? 1686c4e61ffSIdo Schimmel 1696c4e61ffSIdo Schimmel log_test "extack - multiple VLAN-aware bridges creation" 1706c4e61ffSIdo Schimmel 1716c4e61ffSIdo Schimmel ip link del dev br2 1726c4e61ffSIdo Schimmel ip link del dev br1 1736c4e61ffSIdo Schimmel} 1746c4e61ffSIdo Schimmel 1751ba1daedSPetr Machatatrap cleanup EXIT 1761ba1daedSPetr Machata 1771ba1daedSPetr Machatasetup_prepare 1781ba1daedSPetr Machatasetup_wait 1791ba1daedSPetr Machata 1801ba1daedSPetr Machatatests_run 1811ba1daedSPetr Machata 1821ba1daedSPetr Machataexit $EXIT_STATUS 183