Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 #
0004 # Test operations that we expect to report extended ack.
0005 
0006 lib_dir=$(dirname $0)/../../../net/forwarding
0007 
0008 ALL_TESTS="
0009         netdev_pre_up_test
0010         vxlan_vlan_add_test
0011         vxlan_bridge_create_test
0012         bridge_create_test
0013 "
0014 NUM_NETIFS=2
0015 source $lib_dir/lib.sh
0016 
0017 setup_prepare()
0018 {
0019         swp1=${NETIFS[p1]}
0020         swp2=${NETIFS[p2]}
0021 
0022         ip link set dev $swp1 up
0023         ip link set dev $swp2 up
0024 }
0025 
0026 cleanup()
0027 {
0028         pre_cleanup
0029 
0030         ip link set dev $swp2 down
0031         ip link set dev $swp1 down
0032 }
0033 
0034 netdev_pre_up_test()
0035 {
0036         RET=0
0037 
0038         ip link add name br1 up type bridge vlan_filtering 0 mcast_snooping 0
0039         ip link add name vx1 up type vxlan id 1000 \
0040                 local 192.0.2.17 remote 192.0.2.18 \
0041                 dstport 4789 nolearning noudpcsum tos inherit ttl 100
0042 
0043         ip link set dev vx1 master br1
0044         check_err $?
0045 
0046         ip link set dev $swp1 master br1
0047         check_err $?
0048 
0049         ip link add name br2 up type bridge vlan_filtering 0 mcast_snooping 0
0050         ip link add name vx2 up type vxlan id 2000 \
0051                 local 192.0.2.17 remote 192.0.2.18 \
0052                 dstport 4789 nolearning noudpcsum tos inherit ttl 100
0053 
0054         ip link set dev vx2 master br2
0055         check_err $?
0056 
0057         ip link set dev $swp2 master br2
0058         check_err $?
0059 
0060         # Unsupported configuration: mlxsw demands that all offloaded VXLAN
0061         # devices have the same TTL.
0062         ip link set dev vx2 down
0063         ip link set dev vx2 type vxlan ttl 200
0064 
0065         ip link set dev vx2 up &>/dev/null
0066         check_fail $?
0067 
0068         ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum
0069         check_err $?
0070 
0071         log_test "extack - NETDEV_PRE_UP"
0072 
0073         ip link del dev vx2
0074         ip link del dev br2
0075 
0076         ip link del dev vx1
0077         ip link del dev br1
0078 }
0079 
0080 vxlan_vlan_add_test()
0081 {
0082         RET=0
0083 
0084         ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
0085 
0086         # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
0087         ip link add name vx1 up type vxlan id 1000 \
0088                 local 192.0.2.17 remote 192.0.2.18 \
0089                 dstport 4789 tos inherit ttl 100
0090 
0091         ip link set dev vx1 master br1
0092         check_err $?
0093 
0094         bridge vlan add dev vx1 vid 1
0095         check_err $?
0096 
0097         ip link set dev $swp1 master br1
0098         check_err $?
0099 
0100         bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \
0101                 | grep -q mlxsw_spectrum
0102         check_err $?
0103 
0104         log_test "extack - map VLAN at VXLAN device"
0105 
0106         ip link del dev vx1
0107         ip link del dev br1
0108 }
0109 
0110 vxlan_bridge_create_test()
0111 {
0112         RET=0
0113 
0114         # Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
0115         ip link add name vx1 up type vxlan id 1000 \
0116                 local 192.0.2.17 remote 192.0.2.18 \
0117                 dstport 4789 tos inherit ttl 100
0118 
0119         # Test with VLAN-aware bridge.
0120         ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
0121 
0122         ip link set dev vx1 master br1
0123 
0124         ip link set dev $swp1 master br1 2>&1 > /dev/null \
0125                 | grep -q mlxsw_spectrum
0126         check_err $?
0127 
0128         # Test with VLAN-unaware bridge.
0129         ip link set dev br1 type bridge vlan_filtering 0
0130 
0131         ip link set dev $swp1 master br1 2>&1 > /dev/null \
0132                 | grep -q mlxsw_spectrum
0133         check_err $?
0134 
0135         log_test "extack - bridge creation with VXLAN"
0136 
0137         ip link del dev br1
0138         ip link del dev vx1
0139 }
0140 
0141 bridge_create_test()
0142 {
0143         RET=0
0144 
0145         ip link add name br1 up type bridge vlan_filtering 1
0146         ip link add name br2 up type bridge vlan_filtering 1
0147 
0148         ip link set dev $swp1 master br1
0149         check_err $?
0150 
0151         # Only one VLAN-aware bridge is supported, so this should fail with
0152         # an extack.
0153         ip link set dev $swp2 master br2 2>&1 > /dev/null \
0154                 | grep -q mlxsw_spectrum
0155         check_err $?
0156 
0157         log_test "extack - multiple VLAN-aware bridges creation"
0158 
0159         ip link del dev br2
0160         ip link del dev br1
0161 }
0162 
0163 trap cleanup EXIT
0164 
0165 setup_prepare
0166 setup_wait
0167 
0168 tests_run
0169 
0170 exit $EXIT_STATUS