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