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@xxxxxx> --- tests/shell/testcases/sets/0034get_element_0 | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 tests/shell/testcases/sets/0034get_element_0 diff --git a/tests/shell/testcases/sets/0034get_element_0 b/tests/shell/testcases/sets/0034get_element_0 new file mode 100755 index 0000000000000..2bfb527b8080f --- /dev/null +++ b/tests/shell/testcases/sets/0034get_element_0 @@ -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 -- 2.19.0