]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
tests: shell: Test 'get element' command
authorPhil Sutter <phil@nwl.cc>
Fri, 28 Sep 2018 16:17:31 +0000 (18:17 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 3 Oct 2018 10:19:35 +0000 (12:19 +0200)
This command is currently broken when used in sets with ranges. Test
various variants against known data and check if output is as expected.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
tests/shell/testcases/sets/0034get_element_0 [new file with mode: 0755]

diff --git a/tests/shell/testcases/sets/0034get_element_0 b/tests/shell/testcases/sets/0034get_element_0
new file mode 100755 (executable)
index 0000000..2bfb527
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+RC=0
+
+check() { # (elems, expected)
+       out=$($NFT get element ip t s "{ $1 }" 2>/dev/null)
+       out=$(grep "elements =" <<< "$out")
+       out="${out#* \{ }"
+       out="${out% \}}"
+       [[ "$out" == "$2" ]] && return
+       echo "ERROR: asked for '$1', expecting '$2' but got '$out'"
+       ((RC++))
+}
+
+RULESET="add table ip t
+add set ip t s { type inet_service; flags interval; }
+add element ip t s { 10, 20-30, 40, 50-60 }
+"
+
+$NFT -f - <<< "$RULESET"
+
+# simple cases, (non-)existing values and ranges
+check 10 10
+check 11 ""
+check 20-30 20-30
+check 15-18 ""
+
+# multiple single elements, ranges smaller than present
+check "10, 40" "10, 40"
+check 21-29 20-30
+
+# non-existing ranges matching elements
+check 10-40 ""
+check 10-25 ""
+check 25-55 ""
+
+exit $RC