3 # SPDX-License-Identifier: BSD-2-Clause-FreeBSD
5 # Copyright (c) 2018 Kristof Provost <kp@FreeBSD.org>
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
10 # 1. Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # 2. Redistributions in binary form must reproduce the above copyright
13 # notice, this list of conditions and the following disclaimer in the
14 # documentation and/or other materials provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 . $(atf_get_srcdir)/utils.subr
30 atf_test_case "set_skip_group" "cleanup"
33 atf_set descr 'Basic set skip test'
34 atf_set require.user root
43 jexec alcatraz ifconfig lo0 127.0.0.1/8 up
44 jexec alcatraz ifconfig lo0 group foo
45 jexec alcatraz pfctl -e
46 pft_set_rules alcatraz "set skip on foo" \
49 jexec alcatraz ifconfig
50 atf_check -s exit:0 -o ignore jexec alcatraz ping -c 1 127.0.0.1
53 set_skip_group_cleanup()
58 atf_test_case "set_skip_group_lo" "cleanup"
59 set_skip_group_lo_head()
61 atf_set descr 'Basic set skip test, lo'
62 atf_set require.user root
65 set_skip_group_lo_body()
71 jexec alcatraz ifconfig lo0 127.0.0.1/8 up
72 jexec alcatraz pfctl -e
73 pft_set_rules alcatraz "set skip on lo" \
76 atf_check -s exit:0 -o ignore jexec alcatraz ping -c 1 127.0.0.1
77 pft_set_rules noflush alcatraz "set skip on lo" \
79 atf_check -s exit:0 -o ignore jexec alcatraz ping -c 1 127.0.0.1
80 jexec alcatraz pfctl -s rules
83 set_skip_group_lo_cleanup()
88 atf_test_case "set_skip_dynamic" "cleanup"
89 set_skip_dynamic_head()
91 atf_set descr "Cope with group changes"
92 atf_set require.user root
95 set_skip_dynamic_body()
102 jexec alcatraz pfctl -e
103 pft_set_rules alcatraz "set skip on epair" \
106 epair=$(vnet_mkepair)
107 ifconfig ${epair}a 192.0.2.2/24 up
108 ifconfig ${epair}b vnet alcatraz
110 jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up
112 atf_check -s exit:0 -o ignore jexec alcatraz ping -c 1 192.0.2.2
115 set_skip_dynamic_cleanup()
120 atf_test_case "pr255852" "cleanup"
123 atf_set descr "PR 255852"
124 atf_set require.user root
131 epair=$(vnet_mkepair)
133 ifconfig ${epair}a 192.0.2.1/24 up
135 vnet_mkjail alcatraz ${epair}b
136 jexec alcatraz ifconfig lo0 127.0.0.1/8 up
137 jexec alcatraz ifconfig ${epair}b 192.0.2.2/24 up
140 atf_check -s exit:0 -o ignore ping -c 1 192.0.2.2
142 jexec alcatraz pfctl -e
143 pft_set_rules alcatraz "set skip on { lo0, epair }" \
145 jexec alcatraz pfctl -vsI
147 # We're skipping on epair, so this should work
148 atf_check -s exit:0 -o ignore ping -c 1 192.0.2.2
150 # Note: flushing avoid the issue
151 pft_set_rules noflush alcatraz "set skip on { lo0 }" \
154 jexec alcatraz pfctl -vsI
156 # No longer skipping, so this should fail
157 atf_check -s exit:2 -o ignore ping -c 1 -t 1 192.0.2.2
165 atf_init_test_cases()
167 atf_add_test_case "set_skip_group"
168 atf_add_test_case "set_skip_group_lo"
169 atf_add_test_case "set_skip_dynamic"
170 atf_add_test_case "pr255852"