pf revision 127342
196263Sobrien#!/bin/sh
296263Sobrien#
396263Sobrien# $FreeBSD: head/etc/rc.d/pf 127342 2004-03-23 22:30:15Z mlaier $
496263Sobrien#
596263Sobrien
6169689Skan# PROVIDE: pf
796263Sobrien# REQUIRE: root beforenetlkm mountcritlocal netif
8117395Skan# BEFORE:  DAEMON LOGIN
9169689Skan# KEYWORD: FreeBSD nojail
10169689Skan
1196263Sobrien. /etc/rc.subr
1296263Sobrien
1396263Sobrienname="pf"
1496263Sobrienrcvar=`set_rcvar`
1596263Sobrienload_rc_config $name
1696263Sobrienstop_precmd="test -f ${pf_rules}"
1796263Sobrienstart_precmd="pf_prestart"
1896263Sobrienstart_cmd="pf_start"
1996263Sobrienstop_cmd="pf_stop"
2096263Sobrienreload_precmd="$stop_precmd"
2196263Sobrienreload_cmd="pf_reload"
2296263Sobrienresync_precmd="$stop_precmd"
2396263Sobrienresync_cmd="pf_resync"
24169689Skanstatus_precmd="$stop_precmd"
25169689Skanstatus_cmd="pf_status"
2696263Sobrienextra_commands="reload resync status"
27132718Skan
28132718Skanpf_prestart()
29132718Skan{
30169689Skan	# load pf kernel module if needed
3196263Sobrien	if ! kldstat -v | grep -q pf\$; then
3296263Sobrien		if kldload pf; then
33132718Skan			info 'pf module loaded.'
3496263Sobrien		else
35132718Skan			err 1 'pf module failed to load.'
36132718Skan		fi
3796263Sobrien	fi
38119256Skan
3996263Sobrien	# check for pf rules
4096263Sobrien	if [ ! -r "${pf_rules}" ]
4196263Sobrien	then
4296263Sobrien		warn 'pf: NO PF RULESET FOUND'
4396263Sobrien		return 1
4496263Sobrien	fi
4596263Sobrien}
4696263Sobrien
4796263Sobrienpf_start()
4896263Sobrien{
4996263Sobrien	echo "Enabling pf."
50117395Skan	if ! ${pf_program:-/sbin/pfctl} -si | grep -q "Enabled" ; then
5196263Sobrien		${pf_program:-/sbin/pfctl} -e
5296263Sobrien	fi
5396263Sobrien	${pf_program:-/sbin/pfctl} -Fa > /dev/null 2>&1
5496263Sobrien	if [ -r "${pf_rules}" ]; then
55119256Skan		${pf_program:-/sbin/pfctl} \
56119256Skan		    -f "${pf_rules}" ${pf_flags}
57119256Skan	fi
58169689Skan}
59132718Skan
6096263Sobrienpf_stop()
61132718Skan{
6296263Sobrien	if ${pf_program:-/sbin/pfctl} -si | grep -q "Enabled" ; then
6396263Sobrien		echo "Disabling pf."
6496263Sobrien		${pf_program:-/sbin/pfctl} -d
6596263Sobrien	fi
6696263Sobrien}
6796263Sobrien
6896263Sobrienpf_reload()
6996263Sobrien{
70117395Skan	echo "Reloading pf rules."
71117395Skan
72117395Skan	${pf_program:-/sbin/pfctl} -Fa > /dev/null 2>&1
73119256Skan	if [ -r "${pf_rules}" ]; then
74117395Skan		${pf_program:-/sbin/pfctl} \
75117395Skan		    -f "${pf_rules}" ${pf_flags}
76117395Skan	fi
77119256Skan}
7896263Sobrien
7996263Sobrienpf_resync()
8096263Sobrien{
8196263Sobrien	# Don't resync if pf is not loaded
8296263Sobrien	if ! kldstat -v | grep -q pf\$ ; then
8396263Sobrien		 return
8496263Sobrien	fi
8596263Sobrien	${pf_program:-/sbin/pfctl} -f "${pf_rules}" ${pf_flags}
8696263Sobrien}
87132718Skan
88117395Skanpf_status()
89117395Skan{
9096263Sobrien	${pf_program:-/sbin/pfctl} -si
91119256Skan}
92132718Skan
9396263Sobrienrun_rc_command "$1"
94117395Skan