#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

source "$(dirname $(realpath $0))/../../kselftest/ktap_helpers.sh"

declare -A ip_args=(
	[ipv4]="--ip_version=ipv4
		--local_ip=192.168.0.1
		--gateway_ip=192.168.0.1
		--netmask_ip=255.255.0.0
		--remote_ip=192.0.2.1
		-D TFO_COOKIE=3021b9d889017eeb
		-D TFO_COOKIE_ZERO=b7c12350a90dc8f5
		-D CMSG_LEVEL_IP=SOL_IP
		-D CMSG_TYPE_RECVERR=IP_RECVERR"
	[ipv4-mapped-ipv6]="--ip_version=ipv4-mapped-ipv6
		--local_ip=192.168.0.1
		--gateway_ip=192.168.0.1
		--netmask_ip=255.255.0.0
		--remote_ip=192.0.2.1
		-D TFO_COOKIE=3021b9d889017eeb
		-D TFO_COOKIE_ZERO=b7c12350a90dc8f5
		-D CMSG_LEVEL_IP=SOL_IPV6
		-D CMSG_TYPE_RECVERR=IPV6_RECVERR"
	[ipv6]="--ip_version=ipv6
		--mtu=1520
		--local_ip=fd3d:0a0b:17d6::1
		--gateway_ip=fd3d:0a0b:17d6:8888::1
		--remote_ip=fd3d:fa7b:d17d::1
		-D TFO_COOKIE=c1d1e9742a47a9bc
		-D TFO_COOKIE_ZERO=82af1a8f9a205c34
		-D CMSG_LEVEL_IP=SOL_IPV6
		-D CMSG_TYPE_RECVERR=IPV6_RECVERR"
)

if [ $# -ne 1 ]; then
	ktap_exit_fail_msg "usage: $0 <script>"
	exit "$KSFT_FAIL"
fi
script="$(basename $1)"

if [ -z "$(which packetdrill)" ]; then
	ktap_skip_all "packetdrill not found in PATH"
	exit "$KSFT_SKIP"
fi

declare -a optargs
failfunc=ktap_test_fail

if [[ -n "${KSFT_MACHINE_SLOW}" ]]; then
	optargs+=('--tolerance_usecs=14000')
	failfunc=ktap_test_xfail
fi

ip_versions=$(grep -E '^--ip_version=' $script | cut -d '=' -f 2)
if [[ -z $ip_versions ]]; then
	ip_versions="ipv4 ipv6 ipv4-mapped-ipv6"
elif [[ ! "$ip_versions" =~ ^ipv[46]$ ]]; then
	ktap_exit_fail_msg "Too many or unsupported --ip_version: $ip_versions"
	exit "$KSFT_FAIL"
fi

ktap_print_header
ktap_set_plan $(echo $ip_versions | wc -w)

for ip_version in $ip_versions; do
	unshare -n packetdrill ${ip_args[$ip_version]} ${optargs[@]} $script > /dev/null \
		&& ktap_test_pass $ip_version || $failfunc $ip_version
done

ktap_finished
