#!/bin/bash set -e tmpfile=$(mktemp) if [ ! -w $tmpfile ] ; then echo "Failed to create tmp file" >&2 exit 0 fi trap "rm -rf $tmpfile" EXIT # cleanup if aborted RULESET="add table x add set x y { type ipv4_addr; flags interval;} add element x y { 192.168.0.0/24, 192.168.2.0/24 } delete element x y { 192.168.0.0/24 } delete element x y { 192.168.2.0/24 } add element x y { 192.168.4.0/24 }" echo "$RULESET" > $tmpfile $NFT -f $tmpfile if [ $? -ne 0 ] ; then echo "E: unable to load good ruleset" >&2 exit 1 fi EXPECTED="table ip x { set y { type ipv4_addr flags interval elements = { 192.168.4.0/24 } } }" GET="$($NFT list ruleset)" if [ "$EXPECTED" != "$GET" ] ; then DIFF="$(which diff)" [ -x $DIFF ] && $DIFF -u <(echo "$EXPECTED") <(echo "$GET") exit 1 fi