1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3#
4# Test operations that we expect to report extended ack.
5
6lib_dir=$(dirname $0)/../../../net/forwarding
7
8ALL_TESTS="
9	netdev_pre_up_test
10	vxlan_vlan_add_test
11"
12NUM_NETIFS=2
13source $lib_dir/lib.sh
14
15setup_prepare()
16{
17	swp1=${NETIFS[p1]}
18	swp2=${NETIFS[p2]}
19
20	ip link set dev $swp1 up
21	ip link set dev $swp2 up
22}
23
24cleanup()
25{
26	pre_cleanup
27
28	ip link set dev $swp2 down
29	ip link set dev $swp1 down
30}
31
32netdev_pre_up_test()
33{
34	RET=0
35
36	ip link add name br1 up type bridge vlan_filtering 0 mcast_snooping 0
37	ip link add name vx1 up type vxlan id 1000 \
38		local 192.0.2.17 remote 192.0.2.18 \
39		dstport 4789 nolearning noudpcsum tos inherit ttl 100
40
41	ip link set dev vx1 master br1
42	check_err $?
43
44	ip link set dev $swp1 master br1
45	check_err $?
46
47	ip link add name br2 up type bridge vlan_filtering 0 mcast_snooping 0
48	ip link add name vx2 up type vxlan id 2000 \
49		local 192.0.2.17 remote 192.0.2.18 \
50		dstport 4789 nolearning noudpcsum tos inherit ttl 100
51
52	ip link set dev vx2 master br2
53	check_err $?
54
55	ip link set dev $swp2 master br2
56	check_err $?
57
58	# Unsupported configuration: mlxsw demands that all offloaded VXLAN
59	# devices have the same TTL.
60	ip link set dev vx2 down
61	ip link set dev vx2 type vxlan ttl 200
62
63	ip link set dev vx2 up &>/dev/null
64	check_fail $?
65
66	ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum
67	check_err $?
68
69	log_test "extack - NETDEV_PRE_UP"
70
71	ip link del dev vx2
72	ip link del dev br2
73
74	ip link del dev vx1
75	ip link del dev br1
76}
77
78vxlan_vlan_add_test()
79{
80	RET=0
81
82	ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0
83
84	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
85	ip link add name vx1 up type vxlan id 1000 \
86		local 192.0.2.17 remote 192.0.2.18 \
87		dstport 4789 tos inherit ttl 100
88
89	ip link set dev vx1 master br1
90	check_err $?
91
92	bridge vlan add dev vx1 vid 1
93	check_err $?
94
95	ip link set dev $swp1 master br1
96	check_err $?
97
98	bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \
99		| grep -q mlxsw_spectrum
100	check_err $?
101
102	log_test "extack - map VLAN at VXLAN device"
103
104	ip link del dev vx1
105	ip link del dev br1
106}
107
108trap cleanup EXIT
109
110setup_prepare
111setup_wait
112
113tests_run
114
115exit $EXIT_STATUS
116