Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/tests/sys/netpfil/pf/limits.sh
39507 views
1
#
2
# SPDX-License-Identifier: BSD-2-Clause
3
#
4
# Copyright (c) 2024 Kristof Provost <[email protected]>
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 limits'
33
atf_set require.user root
34
}
35
36
basic_body()
37
{
38
pft_init
39
40
vnet_mkjail alcatraz
41
42
pft_set_rules alcatraz \
43
"set limit states 200" \
44
"set limit frags 100" \
45
"set limit src-nodes 50" \
46
"set limit table-entries 25"
47
48
atf_check -s exit:0 -o match:'states.*200' \
49
jexec alcatraz pfctl -sm
50
atf_check -s exit:0 -o match:'frags.*100' \
51
jexec alcatraz pfctl -sm
52
atf_check -s exit:0 -o match:'src-nodes.*50' \
53
jexec alcatraz pfctl -sm
54
atf_check -s exit:0 -o match:'table-entries.*25' \
55
jexec alcatraz pfctl -sm
56
}
57
58
basic_cleanup()
59
{
60
pft_cleanup
61
}
62
63
atf_test_case "zero" "cleanup"
64
zero_head()
65
{
66
atf_set descr 'Test changing a limit from zero on an in-use zone'
67
atf_set require.user root
68
}
69
70
zero_body()
71
{
72
pft_init
73
74
epair=$(vnet_mkepair)
75
ifconfig ${epair}b 192.0.2.2/24 up
76
77
vnet_mkjail alcatraz ${epair}a
78
jexec alcatraz ifconfig ${epair}a 192.0.2.1/24 up
79
80
atf_check -s exit:0 -o ignore \
81
ping -c 3 192.0.2.1
82
83
jexec alcatraz pfctl -e
84
# Set no limit
85
pft_set_rules noflush alcatraz \
86
"set limit states 0" \
87
"pass"
88
89
# Check that we really report no limit
90
atf_check -s exit:0 -o 'match:states hard limit 0' \
91
jexec alcatraz pfctl -sa
92
93
# Create a state
94
atf_check -s exit:0 -o ignore \
95
ping -c 3 192.0.2.1
96
97
# Limit states
98
pft_set_rules noflush alcatraz \
99
"set limit states 1000" \
100
"pass"
101
102
# And create a new state
103
atf_check -s exit:0 -o ignore \
104
ping -c 3 192.0.2.1
105
106
atf_check -s exit:0 -o 'match:states hard limit 1000' \
107
jexec alcatraz pfctl -sa
108
}
109
110
zero_cleanup()
111
{
112
pft_cleanup
113
}
114
115
atf_test_case "anchors" "cleanup"
116
anchors_head()
117
{
118
atf_set descr 'Test increasing maximum number of anchors'
119
atf_set require.user root
120
}
121
122
anchors_body()
123
{
124
pft_init
125
126
vnet_mkjail alcatraz
127
128
jexec alcatraz pfctl -e
129
130
pft_set_rules alcatraz \
131
"set limit anchors 1"
132
133
pft_set_rules alcatraz \
134
"set limit anchors 2" \
135
"pass" \
136
"anchor \"foo\" {\n
137
pass in\n
138
}" \
139
"anchor \"bar\" {\n
140
pass out\n
141
}"
142
}
143
144
anchors_cleanup()
145
{
146
pft_cleanup
147
}
148
149
atf_init_test_cases()
150
{
151
atf_add_test_case "basic"
152
atf_add_test_case "zero"
153
atf_add_test_case "anchors"
154
}
155
156