summaryrefslogtreecommitdiff
path: root/etc/init.d/opennhrp.init
blob: 961422b78bb1f84b71e2a2eb317b4f91f8effb79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#! /bin/sh
### BEGIN INIT INFO
# Provides:          opennhrp
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: RFC 2332 2333 daemon
# Description:       This file suports one instance of opennhrp
### END INIT INFO


PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Next Hop Resolution Protocol"
NAME=opennhrp
DAEMON=/usr/sbin/$NAME
PIDPATH=/var/run
PIDFILE=$PIDPATH/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
CTRLPATH=/var/run
CTRLPIPE=$CTRLPATH/$NAME.socket
HOOK_DIR=/etc/commit/post-hooks.d
NHRP_HOOK=$HOOK_DIR/vyatta-nhrp-hook

CONFFILE=/etc/opennhrp/opennhrp.conf
SCRIPTFILE=/etc/opennhrp/opennhrp-script

DAEMON_ARGS=" -d -a $CTRLPIPE -c $CONFFILE -s $SCRIPTFILE -p $PIDFILE"
# -a /var/run/opennhrp/ctrl -c /etc/opennhrp/opennhrp.conf  -s /etc/opennhrp/opennhrp-script -d  -p /var/run/opennhrp/pid

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{	
	mkdir -p $PIDPATH
	mkdir -p $CTRLPATH
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null
	RETVAL=$?
	if [ ! $RETVAL -eq 0 ]; then return $RETVAL; fi
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
	return $?
}

#
# Function that stops the daemon/service
#
do_stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
	rm -f $PIDFILE
	return $?
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
	return $?
}

#
# Function that makes preparations for starting opennhrp
#
do_prepare() {
	if [ -d $HOOK_DIR ] && [ ! -f $NHRP_HOOK ]; then
	touch $NHRP_HOOK
	chmod 755 $NHRP_HOOK
	cat <<SCRIPT_EOF >>$NHRP_HOOK
#!/bin/sh
NHRP_UP=/opt/vyatta/sbin/vyatta-update-nhrp.pl
if [ -f \$NHRP_UP ]; then
sudo \$NHRP_UP --post_commit
fi
SCRIPT_EOF
	fi
}

case "$1" in
  start)
	log_daemon_msg "Preparing $DESC" "$NAME"
	do_prepare
	RETVAL=$?
	log_end_msg $RETVAL
	;;
  stop)
	log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	RETVAL=$?
	log_end_msg $RETVAL
	;;
  reload|force-reload)
	if [ -e $PIDFILE ]; then
		log_daemon_msg "Reloading $DESC" "$NAME"
		do_reload
		RETVAL=$?
		log_end_msg $RETVAL
	else
		log_daemon_msg "Starting $DESC" "$NAME"
		do_start
		RETVAL=$?
		log_end_msg $RETVAL
	fi
	;;
  restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
        RETVAL=$?
	if [ ! $RETVAL -eq 0 ]; then exit $RETVAL; fi
	sleep 1
	do_start
	RETVAL=$?
	log_end_msg $RETVAL
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
	exit 3
	;;
esac

#exit with return code of the last command
exit $RETVAL
: