]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
tests: shell: change all test scripts to return 0
authorFlorian Westphal <fw@strlen.de>
Fri, 4 Jan 2019 14:57:00 +0000 (15:57 +0100)
committerFlorian Westphal <fw@strlen.de>
Fri, 4 Jan 2019 15:00:31 +0000 (16:00 +0100)
The shell-based tests currently encode a return value in the
file name, i.e. foo_1 expects that the script should return '1'
for the test case to pass.

This is very error prone, and one test case is even broken (i.e.,
it returns 1, but because of a different, earlier error).

do_something || exit 1
or
'set -e'

are both pretty common patterns, in both cases tests should fail.

In those test-cases that deliberately test for an error,
nft something_should_fail || exit 0
nft something_should_fail && exit 1

or a similar constructs should be used.

This initial commit modififies all '_1' scripts to return 0 on
success, usually via 'nft wrong || exit 0'.

All tests pass, except the one broken test case that hasn't worked
before either, but where 'set -e' use made it pass (the failing command
is supposed to work, and the command that is supposed to fail is never
run).

Signed-off-by: Florian Westphal <fw@strlen.de>
47 files changed:
tests/shell/run-tests.sh
tests/shell/testcases/chains/0002jumps_1
tests/shell/testcases/chains/0003jump_loop_1
tests/shell/testcases/chains/0004busy_1
tests/shell/testcases/chains/0005busy_map_1
tests/shell/testcases/chains/0007masquerade_1
tests/shell/testcases/chains/0008masquerade_jump_1
tests/shell/testcases/chains/0009masquerade_jump_1
tests/shell/testcases/chains/0010endless_jump_loop_1
tests/shell/testcases/chains/0011endless_jump_loop_1
tests/shell/testcases/chains/0012reject_in_prerouting_1
tests/shell/testcases/chains/0015check_jump_loop_1
tests/shell/testcases/chains/0017masquerade_jump_1
tests/shell/testcases/chains/0018check_jump_loop_1
tests/shell/testcases/chains/0019masquerade_jump_1
tests/shell/testcases/chains/0020depth_1
tests/shell/testcases/chains/0022prio_dummy_1
tests/shell/testcases/chains/0023prio_inet_srcnat_1
tests/shell/testcases/chains/0024prio_inet_dstnat_1
tests/shell/testcases/chains/0025prio_arp_1
tests/shell/testcases/chains/0026prio_netdev_1
tests/shell/testcases/chains/0027prio_bridge_dstnat_1
tests/shell/testcases/chains/0028prio_bridge_out_1
tests/shell/testcases/chains/0029prio_bridge_srcnat_1
tests/shell/testcases/flowtable/0005delete_in_use_1
tests/shell/testcases/flowtable/0008prio_1
tests/shell/testcases/include/0004endlessloop_1
tests/shell/testcases/include/0009glob_nofile_1
tests/shell/testcases/include/0010glob_broken_file_1
tests/shell/testcases/include/0012glob_dependency_1
tests/shell/testcases/maps/different_map_types_1
tests/shell/testcases/nft-f/0007action_object_set_segfault_1
tests/shell/testcases/nft-f/0013defines_1
tests/shell/testcases/nft-f/0014defines_1
tests/shell/testcases/nft-f/0015defines_1
tests/shell/testcases/nft-f/0016redefines_1
tests/shell/testcases/optionals/handles_1
tests/shell/testcases/rule_management/0002addinsertlocation_1
tests/shell/testcases/rule_management/0005replace_1
tests/shell/testcases/rule_management/0006replace_1
tests/shell/testcases/rule_management/0008delete_1
tests/shell/testcases/rule_management/0009delete_1
tests/shell/testcases/sets/0018set_check_size_1
tests/shell/testcases/transactions/0014chain_1
tests/shell/testcases/transactions/0022rule_1
tests/shell/testcases/transactions/0023rule_1
tests/shell/testcases/transactions/0036set_1

index fdca5fb39431fe1177ae6547a71b11a2b37a2ce8..6b693cc154c40d0e5dd102c0752e2d0cf2bf82df 100755 (executable)
@@ -4,7 +4,6 @@
 TESTDIR="./$(dirname $0)/"
 RETURNCODE_SEPARATOR="_"
 SRC_NFT="$(dirname $0)/../../src/nft"
-POSITIVE_RET=0
 DIFF=$(which diff)
 
 msg_error() {
@@ -102,29 +101,27 @@ for testfile in $(find_tests)
 do
        kernel_cleanup
 
-       rc_spec=$(awk -F${RETURNCODE_SEPARATOR} '{print $NF}' <<< $testfile)
-
        msg_info "[EXECUTING]   $testfile"
        test_output=$(NFT=$NFT ${testfile} 2>&1)
        rc_got=$?
        echo -en "\033[1A\033[K" # clean the [EXECUTING] foobar line
 
-       if [ "$rc_got" == "$rc_spec" ] ; then
+       if [ "$rc_got" -eq 0 ] ; then
                # check nft dump only for positive tests
-               rc_spec="${POSITIVE_RET}"
                dumppath="$(dirname ${testfile})/dumps"
                dumpfile="${dumppath}/$(basename ${testfile}).nft"
-               if [ "$rc_got" == "${POSITIVE_RET}" ] && [ -f ${dumpfile} ]; then
+               rc_spec=0
+               if [ "$rc_got" -eq 0 ] && [ -f ${dumpfile} ]; then
                        test_output=$(${DIFF} ${dumpfile} <($NFT list ruleset) 2>&1)
                        rc_spec=$?
                fi
 
-               if [ "$rc_spec" == "${POSITIVE_RET}" ]; then
+               if [ "$rc_spec" -eq 0 ]; then
                        msg_info "[OK]          $testfile"
                        [ "$VERBOSE" == "y" ] && [ ! -z "$test_output" ] && echo "$test_output"
                        ((ok++))
 
-                       if [ "$DUMPGEN" == "y" ] && [ "$rc_got" == "${POSITIVE_RET}" ] && [ ! -f "${dumpfile}" ]; then
+                       if [ "$DUMPGEN" == "y" ] && [ "$rc_got" == 0 ] && [ ! -f "${dumpfile}" ]; then
                                mkdir -p "${dumppath}"
                                nft list ruleset > "${dumpfile}"
                        fi
@@ -140,7 +137,7 @@ do
        else
                ((failed++))
                if [ "$VERBOSE" == "y" ] ; then
-                       msg_warn "[FAILED]      $testfile: expected $rc_spec but got $rc_got"
+                       msg_warn "[FAILED]      $testfile: got $rc_got"
                        [ ! -z "$test_output" ] && echo "$test_output"
                else
                        msg_warn "[FAILED]      $testfile"
index 4d163b05fe1b91c8434f348205ac6da6127697b0..aa70037fec14b4dd4e1af927e679d8c471f45894 100755 (executable)
@@ -20,5 +20,7 @@ done
 
 # this last jump should fail: too many links
 $NFT add chain t c$((MAX_JUMPS + 1))
-$NFT add rule t c${MAX_JUMPS} jump c$((MAX_JUMPS + 1)) 2>/dev/null
+
+$NFT add rule t c${MAX_JUMPS} jump c$((MAX_JUMPS + 1)) 2>/dev/null || exit 0
 echo "E: max jumps ignored?" >&2
+exit 1
index f74361f28994fc33f180e0860a333ee3163fd96d..80e243f07bdb786b32ac49f16b241c63bef2e8c5 100755 (executable)
@@ -17,5 +17,6 @@ do
 done
 
 # this last jump should fail: loop
-$NFT add rule t c${MAX_JUMPS} jump c1 2>/dev/null
+$NFT add rule t c${MAX_JUMPS} jump c1 2>/dev/null || exit 0
 echo "E: loop of jumps ignored?" >&2
+exit 1
index cc9a0dad6c676d737e66cb8368d3fb33411dbd79..e68d1baa6f6c834ed94ab375532ba002ca8ea169 100755 (executable)
@@ -6,6 +6,8 @@ $NFT add table t
 $NFT add chain t c1
 $NFT add chain t c2
 $NFT add rule t c1 jump c2
+
 # kernel should return EBUSY
-$NFT delete chain t c2 2>/dev/null
+$NFT delete chain t c2 2>/dev/null || exit 0
 echo "E: deleted a busy chain?" >&2
+exit 1
index 93eca82796f9e394329037d57d37a2ab0c469ebf..c800f1939fdde0199017d1523dcf287c31aeede0 100755 (executable)
@@ -6,6 +6,8 @@ $NFT add table t
 $NFT add chain t c1
 $NFT add chain t c2
 $NFT add rule t c1 tcp dport vmap { 1 : jump c2 }
+
 # kernel should return EBUSY
-$NFT delete chain t c2 2>/dev/null
+$NFT delete chain t c2 2>/dev/null || exit 0
 echo "E: deleted a busy chain?" >&2
+exit 1
index 4e98d106bc33b067e35f963292b4a23360f577c9..4434c898ca724c64a6236d6c4a028f9326010a2e 100755 (executable)
@@ -4,6 +4,8 @@ set -e
 
 $NFT add table t
 $NFT add chain t c1 {type filter hook output priority 0 \; }
+
 # wrong hook output, only postrouting is valid
-$NFT add rule t c1 masquerade 2>/dev/null
+$NFT add rule t c1 masquerade 2>/dev/null || exit 0
 echo "E: accepted masquerade in output hook" >&2
+exit 1
index 7754ed03ae639a56364b569b5f1e632d214a2489..aee1475ff4d00959d39a12341ea69e71f9426629 100755 (executable)
@@ -6,6 +6,8 @@ $NFT add table t
 $NFT add chain t output {type nat hook output priority 0 \; }
 $NFT add chain t c1
 $NFT add rule t c1 masquerade
+
 # kernel should return EOPNOTSUPP
-$NFT add rule t output jump c1 2>/dev/null
+$NFT add rule t output jump c1 2>/dev/null || exit 0
 echo "E: accepted masquerade in output hook" >&2
+exit 1
index 684d441707d0db498d40ee8071ad80e72ed8e412..2b931eebf68e97fc225e333fb3e9fc82fb4b64e1 100755 (executable)
@@ -6,6 +6,8 @@ $NFT add table t
 $NFT add chain t output {type nat hook output priority 0 \; }
 $NFT add chain t c1
 $NFT add rule t c1 masquerade
+
 # kernel should return EOPNOTSUPP
-$NFT add rule t output tcp dport vmap {1 :jump c1 } 2>/dev/null
+$NFT add rule t output tcp dport vmap {1 :jump c1 } 2>/dev/null || exit 0
 echo "E: accepted masquerade in output hook in a vmap" >&2
+exit 1
index dba70e145a57d382eb05c9c08d75f3d1fd686902..5d3ef2393331674d81b605540a2bbca51e9f9a06 100755 (executable)
@@ -4,6 +4,8 @@ set -e
 
 $NFT add table t
 $NFT add chain t c
+
 # kernel should return ELOOP
-$NFT add rule t c tcp dport vmap {1 : jump c} 2>/dev/null
+$NFT add rule t c tcp dport vmap {1 : jump c} 2>/dev/null || exit 0
 echo "E: accepted endless jump loop in a vmap" >&2
+exit 1
index adbff8d462b12e80494ce5508118c76ff05cc863..d75932d7a7caca319147caec0fb4e813f40e4eb7 100755 (executable)
@@ -10,5 +10,6 @@ $NFT add element t m {2 : jump c2}
 $NFT add rule t c1 tcp dport vmap @m
 
 # kernel should return ELOOP
-$NFT add element t m {1 : jump c1} 2>/dev/null
+$NFT add element t m {1 : jump c1} 2>/dev/null || exit 0
 echo "E: accepted endless jump loop in a vmap" >&2
+exit 1
index 81cda0c416d00dc98ec5ddd0344233f226796366..0ee86c11055ed147464611ccdce1fcd05d215d73 100755 (executable)
@@ -4,6 +4,8 @@ set -e
 
 $NFT add table t
 $NFT add chain t prerouting {type filter hook prerouting priority 0 \; }
+
 # wrong hook prerouting, only input/forward/output is valid
-$NFT add rule t prerouting reject 2>/dev/null
+$NFT add rule t prerouting reject 2>/dev/null || exit 0
 echo "E: accepted reject in prerouting hook" >&2
+exit 1
index ba40ddb9668cac060981448578cdb746ac78cf3b..a59bb3bfe7faa55fb01b8e0d0d56fed24a7a3871 100755 (executable)
@@ -7,5 +7,7 @@ $NFT add chain t c1
 $NFT add chain t c2
 $NFT add t c1 jump c2
 # kernel should return ENOENT
-$NFT add t c2 ip daddr vmap { 1 : jump c3 }
+
+$NFT add t c2 ip daddr vmap { 1 : jump c3 } || exit 0
 echo "E: Jumped to non existing chain" >&2
+exit 1
index a57675f5031750d4ee2bc08be524d04df8ef0770..209e6d48f29d59830000e151d167f7654fc770e1 100755 (executable)
@@ -6,5 +6,9 @@ $NFT add table t
 $NFT add chain t input {type filter hook input priority 4 \; }
 $NFT add chain t c1
 $NFT add rule t input jump c1
+
 # kernel should return EOPNOTSUPP
-$NFT add rule t c1 masquerade 2>/dev/null >&2
+$NFT add rule t c1 masquerade 2>/dev/null >&2 || exit 0
+
+echo "E: Accepted masquerade rule in non-nat type base chain" 1>&2
+exit 1
index d1443dab94b09e97d82c83b4dbcc38b125aba544..b87520f287d781742f49fa9ad0051358ccd7b7ca 100755 (executable)
@@ -6,5 +6,8 @@ $NFT add table ip filter
 $NFT add chain ip filter ap1
 $NFT add chain ip filter ap2
 $NFT add rule ip filter ap1 jump ap2
+
 # kernel should return EOPNOTSUPP
-$NFT add rule ip filter ap1 jump ap1 2>/dev/null >&2
+$NFT add rule ip filter ap1 jump ap1 2>/dev/null >&2 || exit 0
+echo "E: Accepted jump-to-self"
+exit 1
index 4fe68c847fdc48241abd913d1f454ef2d09b138d..0ff1ac3ff440f7b1c27744a0834d43f07adca177 100755 (executable)
@@ -6,5 +6,8 @@ $NFT add table t
 $NFT add chain t input {type filter hook input priority 4 \; }
 $NFT add chain t c1
 $NFT add rule t input ip saddr vmap { 1.1.1.1 : jump c1 }
+
 # kernel should return EOPNOTSUPP
-$NFT add rule t c1 masquerade 2>/dev/null >&2
+$NFT add rule t c1 masquerade 2>/dev/null >&2 || exit 0
+echo "E: accepted masquerade in chain from non-nat type basechain" 1>&2
+exit 1
index fa539c8f1b880b474995f85d1595fa65d2daa049..23e1f826c38e882bf0386f377cbaa318e2673810 100755 (executable)
@@ -1,7 +1,6 @@
 #!/bin/bash
 
 set -e
-
 $NFT add table ip filter
 $NFT add chain ip filter input { type filter hook input priority 0\; }
 
@@ -19,4 +18,6 @@ for ((i=11;i<19;i++)); do
        $NFT add rule ip filter a$i jump a$((i+1))
 done
 
-$NFT add rule ip filter a10 jump a11
+$NFT add rule ip filter a10 jump a11 || exit 0
+echo "E: Expected 20th jump to fail due to jump stack exhaustion" 1>&2
+exit 1
index ecdd9456b1fa56ccfdb5e371f7a0e56a546d1c70..66c440747f930ea98735298fe67f5b2c7ad06f3e 100755 (executable)
@@ -3,5 +3,7 @@
 set -e
 
 $NFT add table ip x
-$NFT add chain ip x y "{ type filter hook input priority dummy+1; }" &> /dev/null
+
+$NFT add chain ip x y "{ type filter hook input priority dummy+1; }" &> /dev/null || exit 0
 echo "E: dummy should not be a valid priority." >&2
+exit 1
index fa53f7a7fb64e83c844509938d5d52ae922877b0..d2b1fa431ee6d1ec830f56e73ffd10c87b0193de 100755 (executable)
@@ -9,8 +9,8 @@ do
                if (($? == 0))
                then
                        echo "E: srcnat should not be a valid priority name in $family $hook chains." >&2
-                       exit 0
+                       exit 1
                fi
        done
 done
-exit 1
+exit 0
index a9a7264a08b93d1b83e210fda68296daea43506e..d112f2c958c02502730e8b4a8c4931810331bd05 100755 (executable)
@@ -9,8 +9,8 @@ do
                if (($? == 0))
                then
                        echo "E: dstnat should not be a valid priority name in $family $hook chains." >&2
-                       exit 0
+                       exit 1
                fi
        done
 done
-exit 1
+exit 0
index 8c671d5508b1f4bce09595856f5528879f644336..1a172629444297bf370c99d9ea83499ce53ac45a 100755 (executable)
@@ -10,8 +10,8 @@ family=arp
                        if (($? == 0))
                        then
                                echo "E: $prioname should not be a valid priority name for arp family chains." >&2
-                               exit 0
+                               exit 1
                        fi
                done
        done
-exit 1
+exit 0
index ae0228309cff81f08201925ae4fbc6a5a28418dd..aa902e9b3a2329244fe798bee786bf2cc952aa2e 100755 (executable)
@@ -4,12 +4,12 @@ family=netdev
        hook=ingress
                for prioname in raw mangle dstnat security srcnat
                do
-                       $NFT add table $family x
+                       $NFT add table $family x || exit 1
                        $NFT add chain $family x y "{ type filter hook $hook device lo priority $prioname; }" &> /dev/null
                        if (($? == 0))
                        then
                                echo "E: $prioname should not be a valid priority name for netdev family chains." >&2
-                               exit 0
+                               exit 1
                        fi
                done
-exit 1
+exit 0
index df0b6950e5f43a18e6e5280d30101acf7efcad08..52c73e6592d9f2638998445d30fd60e28fd48f7f 100755 (executable)
@@ -9,7 +9,7 @@ family=bridge
                        if (($? == 0))
                        then
                                echo "E: $prioname should not be a valid priority name for bridge $hook chains." >&2
-                               exit 0
+                               exit 1
                        fi
        done
-exit 1
+exit 0
index 06fdbebb64f7e59a04c6e94539ced70310c6b8fa..63aa296cb5f4b0a42683eb050b19da7bfbf1e0b3 100755 (executable)
@@ -9,7 +9,7 @@ family=bridge
                        if (($? == 0))
                        then
                                echo "E: $prioname should not be a valid priority name for bridge $hook chains." >&2
-                               exit 0
+                               exit 1
                        fi
        done
-exit 1
+exit 0
index 8896a7cf8603edf4418f5c0966fd823d45a81ddf..38917119e179c6c39198a2de97f9b864e8222735 100755 (executable)
@@ -9,7 +9,7 @@ family=bridge
                        if (($? == 0))
                        then
                                echo "E: $prioname should not be a valid priority name for bridge $hook chains." >&2
-                               exit 0
+                               exit 1
                        fi
        done
-exit 1
+exit 0
index 1b239f411f2ae52f576745a1a1b15e715fdd0ce3..149d64442fdde15fbcf09e5f14eeef8484fb13c8 100755 (executable)
@@ -5,5 +5,7 @@ $NFT add table x
 $NFT add chain x x
 $NFT add flowtable x y { hook ingress priority 0\; devices = { lo }\;}
 $NFT add rule x x flow offload @y
-$NFT delete flowtable x y
+
+$NFT delete flowtable x y || exit 0
 echo "E: delete flowtable in use"
+exit 1
index 87084b93966424fb3a2e38cfcdbf22fc308f71db..48953d790aac459e5ebfd809752844c5a4f5eebd 100755 (executable)
@@ -7,8 +7,8 @@ do
        if (($? == 0))
        then
                echo "E: $prioname should not be a valid priority name for flowtables" >&2
-               exit 0
+               exit 1
        fi
 done
 
-exit 1
+exit 0
index c4aba0c4c6255c51c7efdd69938de2dc3450921a..3e6789d364421c9ddc8e6f7f8af9d87a04f9c342 100755 (executable)
@@ -14,5 +14,6 @@ RULESET="include \"$tmpfile\""
 
 echo "$RULESET" > $tmpfile
 
-$NFT -f $tmpfile 2>/dev/null
+$NFT -f $tmpfile 2>/dev/null || exit 0
 echo "E: endless include loop" >&2
+exit 1
index bab583056b2e1fa6f0337f4c114a20bc62279a3d..d769155ab15ea55c0ae821e292ae0bfac1b11db4 100755 (executable)
@@ -26,8 +26,6 @@ RULESET1="include \"$tmpdir/non_existent_file.nft\""
 
 echo "$RULESET1" > $tmpfile1
 
-$NFT -f $tmpfile1
-if [ $? -eq 0 ] ; then
-        echo "E: Failed to catch a missing include directory/file" >&2
-        exit 1
-fi
+$NFT -f $tmpfile1 || exit 0
+echo "E: Failed to catch a missing include directory/file" >&2
+exit 1
index 9027f1899c33f2d89dff8704753658adad0d5ec4..a00babf146ca94880b3f280ac8a74f7fbc70bc68 100755 (executable)
@@ -41,9 +41,6 @@ echo "$RULESET1" > $tmpfile1
 echo "$RULESET2" > $tmpfile2
 echo "$RULESET3" > $tmpfile3
 
-$NFT -f $tmpfile3
-
-if [ $? -eq 0 ] ; then
-        echo "E: didn't catch a broken file in directory" >&2
-        exit 1
-fi
+$NFT -f $tmpfile3 || exit 0
+echo "E: didn't catch a broken file in directory" >&2
+exit 1
index 6cf4ba177877d8574c686eff40a8743aec8bf8f0..e4e12e2772db14e18a5caa6c96df8d12af372970 100755 (executable)
@@ -44,9 +44,6 @@ echo "$RULESET1" > $tmpfile2
 echo "$RULESET2" > $tmpfile1
 echo "$RULESET3" > $tmpfile3
 
-$NFT -f $tmpfile3
-
-if [ $? -eq 0 ] ; then
-        echo "E: did not catch wrong file order in include directory" >&2
-        exit 1
-fi
+$NFT -f $tmpfile3 || exit 0
+echo "E: did not catch wrong file order in include directory" >&2
+exit 1
index b0a09d0249f9dedc9ebe4a2c043582745df8d031..a7e831ffc71bcf4b77ab1d05d052e7d46030613e 100755 (executable)
@@ -6,5 +6,8 @@ set -e
 
 $NFT add table ip filter
 $NFT add chain ip filter output { type filter hook output priority 0 \; }
-$NFT add rule ip filter output meta mark set tcp dport map { 22 : 1, 23 : 192.168.0.1 }
+
+$NFT add rule ip filter output meta mark set tcp dport map { 22 : 1, 23 : 192.168.0.1 } || exit 0
+
 echo "E: Added two different types of expression to map"
+exit 1
index 933a2f62ae436acb0f479bbacb366f2cf9d848a5..6cbd38693bdacec70c91abb3acdc39dfe66ba906 100755 (executable)
@@ -10,4 +10,5 @@ add set t s {type ipv4_addr\;}
 add rule t c ip saddr @s
 "
 
-$NFT -f - <<< "$RULESET" 2>/dev/null
+$NFT -f - <<< "$RULESET" 2>/dev/null && exit 1
+exit 0
index 1dd5b569c386a84ebaf46d59005baa9518b3bb28..b6330884986fc36598ada3961a5aac528e1a5e71 100755 (executable)
@@ -14,4 +14,5 @@ table ip t {
        }
 }"
 
