2 # SPDX-License-Identifier: GPL-2.0
4 # Check that audit logs generated for nft commands are as expected.
9 nft --version >/dev/null 2>&1 || {
10 echo "SKIP: missing nft tool"
15 echo "logging into $logfile"
16 ./audit_logread >"$logfile" &
18 trap 'kill $logread_pid; rm -f $logfile' EXIT
21 do_test() { # (cmd, log)
22 echo -n "testing for cmd: $1 ... "
24 $1 >/dev/null || exit 1
26 res=$(diff -a -u <(echo "$2") - <&3)
27 [ $? -eq 0 ] && { echo "OK"; return; }
35 for table in t1 t2; do
36 do_test "nft add table $table" \
37 "table=$table family=2 entries=1 op=nft_register_table"
39 do_test "nft add chain $table c1" \
40 "table=$table family=2 entries=1 op=nft_register_chain"
42 do_test "nft add chain $table c2; add chain $table c3" \
43 "table=$table family=2 entries=2 op=nft_register_chain"
45 cmd="add rule $table c1 counter"
48 "table=$table family=2 entries=1 op=nft_register_rule"
50 do_test "nft $cmd; $cmd" \
51 "table=$table family=2 entries=2 op=nft_register_rule"
55 for chain in c2 c3; do
57 cmd+="$sep add rule $table $chain counter"
62 "table=$table family=2 entries=6 op=nft_register_rule"
65 do_test 'nft reset rules t1 c2' \
66 'table=t1 family=2 entries=3 op=nft_reset_rule'
68 do_test 'nft reset rules table t1' \
69 'table=t1 family=2 entries=3 op=nft_reset_rule
70 table=t1 family=2 entries=3 op=nft_reset_rule
71 table=t1 family=2 entries=3 op=nft_reset_rule'
73 do_test 'nft reset rules' \
74 'table=t1 family=2 entries=3 op=nft_reset_rule
75 table=t1 family=2 entries=3 op=nft_reset_rule
76 table=t1 family=2 entries=3 op=nft_reset_rule
77 table=t2 family=2 entries=3 op=nft_reset_rule
78 table=t2 family=2 entries=3 op=nft_reset_rule
79 table=t2 family=2 entries=3 op=nft_reset_rule'
81 for ((i = 0; i < 500; i++)); do
82 echo "add rule t2 c3 counter accept comment \"rule $i\""
83 done | do_test 'nft -f -' \
84 'table=t2 family=2 entries=500 op=nft_register_rule'
86 do_test 'nft reset rules t2 c3' \
87 'table=t2 family=2 entries=189 op=nft_reset_rule
88 table=t2 family=2 entries=188 op=nft_reset_rule
89 table=t2 family=2 entries=126 op=nft_reset_rule'
91 do_test 'nft reset rules t2' \
92 'table=t2 family=2 entries=3 op=nft_reset_rule
93 table=t2 family=2 entries=3 op=nft_reset_rule
94 table=t2 family=2 entries=186 op=nft_reset_rule
95 table=t2 family=2 entries=188 op=nft_reset_rule
96 table=t2 family=2 entries=129 op=nft_reset_rule'
98 do_test 'nft reset rules' \
99 'table=t1 family=2 entries=3 op=nft_reset_rule
100 table=t1 family=2 entries=3 op=nft_reset_rule
101 table=t1 family=2 entries=3 op=nft_reset_rule
102 table=t2 family=2 entries=3 op=nft_reset_rule
103 table=t2 family=2 entries=3 op=nft_reset_rule
104 table=t2 family=2 entries=180 op=nft_reset_rule
105 table=t2 family=2 entries=188 op=nft_reset_rule
106 table=t2 family=2 entries=135 op=nft_reset_rule'