199c9b084SIdo Schimmel#!/bin/bash 299c9b084SIdo Schimmel# SPDX-License-Identifier: GPL-2.0 399c9b084SIdo Schimmel# 499c9b084SIdo Schimmel# Test various aspects of VxLAN offloading which are specific to mlxsw, such 599c9b084SIdo Schimmel# as sanitization of invalid configurations and offload indication. 699c9b084SIdo Schimmel 799c9b084SIdo Schimmellib_dir=$(dirname $0)/../../../net/forwarding 899c9b084SIdo Schimmel 9*f0723237SIdo SchimmelALL_TESTS="sanitization_test offload_indication_test \ 10*f0723237SIdo Schimmel sanitization_vlan_aware_test offload_indication_vlan_aware_test" 1199c9b084SIdo SchimmelNUM_NETIFS=2 1299c9b084SIdo Schimmelsource $lib_dir/lib.sh 1399c9b084SIdo Schimmel 1499c9b084SIdo Schimmelsetup_prepare() 1599c9b084SIdo Schimmel{ 1699c9b084SIdo Schimmel swp1=${NETIFS[p1]} 1799c9b084SIdo Schimmel swp2=${NETIFS[p2]} 1899c9b084SIdo Schimmel 1999c9b084SIdo Schimmel ip link set dev $swp1 up 2099c9b084SIdo Schimmel ip link set dev $swp2 up 2199c9b084SIdo Schimmel} 2299c9b084SIdo Schimmel 2399c9b084SIdo Schimmelcleanup() 2499c9b084SIdo Schimmel{ 2599c9b084SIdo Schimmel pre_cleanup 2699c9b084SIdo Schimmel 2799c9b084SIdo Schimmel ip link set dev $swp2 down 2899c9b084SIdo Schimmel ip link set dev $swp1 down 2999c9b084SIdo Schimmel} 3099c9b084SIdo Schimmel 3199c9b084SIdo Schimmelsanitization_single_dev_test_pass() 3299c9b084SIdo Schimmel{ 3399c9b084SIdo Schimmel ip link set dev $swp1 master br0 3499c9b084SIdo Schimmel check_err $? 3599c9b084SIdo Schimmel ip link set dev vxlan0 master br0 3699c9b084SIdo Schimmel check_err $? 3799c9b084SIdo Schimmel 3899c9b084SIdo Schimmel ip link set dev $swp1 nomaster 3999c9b084SIdo Schimmel 4099c9b084SIdo Schimmel ip link set dev $swp1 master br0 4199c9b084SIdo Schimmel check_err $? 4299c9b084SIdo Schimmel} 4399c9b084SIdo Schimmel 4499c9b084SIdo Schimmelsanitization_single_dev_test_fail() 4599c9b084SIdo Schimmel{ 4699c9b084SIdo Schimmel ip link set dev $swp1 master br0 4799c9b084SIdo Schimmel check_err $? 4899c9b084SIdo Schimmel ip link set dev vxlan0 master br0 &> /dev/null 4999c9b084SIdo Schimmel check_fail $? 5099c9b084SIdo Schimmel 5199c9b084SIdo Schimmel ip link set dev $swp1 nomaster 5299c9b084SIdo Schimmel 5399c9b084SIdo Schimmel ip link set dev vxlan0 master br0 5499c9b084SIdo Schimmel check_err $? 5599c9b084SIdo Schimmel ip link set dev $swp1 master br0 &> /dev/null 5699c9b084SIdo Schimmel check_fail $? 5799c9b084SIdo Schimmel} 5899c9b084SIdo Schimmel 5999c9b084SIdo Schimmelsanitization_single_dev_valid_test() 6099c9b084SIdo Schimmel{ 6199c9b084SIdo Schimmel RET=0 6299c9b084SIdo Schimmel 6399c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 6499c9b084SIdo Schimmel 6599c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 6699c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 6799c9b084SIdo Schimmel 6899c9b084SIdo Schimmel sanitization_single_dev_test_pass 6999c9b084SIdo Schimmel 7099c9b084SIdo Schimmel ip link del dev vxlan0 7199c9b084SIdo Schimmel ip link del dev br0 7299c9b084SIdo Schimmel 7399c9b084SIdo Schimmel log_test "vxlan device - valid configuration" 7499c9b084SIdo Schimmel} 7599c9b084SIdo Schimmel 7699c9b084SIdo Schimmelsanitization_single_dev_vlan_aware_test() 7799c9b084SIdo Schimmel{ 7899c9b084SIdo Schimmel RET=0 7999c9b084SIdo Schimmel 8099c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 8199c9b084SIdo Schimmel 8299c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 8399c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 8499c9b084SIdo Schimmel 85bbe21061SIdo Schimmel sanitization_single_dev_test_pass 8699c9b084SIdo Schimmel 8799c9b084SIdo Schimmel ip link del dev vxlan0 8899c9b084SIdo Schimmel ip link del dev br0 8999c9b084SIdo Schimmel 9099c9b084SIdo Schimmel log_test "vxlan device with a vlan-aware bridge" 9199c9b084SIdo Schimmel} 9299c9b084SIdo Schimmel 9399c9b084SIdo Schimmelsanitization_single_dev_mcast_enabled_test() 9499c9b084SIdo Schimmel{ 9599c9b084SIdo Schimmel RET=0 9699c9b084SIdo Schimmel 9799c9b084SIdo Schimmel ip link add dev br0 type bridge 9899c9b084SIdo Schimmel 9999c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 10099c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 10199c9b084SIdo Schimmel 10299c9b084SIdo Schimmel sanitization_single_dev_test_fail 10399c9b084SIdo Schimmel 10499c9b084SIdo Schimmel ip link del dev vxlan0 10599c9b084SIdo Schimmel ip link del dev br0 10699c9b084SIdo Schimmel 10799c9b084SIdo Schimmel log_test "vxlan device with a multicast enabled bridge" 10899c9b084SIdo Schimmel} 10999c9b084SIdo Schimmel 11099c9b084SIdo Schimmelsanitization_single_dev_mcast_group_test() 11199c9b084SIdo Schimmel{ 11299c9b084SIdo Schimmel RET=0 11399c9b084SIdo Schimmel 11499c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 11599c9b084SIdo Schimmel 11699c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 11799c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 \ 11899c9b084SIdo Schimmel dev $swp2 group 239.0.0.1 11999c9b084SIdo Schimmel 12099c9b084SIdo Schimmel sanitization_single_dev_test_fail 12199c9b084SIdo Schimmel 12299c9b084SIdo Schimmel ip link del dev vxlan0 12399c9b084SIdo Schimmel ip link del dev br0 12499c9b084SIdo Schimmel 12599c9b084SIdo Schimmel log_test "vxlan device with a multicast group" 12699c9b084SIdo Schimmel} 12799c9b084SIdo Schimmel 12899c9b084SIdo Schimmelsanitization_single_dev_no_local_ip_test() 12999c9b084SIdo Schimmel{ 13099c9b084SIdo Schimmel RET=0 13199c9b084SIdo Schimmel 13299c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 13399c9b084SIdo Schimmel 13499c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 13599c9b084SIdo Schimmel ttl 20 tos inherit dstport 4789 13699c9b084SIdo Schimmel 13799c9b084SIdo Schimmel sanitization_single_dev_test_fail 13899c9b084SIdo Schimmel 13999c9b084SIdo Schimmel ip link del dev vxlan0 14099c9b084SIdo Schimmel ip link del dev br0 14199c9b084SIdo Schimmel 14299c9b084SIdo Schimmel log_test "vxlan device with no local ip" 14399c9b084SIdo Schimmel} 14499c9b084SIdo Schimmel 14599c9b084SIdo Schimmelsanitization_single_dev_local_ipv6_test() 14699c9b084SIdo Schimmel{ 14799c9b084SIdo Schimmel RET=0 14899c9b084SIdo Schimmel 14999c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 15099c9b084SIdo Schimmel 15199c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 15299c9b084SIdo Schimmel ttl 20 tos inherit local 2001:db8::1 dstport 4789 15399c9b084SIdo Schimmel 15499c9b084SIdo Schimmel sanitization_single_dev_test_fail 15599c9b084SIdo Schimmel 15699c9b084SIdo Schimmel ip link del dev vxlan0 15799c9b084SIdo Schimmel ip link del dev br0 15899c9b084SIdo Schimmel 15999c9b084SIdo Schimmel log_test "vxlan device with local ipv6 address" 16099c9b084SIdo Schimmel} 16199c9b084SIdo Schimmel 16299c9b084SIdo Schimmelsanitization_single_dev_learning_enabled_test() 16399c9b084SIdo Schimmel{ 16499c9b084SIdo Schimmel RET=0 16599c9b084SIdo Schimmel 16699c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 16799c9b084SIdo Schimmel 16899c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 learning noudpcsum \ 16999c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 17099c9b084SIdo Schimmel 171dbd4485aSIdo Schimmel sanitization_single_dev_test_pass 17299c9b084SIdo Schimmel 17399c9b084SIdo Schimmel ip link del dev vxlan0 17499c9b084SIdo Schimmel ip link del dev br0 17599c9b084SIdo Schimmel 17699c9b084SIdo Schimmel log_test "vxlan device with learning enabled" 17799c9b084SIdo Schimmel} 17899c9b084SIdo Schimmel 17999c9b084SIdo Schimmelsanitization_single_dev_local_interface_test() 18099c9b084SIdo Schimmel{ 18199c9b084SIdo Schimmel RET=0 18299c9b084SIdo Schimmel 18399c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 18499c9b084SIdo Schimmel 18599c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 18699c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 dev $swp2 18799c9b084SIdo Schimmel 18899c9b084SIdo Schimmel sanitization_single_dev_test_fail 18999c9b084SIdo Schimmel 19099c9b084SIdo Schimmel ip link del dev vxlan0 19199c9b084SIdo Schimmel ip link del dev br0 19299c9b084SIdo Schimmel 19399c9b084SIdo Schimmel log_test "vxlan device with local interface" 19499c9b084SIdo Schimmel} 19599c9b084SIdo Schimmel 19699c9b084SIdo Schimmelsanitization_single_dev_port_range_test() 19799c9b084SIdo Schimmel{ 19899c9b084SIdo Schimmel RET=0 19999c9b084SIdo Schimmel 20099c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 20199c9b084SIdo Schimmel 20299c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 20399c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 \ 20499c9b084SIdo Schimmel srcport 4000 5000 20599c9b084SIdo Schimmel 20699c9b084SIdo Schimmel sanitization_single_dev_test_fail 20799c9b084SIdo Schimmel 20899c9b084SIdo Schimmel ip link del dev vxlan0 20999c9b084SIdo Schimmel ip link del dev br0 21099c9b084SIdo Schimmel 21199c9b084SIdo Schimmel log_test "vxlan device with udp source port range" 21299c9b084SIdo Schimmel} 21399c9b084SIdo Schimmel 21499c9b084SIdo Schimmelsanitization_single_dev_tos_static_test() 21599c9b084SIdo Schimmel{ 21699c9b084SIdo Schimmel RET=0 21799c9b084SIdo Schimmel 21899c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 21999c9b084SIdo Schimmel 22099c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 22199c9b084SIdo Schimmel ttl 20 tos 20 local 198.51.100.1 dstport 4789 22299c9b084SIdo Schimmel 22399c9b084SIdo Schimmel sanitization_single_dev_test_fail 22499c9b084SIdo Schimmel 22599c9b084SIdo Schimmel ip link del dev vxlan0 22699c9b084SIdo Schimmel ip link del dev br0 22799c9b084SIdo Schimmel 22899c9b084SIdo Schimmel log_test "vxlan device with static tos" 22999c9b084SIdo Schimmel} 23099c9b084SIdo Schimmel 23199c9b084SIdo Schimmelsanitization_single_dev_ttl_inherit_test() 23299c9b084SIdo Schimmel{ 23399c9b084SIdo Schimmel RET=0 23499c9b084SIdo Schimmel 23599c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 23699c9b084SIdo Schimmel 23799c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 23899c9b084SIdo Schimmel ttl inherit tos inherit local 198.51.100.1 dstport 4789 23999c9b084SIdo Schimmel 24099c9b084SIdo Schimmel sanitization_single_dev_test_fail 24199c9b084SIdo Schimmel 24299c9b084SIdo Schimmel ip link del dev vxlan0 24399c9b084SIdo Schimmel ip link del dev br0 24499c9b084SIdo Schimmel 24599c9b084SIdo Schimmel log_test "vxlan device with inherit ttl" 24699c9b084SIdo Schimmel} 24799c9b084SIdo Schimmel 24899c9b084SIdo Schimmelsanitization_single_dev_udp_checksum_test() 24999c9b084SIdo Schimmel{ 25099c9b084SIdo Schimmel RET=0 25199c9b084SIdo Schimmel 25299c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 25399c9b084SIdo Schimmel 25499c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning udpcsum \ 25599c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 25699c9b084SIdo Schimmel 25799c9b084SIdo Schimmel sanitization_single_dev_test_fail 25899c9b084SIdo Schimmel 25999c9b084SIdo Schimmel ip link del dev vxlan0 26099c9b084SIdo Schimmel ip link del dev br0 26199c9b084SIdo Schimmel 26299c9b084SIdo Schimmel log_test "vxlan device with udp checksum" 26399c9b084SIdo Schimmel} 26499c9b084SIdo Schimmel 26599c9b084SIdo Schimmelsanitization_single_dev_test() 26699c9b084SIdo Schimmel{ 26799c9b084SIdo Schimmel # These tests make sure that we correctly sanitize VxLAN device 26899c9b084SIdo Schimmel # configurations we do not support 26999c9b084SIdo Schimmel sanitization_single_dev_valid_test 27099c9b084SIdo Schimmel sanitization_single_dev_vlan_aware_test 27199c9b084SIdo Schimmel sanitization_single_dev_mcast_enabled_test 27299c9b084SIdo Schimmel sanitization_single_dev_mcast_group_test 27399c9b084SIdo Schimmel sanitization_single_dev_no_local_ip_test 27499c9b084SIdo Schimmel sanitization_single_dev_local_ipv6_test 27599c9b084SIdo Schimmel sanitization_single_dev_learning_enabled_test 27699c9b084SIdo Schimmel sanitization_single_dev_local_interface_test 27799c9b084SIdo Schimmel sanitization_single_dev_port_range_test 27899c9b084SIdo Schimmel sanitization_single_dev_tos_static_test 27999c9b084SIdo Schimmel sanitization_single_dev_ttl_inherit_test 28099c9b084SIdo Schimmel sanitization_single_dev_udp_checksum_test 28199c9b084SIdo Schimmel} 28299c9b084SIdo Schimmel 28399c9b084SIdo Schimmelsanitization_multi_devs_test_pass() 28499c9b084SIdo Schimmel{ 28599c9b084SIdo Schimmel ip link set dev $swp1 master br0 28699c9b084SIdo Schimmel check_err $? 28799c9b084SIdo Schimmel ip link set dev vxlan0 master br0 28899c9b084SIdo Schimmel check_err $? 28999c9b084SIdo Schimmel ip link set dev $swp2 master br1 29099c9b084SIdo Schimmel check_err $? 29199c9b084SIdo Schimmel ip link set dev vxlan1 master br1 29299c9b084SIdo Schimmel check_err $? 29399c9b084SIdo Schimmel 29499c9b084SIdo Schimmel ip link set dev $swp2 nomaster 29599c9b084SIdo Schimmel ip link set dev $swp1 nomaster 29699c9b084SIdo Schimmel 29799c9b084SIdo Schimmel ip link set dev $swp1 master br0 29899c9b084SIdo Schimmel check_err $? 29999c9b084SIdo Schimmel ip link set dev $swp2 master br1 30099c9b084SIdo Schimmel check_err $? 30199c9b084SIdo Schimmel} 30299c9b084SIdo Schimmel 30399c9b084SIdo Schimmelsanitization_multi_devs_test_fail() 30499c9b084SIdo Schimmel{ 30599c9b084SIdo Schimmel ip link set dev $swp1 master br0 30699c9b084SIdo Schimmel check_err $? 30799c9b084SIdo Schimmel ip link set dev vxlan0 master br0 30899c9b084SIdo Schimmel check_err $? 30999c9b084SIdo Schimmel ip link set dev $swp2 master br1 31099c9b084SIdo Schimmel check_err $? 31199c9b084SIdo Schimmel ip link set dev vxlan1 master br1 &> /dev/null 31299c9b084SIdo Schimmel check_fail $? 31399c9b084SIdo Schimmel 31499c9b084SIdo Schimmel ip link set dev $swp2 nomaster 31599c9b084SIdo Schimmel ip link set dev $swp1 nomaster 31699c9b084SIdo Schimmel 31799c9b084SIdo Schimmel ip link set dev vxlan1 master br1 31899c9b084SIdo Schimmel check_err $? 31999c9b084SIdo Schimmel ip link set dev $swp1 master br0 32099c9b084SIdo Schimmel check_err $? 32199c9b084SIdo Schimmel ip link set dev $swp2 master br1 &> /dev/null 32299c9b084SIdo Schimmel check_fail $? 32399c9b084SIdo Schimmel} 32499c9b084SIdo Schimmel 32599c9b084SIdo Schimmelsanitization_multi_devs_valid_test() 32699c9b084SIdo Schimmel{ 32799c9b084SIdo Schimmel RET=0 32899c9b084SIdo Schimmel 32999c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 33099c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 33199c9b084SIdo Schimmel 33299c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 33399c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 33499c9b084SIdo Schimmel ip link add name vxlan1 up type vxlan id 20 nolearning noudpcsum \ 33599c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 33699c9b084SIdo Schimmel 33799c9b084SIdo Schimmel sanitization_multi_devs_test_pass 33899c9b084SIdo Schimmel 33999c9b084SIdo Schimmel ip link del dev vxlan1 34099c9b084SIdo Schimmel ip link del dev vxlan0 34199c9b084SIdo Schimmel ip link del dev br1 34299c9b084SIdo Schimmel ip link del dev br0 34399c9b084SIdo Schimmel 34499c9b084SIdo Schimmel log_test "multiple vxlan devices - valid configuration" 34599c9b084SIdo Schimmel} 34699c9b084SIdo Schimmel 34799c9b084SIdo Schimmelsanitization_multi_devs_ttl_test() 34899c9b084SIdo Schimmel{ 34999c9b084SIdo Schimmel RET=0 35099c9b084SIdo Schimmel 35199c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 35299c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 35399c9b084SIdo Schimmel 35499c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 35599c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 35699c9b084SIdo Schimmel ip link add name vxlan1 up type vxlan id 20 nolearning noudpcsum \ 35799c9b084SIdo Schimmel ttl 40 tos inherit local 198.51.100.1 dstport 4789 35899c9b084SIdo Schimmel 35999c9b084SIdo Schimmel sanitization_multi_devs_test_fail 36099c9b084SIdo Schimmel 36199c9b084SIdo Schimmel ip link del dev vxlan1 36299c9b084SIdo Schimmel ip link del dev vxlan0 36399c9b084SIdo Schimmel ip link del dev br1 36499c9b084SIdo Schimmel ip link del dev br0 36599c9b084SIdo Schimmel 36699c9b084SIdo Schimmel log_test "multiple vxlan devices with different ttl" 36799c9b084SIdo Schimmel} 36899c9b084SIdo Schimmel 36999c9b084SIdo Schimmelsanitization_multi_devs_udp_dstport_test() 37099c9b084SIdo Schimmel{ 37199c9b084SIdo Schimmel RET=0 37299c9b084SIdo Schimmel 37399c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 37499c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 37599c9b084SIdo Schimmel 37699c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 37799c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 37899c9b084SIdo Schimmel ip link add name vxlan1 up type vxlan id 20 nolearning noudpcsum \ 37999c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 5789 38099c9b084SIdo Schimmel 38199c9b084SIdo Schimmel sanitization_multi_devs_test_fail 38299c9b084SIdo Schimmel 38399c9b084SIdo Schimmel ip link del dev vxlan1 38499c9b084SIdo Schimmel ip link del dev vxlan0 38599c9b084SIdo Schimmel ip link del dev br1 38699c9b084SIdo Schimmel ip link del dev br0 38799c9b084SIdo Schimmel 38899c9b084SIdo Schimmel log_test "multiple vxlan devices with different udp destination port" 38999c9b084SIdo Schimmel} 39099c9b084SIdo Schimmel 39199c9b084SIdo Schimmelsanitization_multi_devs_local_ip_test() 39299c9b084SIdo Schimmel{ 39399c9b084SIdo Schimmel RET=0 39499c9b084SIdo Schimmel 39599c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 39699c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 39799c9b084SIdo Schimmel 39899c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning noudpcsum \ 39999c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.1 dstport 4789 40099c9b084SIdo Schimmel ip link add name vxlan1 up type vxlan id 20 nolearning noudpcsum \ 40199c9b084SIdo Schimmel ttl 20 tos inherit local 198.51.100.2 dstport 4789 40299c9b084SIdo Schimmel 40399c9b084SIdo Schimmel sanitization_multi_devs_test_fail 40499c9b084SIdo Schimmel 40599c9b084SIdo Schimmel ip link del dev vxlan1 40699c9b084SIdo Schimmel ip link del dev vxlan0 40799c9b084SIdo Schimmel ip link del dev br1 40899c9b084SIdo Schimmel ip link del dev br0 40999c9b084SIdo Schimmel 41099c9b084SIdo Schimmel log_test "multiple vxlan devices with different local ip" 41199c9b084SIdo Schimmel} 41299c9b084SIdo Schimmel 41399c9b084SIdo Schimmelsanitization_multi_devs_test() 41499c9b084SIdo Schimmel{ 41599c9b084SIdo Schimmel # The device has a single VTEP, which means all the VxLAN devices 41699c9b084SIdo Schimmel # we offload must share certain properties such as source IP and 41799c9b084SIdo Schimmel # UDP destination port. These tests make sure that we forbid 41899c9b084SIdo Schimmel # configurations that violate this limitation 41999c9b084SIdo Schimmel sanitization_multi_devs_valid_test 42099c9b084SIdo Schimmel sanitization_multi_devs_ttl_test 42199c9b084SIdo Schimmel sanitization_multi_devs_udp_dstport_test 42299c9b084SIdo Schimmel sanitization_multi_devs_local_ip_test 42399c9b084SIdo Schimmel} 42499c9b084SIdo Schimmel 42599c9b084SIdo Schimmelsanitization_test() 42699c9b084SIdo Schimmel{ 42799c9b084SIdo Schimmel sanitization_single_dev_test 42899c9b084SIdo Schimmel sanitization_multi_devs_test 42999c9b084SIdo Schimmel} 43099c9b084SIdo Schimmel 43199c9b084SIdo Schimmeloffload_indication_setup_create() 43299c9b084SIdo Schimmel{ 43399c9b084SIdo Schimmel # Create a simple setup with two bridges, each with a VxLAN device 43499c9b084SIdo Schimmel # and one local port 43599c9b084SIdo Schimmel ip link add name br0 up type bridge mcast_snooping 0 43699c9b084SIdo Schimmel ip link add name br1 up type bridge mcast_snooping 0 43799c9b084SIdo Schimmel 43899c9b084SIdo Schimmel ip link set dev $swp1 master br0 43999c9b084SIdo Schimmel ip link set dev $swp2 master br1 44099c9b084SIdo Schimmel 44199c9b084SIdo Schimmel ip address add 198.51.100.1/32 dev lo 44299c9b084SIdo Schimmel 44399c9b084SIdo Schimmel ip link add name vxlan0 up master br0 type vxlan id 10 nolearning \ 44499c9b084SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 44599c9b084SIdo Schimmel ip link add name vxlan1 up master br1 type vxlan id 20 nolearning \ 44699c9b084SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 44799c9b084SIdo Schimmel} 44899c9b084SIdo Schimmel 44999c9b084SIdo Schimmeloffload_indication_setup_destroy() 45099c9b084SIdo Schimmel{ 45199c9b084SIdo Schimmel ip link del dev vxlan1 45299c9b084SIdo Schimmel ip link del dev vxlan0 45399c9b084SIdo Schimmel 45499c9b084SIdo Schimmel ip address del 198.51.100.1/32 dev lo 45599c9b084SIdo Schimmel 45699c9b084SIdo Schimmel ip link set dev $swp2 nomaster 45799c9b084SIdo Schimmel ip link set dev $swp1 nomaster 45899c9b084SIdo Schimmel 45999c9b084SIdo Schimmel ip link del dev br1 46099c9b084SIdo Schimmel ip link del dev br0 46199c9b084SIdo Schimmel} 46299c9b084SIdo Schimmel 46399c9b084SIdo Schimmeloffload_indication_fdb_flood_test() 46499c9b084SIdo Schimmel{ 46599c9b084SIdo Schimmel RET=0 46699c9b084SIdo Schimmel 46799c9b084SIdo Schimmel bridge fdb append 00:00:00:00:00:00 dev vxlan0 self dst 198.51.100.2 46899c9b084SIdo Schimmel 46999c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep 00:00:00:00:00:00 \ 47099c9b084SIdo Schimmel | grep -q offload 47199c9b084SIdo Schimmel check_err $? 47299c9b084SIdo Schimmel 47399c9b084SIdo Schimmel bridge fdb del 00:00:00:00:00:00 dev vxlan0 self 47499c9b084SIdo Schimmel 47599c9b084SIdo Schimmel log_test "vxlan flood entry offload indication" 47699c9b084SIdo Schimmel} 47799c9b084SIdo Schimmel 47899c9b084SIdo Schimmeloffload_indication_fdb_bridge_test() 47999c9b084SIdo Schimmel{ 48099c9b084SIdo Schimmel RET=0 48199c9b084SIdo Schimmel 48299c9b084SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan0 self master static \ 48399c9b084SIdo Schimmel dst 198.51.100.2 48499c9b084SIdo Schimmel 48599c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep self \ 48699c9b084SIdo Schimmel | grep -q offload 48799c9b084SIdo Schimmel check_err $? 48899c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep -v self \ 48999c9b084SIdo Schimmel | grep -q offload 49099c9b084SIdo Schimmel check_err $? 49199c9b084SIdo Schimmel 49299c9b084SIdo Schimmel log_test "vxlan entry offload indication - initial state" 49399c9b084SIdo Schimmel 49499c9b084SIdo Schimmel # Remove FDB entry from the bridge driver and check that corresponding 49599c9b084SIdo Schimmel # entry in the VxLAN driver is not marked as offloaded 49699c9b084SIdo Schimmel RET=0 49799c9b084SIdo Schimmel 49899c9b084SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan0 master 49999c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep self \ 50099c9b084SIdo Schimmel | grep -q offload 50199c9b084SIdo Schimmel check_fail $? 50299c9b084SIdo Schimmel 50399c9b084SIdo Schimmel log_test "vxlan entry offload indication - after removal from bridge" 50499c9b084SIdo Schimmel 50599c9b084SIdo Schimmel # Add the FDB entry back to the bridge driver and make sure it is 50699c9b084SIdo Schimmel # marked as offloaded in both drivers 50799c9b084SIdo Schimmel RET=0 50899c9b084SIdo Schimmel 50999c9b084SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan0 master static 51099c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep self \ 51199c9b084SIdo Schimmel | grep -q offload 51299c9b084SIdo Schimmel check_err $? 51399c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep -v self \ 51499c9b084SIdo Schimmel | grep -q offload 51599c9b084SIdo Schimmel check_err $? 51699c9b084SIdo Schimmel 51799c9b084SIdo Schimmel log_test "vxlan entry offload indication - after re-add to bridge" 51899c9b084SIdo Schimmel 51999c9b084SIdo Schimmel # Remove FDB entry from the VxLAN driver and check that corresponding 52099c9b084SIdo Schimmel # entry in the bridge driver is not marked as offloaded 52199c9b084SIdo Schimmel RET=0 52299c9b084SIdo Schimmel 52399c9b084SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan0 self 52499c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep -v self \ 52599c9b084SIdo Schimmel | grep -q offload 52699c9b084SIdo Schimmel check_fail $? 52799c9b084SIdo Schimmel 52899c9b084SIdo Schimmel log_test "vxlan entry offload indication - after removal from vxlan" 52999c9b084SIdo Schimmel 53099c9b084SIdo Schimmel # Add the FDB entry back to the VxLAN driver and make sure it is 53199c9b084SIdo Schimmel # marked as offloaded in both drivers 53299c9b084SIdo Schimmel RET=0 53399c9b084SIdo Schimmel 53499c9b084SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan0 self dst 198.51.100.2 53599c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep self \ 53699c9b084SIdo Schimmel | grep -q offload 53799c9b084SIdo Schimmel check_err $? 53899c9b084SIdo Schimmel bridge fdb show brport vxlan0 | grep de:ad:be:ef:13:37 | grep -v self \ 53999c9b084SIdo Schimmel | grep -q offload 54099c9b084SIdo Schimmel check_err $? 54199c9b084SIdo Schimmel 54299c9b084SIdo Schimmel log_test "vxlan entry offload indication - after re-add to vxlan" 54399c9b084SIdo Schimmel 54499c9b084SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan0 self master 54599c9b084SIdo Schimmel} 54699c9b084SIdo Schimmel 54799c9b084SIdo Schimmeloffload_indication_fdb_test() 54899c9b084SIdo Schimmel{ 54999c9b084SIdo Schimmel offload_indication_fdb_flood_test 55099c9b084SIdo Schimmel offload_indication_fdb_bridge_test 55199c9b084SIdo Schimmel} 55299c9b084SIdo Schimmel 55399c9b084SIdo Schimmeloffload_indication_decap_route_test() 55499c9b084SIdo Schimmel{ 55599c9b084SIdo Schimmel RET=0 55699c9b084SIdo Schimmel 55799c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 55899c9b084SIdo Schimmel check_err $? 55999c9b084SIdo Schimmel 56099c9b084SIdo Schimmel ip link set dev vxlan0 down 56199c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 56299c9b084SIdo Schimmel check_err $? 56399c9b084SIdo Schimmel 56499c9b084SIdo Schimmel ip link set dev vxlan1 down 56599c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 56699c9b084SIdo Schimmel check_fail $? 56799c9b084SIdo Schimmel 56899c9b084SIdo Schimmel log_test "vxlan decap route - vxlan device down" 56999c9b084SIdo Schimmel 57099c9b084SIdo Schimmel RET=0 57199c9b084SIdo Schimmel 57299c9b084SIdo Schimmel ip link set dev vxlan1 up 57399c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 57499c9b084SIdo Schimmel check_err $? 57599c9b084SIdo Schimmel 57699c9b084SIdo Schimmel ip link set dev vxlan0 up 57799c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 57899c9b084SIdo Schimmel check_err $? 57999c9b084SIdo Schimmel 58099c9b084SIdo Schimmel log_test "vxlan decap route - vxlan device up" 58199c9b084SIdo Schimmel 58299c9b084SIdo Schimmel RET=0 58399c9b084SIdo Schimmel 58499c9b084SIdo Schimmel ip address delete 198.51.100.1/32 dev lo 58599c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 58699c9b084SIdo Schimmel check_fail $? 58799c9b084SIdo Schimmel 58899c9b084SIdo Schimmel ip address add 198.51.100.1/32 dev lo 58999c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 59099c9b084SIdo Schimmel check_err $? 59199c9b084SIdo Schimmel 59299c9b084SIdo Schimmel log_test "vxlan decap route - add local route" 59399c9b084SIdo Schimmel 59499c9b084SIdo Schimmel RET=0 59599c9b084SIdo Schimmel 59699c9b084SIdo Schimmel ip link set dev $swp1 nomaster 59799c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 59899c9b084SIdo Schimmel check_err $? 59999c9b084SIdo Schimmel 60099c9b084SIdo Schimmel ip link set dev $swp2 nomaster 60199c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 60299c9b084SIdo Schimmel check_fail $? 60399c9b084SIdo Schimmel 60499c9b084SIdo Schimmel ip link set dev $swp1 master br0 60599c9b084SIdo Schimmel ip link set dev $swp2 master br1 60699c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 60799c9b084SIdo Schimmel check_err $? 60899c9b084SIdo Schimmel 60999c9b084SIdo Schimmel log_test "vxlan decap route - local ports enslavement" 61099c9b084SIdo Schimmel 61199c9b084SIdo Schimmel RET=0 61299c9b084SIdo Schimmel 61399c9b084SIdo Schimmel ip link del dev br0 61499c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 61599c9b084SIdo Schimmel check_err $? 61699c9b084SIdo Schimmel 61799c9b084SIdo Schimmel ip link del dev br1 61899c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 61999c9b084SIdo Schimmel check_fail $? 62099c9b084SIdo Schimmel 62199c9b084SIdo Schimmel log_test "vxlan decap route - bridge device deletion" 62299c9b084SIdo Schimmel 62399c9b084SIdo Schimmel RET=0 62499c9b084SIdo Schimmel 62599c9b084SIdo Schimmel ip link add name br0 up type bridge mcast_snooping 0 62699c9b084SIdo Schimmel ip link add name br1 up type bridge mcast_snooping 0 62799c9b084SIdo Schimmel ip link set dev $swp1 master br0 62899c9b084SIdo Schimmel ip link set dev $swp2 master br1 62999c9b084SIdo Schimmel ip link set dev vxlan0 master br0 63099c9b084SIdo Schimmel ip link set dev vxlan1 master br1 63199c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 63299c9b084SIdo Schimmel check_err $? 63399c9b084SIdo Schimmel 63499c9b084SIdo Schimmel ip link del dev vxlan0 63599c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 63699c9b084SIdo Schimmel check_err $? 63799c9b084SIdo Schimmel 63899c9b084SIdo Schimmel ip link del dev vxlan1 63999c9b084SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 64099c9b084SIdo Schimmel check_fail $? 64199c9b084SIdo Schimmel 64299c9b084SIdo Schimmel log_test "vxlan decap route - vxlan device deletion" 64399c9b084SIdo Schimmel 64499c9b084SIdo Schimmel ip link add name vxlan0 up master br0 type vxlan id 10 nolearning \ 64599c9b084SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 64699c9b084SIdo Schimmel ip link add name vxlan1 up master br1 type vxlan id 20 nolearning \ 64799c9b084SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 64899c9b084SIdo Schimmel} 64999c9b084SIdo Schimmel 65099c9b084SIdo Schimmeloffload_indication_test() 65199c9b084SIdo Schimmel{ 65299c9b084SIdo Schimmel offload_indication_setup_create 65399c9b084SIdo Schimmel offload_indication_fdb_test 65499c9b084SIdo Schimmel offload_indication_decap_route_test 65599c9b084SIdo Schimmel offload_indication_setup_destroy 65699c9b084SIdo Schimmel} 65799c9b084SIdo Schimmel 658*f0723237SIdo Schimmelsanitization_vlan_aware_test() 659*f0723237SIdo Schimmel{ 660*f0723237SIdo Schimmel RET=0 661*f0723237SIdo Schimmel 662*f0723237SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 663*f0723237SIdo Schimmel 664*f0723237SIdo Schimmel ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 665*f0723237SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 666*f0723237SIdo Schimmel 667*f0723237SIdo Schimmel ip link add name vxlan20 up master br0 type vxlan id 20 nolearning \ 668*f0723237SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 669*f0723237SIdo Schimmel 670*f0723237SIdo Schimmel # Test that when each VNI is mapped to a different VLAN we can enslave 671*f0723237SIdo Schimmel # a port to the bridge 672*f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 pvid untagged 673*f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 674*f0723237SIdo Schimmel 675*f0723237SIdo Schimmel ip link set dev $swp1 master br0 676*f0723237SIdo Schimmel check_err $? 677*f0723237SIdo Schimmel 678*f0723237SIdo Schimmel log_test "vlan-aware - enslavement to vlan-aware bridge" 679*f0723237SIdo Schimmel 680*f0723237SIdo Schimmel # Try to map both VNIs to the same VLAN and make sure configuration 681*f0723237SIdo Schimmel # fails 682*f0723237SIdo Schimmel RET=0 683*f0723237SIdo Schimmel 684*f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan20 pvid untagged &> /dev/null 685*f0723237SIdo Schimmel check_fail $? 686*f0723237SIdo Schimmel 687*f0723237SIdo Schimmel log_test "vlan-aware - two vnis mapped to the same vlan" 688*f0723237SIdo Schimmel 689*f0723237SIdo Schimmel # Test that enslavement of a port to a bridge fails when two VNIs 690*f0723237SIdo Schimmel # are mapped to the same VLAN 691*f0723237SIdo Schimmel RET=0 692*f0723237SIdo Schimmel 693*f0723237SIdo Schimmel ip link set dev $swp1 nomaster 694*f0723237SIdo Schimmel 695*f0723237SIdo Schimmel bridge vlan del vid 20 dev vxlan20 pvid untagged 696*f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan20 pvid untagged 697*f0723237SIdo Schimmel 698*f0723237SIdo Schimmel ip link set dev $swp1 master br0 &> /dev/null 699*f0723237SIdo Schimmel check_fail $? 700*f0723237SIdo Schimmel 701*f0723237SIdo Schimmel log_test "vlan-aware - failed enslavement to vlan-aware bridge" 702*f0723237SIdo Schimmel 703*f0723237SIdo Schimmel ip link del dev vxlan20 704*f0723237SIdo Schimmel ip link del dev vxlan10 705*f0723237SIdo Schimmel ip link del dev br0 706*f0723237SIdo Schimmel} 707*f0723237SIdo Schimmel 708*f0723237SIdo Schimmeloffload_indication_vlan_aware_setup_create() 709*f0723237SIdo Schimmel{ 710*f0723237SIdo Schimmel # Create a simple setup with two VxLAN devices and a single VLAN-aware 711*f0723237SIdo Schimmel # bridge 712*f0723237SIdo Schimmel ip link add name br0 up type bridge mcast_snooping 0 vlan_filtering 1 \ 713*f0723237SIdo Schimmel vlan_default_pvid 0 714*f0723237SIdo Schimmel 715*f0723237SIdo Schimmel ip link set dev $swp1 master br0 716*f0723237SIdo Schimmel 717*f0723237SIdo Schimmel bridge vlan add vid 10 dev $swp1 718*f0723237SIdo Schimmel bridge vlan add vid 20 dev $swp1 719*f0723237SIdo Schimmel 720*f0723237SIdo Schimmel ip address add 198.51.100.1/32 dev lo 721*f0723237SIdo Schimmel 722*f0723237SIdo Schimmel ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 723*f0723237SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 724*f0723237SIdo Schimmel ip link add name vxlan20 up master br0 type vxlan id 20 nolearning \ 725*f0723237SIdo Schimmel noudpcsum ttl 20 tos inherit local 198.51.100.1 dstport 4789 726*f0723237SIdo Schimmel 727*f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 pvid untagged 728*f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 729*f0723237SIdo Schimmel} 730*f0723237SIdo Schimmel 731*f0723237SIdo Schimmeloffload_indication_vlan_aware_setup_destroy() 732*f0723237SIdo Schimmel{ 733*f0723237SIdo Schimmel bridge vlan del vid 20 dev vxlan20 734*f0723237SIdo Schimmel bridge vlan del vid 10 dev vxlan10 735*f0723237SIdo Schimmel 736*f0723237SIdo Schimmel ip link del dev vxlan20 737*f0723237SIdo Schimmel ip link del dev vxlan10 738*f0723237SIdo Schimmel 739*f0723237SIdo Schimmel ip address del 198.51.100.1/32 dev lo 740*f0723237SIdo Schimmel 741*f0723237SIdo Schimmel bridge vlan del vid 20 dev $swp1 742*f0723237SIdo Schimmel bridge vlan del vid 10 dev $swp1 743*f0723237SIdo Schimmel 744*f0723237SIdo Schimmel ip link set dev $swp1 nomaster 745*f0723237SIdo Schimmel 746*f0723237SIdo Schimmel ip link del dev br0 747*f0723237SIdo Schimmel} 748*f0723237SIdo Schimmel 749*f0723237SIdo Schimmeloffload_indication_vlan_aware_fdb_test() 750*f0723237SIdo Schimmel{ 751*f0723237SIdo Schimmel RET=0 752*f0723237SIdo Schimmel 753*f0723237SIdo Schimmel log_info "vxlan entry offload indication - vlan-aware" 754*f0723237SIdo Schimmel 755*f0723237SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan10 self master static \ 756*f0723237SIdo Schimmel dst 198.51.100.2 vlan 10 757*f0723237SIdo Schimmel 758*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep self \ 759*f0723237SIdo Schimmel | grep -q offload 760*f0723237SIdo Schimmel check_err $? 761*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep -v self \ 762*f0723237SIdo Schimmel | grep -q offload 763*f0723237SIdo Schimmel check_err $? 764*f0723237SIdo Schimmel 765*f0723237SIdo Schimmel log_test "vxlan entry offload indication - initial state" 766*f0723237SIdo Schimmel 767*f0723237SIdo Schimmel # Remove FDB entry from the bridge driver and check that corresponding 768*f0723237SIdo Schimmel # entry in the VxLAN driver is not marked as offloaded 769*f0723237SIdo Schimmel RET=0 770*f0723237SIdo Schimmel 771*f0723237SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan10 master vlan 10 772*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep self \ 773*f0723237SIdo Schimmel | grep -q offload 774*f0723237SIdo Schimmel check_fail $? 775*f0723237SIdo Schimmel 776*f0723237SIdo Schimmel log_test "vxlan entry offload indication - after removal from bridge" 777*f0723237SIdo Schimmel 778*f0723237SIdo Schimmel # Add the FDB entry back to the bridge driver and make sure it is 779*f0723237SIdo Schimmel # marked as offloaded in both drivers 780*f0723237SIdo Schimmel RET=0 781*f0723237SIdo Schimmel 782*f0723237SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan10 master static vlan 10 783*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep self \ 784*f0723237SIdo Schimmel | grep -q offload 785*f0723237SIdo Schimmel check_err $? 786*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep -v self \ 787*f0723237SIdo Schimmel | grep -q offload 788*f0723237SIdo Schimmel check_err $? 789*f0723237SIdo Schimmel 790*f0723237SIdo Schimmel log_test "vxlan entry offload indication - after re-add to bridge" 791*f0723237SIdo Schimmel 792*f0723237SIdo Schimmel # Remove FDB entry from the VxLAN driver and check that corresponding 793*f0723237SIdo Schimmel # entry in the bridge driver is not marked as offloaded 794*f0723237SIdo Schimmel RET=0 795*f0723237SIdo Schimmel 796*f0723237SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan10 self 797*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep -v self \ 798*f0723237SIdo Schimmel | grep -q offload 799*f0723237SIdo Schimmel check_fail $? 800*f0723237SIdo Schimmel 801*f0723237SIdo Schimmel log_test "vxlan entry offload indication - after removal from vxlan" 802*f0723237SIdo Schimmel 803*f0723237SIdo Schimmel # Add the FDB entry back to the VxLAN driver and make sure it is 804*f0723237SIdo Schimmel # marked as offloaded in both drivers 805*f0723237SIdo Schimmel RET=0 806*f0723237SIdo Schimmel 807*f0723237SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan10 self dst 198.51.100.2 808*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep self \ 809*f0723237SIdo Schimmel | grep -q offload 810*f0723237SIdo Schimmel check_err $? 811*f0723237SIdo Schimmel bridge fdb show brport vxlan10 | grep de:ad:be:ef:13:37 | grep -v self \ 812*f0723237SIdo Schimmel | grep -q offload 813*f0723237SIdo Schimmel check_err $? 814*f0723237SIdo Schimmel 815*f0723237SIdo Schimmel log_test "vxlan entry offload indication - after re-add to vxlan" 816*f0723237SIdo Schimmel 817*f0723237SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan10 self master vlan 10 818*f0723237SIdo Schimmel} 819*f0723237SIdo Schimmel 820*f0723237SIdo Schimmeloffload_indication_vlan_aware_decap_route_test() 821*f0723237SIdo Schimmel{ 822*f0723237SIdo Schimmel RET=0 823*f0723237SIdo Schimmel 824*f0723237SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 825*f0723237SIdo Schimmel check_err $? 826*f0723237SIdo Schimmel 827*f0723237SIdo Schimmel # Toggle PVID flag on one VxLAN device and make sure route is still 828*f0723237SIdo Schimmel # marked as offloaded 829*f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 untagged 830*f0723237SIdo Schimmel 831*f0723237SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 832*f0723237SIdo Schimmel check_err $? 833*f0723237SIdo Schimmel 834*f0723237SIdo Schimmel # Toggle PVID flag on second VxLAN device and make sure route is no 835*f0723237SIdo Schimmel # longer marked as offloaded 836*f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 untagged 837*f0723237SIdo Schimmel 838*f0723237SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 839*f0723237SIdo Schimmel check_fail $? 840*f0723237SIdo Schimmel 841*f0723237SIdo Schimmel # Toggle PVID flag back and make sure route is marked as offloaded 842*f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 pvid untagged 843*f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 844*f0723237SIdo Schimmel 845*f0723237SIdo Schimmel ip route show table local | grep 198.51.100.1 | grep -q offload 846*f0723237SIdo Schimmel check_err $? 847*f0723237SIdo Schimmel 848*f0723237SIdo Schimmel log_test "vxlan decap route - vni map/unmap" 849*f0723237SIdo Schimmel} 850*f0723237SIdo Schimmel 851*f0723237SIdo Schimmeloffload_indication_vlan_aware_test() 852*f0723237SIdo Schimmel{ 853*f0723237SIdo Schimmel offload_indication_vlan_aware_setup_create 854*f0723237SIdo Schimmel offload_indication_vlan_aware_fdb_test 855*f0723237SIdo Schimmel offload_indication_vlan_aware_decap_route_test 856*f0723237SIdo Schimmel offload_indication_vlan_aware_setup_destroy 857*f0723237SIdo Schimmel} 858*f0723237SIdo Schimmel 85999c9b084SIdo Schimmeltrap cleanup EXIT 86099c9b084SIdo Schimmel 86199c9b084SIdo Schimmelsetup_prepare 86299c9b084SIdo Schimmelsetup_wait 86399c9b084SIdo Schimmel 86499c9b084SIdo Schimmeltests_run 86599c9b084SIdo Schimmel 86699c9b084SIdo Schimmelexit $EXIT_STATUS 867