#!/bin/bash case "$XT_MULTI" in *xtables-nft-multi) ;; *) echo "skip $XT_MULTI" exit 0 ;; esac set -e # ebtables supports policies in user-defined chains %) # and the default policy is ACCEPT ... $XT_MULTI ebtables -N FOO -P DROP $XT_MULTI ebtables -N BAR $XT_MULTI ebtables -P BAR RETURN $XT_MULTI ebtables -N BAZ EXPECT_BASE="*filter :INPUT ACCEPT :FORWARD ACCEPT :OUTPUT ACCEPT" EXPECT="$EXPECT_BASE :BAR RETURN :BAZ ACCEPT :FOO DROP" diff -u -Z <(echo -e "$EXPECT") <($XT_MULTI ebtables-save | grep -v '^#') # rule commands must not break the policies $XT_MULTI ebtables -A FOO -j ACCEPT $XT_MULTI ebtables -D FOO -j ACCEPT $XT_MULTI ebtables -F diff -u -Z <(echo -e "$EXPECT") <($XT_MULTI ebtables-save | grep -v '^#') # dropping the chains must implicitly remove the policy rule as well $XT_MULTI ebtables -X diff -u -Z <(echo -e "$EXPECT_BASE") <($XT_MULTI ebtables-save | grep -v '^#')