-$NFT -f - <<< "$RULESET"
+$NFT -f - <<< "$RULESET" && exit 1
+exit 0
index c8e73c243fc6b1850d1006d6fb30f40a18cee132..35f2536fa1ad05105898b540a7c0581e63d756ad 100755 (executable)
@@ -14,4 +14,5 @@ table ip t {
        }
 }"
 
-$NFT -f - <<< "$RULESET"
+$NFT -f - <<< "$RULESET" && exit 1
+exit 0
index 489c65b5cffe40402697e6b749342b2ead6e30ec..935cb458528c155702277821892bc02e521c5751 100755 (executable)
@@ -13,4 +13,5 @@ table ip t {
        }
 }"
 
-$NFT -f - <<< "$RULESET"
+$NFT -f - <<< "$RULESET" && exit 1
+exit 0
index ed702c90addd6dcb2f65f33a97075cf93c0e48b2..9f6b56fef4bcc119eba06b1e688d6d62f7e55744 100755 (executable)
@@ -30,3 +30,5 @@ if [ "$EXPECTED" != "$GET" ] ; then
         [ -x $DIFF ] && $DIFF -u <(echo "$EXPECTED") <(echo "$GET")
         exit 1
 fi
+
+exit 0
index a3ae1a7febedca77f9d4d0ebbace1a8adc4acc62..c00abfe8efa58407345089af69da202724694b32 100755 (executable)
@@ -5,4 +5,6 @@
 $NFT add table test
 $NFT add chain test test
 $NFT add rule test test tcp dport 22 counter accept
