[BACK]Return to pf CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / etc / rc.d

File: [cvs.NetBSD.org] / src / etc / rc.d / pf (download)

Revision 1.7, Fri Apr 6 14:20:18 2007 UTC (17 years ago) by apb
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, wrstuden-revivesa, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, mjf-devfs2-base, mjf-devfs-base, mjf-devfs, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-base2, matt-mips64-base, matt-mips64, matt-armv6-prevmlocking, matt-armv6-nbase, matt-armv6-base, matt-armv6, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-nbase, hpcarm-cleanup-base, hpcarm-cleanup, cube-autoconf-base, cube-autoconf
Branch point for: mjf-devfs2
Changes since 1.6: +2 -8 lines

* Add a stop_boot() function in rc.subr, to terminate a multi-user boot
  by killing the parent process.  The parent's PID is saved in $RC_PID.
* In all rc.d/* scripts that previously tried to stop the boot,
  replace in-line code with "stop_boot".
* Document this.

This should fix PR 29822.

#!/bin/sh
#
# $NetBSD: pf,v 1.7 2007/04/06 14:20:18 apb Exp $
#

# PROVIDE: pf
# REQUIRE: root beforenetlkm mountcritlocal tty network dhclient
# BEFORE: NETWORKING

$_rc_subr_loaded . /etc/rc.subr

name="pf"
rcvar=$name
start_precmd="pf_prestart"
start_cmd="pf_start"
stop_cmd="pf_stop"
reload_cmd="pf_reload"
status_cmd="pf_status"
extra_commands="reload status"

pf_prestart()
{
	if [ ! -f ${pf_rules} ]; then
		warn "${pf_rules} not readable; pf start aborted."

		stop_boot
		return 1
	fi
	return 0
}

pf_start()
{
	echo "Enabling pf firewall."

	# The pf_boot script has enabled pf already.
	if [ "$autoboot" != yes ]; then
		/sbin/pfctl -q -e 
	fi

	if [ -f ${pf_rules} ]; then
		/sbin/pfctl -q -f ${pf_rules}
	else
		warn "${pf_rules} not found; no pf rules loaded."
	fi
}

pf_stop()
{
	echo "Disabling pf firewall."
	/sbin/pfctl -q -Fa -d
}

pf_reload()
{
	echo "Reloading pf rules."
	if [ -f ${pf_rules} ]; then
		/sbin/pfctl -q -f ${pf_rules}
	else
		warn "${pf_rules} not found; no pf rules loaded."
	fi
}

pf_status()
{
	/sbin/pfctl -s info
}

load_rc_config $name
run_rc_command "$1"