The branch main has been updated by kp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=fd52a9e11c5250c196f5ec7fd2cefa64094621c4

commit fd52a9e11c5250c196f5ec7fd2cefa64094621c4
Author:     Kristof Provost <k...@freebsd.org>
AuthorDate: 2025-03-26 10:53:26 +0000
Commit:     Kristof Provost <k...@freebsd.org>
CommitDate: 2025-03-26 22:54:36 +0000

    pf tests: test clearing counters for all addresses in a table
    
    Basic test case so we exercise the DIOCRCLRTSTATS call.
    
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 tests/sys/netpfil/pf/table.sh | 55 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/tests/sys/netpfil/pf/table.sh b/tests/sys/netpfil/pf/table.sh
index a3d00f8cdb14..78320375db7c 100644
--- a/tests/sys/netpfil/pf/table.sh
+++ b/tests/sys/netpfil/pf/table.sh
@@ -236,6 +236,60 @@ zero_one_cleanup()
        pft_cleanup
 }
 
+atf_test_case "zero_all" "cleanup"
+zero_all_head()
+{
+       atf_set descr 'Test zeroing all table entries'
+       atf_set require.user root
+}
+
+zero_all_body()
+{
+       pft_init
+
+       epair_send=$(vnet_mkepair)
+       ifconfig ${epair_send}a 192.0.2.1/24 up
+       ifconfig ${epair_send}a inet alias 192.0.2.3/24
+
+       vnet_mkjail alcatraz ${epair_send}b
+       jexec alcatraz ifconfig ${epair_send}b 192.0.2.2/24 up
+       jexec alcatraz pfctl -e
+
+       pft_set_rules alcatraz \
+           "table <foo> counters { 192.0.2.1, 192.0.2.3 }" \
+           "block all" \
+           "pass in from <foo> to any" \
+           "pass out from any to <foo>" \
+           "set skip on lo"
+
+       atf_check -s exit:0 -o ignore ping -c 3 -S 192.0.2.1 192.0.2.2
+       atf_check -s exit:0 -o ignore ping -c 3 -S 192.0.2.3 192.0.2.2
+
+       jexec alcatraz pfctl -t foo -T show -vv
+       atf_check -s exit:0 -e ignore \
+           -o match:'In/Block:.*'"$TABLE_STATS_ZERO_REGEXP" \
+           -o match:'In/Pass:.*'"$TABLE_STATS_NONZERO_REGEXP" \
+           -o match:'Out/Block:.*'"$TABLE_STATS_ZERO_REGEXP" \
+           -o match:'Out/Pass:.*'"$TABLE_STATS_NONZERO_REGEXP" \
+           jexec alcatraz pfctl -t foo -T show -vv
+
+       atf_check -s exit:0 -e ignore \
+           jexec alcatraz pfctl -t foo -T zero
+
+       jexec alcatraz pfctl -t foo -T show -vv
+       atf_check -s exit:0 -e ignore \
+           -o match:'In/Pass:.*'"$TABLE_STATS_ZERO_REGEXP" \
+           -o match:'Out/Pass:.*'"$TABLE_STATS_ZERO_REGEXP" \
+           -o match:'In/Pass:.*'"$TABLE_STATS_ZERO_REGEXP" \
+           -o match:'Out/Pass:.*'"$TABLE_STATS_ZERO_REGEXP" \
+           jexec alcatraz pfctl -t foo -T show -vv
+}
+
+zero_all_cleanup()
+{
+       pft_cleanup
+}
+
 atf_test_case "reset_nonzero" "cleanup"
 reset_nonzero_head()
 {
@@ -534,6 +588,7 @@ atf_init_test_cases()
        atf_add_test_case "v6_counters"
        atf_add_test_case "match_counters"
        atf_add_test_case "zero_one"
+       atf_add_test_case "zero_all"
        atf_add_test_case "reset_nonzero"
        atf_add_test_case "pr251414"
        atf_add_test_case "automatic"

Reply via email to