-$NFT list table test | grep 'accept # handle '[[:digit:]]$ >/dev/null
+( $NFT list table test | grep 'accept # handle '[[:digit:]]$ >/dev/null ) && exit 1
+
+exit 0
index b48d3d664be200e0e88c5ae409a3f0a430aeda8f..920032f28621d75e866a0845f7ea4f50eebabcc7 100755 (executable)
@@ -17,7 +17,7 @@ for cmd in add insert; do
                $NFT $cmd rule t c $keyword 5 drop 2>/dev/null || continue
 
                echo "E: invalid $keyword value allowed in $cmd command" >&2
-               exit 0
+               exit 1
        done
 done
-exit 1
+exit 0
index e82995a5d902df8d40fd2a8f1bf5850c5d4f4fa7..d8d64477d08adacbb4db083d8d534ecd4fd09c7d 100755 (executable)
@@ -7,5 +7,7 @@ set -e
 $NFT add table t
 $NFT add chain t c
 # kernel should return ENOENT
-$NFT replace rule t c handle 2 drop 2>/dev/null
+
+$NFT replace rule t c handle 2 drop 2>/dev/null || exit 0
 echo "E: missing kernel ENOENT" >&2
+exit 1
index 5dfcba02671cfae289b3cb435818e212a1fba976..b728310fe1bd4a612f7e523a2215d7c995ec6e14 100755 (executable)
@@ -6,6 +6,8 @@
 set -e
 $NFT add table t
 $NFT add chain t c
+
 # position keyword with replace action is not allowed, this should fail
-$NFT replace rule t c position 2 drop 2>/dev/null
+$NFT replace rule t c position 2 drop 2>/dev/null || exit 0
 echo "E: allowed replace with position specification" >&2
+exit 1
index 3dce2191537173e316641f28b16899e6fc8cea26..d1900d668799e6018c8090d13900e3b485fd1564 100755 (executable)
@@ -6,6 +6,8 @@
 set -e
 $NFT add table t
 $NFT add chain t c
+
 # this should fail, we don't allow delete with position
-$NFT delete rule t c position 2 drop 2>/dev/null
+$NFT delete rule t c position 2 drop 2>/dev/null || exit 0
 echo "E: allowed position spec with delete action" >&2
+exit 1
index 87fec605c3431e583d68c32e947584d926c80a53..8751fec33da686f4f03c1cf070aa7615ac58cc2b 100755 (executable)
@@ -6,6 +6,8 @@
 set -e
 $NFT add table t
 $NFT add chain t c
+
 # kernel ENOENT
-$NFT delete rule t c handle 3333 2>/dev/null
+$NFT delete rule t c handle 3333 2>/dev/null || exit 0
 echo "E: missing kernel ENOENT" >&2
+exit 1
index 833b8e2bd877d46f2f585b292b97552bdf840ec3..bc7056056b7848f914fc099323f3a35078b231e4 100755 (executable)
@@ -5,4 +5,7 @@ $NFT add table x
 $NFT add set x s {type ipv4_addr\; size 2\;}
 $NFT add element x s {1.1.1.1}
 $NFT add element x s {1.1.1.2}
