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