#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Test operations that we expect to report extended ack.

lib_dir=$(dirname $0)/../../../net/forwarding

ALL_TESTS="
	netdev_pre_up_test
	vxlan_vlan_add_test
	port_vlan_add_test
"
NUM_NETIFS=2
source $lib_dir/lib.sh

setup_prepare()
{
	swp1=${NETIFS[p1]}
	swp2=${NETIFS[p2]}

	ip link set dev $swp1 up
	ip link set dev $swp2 up
}

cleanup()
{
	pre_cleanup

	ip link set dev $swp2 down
	ip link set dev $swp1 down
}

netdev_pre_up_test()
{
	RET=0

	ip link add name br1 up type bridge vlan_filtering 0 mcast_snooping 0
	ip link add name vx1 up type vxlan id 1000 \
		local 192.0.2.17 remote 192.0.2.18 \
		dstport 4789 nolearning noudpcsum tos inherit ttl 100

	ip link set dev vx1 master br1
	check_err $?

	ip link set dev $swp1 master br1
	check_err $?

	ip link add name br2 up type bridge vlan_filtering 0 mcast_snooping 0
	ip link add name vx2 up type vxlan id 2000 \
		local 192.0.2.17 remote 192.0.2.18 \
		dstport 4789 nolearning noudpcsum tos inherit ttl 100

	ip link set dev vx2 master br2
	check_err $?

	ip link set dev $swp2 master br2
	check_err $?

	# Unsupported configuration: mlxsw demands that all offloaded VXLAN
	# devices have the same TTL.
	ip link set dev vx2 down
	ip link set dev vx2 type vxlan ttl 200

	ip link set dev vx2 up &>/dev/null
	check_fail $?

	ip link set dev vx2 up 2>&1 >/dev/null | grep -q mlxsw_spectrum
	check_err $?

	log_test "extack - NETDEV_PRE_UP"

	ip link del dev vx2
	ip link del dev br2

	ip link del dev vx1
	ip link del dev br1
}

vxlan_vlan_add_test()
{
	RET=0

	ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0

	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
	ip link add name vx1 up type vxlan id 1000 \
		local 192.0.2.17 remote 192.0.2.18 \
		dstport 4789 tos inherit ttl 100

	ip link set dev vx1 master br1
	check_err $?

	bridge vlan add dev vx1 vid 1
	check_err $?

	ip link set dev $swp1 master br1
	check_err $?

	bridge vlan add dev vx1 vid 1 pvid untagged 2>&1 >/dev/null \
		| grep -q mlxsw_spectrum
	check_err $?

	log_test "extack - map VLAN at VXLAN device"

	ip link del dev vx1
	ip link del dev br1
}

port_vlan_add_test()
{
	RET=0

	ip link add name br1 up type bridge vlan_filtering 1 mcast_snooping 0

	# Unsupported configuration: mlxsw demands VXLAN with "noudpcsum".
	ip link add name vx1 up type vxlan id 1000 \
		local 192.0.2.17 remote 192.0.2.18 \
		dstport 4789 tos inherit ttl 100

	ip link set dev $swp1 master br1
	check_err $?

	bridge vlan del dev $swp1 vid 1

	ip link set dev vx1 master br1
	check_err $?

	bridge vlan add dev $swp1 vid 1 pvid untagged 2>&1 >/dev/null \
		| grep -q mlxsw_spectrum
	check_err $?

	log_test "extack - map VLAN at port"

	ip link del dev vx1
	ip link del dev br1
}

trap cleanup EXIT

setup_prepare
setup_wait

tests_run

exit $EXIT_STATUS