-$NFT add element x s {1.1.1.3}
+
+$NFT add element x s {1.1.1.3} || exit 0
+echo "E: Accepted 3rd element in a table with max size of 2" 1>&2
+exit 1
index 802a7e63a937c4f61c172c55772b2e1b093d37a8..cddc8a2ec4b1f5c266ef08b2654d5c256857b1c4 100755 (executable)
@@ -1,11 +1,10 @@
 #!/bin/bash
 
-set -e
-
 RULESET="add table x
 add chain x y
 delete chain x y
 delete chain x y"
 
-$NFT -f - <<< "$RULESET" 2>/dev/null
+$NFT -f - <<< "$RULESET" 2>/dev/null || exit 0
 echo "E: allowing double-removal of chain" >&2
+exit 1
index 0e7c9a6f9da9545524de1ddfe6f5a1571d3ad53a..07be53f2bfbe13ae4d5dc2315a469721d1c89dd7 100755 (executable)
@@ -1,12 +1,11 @@
 #!/bin/bash
 
-set -e
-
 RULESET="add table x
 add chain x y
 delete chain x y
 add rule x y jump y"
 
 # kernel must return ENOENT
-$NFT -f - <<< "$RULESET" 2>/dev/null
+$NFT -f - <<< "$RULESET" 2>/dev/null || exit 0
 echo "E: allowing jump loop to unexisting chain"
