xref: /freebsd/tests/sys/netpfil/pf/scrub_pass.sh (revision c46af893cd7aaff322b6f867539bc8fe5bcde6f9)
14d846d26SWarner Losh# SPDX-License-Identifier: BSD-2-Clause
2b800be97SKajetan Staszkiewicz#
3b800be97SKajetan Staszkiewicz# Copyright (c) 2020 Kristof Provost <kp@FreeBSD.org>
4b800be97SKajetan Staszkiewicz# Copyright (c) 2023 Kajetan Staszkiewicz <vegeta@tuxpowered.net>
5b800be97SKajetan Staszkiewicz#
6b800be97SKajetan Staszkiewicz# Redistribution and use in source and binary forms, with or without
7b800be97SKajetan Staszkiewicz# modification, are permitted provided that the following conditions
8b800be97SKajetan Staszkiewicz# are met:
9b800be97SKajetan Staszkiewicz# 1. Redistributions of source code must retain the above copyright
10b800be97SKajetan Staszkiewicz#    notice, this list of conditions and the following disclaimer.
11b800be97SKajetan Staszkiewicz# 2. Redistributions in binary form must reproduce the above copyright
12b800be97SKajetan Staszkiewicz#    notice, this list of conditions and the following disclaimer in the
13b800be97SKajetan Staszkiewicz#    documentation and/or other materials provided with the distribution.
14b800be97SKajetan Staszkiewicz#
15b800be97SKajetan Staszkiewicz# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16b800be97SKajetan Staszkiewicz# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17b800be97SKajetan Staszkiewicz# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18b800be97SKajetan Staszkiewicz# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19b800be97SKajetan Staszkiewicz# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20b800be97SKajetan Staszkiewicz# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21b800be97SKajetan Staszkiewicz# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22b800be97SKajetan Staszkiewicz# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23b800be97SKajetan Staszkiewicz# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24b800be97SKajetan Staszkiewicz# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25b800be97SKajetan Staszkiewicz# SUCH DAMAGE.
26b800be97SKajetan Staszkiewicz
27b800be97SKajetan Staszkiewicz. $(atf_get_srcdir)/utils.subr
28b800be97SKajetan Staszkiewicz
29b800be97SKajetan Staszkiewiczcommon_dir=$(atf_get_srcdir)/../common
30b800be97SKajetan Staszkiewicz
31b800be97SKajetan Staszkiewiczatf_test_case "max_mss_v4" "cleanup"
32b800be97SKajetan Staszkiewiczmax_mss_v4_head()
33b800be97SKajetan Staszkiewicz{
34b800be97SKajetan Staszkiewicz	atf_set descr 'Test IPv4 pass "mss" rule'
35b800be97SKajetan Staszkiewicz	atf_set require.user root
36*c46af893SJose Luis Duran	atf_set require.progs python3 scapy
37b800be97SKajetan Staszkiewicz}
38b800be97SKajetan Staszkiewicz
39b800be97SKajetan Staszkiewiczmax_mss_v4_body()
40b800be97SKajetan Staszkiewicz{
41b800be97SKajetan Staszkiewicz	setup_router_dummy_ipv4
42b800be97SKajetan Staszkiewicz	pft_set_rules router "pass on ${epair_tester}b scrub ( max-mss 1300 )"
43b800be97SKajetan Staszkiewicz	# Check aligned
44b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300
45b800be97SKajetan Staszkiewicz	# And unaligned
46b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 \
47b800be97SKajetan Staszkiewicz	    --send-tcpopt-unaligned
48b800be97SKajetan Staszkiewicz}
49b800be97SKajetan Staszkiewicz
50b800be97SKajetan Staszkiewiczmax_mss_v4_cleanup()
51b800be97SKajetan Staszkiewicz{
52b800be97SKajetan Staszkiewicz	pft_cleanup
53b800be97SKajetan Staszkiewicz}
54b800be97SKajetan Staszkiewicz
55b800be97SKajetan Staszkiewicz
56b800be97SKajetan Staszkiewiczatf_test_case "max_mss_v6" "cleanup"
57b800be97SKajetan Staszkiewiczmax_mss_v6_head()
58b800be97SKajetan Staszkiewicz{
59b800be97SKajetan Staszkiewicz	atf_set descr 'Test IPv6 pass "mss" rule'
60b800be97SKajetan Staszkiewicz	atf_set require.user root
61*c46af893SJose Luis Duran	atf_set require.progs python3 scapy
62b800be97SKajetan Staszkiewicz}
63b800be97SKajetan Staszkiewicz
64b800be97SKajetan Staszkiewiczmax_mss_v6_body()
65b800be97SKajetan Staszkiewicz{
66b800be97SKajetan Staszkiewicz	setup_router_dummy_ipv6
67b800be97SKajetan Staszkiewicz	pft_set_rules router "pass on ${epair_tester}b scrub ( max-mss 1300 )"
68b800be97SKajetan Staszkiewicz	# Check aligned
69b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300
70b800be97SKajetan Staszkiewicz	# And unaligned
71b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 \
72b800be97SKajetan Staszkiewicz	    --send-tcpopt-unaligned
73b800be97SKajetan Staszkiewicz}
74b800be97SKajetan Staszkiewicz
75b800be97SKajetan Staszkiewiczmax_mss_v6_cleanup()
76b800be97SKajetan Staszkiewicz{
77b800be97SKajetan Staszkiewicz	pft_cleanup
78b800be97SKajetan Staszkiewicz}
79b800be97SKajetan Staszkiewicz
80b800be97SKajetan Staszkiewicz
81b800be97SKajetan Staszkiewiczatf_test_case "set_tos_v4" "cleanup"
82b800be97SKajetan Staszkiewiczset_tos_v4_head()
83b800be97SKajetan Staszkiewicz{
84b800be97SKajetan Staszkiewicz	atf_set descr 'Test IPv4 pass "set-tos" rule'
85b800be97SKajetan Staszkiewicz	atf_set require.user root
86*c46af893SJose Luis Duran	atf_set require.progs python3 scapy
87b800be97SKajetan Staszkiewicz}
88b800be97SKajetan Staszkiewicz
89b800be97SKajetan Staszkiewiczset_tos_v4_body()
90b800be97SKajetan Staszkiewicz{
91b800be97SKajetan Staszkiewicz	setup_router_dummy_ipv4
92b800be97SKajetan Staszkiewicz	pft_set_rules router "pass on ${epair_tester}b set ( tos 0x42 )"
93b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --send-tc=66 --expect-tc=66
94b800be97SKajetan Staszkiewicz}
95b800be97SKajetan Staszkiewicz
96b800be97SKajetan Staszkiewiczset_tos_v4_cleanup()
97b800be97SKajetan Staszkiewicz{
98b800be97SKajetan Staszkiewicz	pft_cleanup
99b800be97SKajetan Staszkiewicz}
100b800be97SKajetan Staszkiewicz
101b800be97SKajetan Staszkiewicz
102b800be97SKajetan Staszkiewiczatf_test_case "set_tos_v6" "cleanup"
103b800be97SKajetan Staszkiewiczset_tos_v6_head()
104b800be97SKajetan Staszkiewicz{
105b800be97SKajetan Staszkiewicz	atf_set descr 'Test IPv6 pass "set-tos" rule'
106b800be97SKajetan Staszkiewicz	atf_set require.user root
107*c46af893SJose Luis Duran	atf_set require.progs python3 scapy
108b800be97SKajetan Staszkiewicz}
109b800be97SKajetan Staszkiewicz
110b800be97SKajetan Staszkiewiczset_tos_v6_body()
111b800be97SKajetan Staszkiewicz{
112b800be97SKajetan Staszkiewicz	setup_router_dummy_ipv4
113b800be97SKajetan Staszkiewicz	pft_set_rules router "pass on ${epair_tester}b set ( tos 0x42 )"
114b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-tc=66 --expect-tc=66
115b800be97SKajetan Staszkiewicz}
116b800be97SKajetan Staszkiewicz
117b800be97SKajetan Staszkiewiczset_tos_v6_cleanup()
118b800be97SKajetan Staszkiewicz{
119b800be97SKajetan Staszkiewicz	pft_cleanup
120b800be97SKajetan Staszkiewicz}
121b800be97SKajetan Staszkiewicz
122b800be97SKajetan Staszkiewicz
123b800be97SKajetan Staszkiewiczatf_test_case "min_ttl_v4" "cleanup"
124b800be97SKajetan Staszkiewiczmin_ttl_v4_head()
125b800be97SKajetan Staszkiewicz{
126b800be97SKajetan Staszkiewicz	atf_set descr 'Test IPv4 pass "min-ttl" rule'
127b800be97SKajetan Staszkiewicz	atf_set require.user root
128*c46af893SJose Luis Duran	atf_set require.progs python3 scapy
129b800be97SKajetan Staszkiewicz}
130b800be97SKajetan Staszkiewicz
131b800be97SKajetan Staszkiewiczmin_ttl_v4_body()
132b800be97SKajetan Staszkiewicz{
133b800be97SKajetan Staszkiewicz	setup_router_dummy_ipv4
134b800be97SKajetan Staszkiewicz	pft_set_rules router "pass on ${epair_tester}b scrub ( min-ttl 50 )"
135b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-hlim=40 --expect-hlim=49
136b800be97SKajetan Staszkiewicz}
137b800be97SKajetan Staszkiewicz
138b800be97SKajetan Staszkiewiczmin_ttl_v4_cleanup()
139b800be97SKajetan Staszkiewicz{
140b800be97SKajetan Staszkiewicz	pft_cleanup
141b800be97SKajetan Staszkiewicz}
142b800be97SKajetan Staszkiewicz
143b800be97SKajetan Staszkiewicz
144b800be97SKajetan Staszkiewiczatf_test_case "min_ttl_v6" "cleanup"
145b800be97SKajetan Staszkiewiczmin_ttl_v6_head()
146b800be97SKajetan Staszkiewicz{
147b800be97SKajetan Staszkiewicz	atf_set descr 'Test IPv6 pass "min-ttl" rule'
148b800be97SKajetan Staszkiewicz	atf_set require.user root
149*c46af893SJose Luis Duran	atf_set require.progs python3 scapy
150b800be97SKajetan Staszkiewicz}
151b800be97SKajetan Staszkiewicz
152b800be97SKajetan Staszkiewiczmin_ttl_v6_body()
153b800be97SKajetan Staszkiewicz{
154b800be97SKajetan Staszkiewicz	setup_router_dummy_ipv6
155b800be97SKajetan Staszkiewicz	pft_set_rules router "pass on ${epair_tester}b scrub ( min-ttl 50 )"
156b800be97SKajetan Staszkiewicz	ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-hlim=40 --expect-hlim=49
157b800be97SKajetan Staszkiewicz}
158b800be97SKajetan Staszkiewicz
159b800be97SKajetan Staszkiewiczmin_ttl_v6_cleanup()
160b800be97SKajetan Staszkiewicz{
161b800be97SKajetan Staszkiewicz	pft_cleanup
162b800be97SKajetan Staszkiewicz}
163b800be97SKajetan Staszkiewicz
164b800be97SKajetan Staszkiewicz
165b800be97SKajetan Staszkiewiczatf_init_test_cases()
166b800be97SKajetan Staszkiewicz{
167b800be97SKajetan Staszkiewicz	atf_add_test_case "max_mss_v4"
168b800be97SKajetan Staszkiewicz	atf_add_test_case "max_mss_v6"
169b800be97SKajetan Staszkiewicz	atf_add_test_case "set_tos_v4"
170b800be97SKajetan Staszkiewicz	atf_add_test_case "set_tos_v6"
171b800be97SKajetan Staszkiewicz	atf_add_test_case "min_ttl_v4"
172b800be97SKajetan Staszkiewicz	atf_add_test_case "min_ttl_v6"
173b800be97SKajetan Staszkiewicz}
174