pf revision 195026
164562Sgshapiro#!/bin/sh
264562Sgshapiro#
364562Sgshapiro# $FreeBSD: head/etc/rc.d/pf 195026 2009-06-26 01:04:50Z dougb $
464562Sgshapiro#
564562Sgshapiro
664562Sgshapiro# PROVIDE: pf
764562Sgshapiro# REQUIRE: FILESYSTEMS netif pflog pfsync
864562Sgshapiro# BEFORE:  routing
964562Sgshapiro# KEYWORD: nojail
1064562Sgshapiro
1164562Sgshapiro. /etc/rc.subr
1290792Sgshapiro
1390792Sgshapironame="pf"
1490792Sgshapirorcvar=`set_rcvar`
1564562Sgshapiroload_rc_config $name
1690792Sgshapirostart_cmd="pf_start"
1764562Sgshapirostop_cmd="pf_stop"
1890792Sgshapirocheck_cmd="pf_check"
1990792Sgshapiroreload_cmd="pf_reload"
2090792Sgshapiroresync_cmd="pf_resync"
2164562Sgshapirostatus_cmd="pf_status"
2290792Sgshapiroextra_commands="check reload resync status"
2390792Sgshapirorequired_files="$pf_rules"
2490792Sgshapirorequired_modules="pf"
2590792Sgshapiro
2690792Sgshapiropf_start()
2790792Sgshapiro{
2890792Sgshapiro	[ -z "${rc_quiet}" ] && echo "Enabling pf."
2990792Sgshapiro	$pf_program -F all > /dev/null 2>&1
3090792Sgshapiro	$pf_program -f "$pf_rules" $pf_flags
3190792Sgshapiro	if ! $pf_program -s info | grep -q "Enabled" ; then
3290792Sgshapiro		$pf_program -e
3390792Sgshapiro	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
4290792Sgshapiro}
4364562Sgshapiro
4464562Sgshapiropf_check()
4564562Sgshapiro{
4664562Sgshapiro	echo "Checking pf rules."
4764562Sgshapiro	$pf_program -n -f "$pf_rules"
4890792Sgshapiro}
4990792Sgshapiro
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
5773188Sgshapiro	$pf_program -f "$pf_rules" $pf_flags
5873188Sgshapiro}
5973188Sgshapiro
6073188Sgshapiropf_resync()
6164562Sgshapiro{
6273188Sgshapiro	$pf_program -f "$pf_rules" $pf_flags
6364562Sgshapiro}
6464562Sgshapiro
6564562Sgshapiropf_status()
6664562Sgshapiro{
6764562Sgshapiro	$pf_program -s info
6864562Sgshapiro}
6964562Sgshapiro
7064562Sgshapirorun_rc_command "$1"
7164562Sgshapiro