#!/bin/sh

case "$XT_MULTI" in
*xtables-nft-multi)
	;;
*)
	echo "skip $XT_MULTI"
	exit 0
	;;
esac

get_entries_count() { # (chain)
	$XT_MULTI ebtables -L $1 | sed -n 's/.*entries: \([0-9]*\).*/\1/p'
}

set -x

for t in filter nat;do
	$XT_MULTI ebtables -t $t -L || exit 1
	$XT_MULTI ebtables -t $t -X || exit 1
	$XT_MULTI ebtables -t $t -F || exit 1
done

for t in broute foobar ;do
	$XT_MULTI ebtables -t $t -L &&
	$XT_MULTI ebtables -t $t -X &&
	$XT_MULTI ebtables -t $t -F
	if [ $? -eq 0 ]; then
		echo "Expect nonzero return for unsupported table"
		exit 1
	fi
done


$XT_MULTI ebtables -t filter -N FOO || exit 1
$XT_MULTI ebtables -t filter -N FOO
if [ $? -eq 0 ]; then
	echo "Duplicate chain FOO"
	$XT_MULTI ebtables -t filter -L
	exit 1
fi

entries=$(get_entries_count FOO)
if [ $entries -ne 0 ]; then
	echo "Unexpected entries count in empty unreferenced chain (expected 0, have $entries)"
	$XT_MULTI ebtables -L
	exit 1
fi

$XT_MULTI ebtables -A FORWARD -j FOO
entries=$(get_entries_count FORWARD)
if [ $entries -ne 1 ]; then
	echo "Unexpected entries count in FORWARD chain (expected 1, have $entries)"
	$XT_MULTI ebtables -L
	exit 1
fi

entries=$(get_entries_count FOO)
if [ $entries -ne 0 ]; then
	echo "Unexpected entries count in empty referenced chain (expected 0, have $entries)"
	$XT_MULTI ebtables -L
	exit 1
fi

$XT_MULTI ebtables -A FOO -j ACCEPT
entries=$(get_entries_count FOO)
if [ $entries -ne 1 ]; then
	echo "Unexpected entries count in non-empty referenced chain (expected 1, have $entries)"
	$XT_MULTI ebtables -L
	exit 1
fi

$XT_MULTI ebtables -t filter -N BAR || exit 1
$XT_MULTI ebtables -t filter -N BAZ || exit 1

$XT_MULTI ebtables -t filter -L | grep -q FOO || exit 1
$XT_MULTI ebtables -t filter -L | grep -q BAR || exit 1
$XT_MULTI ebtables -t filter -L | grep -q BAZ || exit 1

$XT_MULTI ebtables -t filter -L BAZ || exit 1
$XT_MULTI ebtables -t filter -X BAZ || exit 1
$XT_MULTI ebtables -t filter -L BAZ | grep -q BAZ
if [ $? -eq 0 ]; then
	echo "Deleted chain -L BAZ ok, expected failure"
	$XT_MULTI ebtables -t filter -L
	exit 1
fi

$XT_MULTI ebtables -t filter -E FOO BAZ || exit 1
$XT_MULTI ebtables -t filter -L | grep -q FOO && exit 1
$XT_MULTI ebtables -t filter -L | grep -q BAZ || exit 1

$XT_MULTI ebtables -t $t -F || exit 0
