openwrt-packages/net/ibrdtnd/files/ibrdtn.init

72 lines
1.6 KiB
Bash

#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
START=90
start() {
# check if the daemon is disabled
if [ "`/sbin/uci -P/var/state -q get ibrdtn.disable`" == "1" ]; then
/bin/echo "dtnd is disabled"
return
fi
/bin/echo -n "running dtnd ..."
# startup the safety-wrapper for the daemon
/usr/sbin/dtnd-safety-wrapper.sh &
# store the pid of the process in uci states
/sbin/uci -P/var/state -q set ibrdtn.safetypid=`echo $!`
/bin/echo " done"
}
stop() {
# check if the daemon is disabled
if [ "`/sbin/uci -P/var/state -q get ibrdtn.disable`" == "1" ]; then
/bin/echo "dtnd is disabled"
return
fi
/bin/echo -n "stopping dtnd ..."
# set state to None, this indicates a clear shutdown to the safety-wrapper.
/sbin/uci -P/var/state -q set ibrdtn.state=None
# stop the safety-wrapper
if [ -n "`/sbin/uci -P/var/state -q get ibrdtn.safetypid`" ]; then
/usr/bin/kill `/sbin/uci -P/var/state -q get ibrdtn.safetypid` 2> /dev/null >/dev/null
fi
# finally kill really all safety-wrapper!
/bin/sleep 2
/usr/bin/killall -9 dtnd-safety-wrapper.sh
# send a kill signal to the daemon
/usr/bin/killall dtnd 2> /dev/null >/dev/null
# wait for some time
TIMEOUT=0;
# check if the daemon is running
while [ -n "`ps | grep dtnd | grep -v grep`" ]; do
# check if the daemon is still running
if [ $TIMEOUT -ge 10 ]; then
/bin/echo " killing"
# kill all processes of dtnd
/usr/bin/killall -9 dtnd 2> /dev/null >/dev/null
return
fi
# increment timeout
TIMEOUT=`expr $TIMEOUT + 1`
echo -n "."
# wait some time
/bin/sleep 1
done
echo " done"
}