#!/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"
|
|
}
|