+exit 1
index edc4e8d2984d623f976437bb746784d712f91ff0..e58c088c2e846e2e5d93a4b413e960c2fbab3b55 100755 (executable)
@@ -1,11 +1,10 @@
 #!/bin/bash
 
-set -e
-
 RULESET="add table x
 add chain x y
 add rule x y jump y"
 
 # kernel must return ELOOP
-$NFT -f - <<< "$RULESET" 2>/dev/null
+$NFT -f - <<< "$RULESET" 2>/dev/null || exit 0
 echo "E: allowing jump to chain loop"
+exit 1
index e691fa7f8db6ed96ce6176e08dd1444f0bbfc4dd..45d922eb7c14fdf25d243decb98a28197d110d41 100755 (executable)
@@ -1,13 +1,12 @@
 #!/bin/bash
 
-set -e
-
 RULESET="add table x
 add set x y { type ipv4_addr; }
 add element x y { 1.1.1.1, 2.2.2.2 }
 delete element x y { 1.1.1.1 }
 delete element x y { 1.1.1.1 }"
 
-$NFT -f - <<< "$RULESET" 2> /dev/null
+$NFT -f - <<< "$RULESET" 2> /dev/null || exit 0
 # Kernel must return ENOENT
 echo "E: allowing double-removal of element"
+exit 1