162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_ci# 462306a36Sopenharmony_ci# Test various aspects of VxLAN offloading which are specific to mlxsw, such 562306a36Sopenharmony_ci# as sanitization of invalid configurations and offload indication. 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci: ${ADDR_FAMILY:=ipv4} 862306a36Sopenharmony_ciexport ADDR_FAMILY 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci: ${LOCAL_IP_1:=198.51.100.1} 1162306a36Sopenharmony_ciexport LOCAL_IP_1 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci: ${LOCAL_IP_2:=198.51.100.2} 1462306a36Sopenharmony_ciexport LOCAL_IP_2 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci: ${PREFIX_LEN:=32} 1762306a36Sopenharmony_ciexport PREFIX_LEN 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci: ${UDPCSUM_FLAFS:=noudpcsum} 2062306a36Sopenharmony_ciexport UDPCSUM_FLAFS 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci: ${MC_IP:=239.0.0.1} 2362306a36Sopenharmony_ciexport MC_IP 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci: ${IP_FLAG:=""} 2662306a36Sopenharmony_ciexport IP_FLAG 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci: ${ALL_TESTS:=" 2962306a36Sopenharmony_ci sanitization_test 3062306a36Sopenharmony_ci offload_indication_test 3162306a36Sopenharmony_ci sanitization_vlan_aware_test 3262306a36Sopenharmony_ci offload_indication_vlan_aware_test 3362306a36Sopenharmony_ci"} 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cilib_dir=$(dirname $0)/../../../net/forwarding 3662306a36Sopenharmony_ciNUM_NETIFS=2 3762306a36Sopenharmony_ci: ${TIMEOUT:=20000} # ms 3862306a36Sopenharmony_cisource $lib_dir/lib.sh 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_cisetup_prepare() 4162306a36Sopenharmony_ci{ 4262306a36Sopenharmony_ci swp1=${NETIFS[p1]} 4362306a36Sopenharmony_ci swp2=${NETIFS[p2]} 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci ip link set dev $swp1 up 4662306a36Sopenharmony_ci ip link set dev $swp2 up 4762306a36Sopenharmony_ci} 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cicleanup() 5062306a36Sopenharmony_ci{ 5162306a36Sopenharmony_ci pre_cleanup 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci ip link set dev $swp2 down 5462306a36Sopenharmony_ci ip link set dev $swp1 down 5562306a36Sopenharmony_ci} 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cisanitization_single_dev_test_pass() 5862306a36Sopenharmony_ci{ 5962306a36Sopenharmony_ci ip link set dev $swp1 master br0 6062306a36Sopenharmony_ci check_err $? 6162306a36Sopenharmony_ci ip link set dev vxlan0 master br0 6262306a36Sopenharmony_ci check_err $? 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci ip link set dev $swp1 nomaster 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci ip link set dev $swp1 master br0 6762306a36Sopenharmony_ci check_err $? 6862306a36Sopenharmony_ci} 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_cisanitization_single_dev_test_fail() 7162306a36Sopenharmony_ci{ 7262306a36Sopenharmony_ci ip link set dev $swp1 master br0 7362306a36Sopenharmony_ci check_err $? 7462306a36Sopenharmony_ci ip link set dev vxlan0 master br0 &> /dev/null 7562306a36Sopenharmony_ci check_fail $? 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci ip link set dev $swp1 nomaster 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci ip link set dev vxlan0 master br0 8062306a36Sopenharmony_ci check_err $? 8162306a36Sopenharmony_ci ip link set dev $swp1 master br0 &> /dev/null 8262306a36Sopenharmony_ci check_fail $? 8362306a36Sopenharmony_ci} 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cisanitization_single_dev_valid_test() 8662306a36Sopenharmony_ci{ 8762306a36Sopenharmony_ci RET=0 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 9262306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci sanitization_single_dev_test_pass 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci ip link del dev vxlan0 9762306a36Sopenharmony_ci ip link del dev br0 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci log_test "vxlan device - valid configuration" 10062306a36Sopenharmony_ci} 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_cisanitization_single_dev_vlan_aware_test() 10362306a36Sopenharmony_ci{ 10462306a36Sopenharmony_ci RET=0 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 10962306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci sanitization_single_dev_test_pass 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci ip link del dev vxlan0 11462306a36Sopenharmony_ci ip link del dev br0 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci log_test "vxlan device with a vlan-aware bridge" 11762306a36Sopenharmony_ci} 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_cisanitization_single_dev_mcast_enabled_test() 12062306a36Sopenharmony_ci{ 12162306a36Sopenharmony_ci RET=0 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci ip link add dev br0 type bridge 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 12662306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci sanitization_single_dev_test_fail 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci ip link del dev vxlan0 13162306a36Sopenharmony_ci ip link del dev br0 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci log_test "vxlan device with a multicast enabled bridge" 13462306a36Sopenharmony_ci} 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_cisanitization_single_dev_mcast_group_test() 13762306a36Sopenharmony_ci{ 13862306a36Sopenharmony_ci RET=0 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 14162306a36Sopenharmony_ci ip link add name dummy1 up type dummy 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 14462306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 \ 14562306a36Sopenharmony_ci dev dummy1 group $MC_IP 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci sanitization_single_dev_test_fail 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci ip link del dev vxlan0 15062306a36Sopenharmony_ci ip link del dev dummy1 15162306a36Sopenharmony_ci ip link del dev br0 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci log_test "vxlan device with a multicast group" 15462306a36Sopenharmony_ci} 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_cisanitization_single_dev_no_local_ip_test() 15762306a36Sopenharmony_ci{ 15862306a36Sopenharmony_ci RET=0 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 16362306a36Sopenharmony_ci ttl 20 tos inherit dstport 4789 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci sanitization_single_dev_test_fail 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci ip link del dev vxlan0 16862306a36Sopenharmony_ci ip link del dev br0 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci log_test "vxlan device with no local ip" 17162306a36Sopenharmony_ci} 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_cisanitization_single_dev_learning_enabled_ipv4_test() 17462306a36Sopenharmony_ci{ 17562306a36Sopenharmony_ci RET=0 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 learning $UDPCSUM_FLAFS \ 18062306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci sanitization_single_dev_test_pass 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci ip link del dev vxlan0 18562306a36Sopenharmony_ci ip link del dev br0 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci log_test "vxlan device with learning enabled" 18862306a36Sopenharmony_ci} 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_cisanitization_single_dev_local_interface_test() 19162306a36Sopenharmony_ci{ 19262306a36Sopenharmony_ci RET=0 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 19562306a36Sopenharmony_ci ip link add name dummy1 up type dummy 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 19862306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 dev dummy1 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci sanitization_single_dev_test_fail 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci ip link del dev vxlan0 20362306a36Sopenharmony_ci ip link del dev dummy1 20462306a36Sopenharmony_ci ip link del dev br0 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci log_test "vxlan device with local interface" 20762306a36Sopenharmony_ci} 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cisanitization_single_dev_port_range_test() 21062306a36Sopenharmony_ci{ 21162306a36Sopenharmony_ci RET=0 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 21662306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 \ 21762306a36Sopenharmony_ci srcport 4000 5000 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci sanitization_single_dev_test_fail 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci ip link del dev vxlan0 22262306a36Sopenharmony_ci ip link del dev br0 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci log_test "vxlan device with udp source port range" 22562306a36Sopenharmony_ci} 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_cisanitization_single_dev_tos_static_test() 22862306a36Sopenharmony_ci{ 22962306a36Sopenharmony_ci RET=0 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 23462306a36Sopenharmony_ci ttl 20 tos 20 local $LOCAL_IP_1 dstport 4789 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci sanitization_single_dev_test_fail 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci ip link del dev vxlan0 23962306a36Sopenharmony_ci ip link del dev br0 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ci log_test "vxlan device with static tos" 24262306a36Sopenharmony_ci} 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_cisanitization_single_dev_ttl_inherit_test() 24562306a36Sopenharmony_ci{ 24662306a36Sopenharmony_ci RET=0 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 25162306a36Sopenharmony_ci ttl inherit tos inherit local $LOCAL_IP_1 dstport 4789 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci sanitization_single_dev_test_fail 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci ip link del dev vxlan0 25662306a36Sopenharmony_ci ip link del dev br0 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci log_test "vxlan device with inherit ttl" 25962306a36Sopenharmony_ci} 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_cisanitization_single_dev_udp_checksum_ipv4_test() 26262306a36Sopenharmony_ci{ 26362306a36Sopenharmony_ci RET=0 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning udpcsum \ 26862306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci sanitization_single_dev_test_fail 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci ip link del dev vxlan0 27362306a36Sopenharmony_ci ip link del dev br0 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci log_test "vxlan device with udp checksum" 27662306a36Sopenharmony_ci} 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_cisanitization_single_dev_test() 27962306a36Sopenharmony_ci{ 28062306a36Sopenharmony_ci # These tests make sure that we correctly sanitize VxLAN device 28162306a36Sopenharmony_ci # configurations we do not support 28262306a36Sopenharmony_ci sanitization_single_dev_valid_test 28362306a36Sopenharmony_ci sanitization_single_dev_vlan_aware_test 28462306a36Sopenharmony_ci sanitization_single_dev_mcast_enabled_test 28562306a36Sopenharmony_ci sanitization_single_dev_mcast_group_test 28662306a36Sopenharmony_ci sanitization_single_dev_no_local_ip_test 28762306a36Sopenharmony_ci sanitization_single_dev_learning_enabled_"$ADDR_FAMILY"_test 28862306a36Sopenharmony_ci sanitization_single_dev_local_interface_test 28962306a36Sopenharmony_ci sanitization_single_dev_port_range_test 29062306a36Sopenharmony_ci sanitization_single_dev_tos_static_test 29162306a36Sopenharmony_ci sanitization_single_dev_ttl_inherit_test 29262306a36Sopenharmony_ci sanitization_single_dev_udp_checksum_"$ADDR_FAMILY"_test 29362306a36Sopenharmony_ci} 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_cisanitization_multi_devs_test_pass() 29662306a36Sopenharmony_ci{ 29762306a36Sopenharmony_ci ip link set dev $swp1 master br0 29862306a36Sopenharmony_ci check_err $? 29962306a36Sopenharmony_ci ip link set dev vxlan0 master br0 30062306a36Sopenharmony_ci check_err $? 30162306a36Sopenharmony_ci ip link set dev $swp2 master br1 30262306a36Sopenharmony_ci check_err $? 30362306a36Sopenharmony_ci ip link set dev vxlan1 master br1 30462306a36Sopenharmony_ci check_err $? 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci ip link set dev $swp2 nomaster 30762306a36Sopenharmony_ci ip link set dev $swp1 nomaster 30862306a36Sopenharmony_ci 30962306a36Sopenharmony_ci ip link set dev $swp1 master br0 31062306a36Sopenharmony_ci check_err $? 31162306a36Sopenharmony_ci ip link set dev $swp2 master br1 31262306a36Sopenharmony_ci check_err $? 31362306a36Sopenharmony_ci} 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_cisanitization_multi_devs_test_fail() 31662306a36Sopenharmony_ci{ 31762306a36Sopenharmony_ci ip link set dev $swp1 master br0 31862306a36Sopenharmony_ci check_err $? 31962306a36Sopenharmony_ci ip link set dev vxlan0 master br0 32062306a36Sopenharmony_ci check_err $? 32162306a36Sopenharmony_ci ip link set dev $swp2 master br1 32262306a36Sopenharmony_ci check_err $? 32362306a36Sopenharmony_ci ip link set dev vxlan1 master br1 &> /dev/null 32462306a36Sopenharmony_ci check_fail $? 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ci ip link set dev $swp2 nomaster 32762306a36Sopenharmony_ci ip link set dev $swp1 nomaster 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci ip link set dev vxlan1 master br1 33062306a36Sopenharmony_ci check_err $? 33162306a36Sopenharmony_ci ip link set dev $swp1 master br0 33262306a36Sopenharmony_ci check_err $? 33362306a36Sopenharmony_ci ip link set dev $swp2 master br1 &> /dev/null 33462306a36Sopenharmony_ci check_fail $? 33562306a36Sopenharmony_ci} 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_cisanitization_multi_devs_valid_test() 33862306a36Sopenharmony_ci{ 33962306a36Sopenharmony_ci RET=0 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 34262306a36Sopenharmony_ci ip link add dev br1 type bridge mcast_snooping 0 34362306a36Sopenharmony_ci 34462306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 34562306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 34662306a36Sopenharmony_ci ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 34762306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci sanitization_multi_devs_test_pass 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci ip link del dev vxlan1 35262306a36Sopenharmony_ci ip link del dev vxlan0 35362306a36Sopenharmony_ci ip link del dev br1 35462306a36Sopenharmony_ci ip link del dev br0 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci log_test "multiple vxlan devices - valid configuration" 35762306a36Sopenharmony_ci} 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_cisanitization_multi_devs_ttl_test() 36062306a36Sopenharmony_ci{ 36162306a36Sopenharmony_ci RET=0 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 36462306a36Sopenharmony_ci ip link add dev br1 type bridge mcast_snooping 0 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 36762306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 36862306a36Sopenharmony_ci ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 36962306a36Sopenharmony_ci ttl 40 tos inherit local $LOCAL_IP_1 dstport 4789 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci sanitization_multi_devs_test_fail 37262306a36Sopenharmony_ci 37362306a36Sopenharmony_ci ip link del dev vxlan1 37462306a36Sopenharmony_ci ip link del dev vxlan0 37562306a36Sopenharmony_ci ip link del dev br1 37662306a36Sopenharmony_ci ip link del dev br0 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ci log_test "multiple vxlan devices with different ttl" 37962306a36Sopenharmony_ci} 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_cisanitization_multi_devs_udp_dstport_test() 38262306a36Sopenharmony_ci{ 38362306a36Sopenharmony_ci RET=0 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 38662306a36Sopenharmony_ci ip link add dev br1 type bridge mcast_snooping 0 38762306a36Sopenharmony_ci 38862306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 38962306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 39062306a36Sopenharmony_ci ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 39162306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 5789 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ci sanitization_multi_devs_test_fail 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci ip link del dev vxlan1 39662306a36Sopenharmony_ci ip link del dev vxlan0 39762306a36Sopenharmony_ci ip link del dev br1 39862306a36Sopenharmony_ci ip link del dev br0 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci log_test "multiple vxlan devices with different udp destination port" 40162306a36Sopenharmony_ci} 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_cisanitization_multi_devs_local_ip_test() 40462306a36Sopenharmony_ci{ 40562306a36Sopenharmony_ci RET=0 40662306a36Sopenharmony_ci 40762306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 40862306a36Sopenharmony_ci ip link add dev br1 type bridge mcast_snooping 0 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 41162306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 41262306a36Sopenharmony_ci ip link add name vxlan1 up type vxlan id 20 nolearning $UDPCSUM_FLAFS \ 41362306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_2 dstport 4789 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ci sanitization_multi_devs_test_fail 41662306a36Sopenharmony_ci 41762306a36Sopenharmony_ci ip link del dev vxlan1 41862306a36Sopenharmony_ci ip link del dev vxlan0 41962306a36Sopenharmony_ci ip link del dev br1 42062306a36Sopenharmony_ci ip link del dev br0 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci log_test "multiple vxlan devices with different local ip" 42362306a36Sopenharmony_ci} 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_cisanitization_multi_devs_test() 42662306a36Sopenharmony_ci{ 42762306a36Sopenharmony_ci # The device has a single VTEP, which means all the VxLAN devices 42862306a36Sopenharmony_ci # we offload must share certain properties such as source IP and 42962306a36Sopenharmony_ci # UDP destination port. These tests make sure that we forbid 43062306a36Sopenharmony_ci # configurations that violate this limitation 43162306a36Sopenharmony_ci sanitization_multi_devs_valid_test 43262306a36Sopenharmony_ci sanitization_multi_devs_ttl_test 43362306a36Sopenharmony_ci sanitization_multi_devs_udp_dstport_test 43462306a36Sopenharmony_ci sanitization_multi_devs_local_ip_test 43562306a36Sopenharmony_ci} 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_cisanitization_test() 43862306a36Sopenharmony_ci{ 43962306a36Sopenharmony_ci sanitization_single_dev_test 44062306a36Sopenharmony_ci sanitization_multi_devs_test 44162306a36Sopenharmony_ci} 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_cioffload_indication_setup_create() 44462306a36Sopenharmony_ci{ 44562306a36Sopenharmony_ci # Create a simple setup with two bridges, each with a VxLAN device 44662306a36Sopenharmony_ci # and one local port 44762306a36Sopenharmony_ci ip link add name br0 type bridge mcast_snooping 0 44862306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 44962306a36Sopenharmony_ci ip link set dev br0 up 45062306a36Sopenharmony_ci ip link add name br1 type bridge mcast_snooping 0 45162306a36Sopenharmony_ci ip link set dev br1 addrgenmode none 45262306a36Sopenharmony_ci ip link set dev br1 up 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ci ip link set dev $swp1 master br0 45562306a36Sopenharmony_ci ip link set dev $swp2 master br1 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ci ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 45862306a36Sopenharmony_ci 45962306a36Sopenharmony_ci ip link add name vxlan0 up master br0 type vxlan id 10 nolearning \ 46062306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 46162306a36Sopenharmony_ci ip link add name vxlan1 up master br1 type vxlan id 20 nolearning \ 46262306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 46362306a36Sopenharmony_ci} 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_cioffload_indication_setup_destroy() 46662306a36Sopenharmony_ci{ 46762306a36Sopenharmony_ci ip link del dev vxlan1 46862306a36Sopenharmony_ci ip link del dev vxlan0 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ci ip address del $LOCAL_IP_1/$PREFIX_LEN dev lo 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ci ip link set dev $swp2 nomaster 47362306a36Sopenharmony_ci ip link set dev $swp1 nomaster 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ci ip link del dev br1 47662306a36Sopenharmony_ci ip link del dev br0 47762306a36Sopenharmony_ci} 47862306a36Sopenharmony_ci 47962306a36Sopenharmony_cioffload_indication_fdb_flood_test() 48062306a36Sopenharmony_ci{ 48162306a36Sopenharmony_ci RET=0 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_ci bridge fdb append 00:00:00:00:00:00 dev vxlan0 self dst $LOCAL_IP_2 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb 00:00:00:00:00:00 \ 48662306a36Sopenharmony_ci bridge fdb show brport vxlan0 48762306a36Sopenharmony_ci check_err $? 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_ci bridge fdb del 00:00:00:00:00:00 dev vxlan0 self 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_ci log_test "vxlan flood entry offload indication" 49262306a36Sopenharmony_ci} 49362306a36Sopenharmony_ci 49462306a36Sopenharmony_cioffload_indication_fdb_bridge_test() 49562306a36Sopenharmony_ci{ 49662306a36Sopenharmony_ci RET=0 49762306a36Sopenharmony_ci 49862306a36Sopenharmony_ci bridge fdb add de:ad:be:ef:13:37 dev vxlan0 self master static \ 49962306a36Sopenharmony_ci dst $LOCAL_IP_2 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 50262306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 50362306a36Sopenharmony_ci check_err $? 50462306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 50562306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 50662306a36Sopenharmony_ci check_err $? 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_ci log_test "vxlan entry offload indication - initial state" 50962306a36Sopenharmony_ci 51062306a36Sopenharmony_ci # Remove FDB entry from the bridge driver and check that corresponding 51162306a36Sopenharmony_ci # entry in the VxLAN driver is not marked as offloaded 51262306a36Sopenharmony_ci RET=0 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ci bridge fdb del de:ad:be:ef:13:37 dev vxlan0 master 51562306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 51662306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 51762306a36Sopenharmony_ci check_err $? 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_ci log_test "vxlan entry offload indication - after removal from bridge" 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ci # Add the FDB entry back to the bridge driver and make sure it is 52262306a36Sopenharmony_ci # marked as offloaded in both drivers 52362306a36Sopenharmony_ci RET=0 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_ci bridge fdb add de:ad:be:ef:13:37 dev vxlan0 master static 52662306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 52762306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 52862306a36Sopenharmony_ci check_err $? 52962306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 53062306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 53162306a36Sopenharmony_ci check_err $? 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_ci log_test "vxlan entry offload indication - after re-add to bridge" 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_ci # Remove FDB entry from the VxLAN driver and check that corresponding 53662306a36Sopenharmony_ci # entry in the bridge driver is not marked as offloaded 53762306a36Sopenharmony_ci RET=0 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_ci bridge fdb del de:ad:be:ef:13:37 dev vxlan0 self 54062306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 54162306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 54262306a36Sopenharmony_ci check_err $? 54362306a36Sopenharmony_ci 54462306a36Sopenharmony_ci log_test "vxlan entry offload indication - after removal from vxlan" 54562306a36Sopenharmony_ci 54662306a36Sopenharmony_ci # Add the FDB entry back to the VxLAN driver and make sure it is 54762306a36Sopenharmony_ci # marked as offloaded in both drivers 54862306a36Sopenharmony_ci RET=0 54962306a36Sopenharmony_ci 55062306a36Sopenharmony_ci bridge fdb add de:ad:be:ef:13:37 dev vxlan0 self dst $LOCAL_IP_2 55162306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 55262306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan0 55362306a36Sopenharmony_ci check_err $? 55462306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 55562306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan0 55662306a36Sopenharmony_ci check_err $? 55762306a36Sopenharmony_ci 55862306a36Sopenharmony_ci log_test "vxlan entry offload indication - after re-add to vxlan" 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_ci bridge fdb del de:ad:be:ef:13:37 dev vxlan0 self master 56162306a36Sopenharmony_ci} 56262306a36Sopenharmony_ci 56362306a36Sopenharmony_cioffload_indication_fdb_test() 56462306a36Sopenharmony_ci{ 56562306a36Sopenharmony_ci offload_indication_fdb_flood_test 56662306a36Sopenharmony_ci offload_indication_fdb_bridge_test 56762306a36Sopenharmony_ci} 56862306a36Sopenharmony_ci 56962306a36Sopenharmony_cioffload_indication_decap_route_test() 57062306a36Sopenharmony_ci{ 57162306a36Sopenharmony_ci RET=0 57262306a36Sopenharmony_ci 57362306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 57462306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 57562306a36Sopenharmony_ci check_err $? 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_ci ip link set dev vxlan0 down 57862306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 57962306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 58062306a36Sopenharmony_ci check_err $? 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci ip link set dev vxlan1 down 58362306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 58462306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 58562306a36Sopenharmony_ci check_err $? 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ci log_test "vxlan decap route - vxlan device down" 58862306a36Sopenharmony_ci 58962306a36Sopenharmony_ci RET=0 59062306a36Sopenharmony_ci 59162306a36Sopenharmony_ci ip link set dev vxlan1 up 59262306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 59362306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 59462306a36Sopenharmony_ci check_err $? 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_ci ip link set dev vxlan0 up 59762306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 59862306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 59962306a36Sopenharmony_ci check_err $? 60062306a36Sopenharmony_ci 60162306a36Sopenharmony_ci log_test "vxlan decap route - vxlan device up" 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ci RET=0 60462306a36Sopenharmony_ci 60562306a36Sopenharmony_ci ip address delete $LOCAL_IP_1/$PREFIX_LEN dev lo 60662306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 60762306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 60862306a36Sopenharmony_ci check_err $? 60962306a36Sopenharmony_ci 61062306a36Sopenharmony_ci ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 61162306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 61262306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 61362306a36Sopenharmony_ci check_err $? 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ci log_test "vxlan decap route - add local route" 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_ci RET=0 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_ci ip link set dev $swp1 nomaster 62062306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 62162306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 62262306a36Sopenharmony_ci check_err $? 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_ci ip link set dev $swp2 nomaster 62562306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 62662306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 62762306a36Sopenharmony_ci check_err $? 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_ci ip link set dev $swp1 master br0 63062306a36Sopenharmony_ci ip link set dev $swp2 master br1 63162306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 63262306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 63362306a36Sopenharmony_ci check_err $? 63462306a36Sopenharmony_ci 63562306a36Sopenharmony_ci log_test "vxlan decap route - local ports enslavement" 63662306a36Sopenharmony_ci 63762306a36Sopenharmony_ci RET=0 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_ci ip link del dev br0 64062306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 64162306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 64262306a36Sopenharmony_ci check_err $? 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ci ip link del dev br1 64562306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 64662306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 64762306a36Sopenharmony_ci check_err $? 64862306a36Sopenharmony_ci 64962306a36Sopenharmony_ci log_test "vxlan decap route - bridge device deletion" 65062306a36Sopenharmony_ci 65162306a36Sopenharmony_ci RET=0 65262306a36Sopenharmony_ci 65362306a36Sopenharmony_ci ip link add name br0 type bridge mcast_snooping 0 65462306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 65562306a36Sopenharmony_ci ip link set dev br0 up 65662306a36Sopenharmony_ci ip link add name br1 type bridge mcast_snooping 0 65762306a36Sopenharmony_ci ip link set dev br1 addrgenmode none 65862306a36Sopenharmony_ci ip link set dev br1 up 65962306a36Sopenharmony_ci ip link set dev $swp1 master br0 66062306a36Sopenharmony_ci ip link set dev $swp2 master br1 66162306a36Sopenharmony_ci ip link set dev vxlan0 master br0 66262306a36Sopenharmony_ci ip link set dev vxlan1 master br1 66362306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 66462306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 66562306a36Sopenharmony_ci check_err $? 66662306a36Sopenharmony_ci 66762306a36Sopenharmony_ci ip link del dev vxlan0 66862306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 66962306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 67062306a36Sopenharmony_ci check_err $? 67162306a36Sopenharmony_ci 67262306a36Sopenharmony_ci ip link del dev vxlan1 67362306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 67462306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 67562306a36Sopenharmony_ci check_err $? 67662306a36Sopenharmony_ci 67762306a36Sopenharmony_ci log_test "vxlan decap route - vxlan device deletion" 67862306a36Sopenharmony_ci 67962306a36Sopenharmony_ci ip link add name vxlan0 up master br0 type vxlan id 10 nolearning \ 68062306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 68162306a36Sopenharmony_ci ip link add name vxlan1 up master br1 type vxlan id 20 nolearning \ 68262306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 68362306a36Sopenharmony_ci} 68462306a36Sopenharmony_ci 68562306a36Sopenharmony_cicheck_fdb_offloaded() 68662306a36Sopenharmony_ci{ 68762306a36Sopenharmony_ci local mac=00:11:22:33:44:55 68862306a36Sopenharmony_ci local zmac=00:00:00:00:00:00 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $mac self \ 69162306a36Sopenharmony_ci bridge fdb show dev vxlan0 69262306a36Sopenharmony_ci check_err $? 69362306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $mac master \ 69462306a36Sopenharmony_ci bridge fdb show dev vxlan0 69562306a36Sopenharmony_ci check_err $? 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 69862306a36Sopenharmony_ci bridge fdb show dev vxlan0 69962306a36Sopenharmony_ci check_err $? 70062306a36Sopenharmony_ci} 70162306a36Sopenharmony_ci 70262306a36Sopenharmony_cicheck_vxlan_fdb_not_offloaded() 70362306a36Sopenharmony_ci{ 70462306a36Sopenharmony_ci local mac=00:11:22:33:44:55 70562306a36Sopenharmony_ci local zmac=00:00:00:00:00:00 70662306a36Sopenharmony_ci 70762306a36Sopenharmony_ci bridge fdb show dev vxlan0 | grep $mac | grep -q self 70862306a36Sopenharmony_ci check_err $? 70962306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $mac self \ 71062306a36Sopenharmony_ci bridge fdb show dev vxlan0 71162306a36Sopenharmony_ci check_err $? 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_ci bridge fdb show dev vxlan0 | grep $zmac | grep -q self 71462306a36Sopenharmony_ci check_err $? 71562306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 71662306a36Sopenharmony_ci bridge fdb show dev vxlan0 71762306a36Sopenharmony_ci check_err $? 71862306a36Sopenharmony_ci} 71962306a36Sopenharmony_ci 72062306a36Sopenharmony_cicheck_bridge_fdb_not_offloaded() 72162306a36Sopenharmony_ci{ 72262306a36Sopenharmony_ci local mac=00:11:22:33:44:55 72362306a36Sopenharmony_ci local zmac=00:00:00:00:00:00 72462306a36Sopenharmony_ci 72562306a36Sopenharmony_ci bridge fdb show dev vxlan0 | grep $mac | grep -q master 72662306a36Sopenharmony_ci check_err $? 72762306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $mac master \ 72862306a36Sopenharmony_ci bridge fdb show dev vxlan0 72962306a36Sopenharmony_ci check_err $? 73062306a36Sopenharmony_ci} 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_ci__offload_indication_join_vxlan_first() 73362306a36Sopenharmony_ci{ 73462306a36Sopenharmony_ci local vid=$1; shift 73562306a36Sopenharmony_ci 73662306a36Sopenharmony_ci local mac=00:11:22:33:44:55 73762306a36Sopenharmony_ci local zmac=00:00:00:00:00:00 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ci bridge fdb append $zmac dev vxlan0 self dst $LOCAL_IP_2 74062306a36Sopenharmony_ci 74162306a36Sopenharmony_ci ip link set dev vxlan0 master br0 74262306a36Sopenharmony_ci bridge fdb add dev vxlan0 $mac self master static dst $LOCAL_IP_2 74362306a36Sopenharmony_ci 74462306a36Sopenharmony_ci RET=0 74562306a36Sopenharmony_ci check_vxlan_fdb_not_offloaded 74662306a36Sopenharmony_ci ip link set dev $swp1 master br0 74762306a36Sopenharmony_ci sleep .1 74862306a36Sopenharmony_ci check_fdb_offloaded 74962306a36Sopenharmony_ci log_test "offload indication - attach vxlan first" 75062306a36Sopenharmony_ci 75162306a36Sopenharmony_ci RET=0 75262306a36Sopenharmony_ci ip link set dev vxlan0 down 75362306a36Sopenharmony_ci check_vxlan_fdb_not_offloaded 75462306a36Sopenharmony_ci check_bridge_fdb_not_offloaded 75562306a36Sopenharmony_ci log_test "offload indication - set vxlan down" 75662306a36Sopenharmony_ci 75762306a36Sopenharmony_ci RET=0 75862306a36Sopenharmony_ci ip link set dev vxlan0 up 75962306a36Sopenharmony_ci sleep .1 76062306a36Sopenharmony_ci check_fdb_offloaded 76162306a36Sopenharmony_ci log_test "offload indication - set vxlan up" 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_ci if [[ ! -z $vid ]]; then 76462306a36Sopenharmony_ci RET=0 76562306a36Sopenharmony_ci bridge vlan del dev vxlan0 vid $vid 76662306a36Sopenharmony_ci check_vxlan_fdb_not_offloaded 76762306a36Sopenharmony_ci check_bridge_fdb_not_offloaded 76862306a36Sopenharmony_ci log_test "offload indication - delete VLAN" 76962306a36Sopenharmony_ci 77062306a36Sopenharmony_ci RET=0 77162306a36Sopenharmony_ci bridge vlan add dev vxlan0 vid $vid 77262306a36Sopenharmony_ci check_vxlan_fdb_not_offloaded 77362306a36Sopenharmony_ci check_bridge_fdb_not_offloaded 77462306a36Sopenharmony_ci log_test "offload indication - add tagged VLAN" 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ci RET=0 77762306a36Sopenharmony_ci bridge vlan add dev vxlan0 vid $vid pvid untagged 77862306a36Sopenharmony_ci sleep .1 77962306a36Sopenharmony_ci check_fdb_offloaded 78062306a36Sopenharmony_ci log_test "offload indication - add pvid/untagged VLAN" 78162306a36Sopenharmony_ci fi 78262306a36Sopenharmony_ci 78362306a36Sopenharmony_ci RET=0 78462306a36Sopenharmony_ci ip link set dev $swp1 nomaster 78562306a36Sopenharmony_ci check_vxlan_fdb_not_offloaded 78662306a36Sopenharmony_ci log_test "offload indication - detach port" 78762306a36Sopenharmony_ci} 78862306a36Sopenharmony_ci 78962306a36Sopenharmony_cioffload_indication_join_vxlan_first() 79062306a36Sopenharmony_ci{ 79162306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 79262306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 79362306a36Sopenharmony_ci ip link set dev br0 up 79462306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 79562306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_ci __offload_indication_join_vxlan_first 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_ci ip link del dev vxlan0 80062306a36Sopenharmony_ci ip link del dev br0 80162306a36Sopenharmony_ci} 80262306a36Sopenharmony_ci 80362306a36Sopenharmony_ci__offload_indication_join_vxlan_last() 80462306a36Sopenharmony_ci{ 80562306a36Sopenharmony_ci local zmac=00:00:00:00:00:00 80662306a36Sopenharmony_ci 80762306a36Sopenharmony_ci RET=0 80862306a36Sopenharmony_ci 80962306a36Sopenharmony_ci bridge fdb append $zmac dev vxlan0 self dst $LOCAL_IP_2 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_ci ip link set dev $swp1 master br0 81262306a36Sopenharmony_ci 81362306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 81462306a36Sopenharmony_ci bridge fdb show dev vxlan0 81562306a36Sopenharmony_ci check_err $? 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ci ip link set dev vxlan0 master br0 81862306a36Sopenharmony_ci 81962306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 82062306a36Sopenharmony_ci bridge fdb show dev vxlan0 82162306a36Sopenharmony_ci check_err $? 82262306a36Sopenharmony_ci 82362306a36Sopenharmony_ci log_test "offload indication - attach vxlan last" 82462306a36Sopenharmony_ci} 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_cioffload_indication_join_vxlan_last() 82762306a36Sopenharmony_ci{ 82862306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 82962306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 83062306a36Sopenharmony_ci ip link set dev br0 up 83162306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 83262306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_ci __offload_indication_join_vxlan_last 83562306a36Sopenharmony_ci 83662306a36Sopenharmony_ci ip link del dev vxlan0 83762306a36Sopenharmony_ci ip link del dev br0 83862306a36Sopenharmony_ci} 83962306a36Sopenharmony_ci 84062306a36Sopenharmony_cioffload_indication_test() 84162306a36Sopenharmony_ci{ 84262306a36Sopenharmony_ci offload_indication_setup_create 84362306a36Sopenharmony_ci offload_indication_fdb_test 84462306a36Sopenharmony_ci offload_indication_decap_route_test 84562306a36Sopenharmony_ci offload_indication_setup_destroy 84662306a36Sopenharmony_ci 84762306a36Sopenharmony_ci log_info "offload indication - replay & cleanup" 84862306a36Sopenharmony_ci offload_indication_join_vxlan_first 84962306a36Sopenharmony_ci offload_indication_join_vxlan_last 85062306a36Sopenharmony_ci} 85162306a36Sopenharmony_ci 85262306a36Sopenharmony_cisanitization_vlan_aware_test() 85362306a36Sopenharmony_ci{ 85462306a36Sopenharmony_ci RET=0 85562306a36Sopenharmony_ci 85662306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 vlan_filtering 1 85762306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 85862306a36Sopenharmony_ci 85962306a36Sopenharmony_ci ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 86062306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 86162306a36Sopenharmony_ci 86262306a36Sopenharmony_ci ip link add name vxlan20 up master br0 type vxlan id 20 nolearning \ 86362306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 86462306a36Sopenharmony_ci 86562306a36Sopenharmony_ci # Test that when each VNI is mapped to a different VLAN we can enslave 86662306a36Sopenharmony_ci # a port to the bridge 86762306a36Sopenharmony_ci bridge vlan add vid 10 dev vxlan10 pvid untagged 86862306a36Sopenharmony_ci bridge vlan add vid 20 dev vxlan20 pvid untagged 86962306a36Sopenharmony_ci 87062306a36Sopenharmony_ci ip link set dev $swp1 master br0 87162306a36Sopenharmony_ci check_err $? 87262306a36Sopenharmony_ci 87362306a36Sopenharmony_ci log_test "vlan-aware - enslavement to vlan-aware bridge" 87462306a36Sopenharmony_ci 87562306a36Sopenharmony_ci # Try to map both VNIs to the same VLAN and make sure configuration 87662306a36Sopenharmony_ci # fails 87762306a36Sopenharmony_ci RET=0 87862306a36Sopenharmony_ci 87962306a36Sopenharmony_ci bridge vlan add vid 10 dev vxlan20 pvid untagged &> /dev/null 88062306a36Sopenharmony_ci check_fail $? 88162306a36Sopenharmony_ci 88262306a36Sopenharmony_ci log_test "vlan-aware - two vnis mapped to the same vlan" 88362306a36Sopenharmony_ci 88462306a36Sopenharmony_ci # Test that enslavement of a port to a bridge fails when two VNIs 88562306a36Sopenharmony_ci # are mapped to the same VLAN 88662306a36Sopenharmony_ci RET=0 88762306a36Sopenharmony_ci 88862306a36Sopenharmony_ci ip link set dev $swp1 nomaster 88962306a36Sopenharmony_ci 89062306a36Sopenharmony_ci bridge vlan del vid 20 dev vxlan20 pvid untagged 89162306a36Sopenharmony_ci bridge vlan add vid 10 dev vxlan20 pvid untagged 89262306a36Sopenharmony_ci 89362306a36Sopenharmony_ci ip link set dev $swp1 master br0 &> /dev/null 89462306a36Sopenharmony_ci check_fail $? 89562306a36Sopenharmony_ci 89662306a36Sopenharmony_ci log_test "vlan-aware - failed enslavement to vlan-aware bridge" 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ci bridge vlan del vid 10 dev vxlan20 89962306a36Sopenharmony_ci bridge vlan add vid 20 dev vxlan20 pvid untagged 90062306a36Sopenharmony_ci 90162306a36Sopenharmony_ci # Test that when two VXLAN tunnels with conflicting configurations 90262306a36Sopenharmony_ci # (i.e., different TTL) are enslaved to the same VLAN-aware bridge, 90362306a36Sopenharmony_ci # then the enslavement of a port to the bridge is denied. 90462306a36Sopenharmony_ci 90562306a36Sopenharmony_ci # Use the offload indication of the local route to ensure the VXLAN 90662306a36Sopenharmony_ci # configuration was correctly rollbacked. 90762306a36Sopenharmony_ci ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 90862306a36Sopenharmony_ci 90962306a36Sopenharmony_ci ip link set dev vxlan10 type vxlan ttl 10 91062306a36Sopenharmony_ci ip link set dev $swp1 master br0 &> /dev/null 91162306a36Sopenharmony_ci check_fail $? 91262306a36Sopenharmony_ci 91362306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 91462306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 91562306a36Sopenharmony_ci check_err $? 91662306a36Sopenharmony_ci 91762306a36Sopenharmony_ci log_test "vlan-aware - failed enslavement to bridge due to conflict" 91862306a36Sopenharmony_ci 91962306a36Sopenharmony_ci ip link set dev vxlan10 type vxlan ttl 20 92062306a36Sopenharmony_ci ip address del $LOCAL_IP_1/$PREFIX_LEN dev lo 92162306a36Sopenharmony_ci 92262306a36Sopenharmony_ci ip link del dev vxlan20 92362306a36Sopenharmony_ci ip link del dev vxlan10 92462306a36Sopenharmony_ci ip link del dev br0 92562306a36Sopenharmony_ci} 92662306a36Sopenharmony_ci 92762306a36Sopenharmony_cioffload_indication_vlan_aware_setup_create() 92862306a36Sopenharmony_ci{ 92962306a36Sopenharmony_ci # Create a simple setup with two VxLAN devices and a single VLAN-aware 93062306a36Sopenharmony_ci # bridge 93162306a36Sopenharmony_ci ip link add name br0 type bridge mcast_snooping 0 vlan_filtering 1 \ 93262306a36Sopenharmony_ci vlan_default_pvid 0 93362306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 93462306a36Sopenharmony_ci ip link set dev br0 up 93562306a36Sopenharmony_ci 93662306a36Sopenharmony_ci ip link set dev $swp1 master br0 93762306a36Sopenharmony_ci 93862306a36Sopenharmony_ci bridge vlan add vid 10 dev $swp1 93962306a36Sopenharmony_ci bridge vlan add vid 20 dev $swp1 94062306a36Sopenharmony_ci 94162306a36Sopenharmony_ci ip address add $LOCAL_IP_1/$PREFIX_LEN dev lo 94262306a36Sopenharmony_ci 94362306a36Sopenharmony_ci ip link add name vxlan10 up master br0 type vxlan id 10 nolearning \ 94462306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 94562306a36Sopenharmony_ci ip link add name vxlan20 up master br0 type vxlan id 20 nolearning \ 94662306a36Sopenharmony_ci $UDPCSUM_FLAFS ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 94762306a36Sopenharmony_ci 94862306a36Sopenharmony_ci bridge vlan add vid 10 dev vxlan10 pvid untagged 94962306a36Sopenharmony_ci bridge vlan add vid 20 dev vxlan20 pvid untagged 95062306a36Sopenharmony_ci} 95162306a36Sopenharmony_ci 95262306a36Sopenharmony_cioffload_indication_vlan_aware_setup_destroy() 95362306a36Sopenharmony_ci{ 95462306a36Sopenharmony_ci bridge vlan del vid 20 dev vxlan20 95562306a36Sopenharmony_ci bridge vlan del vid 10 dev vxlan10 95662306a36Sopenharmony_ci 95762306a36Sopenharmony_ci ip link del dev vxlan20 95862306a36Sopenharmony_ci ip link del dev vxlan10 95962306a36Sopenharmony_ci 96062306a36Sopenharmony_ci ip address del $LOCAL_IP_1/$PREFIX_LEN dev lo 96162306a36Sopenharmony_ci 96262306a36Sopenharmony_ci bridge vlan del vid 20 dev $swp1 96362306a36Sopenharmony_ci bridge vlan del vid 10 dev $swp1 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_ci ip link set dev $swp1 nomaster 96662306a36Sopenharmony_ci 96762306a36Sopenharmony_ci ip link del dev br0 96862306a36Sopenharmony_ci} 96962306a36Sopenharmony_ci 97062306a36Sopenharmony_cioffload_indication_vlan_aware_fdb_test() 97162306a36Sopenharmony_ci{ 97262306a36Sopenharmony_ci RET=0 97362306a36Sopenharmony_ci 97462306a36Sopenharmony_ci log_info "vxlan entry offload indication - vlan-aware" 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ci bridge fdb add de:ad:be:ef:13:37 dev vxlan10 self master static \ 97762306a36Sopenharmony_ci dst $LOCAL_IP_2 vlan 10 97862306a36Sopenharmony_ci 97962306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 98062306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 98162306a36Sopenharmony_ci check_err $? 98262306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 98362306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 98462306a36Sopenharmony_ci check_err $? 98562306a36Sopenharmony_ci 98662306a36Sopenharmony_ci log_test "vxlan entry offload indication - initial state" 98762306a36Sopenharmony_ci 98862306a36Sopenharmony_ci # Remove FDB entry from the bridge driver and check that corresponding 98962306a36Sopenharmony_ci # entry in the VxLAN driver is not marked as offloaded 99062306a36Sopenharmony_ci RET=0 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_ci bridge fdb del de:ad:be:ef:13:37 dev vxlan10 master vlan 10 99362306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 99462306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 99562306a36Sopenharmony_ci check_err $? 99662306a36Sopenharmony_ci 99762306a36Sopenharmony_ci log_test "vxlan entry offload indication - after removal from bridge" 99862306a36Sopenharmony_ci 99962306a36Sopenharmony_ci # Add the FDB entry back to the bridge driver and make sure it is 100062306a36Sopenharmony_ci # marked as offloaded in both drivers 100162306a36Sopenharmony_ci RET=0 100262306a36Sopenharmony_ci 100362306a36Sopenharmony_ci bridge fdb add de:ad:be:ef:13:37 dev vxlan10 master static vlan 10 100462306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 100562306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 100662306a36Sopenharmony_ci check_err $? 100762306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 100862306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 100962306a36Sopenharmony_ci check_err $? 101062306a36Sopenharmony_ci 101162306a36Sopenharmony_ci log_test "vxlan entry offload indication - after re-add to bridge" 101262306a36Sopenharmony_ci 101362306a36Sopenharmony_ci # Remove FDB entry from the VxLAN driver and check that corresponding 101462306a36Sopenharmony_ci # entry in the bridge driver is not marked as offloaded 101562306a36Sopenharmony_ci RET=0 101662306a36Sopenharmony_ci 101762306a36Sopenharmony_ci bridge fdb del de:ad:be:ef:13:37 dev vxlan10 self 101862306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb \ 101962306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 102062306a36Sopenharmony_ci check_err $? 102162306a36Sopenharmony_ci 102262306a36Sopenharmony_ci log_test "vxlan entry offload indication - after removal from vxlan" 102362306a36Sopenharmony_ci 102462306a36Sopenharmony_ci # Add the FDB entry back to the VxLAN driver and make sure it is 102562306a36Sopenharmony_ci # marked as offloaded in both drivers 102662306a36Sopenharmony_ci RET=0 102762306a36Sopenharmony_ci 102862306a36Sopenharmony_ci bridge fdb add de:ad:be:ef:13:37 dev vxlan10 self dst $LOCAL_IP_2 102962306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 103062306a36Sopenharmony_ci de:ad:be:ef:13:37 self bridge fdb show brport vxlan10 103162306a36Sopenharmony_ci check_err $? 103262306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb \ 103362306a36Sopenharmony_ci de:ad:be:ef:13:37 self -v bridge fdb show brport vxlan10 103462306a36Sopenharmony_ci check_err $? 103562306a36Sopenharmony_ci 103662306a36Sopenharmony_ci log_test "vxlan entry offload indication - after re-add to vxlan" 103762306a36Sopenharmony_ci 103862306a36Sopenharmony_ci bridge fdb del de:ad:be:ef:13:37 dev vxlan10 self master vlan 10 103962306a36Sopenharmony_ci} 104062306a36Sopenharmony_ci 104162306a36Sopenharmony_cioffload_indication_vlan_aware_decap_route_test() 104262306a36Sopenharmony_ci{ 104362306a36Sopenharmony_ci RET=0 104462306a36Sopenharmony_ci 104562306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 104662306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 104762306a36Sopenharmony_ci check_err $? 104862306a36Sopenharmony_ci 104962306a36Sopenharmony_ci # Toggle PVID flag on one VxLAN device and make sure route is still 105062306a36Sopenharmony_ci # marked as offloaded 105162306a36Sopenharmony_ci bridge vlan add vid 10 dev vxlan10 untagged 105262306a36Sopenharmony_ci 105362306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload \ 105462306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 105562306a36Sopenharmony_ci check_err $? 105662306a36Sopenharmony_ci 105762306a36Sopenharmony_ci # Toggle PVID flag on second VxLAN device and make sure route is no 105862306a36Sopenharmony_ci # longer marked as offloaded 105962306a36Sopenharmony_ci bridge vlan add vid 20 dev vxlan20 untagged 106062306a36Sopenharmony_ci 106162306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload \ 106262306a36Sopenharmony_ci ip $IP_FLAG route show table local $LOCAL_IP_1 106362306a36Sopenharmony_ci check_err $? 106462306a36Sopenharmony_ci 106562306a36Sopenharmony_ci # Toggle PVID flag back and make sure route is marked as offloaded 106662306a36Sopenharmony_ci bridge vlan add vid 10 dev vxlan10 pvid untagged 106762306a36Sopenharmony_ci bridge vlan add vid 20 dev vxlan20 pvid untagged 106862306a36Sopenharmony_ci 106962306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload ip $IP_FLAG route show table local \ 107062306a36Sopenharmony_ci $LOCAL_IP_1 107162306a36Sopenharmony_ci check_err $? 107262306a36Sopenharmony_ci 107362306a36Sopenharmony_ci log_test "vxlan decap route - vni map/unmap" 107462306a36Sopenharmony_ci} 107562306a36Sopenharmony_ci 107662306a36Sopenharmony_cioffload_indication_vlan_aware_join_vxlan_first() 107762306a36Sopenharmony_ci{ 107862306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 \ 107962306a36Sopenharmony_ci vlan_filtering 1 vlan_default_pvid 1 108062306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 108162306a36Sopenharmony_ci ip link set dev br0 up 108262306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 108362306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 108462306a36Sopenharmony_ci 108562306a36Sopenharmony_ci __offload_indication_join_vxlan_first 1 108662306a36Sopenharmony_ci 108762306a36Sopenharmony_ci ip link del dev vxlan0 108862306a36Sopenharmony_ci ip link del dev br0 108962306a36Sopenharmony_ci} 109062306a36Sopenharmony_ci 109162306a36Sopenharmony_cioffload_indication_vlan_aware_join_vxlan_last() 109262306a36Sopenharmony_ci{ 109362306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 \ 109462306a36Sopenharmony_ci vlan_filtering 1 vlan_default_pvid 1 109562306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 109662306a36Sopenharmony_ci ip link set dev br0 up 109762306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 109862306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 109962306a36Sopenharmony_ci 110062306a36Sopenharmony_ci __offload_indication_join_vxlan_last 110162306a36Sopenharmony_ci 110262306a36Sopenharmony_ci ip link del dev vxlan0 110362306a36Sopenharmony_ci ip link del dev br0 110462306a36Sopenharmony_ci} 110562306a36Sopenharmony_ci 110662306a36Sopenharmony_cioffload_indication_vlan_aware_l3vni_test() 110762306a36Sopenharmony_ci{ 110862306a36Sopenharmony_ci local zmac=00:00:00:00:00:00 110962306a36Sopenharmony_ci 111062306a36Sopenharmony_ci RET=0 111162306a36Sopenharmony_ci 111262306a36Sopenharmony_ci sysctl_set net.ipv6.conf.default.disable_ipv6 1 111362306a36Sopenharmony_ci ip link add dev br0 type bridge mcast_snooping 0 \ 111462306a36Sopenharmony_ci vlan_filtering 1 vlan_default_pvid 0 111562306a36Sopenharmony_ci ip link set dev br0 addrgenmode none 111662306a36Sopenharmony_ci ip link set dev br0 up 111762306a36Sopenharmony_ci ip link add name vxlan0 up type vxlan id 10 nolearning $UDPCSUM_FLAFS \ 111862306a36Sopenharmony_ci ttl 20 tos inherit local $LOCAL_IP_1 dstport 4789 111962306a36Sopenharmony_ci 112062306a36Sopenharmony_ci ip link set dev $swp1 master br0 112162306a36Sopenharmony_ci 112262306a36Sopenharmony_ci # The test will use the offload indication on the FDB entry to 112362306a36Sopenharmony_ci # understand if the tunnel is offloaded or not 112462306a36Sopenharmony_ci bridge fdb append $zmac dev vxlan0 self dst $LOCAL_IP_2 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ci ip link set dev vxlan0 master br0 112762306a36Sopenharmony_ci bridge vlan add dev vxlan0 vid 10 pvid untagged 112862306a36Sopenharmony_ci 112962306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 113062306a36Sopenharmony_ci bridge fdb show brport vxlan0 113162306a36Sopenharmony_ci check_err $? "vxlan tunnel not offloaded when should" 113262306a36Sopenharmony_ci 113362306a36Sopenharmony_ci # Configure a VLAN interface and make sure tunnel is offloaded 113462306a36Sopenharmony_ci ip link add link br0 name br10 up type vlan id 10 113562306a36Sopenharmony_ci sysctl_set net.ipv6.conf.br10.disable_ipv6 0 113662306a36Sopenharmony_ci ip -6 address add 2001:db8:1::1/64 dev br10 113762306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 113862306a36Sopenharmony_ci bridge fdb show brport vxlan0 113962306a36Sopenharmony_ci check_err $? "vxlan tunnel not offloaded when should" 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ci # Unlink the VXLAN device, make sure tunnel is no longer offloaded, 114262306a36Sopenharmony_ci # then add it back to the bridge and make sure it is offloaded 114362306a36Sopenharmony_ci ip link set dev vxlan0 nomaster 114462306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 114562306a36Sopenharmony_ci bridge fdb show brport vxlan0 114662306a36Sopenharmony_ci check_err $? "vxlan tunnel offloaded after unlinked from bridge" 114762306a36Sopenharmony_ci 114862306a36Sopenharmony_ci ip link set dev vxlan0 master br0 114962306a36Sopenharmony_ci busywait "$TIMEOUT" not wait_for_offload grep_bridge_fdb $zmac self \ 115062306a36Sopenharmony_ci bridge fdb show brport vxlan0 115162306a36Sopenharmony_ci check_err $? "vxlan tunnel offloaded despite no matching vid" 115262306a36Sopenharmony_ci 115362306a36Sopenharmony_ci bridge vlan add dev vxlan0 vid 10 pvid untagged 115462306a36Sopenharmony_ci busywait "$TIMEOUT" wait_for_offload grep_bridge_fdb $zmac self \ 115562306a36Sopenharmony_ci bridge fdb show brport vxlan0 115662306a36Sopenharmony_ci check_err $? "vxlan tunnel not offloaded after adding vid" 115762306a36Sopenharmony_ci 115862306a36Sopenharmony_ci log_test "vxlan - l3 vni" 115962306a36Sopenharmony_ci 116062306a36Sopenharmony_ci ip link del dev vxlan0 116162306a36Sopenharmony_ci ip link del dev br0 116262306a36Sopenharmony_ci sysctl_restore net.ipv6.conf.default.disable_ipv6 116362306a36Sopenharmony_ci} 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_cioffload_indication_vlan_aware_test() 116662306a36Sopenharmony_ci{ 116762306a36Sopenharmony_ci offload_indication_vlan_aware_setup_create 116862306a36Sopenharmony_ci offload_indication_vlan_aware_fdb_test 116962306a36Sopenharmony_ci offload_indication_vlan_aware_decap_route_test 117062306a36Sopenharmony_ci offload_indication_vlan_aware_setup_destroy 117162306a36Sopenharmony_ci 117262306a36Sopenharmony_ci log_info "offload indication - replay & cleanup - vlan aware" 117362306a36Sopenharmony_ci offload_indication_vlan_aware_join_vxlan_first 117462306a36Sopenharmony_ci offload_indication_vlan_aware_join_vxlan_last 117562306a36Sopenharmony_ci offload_indication_vlan_aware_l3vni_test 117662306a36Sopenharmony_ci} 117762306a36Sopenharmony_ci 117862306a36Sopenharmony_citrap cleanup EXIT 117962306a36Sopenharmony_ci 118062306a36Sopenharmony_cisetup_prepare 118162306a36Sopenharmony_cisetup_wait 118262306a36Sopenharmony_ci 118362306a36Sopenharmony_citests_run 118462306a36Sopenharmony_ci 118562306a36Sopenharmony_ciexit $EXIT_STATUS 1186