+++ /dev/null
-#!/bin/sh
-#
-# chkconfig: 2345 11 89
-# description: Brings up and configures the ethernet bridge
-# processname: bridge
-
-# Source function library.
-. /etc/init.d/functions
-
-# Check that networking is up.
-if [ "$NETWORKING" = "no" ]
-then
- exit 0
-fi
-
-RETVAL=0
-
-[ -f /etc/rsbridgeinit.conf ] && . /etc/rsbridgeinit.conf
-
-###### Sample of what /etc/rsbridgeinit.conf should look like
-# bridgeprefix="gbr"
-# #UPDATE_STRING=-b eth2 eth3
-# BRIDGES="0"
-# CSIF[0]="eth2"
-# SSIF[0]="eth3"
-##########################
-
-#Enable RSTP if we have /sbin/rstpd
-RSTPD=/sbin/rstpd
-RSTPCTL=/sbin/rstpctl
-RSTP=0
-[ -x $RSTPD -a -x $RSTPCTL ] && RSTP=1
-
-slaves () {
- cat /proc/net/bonding/$1 | grep 'Slave Interface' | cut -d: -f2
-}
-
-# set interrupt affinity to first cpu
-setsmpaffinity() {
- if [[ $1 == bond* ]] ; then
- for sl in `slaves $1`; do
- irq=`grep $sl /proc/interrupts | cut -d: -f1`
- echo 1 > /proc/irq/$irq/smp_affinity
- done
- else
- irq=`grep $1 /proc/interrupts | cut -d: -f1`
- echo 1 > /proc/irq/$irq/smp_affinity
- fi
-}
-
-start () {
- [ $RSTP == 1 ] && echo Starting rstpd && daemon $RSTPD ">>" /var/log/rstpd.log "2>&1"
- for b in $BRIDGES ; do
- echo Starting service bridge $bridgeprefix$b
- brctl addbr $bridgeprefix$b || RETVAL=1
- if [ $RSTP == 0 ] ; then
- brctl stp $bridgeprefix$b on
- brctl setbridgeprio $bridgeprefix$b 65000
- fi
-
- for br in ${CSIF[$b]} ; do
- echo Adding CSIF $br on $bridgeprefix$b
- ifup $br
- brctl addif $bridgeprefix$b $br || RETVAL=1
- done
-
- if [ "$1" != "client" ]; then
- for br in ${SSIF[$b]} ; do
- echo Adding SSIF $br on $bridgeprefix$b
- ifup $br
- if [[ $br == bond* ]] ; then
- for sl in `slaves $br`; do
- ifconfig $sl down
- done
- else
- ifconfig $br down
- fi
- brctl addif $bridgeprefix$b $br || RETVAL=1
- done
- fi
- ifup $bridgeprefix$b
- if [ $RSTP == 1 ]; then
- rstpctl rstp $bridgeprefix$b on
- rstpctl setbridgeprio $bridgeprefix$b 61440
- fi
- done
-
- for b in $BRIDGES ; do
-
- . /etc/sysconfig/network-scripts/ifcfg-$bridgeprefix$b
-# We will always have the subnet route entry. If there is a default gateway
-# on that subnet, we will have an entry for that as well
- if [ -n "$GATEWAY" ] ; then rttarget=2 ; else rttarget=1 ; fi
- rtcount=x
-
- count=1
- while true ; do
- new_rtcount=`grep -c $bridgeprefix$b /proc/net/route`;
- if [ $new_rtcount != $rtcount ]; then
-#DEBUG echo Number of route entries for $bridgeprefix$b is $new_rtcount
- rtcount=$new_rtcount
- fi
- if [ $rtcount == $rttarget ]; then
-#DEBUG echo Reached target for $bridgeprefix$b
- break;
- fi
- count=`expr $count + 1`
- if [ $count -gt 12 ]; then
- echo Incomplete IP configuration for $bridgeprefix$b. Check network config. Aborting.
- break;
- fi
- echo Incomplete IP configuration for $bridgeprefix$b. Waiting 5 seconds.
- sleep 5
- done
- done
-}
-
-stop () {
- for b in $BRIDGES ; do
- echo "Shutting down service bridge $bridgeprefix$b"
- for br in ${SSIF[$b]} ; do
- echo Removing SSIF $br on $bridgeprefix$b
- brctl delif $bridgeprefix$b $br || RETVAL=1
- done
- for br in ${CSIF[$b]} ; do
- echo Removing CSIF $br on $bridgeprefix$b
- brctl delif $bridgeprefix$b $br || RETVAL=1
- done
- ifconfig $bridgeprefix$b down || RETVAL=1
- brctl delbr $bridgeprefix$b || RETVAL=1
- done
- [ $RSTP == 1 ] && killproc rstpd
-
-}
-
-serverif () {
- case "$1" in
- up)
- for b in $BRIDGES ; do
- for br in ${SSIF[$b]} ; do
- echo Enabling $br on $bridgeprefix$b
- if [[ $br == bond* ]] ; then
- for sl in `slaves $br`; do
- echo ' ' Enabling slave $sl of $br
- ifconfig $sl up
- done
- else
- ifconfig $br up
- fi
- done
- done
- ;;
- down)
- for b in $BRIDGES ; do
- for br in ${SSIF[$b]} ; do
- echo Disabling $br on $bridgeprefix$b
- if [[ $br == bond* ]]; then
- for sl in `slaves $br`; do
- echo ' ' Disabling slave $sl of $br
- ifconfig $sl down
- done
- else
- ifconfig $br down
- fi
- done
- done
- ;;
- *)
- exit 1
- esac
-}
-
-# See how we were called.
-case "$1" in
- start)
- start $2
- ;;
- stop)
- stop $2
- ;;
- status)
- for b in $BRIDGES ; do
- ifconfig $bridgeprefix$b
- brctl showstp $bridgeprefix$b
- done
- ;;
- serverif)
- serverif $2
- ;;
- restart|reload)
- stop
- start
- ;;
- *)
- echo $"Usage: $0 {start|stop|status|restart|reload}"
- exit 1
-esac
-
-exit $RETVAL