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 78e059d64SAmit Cohen: ${ADDR_FAMILY:=ipv4} 88e059d64SAmit Cohenexport ADDR_FAMILY 999c9b084SIdo Schimmel 108e059d64SAmit Cohen: ${LOCAL_IP_1:=198.51.100.1} 118e059d64SAmit Cohenexport LOCAL_IP_1 128e059d64SAmit Cohen 138e059d64SAmit Cohen: ${LOCAL_IP_2:=198.51.100.2} 148e059d64SAmit Cohenexport LOCAL_IP_2 158e059d64SAmit Cohen 168e059d64SAmit Cohen: ${PREFIX_LEN:=32} 178e059d64SAmit Cohenexport PREFIX_LEN 188e059d64SAmit Cohen 198e059d64SAmit Cohen: ${UDPCSUM_FLAFS:=noudpcsum} 208e059d64SAmit Cohenexport UDPCSUM_FLAFS 218e059d64SAmit Cohen 228e059d64SAmit Cohen: ${MC_IP:=239.0.0.1} 238e059d64SAmit Cohenexport MC_IP 248e059d64SAmit Cohen 258e059d64SAmit Cohen: ${IP_FLAG:=""} 268e059d64SAmit Cohenexport IP_FLAG 278e059d64SAmit Cohen 288e059d64SAmit Cohen: ${ALL_TESTS:=" 298e059d64SAmit Cohen sanitization_test 308e059d64SAmit Cohen offload_indication_test 318e059d64SAmit Cohen sanitization_vlan_aware_test 328e059d64SAmit Cohen offload_indication_vlan_aware_test 338e059d64SAmit Cohen"} 348e059d64SAmit Cohen 358e059d64SAmit Cohenlib_dir=$(dirname $0)/../../../net/forwarding 3699c9b084SIdo SchimmelNUM_NETIFS=2 3705ef614cSDanielle Ratson: ${TIMEOUT:=20000} # ms 3899c9b084SIdo Schimmelsource $lib_dir/lib.sh 3999c9b084SIdo Schimmel 4099c9b084SIdo Schimmelsetup_prepare() 4199c9b084SIdo Schimmel{ 4299c9b084SIdo Schimmel swp1=${NETIFS[p1]} 4399c9b084SIdo Schimmel swp2=${NETIFS[p2]} 4499c9b084SIdo Schimmel 4599c9b084SIdo Schimmel ip link set dev $swp1 up 4699c9b084SIdo Schimmel ip link set dev $swp2 up 4799c9b084SIdo Schimmel} 4899c9b084SIdo Schimmel 4999c9b084SIdo Schimmelcleanup() 5099c9b084SIdo Schimmel{ 5199c9b084SIdo Schimmel pre_cleanup 5299c9b084SIdo Schimmel 5399c9b084SIdo Schimmel ip link set dev $swp2 down 5499c9b084SIdo Schimmel ip link set dev $swp1 down 5599c9b084SIdo Schimmel} 5699c9b084SIdo Schimmel 5799c9b084SIdo Schimmelsanitization_single_dev_test_pass() 5899c9b084SIdo Schimmel{ 5999c9b084SIdo Schimmel ip link set dev $swp1 master br0 6099c9b084SIdo Schimmel check_err $? 6199c9b084SIdo Schimmel ip link set dev vxlan0 master br0 6299c9b084SIdo Schimmel check_err $? 6399c9b084SIdo Schimmel 6499c9b084SIdo Schimmel ip link set dev $swp1 nomaster 6599c9b084SIdo Schimmel 6699c9b084SIdo Schimmel ip link set dev $swp1 master br0 6799c9b084SIdo Schimmel check_err $? 6899c9b084SIdo Schimmel} 6999c9b084SIdo Schimmel 7099c9b084SIdo Schimmelsanitization_single_dev_test_fail() 7199c9b084SIdo Schimmel{ 7299c9b084SIdo Schimmel ip link set dev $swp1 master br0 7399c9b084SIdo Schimmel check_err $? 7499c9b084SIdo Schimmel ip link set dev vxlan0 master br0 &> /dev/null 7599c9b084SIdo Schimmel check_fail $? 7699c9b084SIdo Schimmel 7799c9b084SIdo Schimmel ip link set dev $swp1 nomaster 7899c9b084SIdo Schimmel 7999c9b084SIdo Schimmel ip link set dev vxlan0 master br0 8099c9b084SIdo Schimmel check_err $? 8199c9b084SIdo Schimmel ip link set dev $swp1 master br0 &> /dev/null 8299c9b084SIdo Schimmel check_fail $? 8399c9b084SIdo Schimmel} 8499c9b084SIdo Schimmel 8599c9b084SIdo Schimmelsanitization_single_dev_valid_test() 8699c9b084SIdo Schimmel{ 8799c9b084SIdo Schimmel RET=0 8899c9b084SIdo Schimmel 8999c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 9099c9b084SIdo Schimmel 918e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 928e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 9399c9b084SIdo Schimmel 9499c9b084SIdo Schimmel sanitization_single_dev_test_pass 9599c9b084SIdo Schimmel 9699c9b084SIdo Schimmel ip link del dev vxlan0 9799c9b084SIdo Schimmel ip link del dev br0 9899c9b084SIdo Schimmel 9999c9b084SIdo Schimmel log_test "vxlan device - valid configuration" 10099c9b084SIdo Schimmel} 10199c9b084SIdo Schimmel 10299c9b084SIdo Schimmelsanitization_single_dev_vlan_aware_test() 10399c9b084SIdo Schimmel{ 10499c9b084SIdo Schimmel RET=0 10599c9b084SIdo Schimmel 10699c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 10799c9b084SIdo Schimmel 1088e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1098e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 11099c9b084SIdo Schimmel 111bbe21061SIdo Schimmel sanitization_single_dev_test_pass 11299c9b084SIdo Schimmel 11399c9b084SIdo Schimmel ip link del dev vxlan0 11499c9b084SIdo Schimmel ip link del dev br0 11599c9b084SIdo Schimmel 11699c9b084SIdo Schimmel log_test "vxlan device with a vlan-aware bridge" 11799c9b084SIdo Schimmel} 11899c9b084SIdo Schimmel 11999c9b084SIdo Schimmelsanitization_single_dev_mcast_enabled_test() 12099c9b084SIdo Schimmel{ 12199c9b084SIdo Schimmel RET=0 12299c9b084SIdo Schimmel 12399c9b084SIdo Schimmel ip link add dev br0 type bridge 12499c9b084SIdo Schimmel 1258e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1268e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 12799c9b084SIdo Schimmel 12899c9b084SIdo Schimmel sanitization_single_dev_test_fail 12999c9b084SIdo Schimmel 13099c9b084SIdo Schimmel ip link del dev vxlan0 13199c9b084SIdo Schimmel ip link del dev br0 13299c9b084SIdo Schimmel 13399c9b084SIdo Schimmel log_test "vxlan device with a multicast enabled bridge" 13499c9b084SIdo Schimmel} 13599c9b084SIdo Schimmel 13699c9b084SIdo Schimmelsanitization_single_dev_mcast_group_test() 13799c9b084SIdo Schimmel{ 13899c9b084SIdo Schimmel RET=0 13999c9b084SIdo Schimmel 14099c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 1414d189c10SIdo Schimmel ip link add name dummy1 up type dummy 14299c9b084SIdo Schimmel 1438e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1448e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 \ 1458e059d64SAmit Cohen dev dummy1 group $MC_IP 14699c9b084SIdo Schimmel 14799c9b084SIdo Schimmel sanitization_single_dev_test_fail 14899c9b084SIdo Schimmel 14999c9b084SIdo Schimmel ip link del dev vxlan0 1504d189c10SIdo Schimmel ip link del dev dummy1 15199c9b084SIdo Schimmel ip link del dev br0 15299c9b084SIdo Schimmel 15399c9b084SIdo Schimmel log_test "vxlan device with a multicast group" 15499c9b084SIdo Schimmel} 15599c9b084SIdo Schimmel 15699c9b084SIdo Schimmelsanitization_single_dev_no_local_ip_test() 15799c9b084SIdo Schimmel{ 15899c9b084SIdo Schimmel RET=0 15999c9b084SIdo Schimmel 16099c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 16199c9b084SIdo Schimmel 1628e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 16399c9b084SIdo Schimmel ttl 20 tos inherit dstport 4789 16499c9b084SIdo Schimmel 16599c9b084SIdo Schimmel sanitization_single_dev_test_fail 16699c9b084SIdo Schimmel 16799c9b084SIdo Schimmel ip link del dev vxlan0 16899c9b084SIdo Schimmel ip link del dev br0 16999c9b084SIdo Schimmel 17099c9b084SIdo Schimmel log_test "vxlan device with no local ip" 17199c9b084SIdo Schimmel} 17299c9b084SIdo Schimmel 1738e059d64SAmit Cohensanitization_single_dev_learning_enabled_ipv4_test() 17499c9b084SIdo Schimmel{ 17599c9b084SIdo Schimmel RET=0 17699c9b084SIdo Schimmel 17799c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 17899c9b084SIdo Schimmel 1798e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 learning $UDPCSUM_FLAFS \ 1808e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 18199c9b084SIdo Schimmel 182dbd4485aSIdo Schimmel sanitization_single_dev_test_pass 18399c9b084SIdo Schimmel 18499c9b084SIdo Schimmel ip link del dev vxlan0 18599c9b084SIdo Schimmel ip link del dev br0 18699c9b084SIdo Schimmel 18799c9b084SIdo Schimmel log_test "vxlan device with learning enabled" 18899c9b084SIdo Schimmel} 18999c9b084SIdo Schimmel 19099c9b084SIdo Schimmelsanitization_single_dev_local_interface_test() 19199c9b084SIdo Schimmel{ 19299c9b084SIdo Schimmel RET=0 19399c9b084SIdo Schimmel 19499c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 1954d189c10SIdo Schimmel ip link add name dummy1 up type dummy 19699c9b084SIdo Schimmel 1978e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 1988e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 dev dummy1 19999c9b084SIdo Schimmel 20099c9b084SIdo Schimmel sanitization_single_dev_test_fail 20199c9b084SIdo Schimmel 20299c9b084SIdo Schimmel ip link del dev vxlan0 2034d189c10SIdo Schimmel ip link del dev dummy1 20499c9b084SIdo Schimmel ip link del dev br0 20599c9b084SIdo Schimmel 20699c9b084SIdo Schimmel log_test "vxlan device with local interface" 20799c9b084SIdo Schimmel} 20899c9b084SIdo Schimmel 20999c9b084SIdo Schimmelsanitization_single_dev_port_range_test() 21099c9b084SIdo Schimmel{ 21199c9b084SIdo Schimmel RET=0 21299c9b084SIdo Schimmel 21399c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 21499c9b084SIdo Schimmel 2158e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 2168e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 \ 21799c9b084SIdo Schimmel srcport 4000 5000 21899c9b084SIdo Schimmel 21999c9b084SIdo Schimmel sanitization_single_dev_test_fail 22099c9b084SIdo Schimmel 22199c9b084SIdo Schimmel ip link del dev vxlan0 22299c9b084SIdo Schimmel ip link del dev br0 22399c9b084SIdo Schimmel 22499c9b084SIdo Schimmel log_test "vxlan device with udp source port range" 22599c9b084SIdo Schimmel} 22699c9b084SIdo Schimmel 22799c9b084SIdo Schimmelsanitization_single_dev_tos_static_test() 22899c9b084SIdo Schimmel{ 22999c9b084SIdo Schimmel RET=0 23099c9b084SIdo Schimmel 23199c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 23299c9b084SIdo Schimmel 2338e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 2348e059d64SAmit Cohen ttl 20 tos 20 local $LOCAL_IP_1 dstport 4789 23599c9b084SIdo Schimmel 23699c9b084SIdo Schimmel sanitization_single_dev_test_fail 23799c9b084SIdo Schimmel 23899c9b084SIdo Schimmel ip link del dev vxlan0 23999c9b084SIdo Schimmel ip link del dev br0 24099c9b084SIdo Schimmel 24199c9b084SIdo Schimmel log_test "vxlan device with static tos" 24299c9b084SIdo Schimmel} 24399c9b084SIdo Schimmel 24499c9b084SIdo Schimmelsanitization_single_dev_ttl_inherit_test() 24599c9b084SIdo Schimmel{ 24699c9b084SIdo Schimmel RET=0 24799c9b084SIdo Schimmel 24899c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 24999c9b084SIdo Schimmel 2508e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 2518e059d64SAmit Cohen ttl inherit tos inherit local $LOCAL_IP_1 dstport 4789 25299c9b084SIdo Schimmel 25399c9b084SIdo Schimmel sanitization_single_dev_test_fail 25499c9b084SIdo Schimmel 25599c9b084SIdo Schimmel ip link del dev vxlan0 25699c9b084SIdo Schimmel ip link del dev br0 25799c9b084SIdo Schimmel 25899c9b084SIdo Schimmel log_test "vxlan device with inherit ttl" 25999c9b084SIdo Schimmel} 26099c9b084SIdo Schimmel 2618e059d64SAmit Cohensanitization_single_dev_udp_checksum_ipv4_test() 26299c9b084SIdo Schimmel{ 26399c9b084SIdo Schimmel RET=0 26499c9b084SIdo Schimmel 26599c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 26699c9b084SIdo Schimmel 26799c9b084SIdo Schimmel ip link add name vxlan0 up type vxlan id 10 nolearning udpcsum \ 2688e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 26999c9b084SIdo Schimmel 27099c9b084SIdo Schimmel sanitization_single_dev_test_fail 27199c9b084SIdo Schimmel 27299c9b084SIdo Schimmel ip link del dev vxlan0 27399c9b084SIdo Schimmel ip link del dev br0 27499c9b084SIdo Schimmel 27599c9b084SIdo Schimmel log_test "vxlan device with udp checksum" 27699c9b084SIdo Schimmel} 27799c9b084SIdo Schimmel 27899c9b084SIdo Schimmelsanitization_single_dev_test() 27999c9b084SIdo Schimmel{ 28099c9b084SIdo Schimmel # These tests make sure that we correctly sanitize VxLAN device 28199c9b084SIdo Schimmel # configurations we do not support 28299c9b084SIdo Schimmel sanitization_single_dev_valid_test 28399c9b084SIdo Schimmel sanitization_single_dev_vlan_aware_test 28499c9b084SIdo Schimmel sanitization_single_dev_mcast_enabled_test 28599c9b084SIdo Schimmel sanitization_single_dev_mcast_group_test 28699c9b084SIdo Schimmel sanitization_single_dev_no_local_ip_test 2878e059d64SAmit Cohen sanitization_single_dev_learning_enabled_"$ADDR_FAMILY"_test 28899c9b084SIdo Schimmel sanitization_single_dev_local_interface_test 28999c9b084SIdo Schimmel sanitization_single_dev_port_range_test 29099c9b084SIdo Schimmel sanitization_single_dev_tos_static_test 29199c9b084SIdo Schimmel sanitization_single_dev_ttl_inherit_test 2928e059d64SAmit Cohen sanitization_single_dev_udp_checksum_"$ADDR_FAMILY"_test 29399c9b084SIdo Schimmel} 29499c9b084SIdo Schimmel 29599c9b084SIdo Schimmelsanitization_multi_devs_test_pass() 29699c9b084SIdo Schimmel{ 29799c9b084SIdo Schimmel ip link set dev $swp1 master br0 29899c9b084SIdo Schimmel check_err $? 29999c9b084SIdo Schimmel ip link set dev vxlan0 master br0 30099c9b084SIdo Schimmel check_err $? 30199c9b084SIdo Schimmel ip link set dev $swp2 master br1 30299c9b084SIdo Schimmel check_err $? 30399c9b084SIdo Schimmel ip link set dev vxlan1 master br1 30499c9b084SIdo Schimmel check_err $? 30599c9b084SIdo Schimmel 30699c9b084SIdo Schimmel ip link set dev $swp2 nomaster 30799c9b084SIdo Schimmel ip link set dev $swp1 nomaster 30899c9b084SIdo Schimmel 30999c9b084SIdo Schimmel ip link set dev $swp1 master br0 31099c9b084SIdo Schimmel check_err $? 31199c9b084SIdo Schimmel ip link set dev $swp2 master br1 31299c9b084SIdo Schimmel check_err $? 31399c9b084SIdo Schimmel} 31499c9b084SIdo Schimmel 31599c9b084SIdo Schimmelsanitization_multi_devs_test_fail() 31699c9b084SIdo Schimmel{ 31799c9b084SIdo Schimmel ip link set dev $swp1 master br0 31899c9b084SIdo Schimmel check_err $? 31999c9b084SIdo Schimmel ip link set dev vxlan0 master br0 32099c9b084SIdo Schimmel check_err $? 32199c9b084SIdo Schimmel ip link set dev $swp2 master br1 32299c9b084SIdo Schimmel check_err $? 32399c9b084SIdo Schimmel ip link set dev vxlan1 master br1 &> /dev/null 32499c9b084SIdo Schimmel check_fail $? 32599c9b084SIdo Schimmel 32699c9b084SIdo Schimmel ip link set dev $swp2 nomaster 32799c9b084SIdo Schimmel ip link set dev $swp1 nomaster 32899c9b084SIdo Schimmel 32999c9b084SIdo Schimmel ip link set dev vxlan1 master br1 33099c9b084SIdo Schimmel check_err $? 33199c9b084SIdo Schimmel ip link set dev $swp1 master br0 33299c9b084SIdo Schimmel check_err $? 33399c9b084SIdo Schimmel ip link set dev $swp2 master br1 &> /dev/null 33499c9b084SIdo Schimmel check_fail $? 33599c9b084SIdo Schimmel} 33699c9b084SIdo Schimmel 33799c9b084SIdo Schimmelsanitization_multi_devs_valid_test() 33899c9b084SIdo Schimmel{ 33999c9b084SIdo Schimmel RET=0 34099c9b084SIdo Schimmel 34199c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 34299c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 34399c9b084SIdo Schimmel 3448e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 3458e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 3468e059d64SAmit Cohen ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 3478e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 34899c9b084SIdo Schimmel 34999c9b084SIdo Schimmel sanitization_multi_devs_test_pass 35099c9b084SIdo Schimmel 35199c9b084SIdo Schimmel ip link del dev vxlan1 35299c9b084SIdo Schimmel ip link del dev vxlan0 35399c9b084SIdo Schimmel ip link del dev br1 35499c9b084SIdo Schimmel ip link del dev br0 35599c9b084SIdo Schimmel 35699c9b084SIdo Schimmel log_test "multiple vxlan devices - valid configuration" 35799c9b084SIdo Schimmel} 35899c9b084SIdo Schimmel 35999c9b084SIdo Schimmelsanitization_multi_devs_ttl_test() 36099c9b084SIdo Schimmel{ 36199c9b084SIdo Schimmel RET=0 36299c9b084SIdo Schimmel 36399c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 36499c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 36599c9b084SIdo Schimmel 3668e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 3678e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 3688e059d64SAmit Cohen ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 3698e059d64SAmit Cohen ttl 40 tos inherit local $LOCAL_IP_1 dstport 4789 37099c9b084SIdo Schimmel 37199c9b084SIdo Schimmel sanitization_multi_devs_test_fail 37299c9b084SIdo Schimmel 37399c9b084SIdo Schimmel ip link del dev vxlan1 37499c9b084SIdo Schimmel ip link del dev vxlan0 37599c9b084SIdo Schimmel ip link del dev br1 37699c9b084SIdo Schimmel ip link del dev br0 37799c9b084SIdo Schimmel 37899c9b084SIdo Schimmel log_test "multiple vxlan devices with different ttl" 37999c9b084SIdo Schimmel} 38099c9b084SIdo Schimmel 38199c9b084SIdo Schimmelsanitization_multi_devs_udp_dstport_test() 38299c9b084SIdo Schimmel{ 38399c9b084SIdo Schimmel RET=0 38499c9b084SIdo Schimmel 38599c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 38699c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 38799c9b084SIdo Schimmel 3888e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 3898e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 3908e059d64SAmit Cohen ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 3918e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 5789 39299c9b084SIdo Schimmel 39399c9b084SIdo Schimmel sanitization_multi_devs_test_fail 39499c9b084SIdo Schimmel 39599c9b084SIdo Schimmel ip link del dev vxlan1 39699c9b084SIdo Schimmel ip link del dev vxlan0 39799c9b084SIdo Schimmel ip link del dev br1 39899c9b084SIdo Schimmel ip link del dev br0 39999c9b084SIdo Schimmel 40099c9b084SIdo Schimmel log_test "multiple vxlan devices with different udp destination port" 40199c9b084SIdo Schimmel} 40299c9b084SIdo Schimmel 40399c9b084SIdo Schimmelsanitization_multi_devs_local_ip_test() 40499c9b084SIdo Schimmel{ 40599c9b084SIdo Schimmel RET=0 40699c9b084SIdo Schimmel 40799c9b084SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 40899c9b084SIdo Schimmel ip link add dev br1 type bridge mcast_snooping 0 40999c9b084SIdo Schimmel 4108e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 4118e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 4128e059d64SAmit Cohen ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 4138e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_2 dstport 4789 41499c9b084SIdo Schimmel 41599c9b084SIdo Schimmel sanitization_multi_devs_test_fail 41699c9b084SIdo Schimmel 41799c9b084SIdo Schimmel ip link del dev vxlan1 41899c9b084SIdo Schimmel ip link del dev vxlan0 41999c9b084SIdo Schimmel ip link del dev br1 42099c9b084SIdo Schimmel ip link del dev br0 42199c9b084SIdo Schimmel 42299c9b084SIdo Schimmel log_test "multiple vxlan devices with different local ip" 42399c9b084SIdo Schimmel} 42499c9b084SIdo Schimmel 42599c9b084SIdo Schimmelsanitization_multi_devs_test() 42699c9b084SIdo Schimmel{ 42799c9b084SIdo Schimmel # The device has a single VTEP, which means all the VxLAN devices 42899c9b084SIdo Schimmel # we offload must share certain properties such as source IP and 42999c9b084SIdo Schimmel # UDP destination port. These tests make sure that we forbid 43099c9b084SIdo Schimmel # configurations that violate this limitation 43199c9b084SIdo Schimmel sanitization_multi_devs_valid_test 43299c9b084SIdo Schimmel sanitization_multi_devs_ttl_test 43399c9b084SIdo Schimmel sanitization_multi_devs_udp_dstport_test 43499c9b084SIdo Schimmel sanitization_multi_devs_local_ip_test 43599c9b084SIdo Schimmel} 43699c9b084SIdo Schimmel 43799c9b084SIdo Schimmelsanitization_test() 43899c9b084SIdo Schimmel{ 43999c9b084SIdo Schimmel sanitization_single_dev_test 44099c9b084SIdo Schimmel sanitization_multi_devs_test 44199c9b084SIdo Schimmel} 44299c9b084SIdo Schimmel 44399c9b084SIdo Schimmeloffload_indication_setup_create() 44499c9b084SIdo Schimmel{ 44599c9b084SIdo Schimmel # Create a simple setup with two bridges, each with a VxLAN device 44699c9b084SIdo Schimmel # and one local port 447*55415775SPetr Machata ip link add name br0 type bridge mcast_snooping 0 448*55415775SPetr Machata ip link set dev br0 addrgenmode none 449*55415775SPetr Machata ip link set dev br0 up 450*55415775SPetr Machata ip link add name br1 type bridge mcast_snooping 0 451*55415775SPetr Machata ip link set dev br1 addrgenmode none 452*55415775SPetr Machata ip link set dev br1 up 45399c9b084SIdo Schimmel 45499c9b084SIdo Schimmel ip link set dev $swp1 master br0 45599c9b084SIdo Schimmel ip link set dev $swp2 master br1 45699c9b084SIdo Schimmel 4578e059d64SAmit Cohen ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 45899c9b084SIdo Schimmel 45999c9b084SIdo Schimmel ip link add name vxlan0 up master br0 type vxlan id 10 nolearning \ 4608e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 46199c9b084SIdo Schimmel ip link add name vxlan1 up master br1 type vxlan id 20 nolearning \ 4628e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 46399c9b084SIdo Schimmel} 46499c9b084SIdo Schimmel 46599c9b084SIdo Schimmeloffload_indication_setup_destroy() 46699c9b084SIdo Schimmel{ 46799c9b084SIdo Schimmel ip link del dev vxlan1 46899c9b084SIdo Schimmel ip link del dev vxlan0 46999c9b084SIdo Schimmel 4708e059d64SAmit Cohen ip address del $LOCAL_IP_1/$PREFIX_LEN dev lo 47199c9b084SIdo Schimmel 47299c9b084SIdo Schimmel ip link set dev $swp2 nomaster 47399c9b084SIdo Schimmel ip link set dev $swp1 nomaster 47499c9b084SIdo Schimmel 47599c9b084SIdo Schimmel ip link del dev br1 47699c9b084SIdo Schimmel ip link del dev br0 47799c9b084SIdo Schimmel} 47899c9b084SIdo Schimmel 47999c9b084SIdo Schimmeloffload_indication_fdb_flood_test() 48099c9b084SIdo Schimmel{ 48199c9b084SIdo Schimmel RET=0 48299c9b084SIdo Schimmel 4838e059d64SAmit Cohen bridge fdb append 00:00:00:00:00:00 dev vxlan0 self dst $LOCAL_IP_2 48499c9b084SIdo Schimmel 48505ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb 00:00:00:00:00:00 \ 48605ef614cSDanielle Ratson bridge fdb show brport vxlan0 48799c9b084SIdo Schimmel check_err $? 48899c9b084SIdo Schimmel 48999c9b084SIdo Schimmel bridge fdb del 00:00:00:00:00:00 dev vxlan0 self 49099c9b084SIdo Schimmel 49199c9b084SIdo Schimmel log_test "vxlan flood entry offload indication" 49299c9b084SIdo Schimmel} 49399c9b084SIdo Schimmel 49499c9b084SIdo Schimmeloffload_indication_fdb_bridge_test() 49599c9b084SIdo Schimmel{ 49699c9b084SIdo Schimmel RET=0 49799c9b084SIdo Schimmel 49899c9b084SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan0 self master static \ 4998e059d64SAmit Cohen dst $LOCAL_IP_2 50099c9b084SIdo Schimmel 50105ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 50205ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 50399c9b084SIdo Schimmel check_err $? 50405ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 50505ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 50699c9b084SIdo Schimmel check_err $? 50799c9b084SIdo Schimmel 50899c9b084SIdo Schimmel log_test "vxlan entry offload indication - initial state" 50999c9b084SIdo Schimmel 51099c9b084SIdo Schimmel # Remove FDB entry from the bridge driver and check that corresponding 51199c9b084SIdo Schimmel # entry in the VxLAN driver is not marked as offloaded 51299c9b084SIdo Schimmel RET=0 51399c9b084SIdo Schimmel 51499c9b084SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan0 master 51505ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 51605ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 51705ef614cSDanielle Ratson check_err $? 51899c9b084SIdo Schimmel 51999c9b084SIdo Schimmel log_test "vxlan entry offload indication - after removal from bridge" 52099c9b084SIdo Schimmel 52199c9b084SIdo Schimmel # Add the FDB entry back to the bridge driver and make sure it is 52299c9b084SIdo Schimmel # marked as offloaded in both drivers 52399c9b084SIdo Schimmel RET=0 52499c9b084SIdo Schimmel 52599c9b084SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan0 master static 52605ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 52705ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 52899c9b084SIdo Schimmel check_err $? 52905ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 53005ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 53199c9b084SIdo Schimmel check_err $? 53299c9b084SIdo Schimmel 53399c9b084SIdo Schimmel log_test "vxlan entry offload indication - after re-add to bridge" 53499c9b084SIdo Schimmel 53599c9b084SIdo Schimmel # Remove FDB entry from the VxLAN driver and check that corresponding 53699c9b084SIdo Schimmel # entry in the bridge driver is not marked as offloaded 53799c9b084SIdo Schimmel RET=0 53899c9b084SIdo Schimmel 53999c9b084SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan0 self 54005ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 54105ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 54205ef614cSDanielle Ratson check_err $? 54399c9b084SIdo Schimmel 54499c9b084SIdo Schimmel log_test "vxlan entry offload indication - after removal from vxlan" 54599c9b084SIdo Schimmel 54699c9b084SIdo Schimmel # Add the FDB entry back to the VxLAN driver and make sure it is 54799c9b084SIdo Schimmel # marked as offloaded in both drivers 54899c9b084SIdo Schimmel RET=0 54999c9b084SIdo Schimmel 5508e059d64SAmit Cohen bridge fdb add de:ad:be:ef:13:37 dev vxlan0 self dst $LOCAL_IP_2 55105ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 55205ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 55399c9b084SIdo Schimmel check_err $? 55405ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 55505ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 55699c9b084SIdo Schimmel check_err $? 55799c9b084SIdo Schimmel 55899c9b084SIdo Schimmel log_test "vxlan entry offload indication - after re-add to vxlan" 55999c9b084SIdo Schimmel 56099c9b084SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan0 self master 56199c9b084SIdo Schimmel} 56299c9b084SIdo Schimmel 56399c9b084SIdo Schimmeloffload_indication_fdb_test() 56499c9b084SIdo Schimmel{ 56599c9b084SIdo Schimmel offload_indication_fdb_flood_test 56699c9b084SIdo Schimmel offload_indication_fdb_bridge_test 56799c9b084SIdo Schimmel} 56899c9b084SIdo Schimmel 56999c9b084SIdo Schimmeloffload_indication_decap_route_test() 57099c9b084SIdo Schimmel{ 57199c9b084SIdo Schimmel RET=0 57299c9b084SIdo Schimmel 57305ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 5748e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 57599c9b084SIdo Schimmel check_err $? 57699c9b084SIdo Schimmel 57799c9b084SIdo Schimmel ip link set dev vxlan0 down 57805ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 5798e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 58099c9b084SIdo Schimmel check_err $? 58199c9b084SIdo Schimmel 58299c9b084SIdo Schimmel ip link set dev vxlan1 down 58305ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 5848e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 58505ef614cSDanielle Ratson check_err $? 58699c9b084SIdo Schimmel 58799c9b084SIdo Schimmel log_test "vxlan decap route - vxlan device down" 58899c9b084SIdo Schimmel 58999c9b084SIdo Schimmel RET=0 59099c9b084SIdo Schimmel 59199c9b084SIdo Schimmel ip link set dev vxlan1 up 59205ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 5938e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 59499c9b084SIdo Schimmel check_err $? 59599c9b084SIdo Schimmel 59699c9b084SIdo Schimmel ip link set dev vxlan0 up 59705ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 5988e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 59999c9b084SIdo Schimmel check_err $? 60099c9b084SIdo Schimmel 60199c9b084SIdo Schimmel log_test "vxlan decap route - vxlan device up" 60299c9b084SIdo Schimmel 60399c9b084SIdo Schimmel RET=0 60499c9b084SIdo Schimmel 6058e059d64SAmit Cohen ip address delete $LOCAL_IP_1/$PREFIX_LEN dev lo 60605ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 6078e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 60805ef614cSDanielle Ratson check_err $? 60999c9b084SIdo Schimmel 6108e059d64SAmit Cohen ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 61105ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 6128e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 61399c9b084SIdo Schimmel check_err $? 61499c9b084SIdo Schimmel 61599c9b084SIdo Schimmel log_test "vxlan decap route - add local route" 61699c9b084SIdo Schimmel 61799c9b084SIdo Schimmel RET=0 61899c9b084SIdo Schimmel 61999c9b084SIdo Schimmel ip link set dev $swp1 nomaster 62005ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 6218e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 62299c9b084SIdo Schimmel check_err $? 62399c9b084SIdo Schimmel 62499c9b084SIdo Schimmel ip link set dev $swp2 nomaster 62505ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 6268e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 62705ef614cSDanielle Ratson check_err $? 62899c9b084SIdo Schimmel 62999c9b084SIdo Schimmel ip link set dev $swp1 master br0 63099c9b084SIdo Schimmel ip link set dev $swp2 master br1 63105ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 6328e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 63399c9b084SIdo Schimmel check_err $? 63499c9b084SIdo Schimmel 63599c9b084SIdo Schimmel log_test "vxlan decap route - local ports enslavement" 63699c9b084SIdo Schimmel 63799c9b084SIdo Schimmel RET=0 63899c9b084SIdo Schimmel 63999c9b084SIdo Schimmel ip link del dev br0 64005ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 6418e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 64299c9b084SIdo Schimmel check_err $? 64399c9b084SIdo Schimmel 64499c9b084SIdo Schimmel ip link del dev br1 64505ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 6468e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 64705ef614cSDanielle Ratson check_err $? 64899c9b084SIdo Schimmel 64999c9b084SIdo Schimmel log_test "vxlan decap route - bridge device deletion" 65099c9b084SIdo Schimmel 65199c9b084SIdo Schimmel RET=0 65299c9b084SIdo Schimmel 653*55415775SPetr Machata ip link add name br0 type bridge mcast_snooping 0 654*55415775SPetr Machata ip link set dev br0 addrgenmode none 655*55415775SPetr Machata ip link set dev br0 up 656*55415775SPetr Machata ip link add name br1 type bridge mcast_snooping 0 657*55415775SPetr Machata ip link set dev br1 addrgenmode none 658*55415775SPetr Machata ip link set dev br1 up 65999c9b084SIdo Schimmel ip link set dev $swp1 master br0 66099c9b084SIdo Schimmel ip link set dev $swp2 master br1 66199c9b084SIdo Schimmel ip link set dev vxlan0 master br0 66299c9b084SIdo Schimmel ip link set dev vxlan1 master br1 66305ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 6648e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 66599c9b084SIdo Schimmel check_err $? 66699c9b084SIdo Schimmel 66799c9b084SIdo Schimmel ip link del dev vxlan0 66805ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 6698e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 67099c9b084SIdo Schimmel check_err $? 67199c9b084SIdo Schimmel 67299c9b084SIdo Schimmel ip link del dev vxlan1 67305ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 6748e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 67505ef614cSDanielle Ratson check_err $? 67699c9b084SIdo Schimmel 67799c9b084SIdo Schimmel log_test "vxlan decap route - vxlan device deletion" 67899c9b084SIdo Schimmel 67999c9b084SIdo Schimmel ip link add name vxlan0 up master br0 type vxlan id 10 nolearning \ 6808e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 68199c9b084SIdo Schimmel ip link add name vxlan1 up master br1 type vxlan id 20 nolearning \ 6828e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 68399c9b084SIdo Schimmel} 68499c9b084SIdo Schimmel 6850efe9ed9SPetr Machatacheck_fdb_offloaded() 6860efe9ed9SPetr Machata{ 6870efe9ed9SPetr Machata local mac=00:11:22:33:44:55 6880efe9ed9SPetr Machata local zmac=00:00:00:00:00:00 6890efe9ed9SPetr Machata 69005ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $mac self \ 69105ef614cSDanielle Ratson bridge fdb show dev vxlan0 6920efe9ed9SPetr Machata check_err $? 69305ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $mac master \ 69405ef614cSDanielle Ratson bridge fdb show dev vxlan0 6950efe9ed9SPetr Machata check_err $? 6960efe9ed9SPetr Machata 69705ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 69805ef614cSDanielle Ratson bridge fdb show dev vxlan0 6990efe9ed9SPetr Machata check_err $? 7000efe9ed9SPetr Machata} 7010efe9ed9SPetr Machata 7020efe9ed9SPetr Machatacheck_vxlan_fdb_not_offloaded() 7030efe9ed9SPetr Machata{ 7040efe9ed9SPetr Machata local mac=00:11:22:33:44:55 7050efe9ed9SPetr Machata local zmac=00:00:00:00:00:00 7060efe9ed9SPetr Machata 7070efe9ed9SPetr Machata bridge fdb show dev vxlan0 | grep $mac | grep -q self 7080efe9ed9SPetr Machata check_err $? 70905ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $mac self \ 71005ef614cSDanielle Ratson bridge fdb show dev vxlan0 71105ef614cSDanielle Ratson check_err $? 7120efe9ed9SPetr Machata 7130efe9ed9SPetr Machata bridge fdb show dev vxlan0 | grep $zmac | grep -q self 7140efe9ed9SPetr Machata check_err $? 71505ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 71605ef614cSDanielle Ratson bridge fdb show dev vxlan0 71705ef614cSDanielle Ratson check_err $? 7180efe9ed9SPetr Machata} 7190efe9ed9SPetr Machata 7200efe9ed9SPetr Machatacheck_bridge_fdb_not_offloaded() 7210efe9ed9SPetr Machata{ 7220efe9ed9SPetr Machata local mac=00:11:22:33:44:55 7230efe9ed9SPetr Machata local zmac=00:00:00:00:00:00 7240efe9ed9SPetr Machata 7250efe9ed9SPetr Machata bridge fdb show dev vxlan0 | grep $mac | grep -q master 7260efe9ed9SPetr Machata check_err $? 72705ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $mac master \ 72805ef614cSDanielle Ratson bridge fdb show dev vxlan0 72905ef614cSDanielle Ratson check_err $? 7300efe9ed9SPetr Machata} 7310efe9ed9SPetr Machata 7320efe9ed9SPetr Machata__offload_indication_join_vxlan_first() 7330efe9ed9SPetr Machata{ 7340efe9ed9SPetr Machata local vid=$1; shift 7350efe9ed9SPetr Machata 7360efe9ed9SPetr Machata local mac=00:11:22:33:44:55 7370efe9ed9SPetr Machata local zmac=00:00:00:00:00:00 7380efe9ed9SPetr Machata 7398e059d64SAmit Cohen bridge fdb append $zmac dev vxlan0 self dst $LOCAL_IP_2 7400efe9ed9SPetr Machata 7410efe9ed9SPetr Machata ip link set dev vxlan0 master br0 7428e059d64SAmit Cohen bridge fdb add dev vxlan0 $mac self master static dst $LOCAL_IP_2 7430efe9ed9SPetr Machata 7440efe9ed9SPetr Machata RET=0 7450efe9ed9SPetr Machata check_vxlan_fdb_not_offloaded 7460efe9ed9SPetr Machata ip link set dev $swp1 master br0 7470efe9ed9SPetr Machata sleep .1 7480efe9ed9SPetr Machata check_fdb_offloaded 7490efe9ed9SPetr Machata log_test "offload indication - attach vxlan first" 7500efe9ed9SPetr Machata 7510efe9ed9SPetr Machata RET=0 7520efe9ed9SPetr Machata ip link set dev vxlan0 down 7530efe9ed9SPetr Machata check_vxlan_fdb_not_offloaded 7540efe9ed9SPetr Machata check_bridge_fdb_not_offloaded 7550efe9ed9SPetr Machata log_test "offload indication - set vxlan down" 7560efe9ed9SPetr Machata 7570efe9ed9SPetr Machata RET=0 7580efe9ed9SPetr Machata ip link set dev vxlan0 up 7590efe9ed9SPetr Machata sleep .1 7600efe9ed9SPetr Machata check_fdb_offloaded 7610efe9ed9SPetr Machata log_test "offload indication - set vxlan up" 7620efe9ed9SPetr Machata 7630efe9ed9SPetr Machata if [[ ! -z $vid ]]; then 7640efe9ed9SPetr Machata RET=0 7650efe9ed9SPetr Machata bridge vlan del dev vxlan0 vid $vid 7660efe9ed9SPetr Machata check_vxlan_fdb_not_offloaded 7670efe9ed9SPetr Machata check_bridge_fdb_not_offloaded 7680efe9ed9SPetr Machata log_test "offload indication - delete VLAN" 7690efe9ed9SPetr Machata 7700efe9ed9SPetr Machata RET=0 7710efe9ed9SPetr Machata bridge vlan add dev vxlan0 vid $vid 7720efe9ed9SPetr Machata check_vxlan_fdb_not_offloaded 7730efe9ed9SPetr Machata check_bridge_fdb_not_offloaded 7740efe9ed9SPetr Machata log_test "offload indication - add tagged VLAN" 7750efe9ed9SPetr Machata 7760efe9ed9SPetr Machata RET=0 7770efe9ed9SPetr Machata bridge vlan add dev vxlan0 vid $vid pvid untagged 7780efe9ed9SPetr Machata sleep .1 7790efe9ed9SPetr Machata check_fdb_offloaded 7800efe9ed9SPetr Machata log_test "offload indication - add pvid/untagged VLAN" 7810efe9ed9SPetr Machata fi 7820efe9ed9SPetr Machata 7830efe9ed9SPetr Machata RET=0 7840efe9ed9SPetr Machata ip link set dev $swp1 nomaster 7850efe9ed9SPetr Machata check_vxlan_fdb_not_offloaded 7860efe9ed9SPetr Machata log_test "offload indication - detach port" 7870efe9ed9SPetr Machata} 7880efe9ed9SPetr Machata 7890efe9ed9SPetr Machataoffload_indication_join_vxlan_first() 7900efe9ed9SPetr Machata{ 791*55415775SPetr Machata ip link add dev br0 type bridge mcast_snooping 0 792*55415775SPetr Machata ip link set dev br0 addrgenmode none 793*55415775SPetr Machata ip link set dev br0 up 7948e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 7958e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 7960efe9ed9SPetr Machata 7970efe9ed9SPetr Machata __offload_indication_join_vxlan_first 7980efe9ed9SPetr Machata 7990efe9ed9SPetr Machata ip link del dev vxlan0 8000efe9ed9SPetr Machata ip link del dev br0 8010efe9ed9SPetr Machata} 8020efe9ed9SPetr Machata 8030efe9ed9SPetr Machata__offload_indication_join_vxlan_last() 8040efe9ed9SPetr Machata{ 8050efe9ed9SPetr Machata local zmac=00:00:00:00:00:00 8060efe9ed9SPetr Machata 8070efe9ed9SPetr Machata RET=0 8080efe9ed9SPetr Machata 8098e059d64SAmit Cohen bridge fdb append $zmac dev vxlan0 self dst $LOCAL_IP_2 8100efe9ed9SPetr Machata 8110efe9ed9SPetr Machata ip link set dev $swp1 master br0 8120efe9ed9SPetr Machata 81305ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 81405ef614cSDanielle Ratson bridge fdb show dev vxlan0 81505ef614cSDanielle Ratson check_err $? 8160efe9ed9SPetr Machata 8170efe9ed9SPetr Machata ip link set dev vxlan0 master br0 8180efe9ed9SPetr Machata 81905ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 82005ef614cSDanielle Ratson bridge fdb show dev vxlan0 8210efe9ed9SPetr Machata check_err $? 8220efe9ed9SPetr Machata 8230efe9ed9SPetr Machata log_test "offload indication - attach vxlan last" 8240efe9ed9SPetr Machata} 8250efe9ed9SPetr Machata 8260efe9ed9SPetr Machataoffload_indication_join_vxlan_last() 8270efe9ed9SPetr Machata{ 828*55415775SPetr Machata ip link add dev br0 type bridge mcast_snooping 0 829*55415775SPetr Machata ip link set dev br0 addrgenmode none 830*55415775SPetr Machata ip link set dev br0 up 8318e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 8328e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 8330efe9ed9SPetr Machata 8340efe9ed9SPetr Machata __offload_indication_join_vxlan_last 8350efe9ed9SPetr Machata 8360efe9ed9SPetr Machata ip link del dev vxlan0 8370efe9ed9SPetr Machata ip link del dev br0 8380efe9ed9SPetr Machata} 8390efe9ed9SPetr Machata 84099c9b084SIdo Schimmeloffload_indication_test() 84199c9b084SIdo Schimmel{ 84299c9b084SIdo Schimmel offload_indication_setup_create 84399c9b084SIdo Schimmel offload_indication_fdb_test 84499c9b084SIdo Schimmel offload_indication_decap_route_test 84599c9b084SIdo Schimmel offload_indication_setup_destroy 8460efe9ed9SPetr Machata 8470efe9ed9SPetr Machata log_info "offload indication - replay & cleanup" 8480efe9ed9SPetr Machata offload_indication_join_vxlan_first 8490efe9ed9SPetr Machata offload_indication_join_vxlan_last 85099c9b084SIdo Schimmel} 85199c9b084SIdo Schimmel 852f0723237SIdo Schimmelsanitization_vlan_aware_test() 853f0723237SIdo Schimmel{ 854f0723237SIdo Schimmel RET=0 855f0723237SIdo Schimmel 856f0723237SIdo Schimmel ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 857*55415775SPetr Machata ip link set dev br0 addrgenmode none 858f0723237SIdo Schimmel 859f0723237SIdo Schimmel ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 8608e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 861f0723237SIdo Schimmel 862f0723237SIdo Schimmel ip link add name vxlan20 up master br0 type vxlan id 20 nolearning \ 8638e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 864f0723237SIdo Schimmel 865f0723237SIdo Schimmel # Test that when each VNI is mapped to a different VLAN we can enslave 866f0723237SIdo Schimmel # a port to the bridge 867f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 pvid untagged 868f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 869f0723237SIdo Schimmel 870f0723237SIdo Schimmel ip link set dev $swp1 master br0 871f0723237SIdo Schimmel check_err $? 872f0723237SIdo Schimmel 873f0723237SIdo Schimmel log_test "vlan-aware - enslavement to vlan-aware bridge" 874f0723237SIdo Schimmel 875f0723237SIdo Schimmel # Try to map both VNIs to the same VLAN and make sure configuration 876f0723237SIdo Schimmel # fails 877f0723237SIdo Schimmel RET=0 878f0723237SIdo Schimmel 879f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan20 pvid untagged &> /dev/null 880f0723237SIdo Schimmel check_fail $? 881f0723237SIdo Schimmel 882f0723237SIdo Schimmel log_test "vlan-aware - two vnis mapped to the same vlan" 883f0723237SIdo Schimmel 884f0723237SIdo Schimmel # Test that enslavement of a port to a bridge fails when two VNIs 885f0723237SIdo Schimmel # are mapped to the same VLAN 886f0723237SIdo Schimmel RET=0 887f0723237SIdo Schimmel 888f0723237SIdo Schimmel ip link set dev $swp1 nomaster 889f0723237SIdo Schimmel 890f0723237SIdo Schimmel bridge vlan del vid 20 dev vxlan20 pvid untagged 891f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan20 pvid untagged 892f0723237SIdo Schimmel 893f0723237SIdo Schimmel ip link set dev $swp1 master br0 &> /dev/null 894f0723237SIdo Schimmel check_fail $? 895f0723237SIdo Schimmel 896f0723237SIdo Schimmel log_test "vlan-aware - failed enslavement to vlan-aware bridge" 897f0723237SIdo Schimmel 89816dc42e4SIdo Schimmel bridge vlan del vid 10 dev vxlan20 89916dc42e4SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 90016dc42e4SIdo Schimmel 901495c3da6SIdo Schimmel # Test that when two VXLAN tunnels with conflicting configurations 902495c3da6SIdo Schimmel # (i.e., different TTL) are enslaved to the same VLAN-aware bridge, 903495c3da6SIdo Schimmel # then the enslavement of a port to the bridge is denied. 904495c3da6SIdo Schimmel 905495c3da6SIdo Schimmel # Use the offload indication of the local route to ensure the VXLAN 906495c3da6SIdo Schimmel # configuration was correctly rollbacked. 9078e059d64SAmit Cohen ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 908495c3da6SIdo Schimmel 909495c3da6SIdo Schimmel ip link set dev vxlan10 type vxlan ttl 10 910495c3da6SIdo Schimmel ip link set dev $swp1 master br0 &> /dev/null 911495c3da6SIdo Schimmel check_fail $? 912495c3da6SIdo Schimmel 91305ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 9148e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 91505ef614cSDanielle Ratson check_err $? 916495c3da6SIdo Schimmel 917495c3da6SIdo Schimmel log_test "vlan-aware - failed enslavement to bridge due to conflict" 918495c3da6SIdo Schimmel 919495c3da6SIdo Schimmel ip link set dev vxlan10 type vxlan ttl 20 9208e059d64SAmit Cohen ip address del $LOCAL_IP_1/$PREFIX_LEN dev lo 921495c3da6SIdo Schimmel 922f0723237SIdo Schimmel ip link del dev vxlan20 923f0723237SIdo Schimmel ip link del dev vxlan10 924f0723237SIdo Schimmel ip link del dev br0 925f0723237SIdo Schimmel} 926f0723237SIdo Schimmel 927f0723237SIdo Schimmeloffload_indication_vlan_aware_setup_create() 928f0723237SIdo Schimmel{ 929f0723237SIdo Schimmel # Create a simple setup with two VxLAN devices and a single VLAN-aware 930f0723237SIdo Schimmel # bridge 931*55415775SPetr Machata ip link add name br0 type bridge mcast_snooping 0 vlan_filtering 1 \ 932f0723237SIdo Schimmel vlan_default_pvid 0 933*55415775SPetr Machata ip link set dev br0 addrgenmode none 934*55415775SPetr Machata ip link set dev br0 up 935f0723237SIdo Schimmel 936f0723237SIdo Schimmel ip link set dev $swp1 master br0 937f0723237SIdo Schimmel 938f0723237SIdo Schimmel bridge vlan add vid 10 dev $swp1 939f0723237SIdo Schimmel bridge vlan add vid 20 dev $swp1 940f0723237SIdo Schimmel 9418e059d64SAmit Cohen ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 942f0723237SIdo Schimmel 943f0723237SIdo Schimmel ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 9448e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 945f0723237SIdo Schimmel ip link add name vxlan20 up master br0 type vxlan id 20 nolearning \ 9468e059d64SAmit Cohen $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 947f0723237SIdo Schimmel 948f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 pvid untagged 949f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 950f0723237SIdo Schimmel} 951f0723237SIdo Schimmel 952f0723237SIdo Schimmeloffload_indication_vlan_aware_setup_destroy() 953f0723237SIdo Schimmel{ 954f0723237SIdo Schimmel bridge vlan del vid 20 dev vxlan20 955f0723237SIdo Schimmel bridge vlan del vid 10 dev vxlan10 956f0723237SIdo Schimmel 957f0723237SIdo Schimmel ip link del dev vxlan20 958f0723237SIdo Schimmel ip link del dev vxlan10 959f0723237SIdo Schimmel 9608e059d64SAmit Cohen ip address del $LOCAL_IP_1/$PREFIX_LEN dev lo 961f0723237SIdo Schimmel 962f0723237SIdo Schimmel bridge vlan del vid 20 dev $swp1 963f0723237SIdo Schimmel bridge vlan del vid 10 dev $swp1 964f0723237SIdo Schimmel 965f0723237SIdo Schimmel ip link set dev $swp1 nomaster 966f0723237SIdo Schimmel 967f0723237SIdo Schimmel ip link del dev br0 968f0723237SIdo Schimmel} 969f0723237SIdo Schimmel 970f0723237SIdo Schimmeloffload_indication_vlan_aware_fdb_test() 971f0723237SIdo Schimmel{ 972f0723237SIdo Schimmel RET=0 973f0723237SIdo Schimmel 974f0723237SIdo Schimmel log_info "vxlan entry offload indication - vlan-aware" 975f0723237SIdo Schimmel 976f0723237SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan10 self master static \ 9778e059d64SAmit Cohen dst $LOCAL_IP_2 vlan 10 978f0723237SIdo Schimmel 97905ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 98005ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 981f0723237SIdo Schimmel check_err $? 98205ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 98305ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 984f0723237SIdo Schimmel check_err $? 985f0723237SIdo Schimmel 986f0723237SIdo Schimmel log_test "vxlan entry offload indication - initial state" 987f0723237SIdo Schimmel 988f0723237SIdo Schimmel # Remove FDB entry from the bridge driver and check that corresponding 989f0723237SIdo Schimmel # entry in the VxLAN driver is not marked as offloaded 990f0723237SIdo Schimmel RET=0 991f0723237SIdo Schimmel 992f0723237SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan10 master vlan 10 99305ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 99405ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 99505ef614cSDanielle Ratson check_err $? 996f0723237SIdo Schimmel 997f0723237SIdo Schimmel log_test "vxlan entry offload indication - after removal from bridge" 998f0723237SIdo Schimmel 999f0723237SIdo Schimmel # Add the FDB entry back to the bridge driver and make sure it is 1000f0723237SIdo Schimmel # marked as offloaded in both drivers 1001f0723237SIdo Schimmel RET=0 1002f0723237SIdo Schimmel 1003f0723237SIdo Schimmel bridge fdb add de:ad:be:ef:13:37 dev vxlan10 master static vlan 10 100405ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 100505ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 1006f0723237SIdo Schimmel check_err $? 100705ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 100805ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 1009f0723237SIdo Schimmel check_err $? 1010f0723237SIdo Schimmel 1011f0723237SIdo Schimmel log_test "vxlan entry offload indication - after re-add to bridge" 1012f0723237SIdo Schimmel 1013f0723237SIdo Schimmel # Remove FDB entry from the VxLAN driver and check that corresponding 1014f0723237SIdo Schimmel # entry in the bridge driver is not marked as offloaded 1015f0723237SIdo Schimmel RET=0 1016f0723237SIdo Schimmel 1017f0723237SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan10 self 101805ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 101905ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 102005ef614cSDanielle Ratson check_err $? 1021f0723237SIdo Schimmel 1022f0723237SIdo Schimmel log_test "vxlan entry offload indication - after removal from vxlan" 1023f0723237SIdo Schimmel 1024f0723237SIdo Schimmel # Add the FDB entry back to the VxLAN driver and make sure it is 1025f0723237SIdo Schimmel # marked as offloaded in both drivers 1026f0723237SIdo Schimmel RET=0 1027f0723237SIdo Schimmel 10288e059d64SAmit Cohen bridge fdb add de:ad:be:ef:13:37 dev vxlan10 self dst $LOCAL_IP_2 102905ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 103005ef614cSDanielle Ratson de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 1031f0723237SIdo Schimmel check_err $? 103205ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 103305ef614cSDanielle Ratson de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 1034f0723237SIdo Schimmel check_err $? 1035f0723237SIdo Schimmel 1036f0723237SIdo Schimmel log_test "vxlan entry offload indication - after re-add to vxlan" 1037f0723237SIdo Schimmel 1038f0723237SIdo Schimmel bridge fdb del de:ad:be:ef:13:37 dev vxlan10 self master vlan 10 1039f0723237SIdo Schimmel} 1040f0723237SIdo Schimmel 1041f0723237SIdo Schimmeloffload_indication_vlan_aware_decap_route_test() 1042f0723237SIdo Schimmel{ 1043f0723237SIdo Schimmel RET=0 1044f0723237SIdo Schimmel 104505ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 10468e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 1047f0723237SIdo Schimmel check_err $? 1048f0723237SIdo Schimmel 1049f0723237SIdo Schimmel # Toggle PVID flag on one VxLAN device and make sure route is still 1050f0723237SIdo Schimmel # marked as offloaded 1051f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 untagged 1052f0723237SIdo Schimmel 105305ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload \ 10548e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 1055f0723237SIdo Schimmel check_err $? 1056f0723237SIdo Schimmel 1057f0723237SIdo Schimmel # Toggle PVID flag on second VxLAN device and make sure route is no 1058f0723237SIdo Schimmel # longer marked as offloaded 1059f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 untagged 1060f0723237SIdo Schimmel 106105ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload \ 10628e059d64SAmit Cohen ip $IP_FLAG route show table local $LOCAL_IP_1 106305ef614cSDanielle Ratson check_err $? 1064f0723237SIdo Schimmel 1065f0723237SIdo Schimmel # Toggle PVID flag back and make sure route is marked as offloaded 1066f0723237SIdo Schimmel bridge vlan add vid 10 dev vxlan10 pvid untagged 1067f0723237SIdo Schimmel bridge vlan add vid 20 dev vxlan20 pvid untagged 1068f0723237SIdo Schimmel 10698e059d64SAmit Cohen busywait "$TIMEOUT" wait_for_offload ip $IP_FLAG route show table local \ 10708e059d64SAmit Cohen $LOCAL_IP_1 1071f0723237SIdo Schimmel check_err $? 1072f0723237SIdo Schimmel 1073f0723237SIdo Schimmel log_test "vxlan decap route - vni map/unmap" 1074f0723237SIdo Schimmel} 1075f0723237SIdo Schimmel 10760efe9ed9SPetr Machataoffload_indication_vlan_aware_join_vxlan_first() 10770efe9ed9SPetr Machata{ 1078*55415775SPetr Machata ip link add dev br0 type bridge mcast_snooping 0 \ 10790efe9ed9SPetr Machata vlan_filtering 1 vlan_default_pvid 1 1080*55415775SPetr Machata ip link set dev br0 addrgenmode none 1081*55415775SPetr Machata ip link set dev br0 up 10828e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 10838e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 10840efe9ed9SPetr Machata 10850efe9ed9SPetr Machata __offload_indication_join_vxlan_first 1 10860efe9ed9SPetr Machata 10870efe9ed9SPetr Machata ip link del dev vxlan0 10880efe9ed9SPetr Machata ip link del dev br0 10890efe9ed9SPetr Machata} 10900efe9ed9SPetr Machata 10910efe9ed9SPetr Machataoffload_indication_vlan_aware_join_vxlan_last() 10920efe9ed9SPetr Machata{ 1093*55415775SPetr Machata ip link add dev br0 type bridge mcast_snooping 0 \ 10940efe9ed9SPetr Machata vlan_filtering 1 vlan_default_pvid 1 1095*55415775SPetr Machata ip link set dev br0 addrgenmode none 1096*55415775SPetr Machata ip link set dev br0 up 10978e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 10988e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 10990efe9ed9SPetr Machata 11000efe9ed9SPetr Machata __offload_indication_join_vxlan_last 11010efe9ed9SPetr Machata 11020efe9ed9SPetr Machata ip link del dev vxlan0 11030efe9ed9SPetr Machata ip link del dev br0 11040efe9ed9SPetr Machata} 11050efe9ed9SPetr Machata 11069d15dcebSIdo Schimmeloffload_indication_vlan_aware_l3vni_test() 11079d15dcebSIdo Schimmel{ 11089d15dcebSIdo Schimmel local zmac=00:00:00:00:00:00 11099d15dcebSIdo Schimmel 11109d15dcebSIdo Schimmel RET=0 11119d15dcebSIdo Schimmel 11129d15dcebSIdo Schimmel sysctl_set net.ipv6.conf.default.disable_ipv6 1 1113*55415775SPetr Machata ip link add dev br0 type bridge mcast_snooping 0 \ 11149d15dcebSIdo Schimmel vlan_filtering 1 vlan_default_pvid 0 1115*55415775SPetr Machata ip link set dev br0 addrgenmode none 1116*55415775SPetr Machata ip link set dev br0 up 11178e059d64SAmit Cohen ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 11188e059d64SAmit Cohen ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 11199d15dcebSIdo Schimmel 11209d15dcebSIdo Schimmel ip link set dev $swp1 master br0 11219d15dcebSIdo Schimmel 11229d15dcebSIdo Schimmel # The test will use the offload indication on the FDB entry to 11239d15dcebSIdo Schimmel # understand if the tunnel is offloaded or not 11248e059d64SAmit Cohen bridge fdb append $zmac dev vxlan0 self dst $LOCAL_IP_2 11259d15dcebSIdo Schimmel 11269d15dcebSIdo Schimmel ip link set dev vxlan0 master br0 11279d15dcebSIdo Schimmel bridge vlan add dev vxlan0 vid 10 pvid untagged 11289d15dcebSIdo Schimmel 112905ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 113005ef614cSDanielle Ratson bridge fdb show brport vxlan0 113158ba0238SIdo Schimmel check_err $? "vxlan tunnel not offloaded when should" 11329d15dcebSIdo Schimmel 11339d15dcebSIdo Schimmel # Configure a VLAN interface and make sure tunnel is offloaded 11349d15dcebSIdo Schimmel ip link add link br0 name br10 up type vlan id 10 11359d15dcebSIdo Schimmel sysctl_set net.ipv6.conf.br10.disable_ipv6 0 11369d15dcebSIdo Schimmel ip -6 address add 2001:db8:1::1/64 dev br10 113705ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 113805ef614cSDanielle Ratson bridge fdb show brport vxlan0 11399d15dcebSIdo Schimmel check_err $? "vxlan tunnel not offloaded when should" 11409d15dcebSIdo Schimmel 11419d15dcebSIdo Schimmel # Unlink the VXLAN device, make sure tunnel is no longer offloaded, 11429d15dcebSIdo Schimmel # then add it back to the bridge and make sure it is offloaded 11439d15dcebSIdo Schimmel ip link set dev vxlan0 nomaster 114405ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 114505ef614cSDanielle Ratson bridge fdb show brport vxlan0 114605ef614cSDanielle Ratson check_err $? "vxlan tunnel offloaded after unlinked from bridge" 11479d15dcebSIdo Schimmel 11489d15dcebSIdo Schimmel ip link set dev vxlan0 master br0 114905ef614cSDanielle Ratson busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 115005ef614cSDanielle Ratson bridge fdb show brport vxlan0 115105ef614cSDanielle Ratson check_err $? "vxlan tunnel offloaded despite no matching vid" 11529d15dcebSIdo Schimmel 11539d15dcebSIdo Schimmel bridge vlan add dev vxlan0 vid 10 pvid untagged 115405ef614cSDanielle Ratson busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 115505ef614cSDanielle Ratson bridge fdb show brport vxlan0 11569d15dcebSIdo Schimmel check_err $? "vxlan tunnel not offloaded after adding vid" 11579d15dcebSIdo Schimmel 11589d15dcebSIdo Schimmel log_test "vxlan - l3 vni" 11599d15dcebSIdo Schimmel 11609d15dcebSIdo Schimmel ip link del dev vxlan0 11619d15dcebSIdo Schimmel ip link del dev br0 11629d15dcebSIdo Schimmel sysctl_restore net.ipv6.conf.default.disable_ipv6 11639d15dcebSIdo Schimmel} 11649d15dcebSIdo Schimmel 1165f0723237SIdo Schimmeloffload_indication_vlan_aware_test() 1166f0723237SIdo Schimmel{ 1167f0723237SIdo Schimmel offload_indication_vlan_aware_setup_create 1168f0723237SIdo Schimmel offload_indication_vlan_aware_fdb_test 1169f0723237SIdo Schimmel offload_indication_vlan_aware_decap_route_test 1170f0723237SIdo Schimmel offload_indication_vlan_aware_setup_destroy 11710efe9ed9SPetr Machata 11720efe9ed9SPetr Machata log_info "offload indication - replay & cleanup - vlan aware" 11730efe9ed9SPetr Machata offload_indication_vlan_aware_join_vxlan_first 11740efe9ed9SPetr Machata offload_indication_vlan_aware_join_vxlan_last 11759d15dcebSIdo Schimmel offload_indication_vlan_aware_l3vni_test 1176f0723237SIdo Schimmel} 1177f0723237SIdo Schimmel 117899c9b084SIdo Schimmeltrap cleanup EXIT 117999c9b084SIdo Schimmel 118099c9b084SIdo Schimmelsetup_prepare 118199c9b084SIdo Schimmelsetup_wait 118299c9b084SIdo Schimmel 118399c9b084SIdo Schimmeltests_run 118499c9b084SIdo Schimmel 118599c9b084SIdo Schimmelexit $EXIT_STATUS 1186