1#!/bin/sh
2#
3# $NetBSD: pf,v 1.14 2020/09/08 12:52:18 martin Exp $
4#
5
6# PROVIDE: pf
7# REQUIRE: root bootconf CRITLOCALMOUNTED tty network dhcpcd
8# BEFORE: NETWORKING
9
10$_rc_subr_loaded . /etc/rc.subr
11
12name="pf"
13rcvar=$name
14start_precmd="pf_prestart"
15start_cmd="pf_start"
16stop_cmd="pf_stop"
17reload_cmd="pf_reload"
18status_cmd="pf_status"
19extra_commands="reload status"
20
21pf_prestart()
22{
23	if [ ! -f ${pf_rules} ]; then
24		warn "${pf_rules} not readable; pf start aborted."
25
26		stop_boot
27		return 1
28	fi
29	return 0
30}
31
32pf_start()
33{
34	echo "Enabling pf firewall."
35
36	# The pf_boot script has enabled pf already.
37	if [ "$autoboot" != yes ]; then
38		/sbin/pfctl -q ${pf_flags} -e
39	fi
40
41	if [ -f ${pf_rules} ]; then
42		/sbin/pfctl -q ${pf_flags} -f ${pf_rules}
43	else
44		warn "${pf_rules} not found; no pf rules loaded."
45	fi
46}
47
48pf_stop()
49{
50	echo "Disabling pf firewall."
51	/sbin/pfctl -q ${pf_flags} -Fa -d
52}
53
54pf_reload()
55{
56	echo "Reloading pf rules."
57	if [ -f ${pf_rules} ]; then
58		/sbin/pfctl -q ${pf_flags} -f ${pf_rules}
59	else
60		warn "${pf_rules} not found; no pf rules loaded."
61	fi
62}
63
64pf_status()
65{
66	/sbin/pfctl ${pf_flags} -s info
67}
68
69load_rc_config $name
70run_rc_command "$1"
71