]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
tests: shell: Extend table persist flag test a bit
authorPhil Sutter <phil@nwl.cc>
Wed, 7 Aug 2024 19:37:39 +0000 (21:37 +0200)
committerPhil Sutter <phil@nwl.cc>
Wed, 14 Aug 2024 10:01:54 +0000 (12:01 +0200)
Using a co-process, assert owner flag is effective.

Signed-off-by: Phil Sutter <phil@nwl.cc>
tests/shell/testcases/owner/0002-persist
tests/shell/testcases/owner/dumps/0002-persist.json-nft
tests/shell/testcases/owner/dumps/0002-persist.nft

index cf4b8f1327ec1da9b343bb4aa89bed80d7153e7c..98a8eb1368bc159958c30a5454991bb076a12e9f 100755 (executable)
@@ -33,4 +33,46 @@ EOF
        die "retake ownership failed"
 }
 
+EXPECT="table ip t {
+       flags persist
+}"
+diff -u <(echo "$EXPECT") <($NFT list ruleset) || {
+       die "unexpected ruleset before coproc setup"
+}
+
+coproc $NFT -i
+sleep 1
+
+cat >&"${COPROC[1]}" <<EOF
+add table ip t { flags owner, persist; }
+EOF
+
+EXPECT="table ip t { # progname nft
+       flags owner,persist
+}"
+diff -u <(echo "$EXPECT") <($NFT list ruleset) || {
+       die "unexpected ruleset after coproc setup"
+}
+
+$NFT flush ruleset
+$NFT list ruleset | grep -q 'table ip t' || {
+       die "flushed owned table"
+}
+
+$NFT add table 'ip t { flags owner, persist; }' && {
+       die "stole owned table"
+}
+
+cat >&"${COPROC[1]}" <<EOF
+delete table ip t
+EOF
+
+[[ -z $($NFT list ruleset) ]] || {
+       die "owner should be able to delete the table"
+}
+
+eval "exec ${COPROC[1]}>&-"
+wait $COPROC_PID
+
+
 exit 0
index f0c336a86e52fe7b7b1998c911e4778ef7c96ab3..546cc5977db61629f96d4fd9cf108e7e3d36d562 100644 (file)
@@ -6,14 +6,6 @@
         "release_name": "RELEASE_NAME",
         "json_schema_version": 1
       }
-    },
-    {
-      "table": {
-        "family": "ip",
-        "name": "t",
-        "handle": 0,
-        "flags": "persist"
-      }
     }
   ]
 }
index b47027d35a30c59c8129389795335b31b18d1369..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,3 +0,0 @@
-table ip t {
-       flags persist
-}