xref: /freebsd/libexec/rc/rc.d/pf (revision 28f47a199cfd8749ab30a0327b0a3f8977ec2b43)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb# $FreeBSD$
40696600cSBjoern A. Zeeb#
50696600cSBjoern A. Zeeb
60696600cSBjoern A. Zeeb# PROVIDE: pf
79ef91759SPawel Biernacki# REQUIRE: FILESYSTEMS netif pflog pfsync routing
80696600cSBjoern A. Zeeb# KEYWORD: nojailvnet
90696600cSBjoern A. Zeeb
100696600cSBjoern A. Zeeb. /etc/rc.subr
110696600cSBjoern A. Zeeb
120696600cSBjoern A. Zeebname="pf"
130696600cSBjoern A. Zeebdesc="Packet filter"
140696600cSBjoern A. Zeebrcvar="pf_enable"
150696600cSBjoern A. Zeebload_rc_config $name
160696600cSBjoern A. Zeebstart_cmd="pf_start"
170696600cSBjoern A. Zeebstop_cmd="pf_stop"
180696600cSBjoern A. Zeebcheck_cmd="pf_check"
190696600cSBjoern A. Zeebreload_cmd="pf_reload"
200696600cSBjoern A. Zeebresync_cmd="pf_resync"
210696600cSBjoern A. Zeebstatus_cmd="pf_status"
220696600cSBjoern A. Zeebextra_commands="check reload resync"
230696600cSBjoern A. Zeebrequired_files="$pf_rules"
240696600cSBjoern A. Zeebrequired_modules="pf"
250696600cSBjoern A. Zeeb
26*28f47a19SThomas Steen Rasmussenpf_fallback()
27*28f47a19SThomas Steen Rasmussen{
28*28f47a19SThomas Steen Rasmussen	warn "Unable to load $pf_rules."
29*28f47a19SThomas Steen Rasmussen
30*28f47a19SThomas Steen Rasmussen	if ! checkyesno pf_fallback_rules_enable; then
31*28f47a19SThomas Steen Rasmussen		return
32*28f47a19SThomas Steen Rasmussen	fi
33*28f47a19SThomas Steen Rasmussen
34*28f47a19SThomas Steen Rasmussen	if [ -f $pf_fallback_rules_file ]; then
35*28f47a19SThomas Steen Rasmussen		warn "Loading fallback rules file: $pf_fallback_rules_file"
36*28f47a19SThomas Steen Rasmussen		$pf_program -f "$pf_fallback_rules_file" $pf_flags
37*28f47a19SThomas Steen Rasmussen	else
38*28f47a19SThomas Steen Rasmussen		warn "Loading fallback rules: $pf_fallback_rules"
39*28f47a19SThomas Steen Rasmussen		echo $pf_fallback_rules | $pf_program -f - $pf_flags
40*28f47a19SThomas Steen Rasmussen	fi
41*28f47a19SThomas Steen Rasmussen}
42*28f47a19SThomas Steen Rasmussen
430696600cSBjoern A. Zeebpf_start()
440696600cSBjoern A. Zeeb{
450696600cSBjoern A. Zeeb	check_startmsgs && echo -n 'Enabling pf'
460696600cSBjoern A. Zeeb	$pf_program -F all > /dev/null 2>&1
47*28f47a19SThomas Steen Rasmussen	$pf_program -f "$pf_rules" $pf_flags || pf_fallback
480696600cSBjoern A. Zeeb	if ! $pf_program -s info | grep -q "Enabled" ; then
490696600cSBjoern A. Zeeb		$pf_program -eq
500696600cSBjoern A. Zeeb	fi
510696600cSBjoern A. Zeeb	check_startmsgs && echo '.'
520696600cSBjoern A. Zeeb}
530696600cSBjoern A. Zeeb
540696600cSBjoern A. Zeebpf_stop()
550696600cSBjoern A. Zeeb{
560696600cSBjoern A. Zeeb	if $pf_program -s info | grep -q "Enabled" ; then
570696600cSBjoern A. Zeeb		echo -n 'Disabling pf'
580696600cSBjoern A. Zeeb		$pf_program -dq
590696600cSBjoern A. Zeeb		echo '.'
600696600cSBjoern A. Zeeb	fi
610696600cSBjoern A. Zeeb}
620696600cSBjoern A. Zeeb
630696600cSBjoern A. Zeebpf_check()
640696600cSBjoern A. Zeeb{
650696600cSBjoern A. Zeeb	echo "Checking pf rules."
660696600cSBjoern A. Zeeb	$pf_program -n -f "$pf_rules" $pf_flags
670696600cSBjoern A. Zeeb}
680696600cSBjoern A. Zeeb
690696600cSBjoern A. Zeebpf_reload()
700696600cSBjoern A. Zeeb{
710696600cSBjoern A. Zeeb	echo "Reloading pf rules."
720696600cSBjoern A. Zeeb	pf_resync
730696600cSBjoern A. Zeeb}
740696600cSBjoern A. Zeeb
750696600cSBjoern A. Zeebpf_resync()
760696600cSBjoern A. Zeeb{
770696600cSBjoern A. Zeeb	$pf_program -n -f "$pf_rules" $pf_flags || return 1
780696600cSBjoern A. Zeeb	$pf_program -f "$pf_rules" $pf_flags
790696600cSBjoern A. Zeeb}
800696600cSBjoern A. Zeeb
810696600cSBjoern A. Zeebpf_status()
820696600cSBjoern A. Zeeb{
830696600cSBjoern A. Zeeb	if ! [ -c /dev/pf ] ; then
840696600cSBjoern A. Zeeb		echo "pf.ko is not loaded"
850696600cSBjoern A. Zeeb		return 1
860696600cSBjoern A. Zeeb	else
870696600cSBjoern A. Zeeb		$pf_program -s info
880696600cSBjoern A. Zeeb		$pf_program -s Running >/dev/null
890696600cSBjoern A. Zeeb	fi
900696600cSBjoern A. Zeeb}
910696600cSBjoern A. Zeeb
920696600cSBjoern A. Zeebrun_rc_command "$1"
93