xref: /freebsd/libexec/rc/rc.d/ipsec (revision edf8578117e8844e02c0121147f45e4609b30680)
1#!/bin/sh
2#
3#
4
5# PROVIDE: ipsec
6# REQUIRE: FILESYSTEMS
7# BEFORE:  DAEMON mountcritremote
8# KEYWORD: nojailvnet
9
10. /etc/rc.subr
11
12name="ipsec"
13desc="Internet Protocol Security protocol"
14rcvar="ipsec_enable"
15start_precmd="ipsec_prestart"
16start_cmd="ipsec_start"
17stop_precmd="test -f $ipsec_file"
18stop_cmd="ipsec_stop"
19reload_cmd="ipsec_reload"
20extra_commands="reload"
21ipsec_program="/sbin/setkey"
22required_modules="ipsec"
23# ipsec_file is set by rc.conf
24
25ipsec_prestart()
26{
27	if [ ! -f "$ipsec_file" ]; then
28		warn "$ipsec_file not readable; ipsec start aborted."
29		stop_boot
30		return 1
31	fi
32	return 0
33}
34
35ipsec_start()
36{
37	echo "Installing ipsec manual keys/policies."
38	${ipsec_program} -f $ipsec_file
39}
40
41ipsec_stop()
42{
43	echo "Clearing ipsec manual keys/policies."
44
45	# Still not 100% sure if we would like to do this.
46	# It is very questionable to do this during shutdown session
47	# since it can hang any of the remaining IPv4/v6 sessions.
48	#
49	${ipsec_program} -F
50	${ipsec_program} -FP
51}
52
53ipsec_reload()
54{
55	echo "Reloading ipsec manual keys/policies."
56	${ipsec_program} -f "$ipsec_file"
57}
58
59load_rc_config $name
60run_rc_command "$1"
61