#!/bin/bash # # Script to start/stop spanning tree called from kernel # Make sure umask is sane umask 022 # Set up a default search path. PATH="/sbin:/usr/sbin:/bin:/usr/bin" export PATH if [ $# -ne 2 ]; then echo "Usage: bridge-stp {start|stop}" exit 1 fi bridge=$1 service=rstpd pid_file=/var/run/${service}.pid # Set $pid to pids from /var/run* for {program}. $pid should be declared # local in the caller. # Returns LSB exit code for the 'status' action. checkpid() { pid= if [ -f "$1" ] ; then local line p read line < "$pid_file" for p in $line ; do [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p" done if [ -n "$pid" ]; then return 0 fi return 1 # "Program is dead and /var/run pid file exists" fi return 3 # "Program is not running" } daemon() { local pid checkpid $pid_file [ -n "$pid" ] && return # start it /sbin/rstpd RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$service } start() { daemon } case $2 in start) daemon exec /sbin/rstpctl rstp $bridge on ;; stop) exec /sbin/rstpctl rstp $bridge off ;; *) echo "Unknown action:" $2 echo "Usage: bridge-stp {start|stop}" exit 1 esac