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

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

Revision 1.9, Fri Apr 6 14:20:17 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.8: +3 -10 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: ipsec,v 1.9 2007/04/06 14:20:17 apb Exp $
#

# PROVIDE: ipsec
# REQUIRE: root beforenetlkm mountcritlocal tty
# BEFORE:  DAEMON

#	it does not really require beforenetlkm.

$_rc_subr_loaded . /etc/rc.subr

name="ipsec"
rcvar=$name
start_precmd="ipsec_prestart"
start_cmd="ipsec_start"
stop_precmd="test -f /etc/ipsec.conf"
stop_cmd="ipsec_stop"
reload_cmd="ipsec_reload"
extra_commands="reload"

ipsec_prestart()
{
	if [ ! -f /etc/ipsec.conf ]; then
		warn "/etc/ipsec.conf not readable; ipsec start aborted."

		stop_boot
		return 1
	fi
	return 0
}

ipsec_start()
{
	echo "Installing ipsec manual keys/policies."
	/sbin/setkey -f /etc/ipsec.conf
}

ipsec_stop()
{
	echo "Clearing ipsec manual keys/policies."

	# still not 100% sure if we would like to do this.
	# it is very questionable to do this during shutdown session, since
	# it can hang any of remaining IPv4/v6 session.
	#
	/sbin/setkey -F
	/sbin/setkey -FP
}

ipsec_reload()
{
	echo "Reloading ipsec manual keys/policies."
	/sbin/setkey -F
	/sbin/setkey -FP
	/sbin/setkey -f /etc/ipsec.conf
}

load_rc_config $name
run_rc_command "$1"