summaryrefslogtreecommitdiffstats
path: root/tests/shell
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2025-03-21 11:00:40 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2025-03-21 11:03:46 +0100
commit1f3d0b9cf9cc823c1f747650a84f1b43817d460f (patch)
treea7740e2572a9707a29360a0d0430bc6fd65ee5b1 /tests/shell
parent986272519136d7ae91d9bad1e6296a21bc4a3ef2 (diff)
tests: shell: extend coverage for set element statements
Add a test to cover the existing set element statements. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'tests/shell')
-rw-r--r--tests/shell/testcases/sets/dumps/set_stmt.nft62
-rwxr-xr-xtests/shell/testcases/sets/set_stmt48
2 files changed, 110 insertions, 0 deletions
diff --git a/tests/shell/testcases/sets/dumps/set_stmt.nft b/tests/shell/testcases/sets/dumps/set_stmt.nft
new file mode 100644
index 00000000..f8cf08a1
--- /dev/null
+++ b/tests/shell/testcases/sets/dumps/set_stmt.nft
@@ -0,0 +1,62 @@
+table ip x {
+ set y0 {
+ type ipv4_addr
+ counter
+ elements = { 2.2.2.0 counter packets 3 bytes 4,
+ 3.3.3.0 counter packets 1 bytes 2,
+ 5.5.5.0 counter packets 1 bytes 2,
+ 6.6.6.0 counter packets 3 bytes 4 }
+ }
+
+ set y1 {
+ type ipv4_addr
+ limit rate 1/second burst 5 packets
+ elements = { 2.2.2.1 limit rate 5/second burst 5 packets,
+ 3.3.3.1 limit rate 1/second burst 5 packets,
+ 5.5.5.1 limit rate 1/second burst 5 packets,
+ 6.6.6.1 limit rate 5/second burst 5 packets }
+ }
+
+ set y2 {
+ type ipv4_addr
+ ct count over 2
+ }
+
+ set y3 {
+ type ipv4_addr
+ last
+ elements = { 2.2.2.3 last used never,
+ 3.3.3.3 last used never,
+ 5.5.5.3 last used never,
+ 6.6.6.3 last used never }
+ }
+
+ set y4 {
+ type ipv4_addr
+ quota over 1000 bytes
+ elements = { 2.2.2.4 quota over 30000 bytes used 1000 bytes,
+ 3.3.3.4 quota over 1000 bytes,
+ 5.5.5.4 quota over 1000 bytes,
+ 6.6.6.4 quota over 30000 bytes used 1000 bytes }
+ }
+
+ chain y0 {
+ ip daddr @y0
+ }
+
+ chain y1 {
+ ip daddr @y1
+ }
+
+ chain y2 {
+ ip daddr @y2
+ }
+
+ chain y3 {
+ ip daddr @y3
+ }
+
+ chain y4 {
+ ip daddr @y4
+ }
+}
diff --git a/tests/shell/testcases/sets/set_stmt b/tests/shell/testcases/sets/set_stmt
new file mode 100755
index 00000000..0433b676
--- /dev/null
+++ b/tests/shell/testcases/sets/set_stmt
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+test_set_stmt() {
+ local i=$1
+ local stmt1=$2
+ local stmt2=$3
+
+ RULESET="table x {
+ set y$i {
+ type ipv4_addr
+ $stmt1
+ elements = { 5.5.5.$i $stmt1,
+ 6.6.6.$i $stmt2 }
+ }
+ chain y$i {
+ ip daddr @y$i
+ }
+}"
+
+ $NFT -f - <<< $RULESET
+ # should work
+ if [ $? -ne 0 ]
+ then
+ exit 1
+ fi
+
+ # should work
+ $NFT add element x y$i { 2.2.2.$i $stmt2 }
+ if [ $? -ne 0 ]
+ then
+ exit 1
+ fi
+
+ # should work
+ $NFT add element x y$i { 3.3.3.$i }
+ if [ $? -ne 0 ]
+ then
+ exit 1
+ fi
+}
+
+test_set_stmt "0" "counter packets 1 bytes 2" "counter packets 3 bytes 4"
+test_set_stmt "1" "limit rate 1/second" "limit rate 5/second"
+test_set_stmt "2" "ct count over 2" "ct count over 5"
+test_set_stmt "3" "last" "last"
+test_set_stmt "4" "quota over 1000 bytes" "quota over 30000 bytes used 1000 bytes"
+
+exit 0