mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-19 11:43:40 +00:00
selftests: netfilter: Fix nft_audit.sh for newer nft binaries
As a side-effect of nftables' commit dbff26bfba833 ("cache: consolidate reset command"), audit logs changed when more objects were reset than fit into a single netlink message. Since the objects' distribution in netlink messages is not relevant, implement a summarizing function which combines repeated audit logs into a single one with summed up 'entries=' value. Fixes: 203bb9d39866 ("selftests: netfilter: Extend nft_audit.sh") Signed-off-by: Phil Sutter <phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
76f1ed087b
commit
8a89015644
@ -48,12 +48,31 @@ logread_pid=$!
|
||||
trap 'kill $logread_pid; rm -f $logfile $rulefile' EXIT
|
||||
exec 3<"$logfile"
|
||||
|
||||
lsplit='s/^\(.*\) entries=\([^ ]*\) \(.*\)$/pfx="\1"\nval="\2"\nsfx="\3"/'
|
||||
summarize_logs() {
|
||||
sum=0
|
||||
while read line; do
|
||||
eval $(sed "$lsplit" <<< "$line")
|
||||
[[ $sum -gt 0 ]] && {
|
||||
[[ "$pfx $sfx" == "$tpfx $tsfx" ]] && {
|
||||
let "sum += val"
|
||||
continue
|
||||
}
|
||||
echo "$tpfx entries=$sum $tsfx"
|
||||
}
|
||||
tpfx="$pfx"
|
||||
tsfx="$sfx"
|
||||
sum=$val
|
||||
done
|
||||
echo "$tpfx entries=$sum $tsfx"
|
||||
}
|
||||
|
||||
do_test() { # (cmd, log)
|
||||
echo -n "testing for cmd: $1 ... "
|
||||
cat <&3 >/dev/null
|
||||
$1 >/dev/null || exit 1
|
||||
sleep 0.1
|
||||
res=$(diff -a -u <(echo "$2") - <&3)
|
||||
res=$(diff -a -u <(echo "$2") <(summarize_logs <&3))
|
||||
[ $? -eq 0 ] && { echo "OK"; return; }
|
||||
echo "FAIL"
|
||||
grep -v '^\(---\|+++\|@@\)' <<< "$res"
|
||||
@ -152,31 +171,17 @@ do_test 'nft reset rules t1 c2' \
|
||||
'table=t1 family=2 entries=3 op=nft_reset_rule'
|
||||
|
||||
do_test 'nft reset rules table t1' \
|
||||
'table=t1 family=2 entries=3 op=nft_reset_rule
|
||||
table=t1 family=2 entries=3 op=nft_reset_rule
|
||||
table=t1 family=2 entries=3 op=nft_reset_rule'
|
||||
'table=t1 family=2 entries=9 op=nft_reset_rule'
|
||||
|
||||
do_test 'nft reset rules t2 c3' \
|
||||
'table=t2 family=2 entries=189 op=nft_reset_rule
|
||||
table=t2 family=2 entries=188 op=nft_reset_rule
|
||||
table=t2 family=2 entries=126 op=nft_reset_rule'
|
||||
'table=t2 family=2 entries=503 op=nft_reset_rule'
|
||||
|
||||
do_test 'nft reset rules t2' \
|
||||
'table=t2 family=2 entries=3 op=nft_reset_rule
|
||||
table=t2 family=2 entries=3 op=nft_reset_rule
|
||||
table=t2 family=2 entries=186 op=nft_reset_rule
|
||||
table=t2 family=2 entries=188 op=nft_reset_rule
|
||||
table=t2 family=2 entries=129 op=nft_reset_rule'
|
||||
'table=t2 family=2 entries=509 op=nft_reset_rule'
|
||||
|
||||
do_test 'nft reset rules' \
|
||||
'table=t1 family=2 entries=3 op=nft_reset_rule
|
||||
table=t1 family=2 entries=3 op=nft_reset_rule
|
||||
table=t1 family=2 entries=3 op=nft_reset_rule
|
||||
table=t2 family=2 entries=3 op=nft_reset_rule
|
||||
table=t2 family=2 entries=3 op=nft_reset_rule
|
||||
table=t2 family=2 entries=180 op=nft_reset_rule
|
||||
table=t2 family=2 entries=188 op=nft_reset_rule
|
||||
table=t2 family=2 entries=135 op=nft_reset_rule'
|
||||
'table=t1 family=2 entries=9 op=nft_reset_rule
|
||||
table=t2 family=2 entries=509 op=nft_reset_rule'
|
||||
|
||||
# resetting sets and elements
|
||||
|
||||
@ -200,13 +205,11 @@ do_test 'nft reset counters t1' \
|
||||
'table=t1 family=2 entries=1 op=nft_reset_obj'
|
||||
|
||||
do_test 'nft reset counters t2' \
|
||||
'table=t2 family=2 entries=342 op=nft_reset_obj
|
||||
table=t2 family=2 entries=158 op=nft_reset_obj'
|
||||
'table=t2 family=2 entries=500 op=nft_reset_obj'
|
||||
|
||||
do_test 'nft reset counters' \
|
||||
'table=t1 family=2 entries=1 op=nft_reset_obj
|
||||
table=t2 family=2 entries=341 op=nft_reset_obj
|
||||
table=t2 family=2 entries=159 op=nft_reset_obj'
|
||||
table=t2 family=2 entries=500 op=nft_reset_obj'
|
||||
|
||||
# resetting quotas
|
||||
|
||||
@ -217,13 +220,11 @@ do_test 'nft reset quotas t1' \
|
||||
'table=t1 family=2 entries=1 op=nft_reset_obj'
|
||||
|
||||
do_test 'nft reset quotas t2' \
|
||||
'table=t2 family=2 entries=315 op=nft_reset_obj
|
||||
table=t2 family=2 entries=185 op=nft_reset_obj'
|
||||
'table=t2 family=2 entries=500 op=nft_reset_obj'
|
||||
|
||||
do_test 'nft reset quotas' \
|
||||
'table=t1 family=2 entries=1 op=nft_reset_obj
|
||||
table=t2 family=2 entries=314 op=nft_reset_obj
|
||||
table=t2 family=2 entries=186 op=nft_reset_obj'
|
||||
table=t2 family=2 entries=500 op=nft_reset_obj'
|
||||
|
||||
# deleting rules
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user