149 lines
3.4 KiB
Diff
149 lines
3.4 KiB
Diff
From a9ebfe5421e59be07d2263a86ec508e2604c3441 Mon Sep 17 00:00:00 2001
|
|
From: Phil Sutter <psutter@redhat.com>
|
|
Date: Fri, 17 Jul 2026 11:11:01 +0200
|
|
Subject: [PATCH] tests: shell: extend coverage for set element statements
|
|
|
|
JIRA: https://issues.redhat.com/browse/RHEL-190549
|
|
Upstream Status: nftables commit 1f3d0b9cf9cc823c1f747650a84f1b43817d460f
|
|
|
|
commit 1f3d0b9cf9cc823c1f747650a84f1b43817d460f
|
|
Author: Pablo Neira Ayuso <pablo@netfilter.org>
|
|
Date: Fri Mar 21 11:00:40 2025 +0100
|
|
|
|
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>
|
|
|
|
Signed-off-by: Phil Sutter <psutter@redhat.com>
|
|
---
|
|
tests/shell/testcases/sets/dumps/set_stmt.nft | 62 +++++++++++++++++++
|
|
tests/shell/testcases/sets/set_stmt | 48 ++++++++++++++
|
|
2 files changed, 110 insertions(+)
|
|
create mode 100644 tests/shell/testcases/sets/dumps/set_stmt.nft
|
|
create mode 100755 tests/shell/testcases/sets/set_stmt
|
|
|
|
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 0000000..f8cf08a
|
|
--- /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 0000000..0433b67
|
|
--- /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
|