3 # chkconfig: 2345 11 89
4 # description: Brings up and configures the ethernet bridge
7 # Source function library.
8 .
/etc
/init.d
/functions
10 # Check that networking is up.
11 if [ "$NETWORKING" = "no" ]
18 [ -f /etc
/rsbridgeinit.conf
] && .
/etc
/rsbridgeinit.conf
20 ###### Sample of what /etc/rsbridgeinit.conf should look like
22 # #UPDATE_STRING=-b eth2 eth3
26 ##########################
28 #Enable RSTP if we have /sbin/rstpd
32 [ -x $RSTPD -a -x $RSTPCTL ] && RSTP
=1
35 cat /proc
/net
/bonding
/$1 |
grep 'Slave Interface' | cut
-d: -f2
38 # set interrupt affinity to first cpu
40 if [[ $1 == bond
* ]] ; then
41 for sl
in `slaves $1`; do
42 irq
=`grep $sl /proc/interrupts | cut -d: -f1`
43 echo 1 > /proc
/irq
/$irq/smp_affinity
46 irq
=`grep $1 /proc/interrupts | cut -d: -f1`
47 echo 1 > /proc
/irq
/$irq/smp_affinity
52 [ $RSTP == 1 ] && echo Starting rstpd
&& daemon
$RSTPD ">>" /var
/log
/rstpd.log
"2>&1"
53 for b
in $BRIDGES ; do
54 echo Starting service bridge
$bridgeprefix$b
55 brctl addbr
$bridgeprefix$b || RETVAL
=1
56 if [ $RSTP == 0 ] ; then
57 brctl stp
$bridgeprefix$b on
58 brctl setbridgeprio
$bridgeprefix$b 65000
61 for br
in ${CSIF[$b]} ; do
62 echo Adding CSIF
$br on
$bridgeprefix$b
64 brctl addif
$bridgeprefix$b $br || RETVAL
=1
67 if [ "$1" != "client" ]; then
68 for br
in ${SSIF[$b]} ; do
69 echo Adding SSIF
$br on
$bridgeprefix$b
71 if [[ $br == bond
* ]] ; then
72 for sl
in `slaves $br`; do
78 brctl addif
$bridgeprefix$b $br || RETVAL
=1
82 if [ $RSTP == 1 ]; then
83 rstpctl rstp
$bridgeprefix$b on
84 rstpctl setbridgeprio
$bridgeprefix$b 61440
88 for b
in $BRIDGES ; do
90 .
/etc
/sysconfig
/network-scripts
/ifcfg-
$bridgeprefix$b
91 # We will always have the subnet route entry. If there is a default gateway
92 # on that subnet, we will have an entry for that as well
93 if [ -n "$GATEWAY" ] ; then rttarget
=2 ; else rttarget
=1 ; fi
98 new_rtcount
=`grep -c $bridgeprefix$b /proc/net/route`;
99 if [ $new_rtcount != $rtcount ]; then
100 #DEBUG echo Number of route entries for $bridgeprefix$b is $new_rtcount
103 if [ $rtcount == $rttarget ]; then
104 #DEBUG echo Reached target for $bridgeprefix$b
107 count
=`expr $count + 1`
108 if [ $count -gt 12 ]; then
109 echo Incomplete IP configuration
for $bridgeprefix$b. Check network config. Aborting.
112 echo Incomplete IP configuration
for $bridgeprefix$b. Waiting
5 seconds.
119 for b
in $BRIDGES ; do
120 echo "Shutting down service bridge $bridgeprefix$b"
121 for br
in ${SSIF[$b]} ; do
122 echo Removing SSIF
$br on
$bridgeprefix$b
123 brctl delif
$bridgeprefix$b $br || RETVAL
=1
125 for br
in ${CSIF[$b]} ; do
126 echo Removing CSIF
$br on
$bridgeprefix$b
127 brctl delif
$bridgeprefix$b $br || RETVAL
=1
129 ifconfig
$bridgeprefix$b down || RETVAL
=1
130 brctl delbr
$bridgeprefix$b || RETVAL
=1
132 [ $RSTP == 1 ] && killproc rstpd
139 for b
in $BRIDGES ; do
140 for br
in ${SSIF[$b]} ; do
141 echo Enabling
$br on
$bridgeprefix$b
142 if [[ $br == bond
* ]] ; then
143 for sl
in `slaves $br`; do
144 echo ' ' Enabling slave
$sl of
$br
154 for b
in $BRIDGES ; do
155 for br
in ${SSIF[$b]} ; do
156 echo Disabling
$br on
$bridgeprefix$b
157 if [[ $br == bond
* ]]; then
158 for sl
in `slaves $br`; do
159 echo ' ' Disabling slave
$sl of
$br
173 # See how we were called.
182 for b
in $BRIDGES ; do
183 ifconfig
$bridgeprefix$b
184 brctl showstp
$bridgeprefix$b
195 echo $
"Usage: $0 {start|stop|status|restart|reload}"