diff options
Diffstat (limited to 'debian/wide-dhcpv6-server.init.d')
-rw-r--r-- | debian/wide-dhcpv6-server.init.d | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/debian/wide-dhcpv6-server.init.d b/debian/wide-dhcpv6-server.init.d new file mode 100644 index 0000000..1148e06 --- /dev/null +++ b/debian/wide-dhcpv6-server.init.d @@ -0,0 +1,103 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: wide-dhcpv6-server +# Required-Start: $syslog $network $remote_fs +# Required-Stop: $syslog $remote_fs +# Should-Start: $local_fs +# Should-Stop: $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start/Stop WIDE DHCPv6 server +# Description: (empty) +### END INIT INFO + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DHCP6SBIN=/usr/sbin/dhcp6s +DHCP6SPIDBASE=/var/run/dhcp6s +NAME="dhcp6s" +DESC="WIDE DHCPv6 server" + +STOP_RETRY_SCHEDULE='TERM/20/forever/KILL/1' + +. /lib/lsb/init-functions + +test -x $DHCP6SBIN || exit 0 + +if [ ! -f /etc/default/wide-dhcpv6-server ]; then + exit 0 +else + . /etc/default/wide-dhcpv6-server +fi + + +[ "X$INTERFACES" != "X" ] || exit 0 + +case "$VERBOSE" in + 1) DEBUG="-d" + ;; + 2) DEBUG="-D" + ;; + *) DEBUG="" +esac + +# single arg is -v for messages, -q for none +check_status() +{ + for INT in $INTERFACES; do + if [ ! -r "${DHCP6SPIDBASE}.${INT}.pid" ]; then + test "$1" != -v || echo "$NAME is not running on ${INT}." + return 3 + fi + if read pid < "${DHCP6SPIDBASE}.${INT}.pid" && ps -p "$pid" > /dev/null 2>&1; then + test "$1" != -v || echo "$NAME is running on ${INT}." + return 0 + else + test "$1" != -v || echo "$NAME is not running on ${INT} but ${DHCP6SPIDBASE}.${INT}.pid exists." + return 1 + fi + done +} + +case "$1" in + start) + for INT in $INTERFACES; do + log_daemon_msg "Starting $DESC on $INT" "$NAME" + start-stop-daemon --start --quiet --pidfile ${DHCP6SPIDBASE}.${INT}.pid \ + --exec $DHCP6SBIN --oknodo -- $DEBUG -k /dev/null -P ${DHCP6SPIDBASE}.${INT}.pid $INT + sleep 2 + if check_status -q; then + log_end_msg 0 + else + log_end_msg 1 + exit 1 + fi + done + ;; + stop) + for INT in $INTERFACES; do + log_daemon_msg "Stopping $DESC on $INT" "$NAME" + start-stop-daemon --stop --quiet --retry $STOP_RETRY_SCHEDULE \ + --pidfile ${DHCP6SPIDBASE}.${INT}.pid --oknodo + log_end_msg $? + rm -f $DHCP6SPID + done + ;; + restart|force-reload) + $0 stop + sleep 2 + $0 start + if [ "$?" != "0" ]; then + exit 1 + fi + ;; + status) + echo "Status of $NAME: " + check_status -v + exit "$?" + ;; + *) + echo "Usage: $0 (start|stop|restart|force-reload|status)" + exit 1 +esac + +exit 0 |