blob: de7f5af3131e45fff6d0e86d72814a0ea77391cd (
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
|
#!/sbin/openrc-run
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
depend() {
need net
}
#
# Does nothing if a route exists that supports multicast traffic.
# If no routes supporting multicast traffic exists, the function
# tries to add one. A 0 is returned on success and a 1 on failure.
# One parameter must be passed in. This variable determins verbosity.
# If parameter is non-zero debugging will appear.
#
multicast_route_set() {
PING_OPTIONS_1='-c1 -w1'
PING_OPTIONS_2='-c1 -i1'
MULTICAST_ADDRESS='239.255.255.253'
TMP_FILE=/tmp/route.check
PING_ERROR_NO_ROUTE='unreachable'
MSG_FAILED_TO_FIND='Failed to Detect Multicast Route'
MSG_SUCCESS_ON_FIND='Multicast Route Enabled'
MSG_ADDING_ROUTE='Attempting to Add Multicast Route ...'
MSG_FAILED_TO_ADD=' FAILED - Route NOT Added.'
MSG_SUCCES_ON_ADD=' SUCCESS - Route Added.'
CMD_GET_INTERFACE="netstat -i | awk 'BEGIN{}(NR>2)&&(!/^lo*/){print \$1;exit}'"
CMD_ADD_ROUTE="route add -net 224.0.0.0 netmask 240.0.0.0"
ping $PING_OPTIONS_1 $MULTICAST_ADDRESS 2> $TMP_FILE 1> /dev/null
if [ $? = 2 ]; then
ping $PING_OPTIONS_2 $MULTICAST_ADDRESS 2> $TMP_FILE 1> /dev/null
fi
grep $PING_ERROR_NO_ROUTE $TMP_FILE > /dev/null 2>&1
err_unreachable_found=$?
#If errors, add route. Otherwise, do nothing
if [ -s $TMP_FILE ] && [ $err_unreachable_found = 0 ]; then
if [ $1 != 0 ]; then
echo $MSG_FAILED_TO_FIND
echo $MSG_ADDING_ROUTE
fi
$CMD_ADD_ROUTE `eval $CMD_GET_INTERFACE` > /dev/null 2>&1
retval=$?
if [ $1 != 0 ]; then
if [ $retval = 0 ]; then
echo $MSG_SUCCES_ON_ADD
else
echo $MSG_FAILED_TO_ADD
fi
fi
else
if [ $1 != 0 ]; then
echo -n $MSG_SUCCESS_ON_FIND
fi
retval=0
fi
rm -f $TMP_FILE # Clean up
return $retval
}
checkconfig() {
multicast_route_set 0
if [ $? -ne 0 ]; then
eerror "No route available for multicast traffic!"
return 1
fi
}
start() {
checkconfig || return 1
ebegin "Starting slpd"
start-stop-daemon --start --quiet --exec /usr/sbin/slpd --pidfile /var/run/slpd.pid
eend $?
}
stop() {
ebegin "Stopping slpd"
start-stop-daemon --stop --quiet --pidfile /var/run/slpd.pid
eend $?
}
|