1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/sbin/runscript
- # Copyright © 2005 TUBITAK/UEKAE
- # Licensed under the GNU General Public License, version 2.
- # See the file http://www.gnu.org/copyleft/gpl.txt.
- #
- # Original work belongs Gentoo Linux
- 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 slpd"
- start-stop-daemon --start --quiet --background --exec /usr/sbin/slpd
- eend $?
- }
- stop() {
- ebegin "Stopping slpd"
- start-stop-daemon --stop --quiet --pidfile /run/slpd.pid
- eend $?
- }
|