pf revision 136942
1169691Skan#!/bin/sh
2169691Skan#
3169691Skan# $FreeBSD: head/etc/rc.d/pf 136942 2004-10-25 08:12:28Z pjd $
4169691Skan#
5169691Skan
6169691Skan# PROVIDE: pf
7169691Skan# REQUIRE: root mountcritlocal netif pflog
8169691Skan# BEFORE:  DAEMON LOGIN
9169691Skan# KEYWORD: nojail
10169691Skan
11169691Skan. /etc/rc.subr
12169691Skan
13169691Skanname="pf"
14169691Skanrcvar=`set_rcvar`
15169691Skanload_rc_config $name
16169691Skanstop_precmd="test -f ${pf_rules}"
17169691Skanstart_precmd="pf_prestart"
18169691Skanstart_cmd="pf_start"
19169691Skanstop_cmd="pf_stop"
20169691Skancheck_precmd="$stop_precmd"
21169691Skancheck_cmd="pf_check"
22169691Skanreload_precmd="$stop_precmd"
23169691Skanreload_cmd="pf_reload"
24169691Skanresync_precmd="$stop_precmd"
25169691Skanresync_cmd="pf_resync"
26169691Skanstatus_precmd="$stop_precmd"
27169691Skanstatus_cmd="pf_status"
28169691Skanextra_commands="check reload resync status"
29169691Skan
30169691Skanpf_prestart()
31169691Skan{
32169691Skan	# load pf kernel module if needed
33169691Skan	if ! kldstat -v | grep -q pf\$; then
34169691Skan		if kldload pf; then
35169691Skan			info 'pf module loaded.'
36169691Skan		else
37169691Skan			err 1 'pf module failed to load.'
38169691Skan		fi
39169691Skan	fi
40169691Skan
41169691Skan	# check for pf rules
42169691Skan	if [ ! -r "${pf_rules}" ]; then
43169691Skan		warn 'pf: NO PF RULESET FOUND'
44169691Skan		return 1
45169691Skan	fi
46169691Skan}
47169691Skan
48169691Skanpf_start()
49169691Skan{
50169691Skan	echo "Enabling pf."
51169691Skan	${pf_program:-/sbin/pfctl} -Fa > /dev/null 2>&1
52169691Skan	${pf_program:-/sbin/pfctl} -f "${pf_rules}" ${pf_flags}
53169691Skan	if ! ${pf_program:-/sbin/pfctl} -si | grep -q "Enabled" ; then
54169691Skan		${pf_program:-/sbin/pfctl} -e
55169691Skan	fi
56169691Skan}
57169691Skan
58169691Skanpf_stop()
59169691Skan{
60169691Skan	if ${pf_program:-/sbin/pfctl} -si | grep -q "Enabled" ; then
61169691Skan		echo "Disabling pf."
62169691Skan		${pf_program:-/sbin/pfctl} -d
63169691Skan	fi
64169691Skan}
65169691Skan
66169691Skanpf_check()
67169691Skan{
68169691Skan	echo "Checking pf rules."
69169691Skan
70169691Skan	${pf_program:-/sbin/pfctl} -n -f "${pf_rules}"
71169691Skan}
72169691Skan
73169691Skanpf_reload()
74169691Skan{
75169691Skan	echo "Reloading pf rules."
76169691Skan
77169691Skan	${pf_program:-/sbin/pfctl} -n -f "${pf_rules}" || return 1
78169691Skan	${pf_program:-/sbin/pfctl} -Fa > /dev/null 2>&1
79169691Skan	${pf_program:-/sbin/pfctl} -f "${pf_rules}" ${pf_flags}
80169691Skan}
81169691Skan
82169691Skanpf_resync()
83169691Skan{
84169691Skan	# Don't resync if pf is not loaded
85169691Skan	if ! kldstat -v | grep -q pf\$ ; then
86169691Skan		 return
87169691Skan	fi
88169691Skan	${pf_program:-/sbin/pfctl} -f "${pf_rules}" ${pf_flags}
89169691Skan}
90169691Skan
91169691Skanpf_status()
92169691Skan{
93169691Skan	${pf_program:-/sbin/pfctl} -si
94169691Skan}
95169691Skan
96169691Skanrun_rc_command "$1"
97169691Skan