]> git.ipfire.org Git - people/ms/rstp.git/blobdiff - bridge-stp
Merge remote-tracking branch 'upstream/master'
[people/ms/rstp.git] / bridge-stp
index c9ffcc6c022e5db9926d973558d417f3ce15a101..e699b87281ac60dce78869a6ede9627f7c8d4bd0 100755 (executable)
@@ -1,27 +1,63 @@
 #!/bin/bash
 #
 # Script to start/stop spanning tree called from kernel
+# Make sure umask is sane
+umask 022
 
-RSTPCTL=/sbin/rstpctl
+# Set up a default search path.
+PATH="/sbin:/usr/sbin:/bin:/usr/bin"
+export PATH
 
 if [ $# -ne 2 ]; then
    echo "Usage: bridge-stp <bridge> {start|stop}"
    exit 1
 fi
-BRIDGE=$1
+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) exec $RSTPCTL rstp $BRIDGE on ;;
-     stop) exec $RSTPCTL rstp $BRIDGE off ;;
+     start) 
+       daemon
+       exec /sbin/rstpctl rstp $bridge on ;;
+     stop)  
+       exec /sbin/rstpctl rstp $bridge off ;;
      *)
        echo "Unknown action:" $2
        echo "Usage: bridge-stp <bridge> {start|stop}"
        exit 1
 esac
-
-
-
-       
-
-
-