xref: /freebsd/libexec/rc/rc.d/pf (revision f99f0ee14e3af81c23150a6a340259ca8a33d01a)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb#
40696600cSBjoern A. Zeeb
50696600cSBjoern A. Zeeb# PROVIDE: pf
69ef91759SPawel Biernacki# REQUIRE: FILESYSTEMS netif pflog pfsync routing
70696600cSBjoern A. Zeeb# KEYWORD: nojailvnet
80696600cSBjoern A. Zeeb
90696600cSBjoern A. Zeeb. /etc/rc.subr
100696600cSBjoern A. Zeeb
110696600cSBjoern A. Zeebname="pf"
120696600cSBjoern A. Zeebdesc="Packet filter"
130696600cSBjoern A. Zeebrcvar="pf_enable"
140696600cSBjoern A. Zeebload_rc_config $name
150696600cSBjoern A. Zeebstart_cmd="pf_start"
160696600cSBjoern A. Zeebstop_cmd="pf_stop"
170696600cSBjoern A. Zeebcheck_cmd="pf_check"
180696600cSBjoern A. Zeebreload_cmd="pf_reload"
190696600cSBjoern A. Zeebresync_cmd="pf_resync"
200696600cSBjoern A. Zeebstatus_cmd="pf_status"
210696600cSBjoern A. Zeebextra_commands="check reload resync"
220696600cSBjoern A. Zeebrequired_files="$pf_rules"
230696600cSBjoern A. Zeebrequired_modules="pf"
240696600cSBjoern A. Zeeb
25*f99f0ee1SAlexander Leidinger# doesn't make sense to run in a svcj: config setting
26*f99f0ee1SAlexander Leidingerpf_svcj="NO"
27*f99f0ee1SAlexander Leidinger
2828f47a19SThomas Steen Rasmussenpf_fallback()
2928f47a19SThomas Steen Rasmussen{
3028f47a19SThomas Steen Rasmussen	warn "Unable to load $pf_rules."
3128f47a19SThomas Steen Rasmussen
3228f47a19SThomas Steen Rasmussen	if ! checkyesno pf_fallback_rules_enable; then
3328f47a19SThomas Steen Rasmussen		return
3428f47a19SThomas Steen Rasmussen	fi
3528f47a19SThomas Steen Rasmussen
3628f47a19SThomas Steen Rasmussen	if [ -f $pf_fallback_rules_file ]; then
3728f47a19SThomas Steen Rasmussen		warn "Loading fallback rules file: $pf_fallback_rules_file"
3828f47a19SThomas Steen Rasmussen		$pf_program -f "$pf_fallback_rules_file" $pf_flags
3928f47a19SThomas Steen Rasmussen	else
4028f47a19SThomas Steen Rasmussen		warn "Loading fallback rules: $pf_fallback_rules"
4128f47a19SThomas Steen Rasmussen		echo $pf_fallback_rules | $pf_program -f - $pf_flags
4228f47a19SThomas Steen Rasmussen	fi
4328f47a19SThomas Steen Rasmussen}
4428f47a19SThomas Steen Rasmussen
450696600cSBjoern A. Zeebpf_start()
460696600cSBjoern A. Zeeb{
47325ebf37SJose Luis Duran	startmsg -n 'Enabling pf'
480696600cSBjoern A. Zeeb	$pf_program -F all > /dev/null 2>&1
4928f47a19SThomas Steen Rasmussen	$pf_program -f "$pf_rules" $pf_flags || pf_fallback
500696600cSBjoern A. Zeeb	if ! $pf_program -s info | grep -q "Enabled" ; then
510696600cSBjoern A. Zeeb		$pf_program -eq
520696600cSBjoern A. Zeeb	fi
53325ebf37SJose Luis Duran	startmsg '.'
540696600cSBjoern A. Zeeb}
550696600cSBjoern A. Zeeb
560696600cSBjoern A. Zeebpf_stop()
570696600cSBjoern A. Zeeb{
580696600cSBjoern A. Zeeb	if $pf_program -s info | grep -q "Enabled" ; then
590696600cSBjoern A. Zeeb		echo -n 'Disabling pf'
600696600cSBjoern A. Zeeb		$pf_program -dq
610696600cSBjoern A. Zeeb		echo '.'
620696600cSBjoern A. Zeeb	fi
630696600cSBjoern A. Zeeb}
640696600cSBjoern A. Zeeb
650696600cSBjoern A. Zeebpf_check()
660696600cSBjoern A. Zeeb{
670696600cSBjoern A. Zeeb	echo "Checking pf rules."
680696600cSBjoern A. Zeeb	$pf_program -n -f "$pf_rules" $pf_flags
690696600cSBjoern A. Zeeb}
700696600cSBjoern A. Zeeb
710696600cSBjoern A. Zeebpf_reload()
720696600cSBjoern A. Zeeb{
730696600cSBjoern A. Zeeb	echo "Reloading pf rules."
740696600cSBjoern A. Zeeb	pf_resync
750696600cSBjoern A. Zeeb}
760696600cSBjoern A. Zeeb
770696600cSBjoern A. Zeebpf_resync()
780696600cSBjoern A. Zeeb{
790696600cSBjoern A. Zeeb	$pf_program -n -f "$pf_rules" $pf_flags || return 1
800696600cSBjoern A. Zeeb	$pf_program -f "$pf_rules" $pf_flags
810696600cSBjoern A. Zeeb}
820696600cSBjoern A. Zeeb
830696600cSBjoern A. Zeebpf_status()
840696600cSBjoern A. Zeeb{
850696600cSBjoern A. Zeeb	if ! [ -c /dev/pf ] ; then
860696600cSBjoern A. Zeeb		echo "pf.ko is not loaded"
870696600cSBjoern A. Zeeb		return 1
880696600cSBjoern A. Zeeb	else
890696600cSBjoern A. Zeeb		$pf_program -s info
900696600cSBjoern A. Zeeb		$pf_program -s Running >/dev/null
910696600cSBjoern A. Zeeb	fi
920696600cSBjoern A. Zeeb}
930696600cSBjoern A. Zeeb
940696600cSBjoern A. Zeebrun_rc_command "$1"
95