Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/tests/sys/netpfil/pf/debug.sh
39536 views
1
#
2
# SPDX-License-Identifier: BSD-2-Clause
3
#
4
# Copyright (c) 2024 Rubicon Communications, LLC (Netgate)
5
#
6
# Redistribution and use in source and binary forms, with or without
7
# modification, are permitted provided that the following conditions
8
# are met:
9
# 1. Redistributions of source code must retain the above copyright
10
# notice, this list of conditions and the following disclaimer.
11
# 2. Redistributions in binary form must reproduce the above copyright
12
# notice, this list of conditions and the following disclaimer in the
13
# documentation and/or other materials provided with the distribution.
14
#
15
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
# SUCH DAMAGE.
26
27
. $(atf_get_srcdir)/utils.subr
28
29
atf_test_case "basic" "cleanup"
30
basic_head()
31
{
32
atf_set descr 'Test setting and retrieving debug level'
33
atf_set require.user root
34
}
35
36
basic_body()
37
{
38
pft_init
39
40
vnet_mkjail debug
41
atf_check -s exit:0 -e ignore \
42
jexec debug pfctl -x loud
43
44
atf_check -s exit:0 -o match:'Debug: Loud' \
45
jexec debug pfctl -si
46
}
47
48
basic_cleanup()
49
{
50
pft_cleanup
51
}
52
53
atf_test_case "reset" "cleanup"
54
reset_head()
55
{
56
atf_set descr 'Test resetting debug level'
57
atf_set require.user root
58
}
59
60
reset_body()
61
{
62
pft_init
63
64
vnet_mkjail debug
65
66
# Default is Urgent
67
atf_check -s exit:0 -o match:'Debug: Urgent' \
68
jexec debug pfctl -sa
69
state_limit=$(jexec debug pfctl -sa | grep 'states.*hard limit' | awk '{ print $4; }')
70
71
# Change defaults
72
pft_set_rules debug \
73
"set limit states 42"
74
atf_check -s exit:0 -e ignore \
75
jexec debug pfctl -x loud
76
77
atf_check -s exit:0 -o match:'Debug: Loud' \
78
jexec debug pfctl -sa
79
new_state_limit=$(jexec debug pfctl -sa | grep 'states.*hard limit' | awk '{ print $4; }')
80
if [ $state_limit -eq $new_state_limit ]; then
81
jexec debug pfctl -sa
82
atf_fail "Failed to change state limit"
83
fi
84
85
# Reset
86
atf_check -s exit:0 -o ignore -e ignore \
87
jexec debug pfctl -FR
88
atf_check -s exit:0 -o match:'Debug: Urgent' \
89
jexec debug pfctl -sa
90
new_state_limit=$(jexec debug pfctl -sa | grep 'states.*hard limit' | awk '{ print $4; }')
91
if [ $state_limit -ne $new_state_limit ]; then
92
jexec debug pfctl -sa
93
atf_fail "Failed to reset state limit"
94
fi
95
}
96
97
reset_cleanup()
98
{
99
pft_cleanup
100
}
101
102
atf_init_test_cases()
103
{
104
atf_add_test_case "basic"
105
atf_add_test_case "reset"
106
}
107
108