#!/bin/bash set -e #set -x # ensure verbose output is identical between legacy and nft tools RULE1='-i eth2 -o eth3 -s feed:babe::1 -d feed:babe::2 -j ACCEPT' VOUT1='ACCEPT all opt in eth2 out eth3 feed:babe::1 -> feed:babe::2' RULE2='-i eth2 -o eth3 -s feed:babe::4 -d feed:babe::5 -j ACCEPT' VOUT2='ACCEPT all opt in eth2 out eth3 feed:babe::4 -> feed:babe::5' diff -u -Z <(echo -e "$VOUT1") <($XT_MULTI ip6tables -v -A FORWARD $RULE1) diff -u -Z <(echo -e "$VOUT2") <($XT_MULTI ip6tables -v -I FORWARD 2 $RULE2) diff -u -Z <(echo -e "$VOUT1") <($XT_MULTI ip6tables -v -C FORWARD $RULE1) diff -u -Z <(echo -e "$VOUT2") <($XT_MULTI ip6tables -v -C FORWARD $RULE2) EXPECT='Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all eth2 eth3 feed:babe::1 feed:babe::2 0 0 ACCEPT all eth2 eth3 feed:babe::4 feed:babe::5 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination' diff -u -Z <(echo -e "$EXPECT") <($XT_MULTI ip6tables -v -n -L) diff -u -Z <(echo -e "$VOUT1") <($XT_MULTI ip6tables -v -D FORWARD $RULE1) diff -u -Z <(echo -e "$VOUT2") <($XT_MULTI ip6tables -v -D FORWARD $RULE2) EXPECT="Flushing chain \`INPUT' Flushing chain \`FORWARD' Flushing chain \`OUTPUT'" diff -u <(echo -e "$EXPECT") <($XT_MULTI ip6tables -v -F) EXPECT="Zeroing chain \`INPUT' Zeroing chain \`FORWARD' Zeroing chain \`OUTPUT'" diff -u <(echo -e "$EXPECT") <($XT_MULTI ip6tables -v -Z) diff -u <(echo "Flushing chain \`OUTPUT'") <($XT_MULTI ip6tables -v -F OUTPUT) diff -u <(echo "Zeroing chain \`OUTPUT'") <($XT_MULTI ip6tables -v -Z OUTPUT) $XT_MULTI ip6tables -N foo diff -u <(echo "Deleting chain \`foo'") <($XT_MULTI ip6tables -v -X foo)