1 # SPDX-License-Identifier: BSD-2-Clause
3 # Copyright (c) 2020 Kristof Provost <kp@FreeBSD.org>
4 # Copyright (c) 2023 Kajetan Staszkiewicz <vegeta@tuxpowered.net>
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
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.
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
27 . $(atf_get_srcdir)/utils.subr
29 common_dir=$(atf_get_srcdir)/../common
31 atf_test_case "max_mss_v4" "cleanup"
34 atf_set descr 'Test IPv4 pass "mss" rule'
35 atf_set require.user root
36 atf_set require.progs scapy
41 setup_router_dummy_ipv4
42 pft_set_rules router "pass on ${epair_tester}b scrub ( max-mss 1300 )"
44 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300
46 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 \
47 --send-tcpopt-unaligned
56 atf_test_case "max_mss_v6" "cleanup"
59 atf_set descr 'Test IPv6 pass "mss" rule'
60 atf_set require.user root
61 atf_set require.progs scapy
66 setup_router_dummy_ipv6
67 pft_set_rules router "pass on ${epair_tester}b scrub ( max-mss 1300 )"
69 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300
71 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 \
72 --send-tcpopt-unaligned
81 atf_test_case "set_tos_v4" "cleanup"
84 atf_set descr 'Test IPv4 pass "set-tos" rule'
85 atf_set require.user root
86 atf_set require.progs scapy
91 setup_router_dummy_ipv4
92 pft_set_rules router "pass on ${epair_tester}b set ( tos 0x42 )"
93 ping_dummy_check_request exit:0 --send-tc=66 --expect-tc=66
102 atf_test_case "set_tos_v6" "cleanup"
105 atf_set descr 'Test IPv6 pass "set-tos" rule'
106 atf_set require.user root
107 atf_set require.progs scapy
112 setup_router_dummy_ipv4
113 pft_set_rules router "pass on ${epair_tester}b set ( tos 0x42 )"
114 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-tc=66 --expect-tc=66
123 atf_test_case "min_ttl_v4" "cleanup"
126 atf_set descr 'Test IPv4 pass "min-ttl" rule'
127 atf_set require.user root
128 atf_set require.progs scapy
133 setup_router_dummy_ipv4
134 pft_set_rules router "pass on ${epair_tester}b scrub ( min-ttl 50 )"
135 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-hlim=40 --expect-hlim=49
144 atf_test_case "min_ttl_v6" "cleanup"
147 atf_set descr 'Test IPv6 pass "min-ttl" rule'
148 atf_set require.user root
149 atf_set require.progs scapy
154 setup_router_dummy_ipv6
155 pft_set_rules router "pass on ${epair_tester}b scrub ( min-ttl 50 )"
156 ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-hlim=40 --expect-hlim=49
165 atf_init_test_cases()
167 atf_add_test_case "max_mss_v4"
168 atf_add_test_case "max_mss_v6"
169 atf_add_test_case "set_tos_v4"
170 atf_add_test_case "set_tos_v6"
171 atf_add_test_case "min_ttl_v4"
172 atf_add_test_case "min_ttl_v6"