90 lines
2.3 KiB
Plaintext
90 lines
2.3 KiB
Plaintext
|
#!/sbin/runscript
|
||
|
# Copyright 1999-2004 Gentoo Foundation
|
||
|
# Distributed under the terms of the GNU General Public License v2
|
||
|
# $Header: /var/cvsroot/gentoo-x86/net-libs/openslp/files/slpd-init,v 1.3 2004/07/14 23:48:29 agriffis Exp $
|
||
|
|
||
|
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}'"
|
||
|
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 NDS SLP services"
|
||
|
start-stop-daemon --start --quiet --pidfile /var/n4u/slpuasa.pid --exec /usr/bin/slpuasa
|
||
|
eend $?
|
||
|
}
|
||
|
|
||
|
stop() {
|
||
|
ebegin "Stopping NDS SLP services"
|
||
|
start-stop-daemon --stop --quiet --pidfile /var/n4u/slpuasa.pid
|
||
|
eend $?
|
||
|
}
|