View | Details | Raw Unified | Return to bug 233867
Collapse All | Expand All

(-)b/tests/sys/netpfil/pf/Makefile (+1 lines)
Lines 10-15 ATF_TESTS_SH+= anchor \ Link Here
10
		forward \
10
		forward \
11
		fragmentation \
11
		fragmentation \
12
		names \
12
		names \
13
		nat \
13
		set_tos \
14
		set_tos \
14
		route_to \
15
		route_to \
15
		synproxy \
16
		synproxy \
(-)b/tests/sys/netpfil/pf/nat.sh (+64 lines)
Added Link Here
1
# $FreeBSD$
2
3
. $(atf_get_srcdir)/utils.subr
4
5
atf_test_case "exhaust" "cleanup"
6
exhaust_head()
7
{
8
	atf_set descr 'Test exhausting the NAT pool'
9
	atf_set require.user root
10
}
11
12
exhaust_body()
13
{
14
	pft_init
15
16
	epair_nat=$(pft_mkepair)
17
	epair_echo=$(pft_mkepair)
18
19
	pft_mkjail nat ${epair_nat}b ${epair_echo}a
20
	pft_mkjail echo ${epair_echo}b
21
22
	ifconfig ${epair_nat}a 192.0.2.2/24 up
23
	route add -net 198.51.100.0/24 192.0.2.1
24
25
	jexec nat ifconfig ${epair_nat}b 192.0.2.1/24 up
26
	jexec nat ifconfig ${epair_echo}a 198.51.100.1/24 up
27
	jexec nat sysctl net.inet.ip.forwarding=1
28
29
	jexec echo ifconfig ${epair_echo}b 198.51.100.2/24 up
30
	jexec echo /usr/sbin/inetd $(atf_get_srcdir)/echo_inetd.conf
31
32
	# Enable pf!
33
	jexec nat pfctl -e
34
	pft_set_rules nat \
35
		"nat pass on ${epair_echo}a inet from 192.0.2.0/24 to any -> (${epair_echo}a) port 30000:30001 sticky-address"
36
37
	# Sanity check
38
	atf_check -s exit:0 -o ignore ping -c 3 198.51.100.2
39
40
	echo "foo" | nc -N 198.51.100.2 7
41
	echo "foo" | nc -N 198.51.100.2 7
42
43
	# This one will fail, but that's expected
44
	echo "foo" | nc -N 198.51.100.2 7 &
45
46
	sleep 1
47
48
	# If the kernel is stuck in pf_get_sport() this will not succeed either.
49
	timeout 2 jexec nat pfctl -sa
50
	if [ $? -eq 124 ]; then
51
		# Timed out
52
		atf_fail "pfctl timeout"
53
	fi
54
}
55
56
exhaust_cleanup()
57
{
58
	pft_cleanup
59
}
60
61
atf_init_test_cases()
62
{
63
	atf_add_test_case "exhaust"
64
}

Return to bug 233867