blob: 8b26317ee69b49d23d0a2a287074fbec1aa39b5f (
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: radvd
# Required-Start: $remote_fs $named $syslog
# Required-Stop: $remote_fs $named $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: router advertisement daemon
### END INIT INFO
# Source function library.
. /etc/init.d/functions
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/radvd
NAME=radvd
DESC=radvd
CONFIG=/etc/radvd.conf
SAVED_SETTINGS=/var/run/radvd/saved-settings
PIDFILE=/var/run/radvd/radvd.pid
OPTIONS="-u radvd -p $PIDFILE"
test -x $DAEMON || exit 0
set -e
# Check for IPv6 support in kernel
if test \! -e /proc/sys/net/ipv6; then
echo "IPv6 support must be enabled in the kernel for $DESC to work."
exit
fi
save_settings()
{
local file=$1
rm -f $file
for if_conf in /proc/sys/net/ipv6/conf/*; do
echo -e "$if_conf/forwarding\t `cat $if_conf/forwarding`" >> $file
done
return 0
}
restore_settings()
{
file=$1
if [ ! -f $file ]; then
echo "$0: warning: cannot restore settings"
return
fi
(
while read f value; do
if [ -w $f ]; then
echo $value > $f
fi
done
) < $file
}
chkconfig() {
if [ ! -e $CONFIG -o ! -s $CONFIG ]; then
echo ""
echo "* $CONFIG does not exist or is empty."
echo "* See /usr/share/doc/radvd/radvd.conf.example for a simple"
echo "* configuration suitable for most systems, and radvd.conf(5)"
echo "* for configuration file syntax. radvd will *not* be started."
exit 0
fi
}
case "$1" in
start)
echo -n "Starting $DESC: "
chkconfig
save_settings $SAVED_SETTINGS
# We must enable IPv6 forwarding for radvd to work
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
# Check for stale pidfile; radvd won't start if one is lying around
if [ -f $PIDFILE ] && ! ps `cat $PIDFILE` > /dev/null; then
rm -f $PIDFILE
fi
if ! start-stop-daemon --oknodo --start --pidfile $PIDFILE \
--exec $DAEMON -- $OPTIONS; then
echo "failed." && exit 1
fi
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
if ! [ -f $PIDFILE ] ; then
echo "not running."
exit 0
fi
start-stop-daemon --oknodo --stop --pidfile $PIDFILE \
--exec $DAEMON
restore_settings $SAVED_SETTINGS
rm -f $SAVED_SETTINGS
echo "$NAME."
;;
status)
status $DAEMON;
exit $?
;;
reload|force-reload)
echo "Reloading $DESC configuration files."
start-stop-daemon --stop --signal HUP --quiet --pidfile \
$PIDFILE --exec $DAEMON
;;
restart)
chkconfig
echo -n "Restarting $DESC: "
if ! start-stop-daemon --stop --quiet --pidfile \
$PIDFILE --exec $DAEMON; then
# stop failed, so we were not running
save_settings $SAVED_SETTINGS
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
fi
sleep 1
start-stop-daemon --start --quiet --pidfile \
$PIDFILE --exec $DAEMON -- $OPTIONS
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|status|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
|