pf revision 180440
164562Sgshapiro#!/bin/sh
264562Sgshapiro#
364562Sgshapiro# $FreeBSD: head/etc/rc.d/pf 180440 2008-07-11 08:11:49Z mtm $
464562Sgshapiro#
564562Sgshapiro
664562Sgshapiro# PROVIDE: pf
764562Sgshapiro# REQUIRE: FILESYSTEMS netif pflog pfsync
864562Sgshapiro# BEFORE:  routing
964562Sgshapiro# KEYWORD: nojail
1064562Sgshapiro
1164562Sgshapiro. /etc/rc.subr
1264562Sgshapiro
1364562Sgshapironame="pf"
1464562Sgshapirorcvar=`set_rcvar`
1564562Sgshapiroload_rc_config $name
1664562Sgshapirostart_cmd="pf_start"
1764562Sgshapirostop_cmd="pf_stop"
1864562Sgshapirocheck_cmd="pf_check"
1964562Sgshapiroreload_cmd="pf_reload"
2064562Sgshapiroresync_cmd="pf_resync"
2164562Sgshapirostatus_cmd="pf_status"
2264562Sgshapiroextra_commands="check reload resync status"
2364562Sgshapirorequired_files="$pf_rules"
2464562Sgshapirorequired_modules="pf"
2564562Sgshapiro
2664562Sgshapiropf_start()
2764562Sgshapiro{
2864562Sgshapiro	[ -z "${rc_quiet}" ] && echo "Enabling pf."
2964562Sgshapiro	$pf_program -F all > /dev/null 2>&1
3064562Sgshapiro	$pf_program -f "$pf_rules" $pf_flags
3164562Sgshapiro	if ! $pf_program -s info | grep -q "Enabled" ; then
3264562Sgshapiro		$pf_program -e
3364562Sgshapiro	fi
3464562Sgshapiro}
3564562Sgshapiro
3664562Sgshapiropf_stop()
3764562Sgshapiro{
3864562Sgshapiro	if $pf_program -s info | grep -q "Enabled" ; then
3964562Sgshapiro		[ -z "${rc_quiet}" ] && echo "Disabling pf."
4064562Sgshapiro		$pf_program -d
4164562Sgshapiro	fi
4264562Sgshapiro}
4364562Sgshapiro
4464562Sgshapiropf_check()
4564562Sgshapiro{
4664562Sgshapiro	echo "Checking pf rules."
4764562Sgshapiro	$pf_program -n -f "$pf_rules"
4864562Sgshapiro}
4964562Sgshapiro
5064562Sgshapiropf_reload()
5164562Sgshapiro{
5264562Sgshapiro	echo "Reloading pf rules."
5364562Sgshapiro	$pf_program -n -f "$pf_rules" || return 1
5464562Sgshapiro	# Flush everything but existing state entries that way when
5564562Sgshapiro	# rules are read in, it doesn't break established connections.
5664562Sgshapiro	$pf_program -Fnat -Fqueue -Frules -FSources -Finfo -FTables -Fosfp > /dev/null 2>&1
5764562Sgshapiro	$pf_program -f "$pf_rules" $pf_flags
5864562Sgshapiro}
5964562Sgshapiro
6064562Sgshapiropf_resync()
6164562Sgshapiro{
6264562Sgshapiro	$pf_program -f "$pf_rules" $pf_flags
6364562Sgshapiro}
6464562Sgshapiro
6564562Sgshapiropf_status()
6664562Sgshapiro{
6764562Sgshapiro	$pf_program -s info
6864562Sgshapiro}
6964562Sgshapiro
7064562Sgshapirorun_rc_command "$1"
7164562Sgshapiro