XenBridgeScript
Aus Xen-Forum-Wiki
Dieses Script ermöglicht das Erstellen von Bridges und bindet Interfaces an diese. Leider fehlt eine Kommentierung der Zeilen, eventuell mache ich (oder jemand anderes) das noch.
Hinweis: Das Script hatte ich bei XEN 3.0.0 benutzt. Nun mit XEN 3.0.2 und höher funktionieren die XEN-eigenen Scripte bestens, daher sollten vorzugsweise diese benutzt werden.
#!/bin/sh
# Exit if anything goes wrong.
#set -e
# First arg is the operation.
OP=$1
shift
# Safety Belt for problem-free bootup
# [ "$1" != "go" ] && exit 0
setup_bridge() {
br=$1
if=$2
mode=$3
brctl addbr $br
brctl stp $br off
brctl setfd $br 0
if [ isle = "$mode" ]; then
ifconfig $br 0.0.0.0 up
return 0
fi
brctl addif $br $if
if [ pt != "$mode" ]; then
ifip=`ifconfig $if | grep 'inet addr' | sed 's/.*inet addr:\([\.0-9]\+\).*/\1/'`
ifmask=`ifconfig $if | grep Mask | sed 's/.*Mask:\(.*\)$/\1/'`
ifconfig $br $ifip netmask $ifmask up
echo "##### br=$br ip=$ifip mask=$ipmask" >> /tmp/xxx
ip route | grep "dev $if" | (
while read ifline; do
ifnet=`echo "$ifline" | cut -d\ -f1`
echo "##### net=$ifnet" >> /tmp/xxx
if [ "" != "$ifip" -a "" != "$ifnet" ]; then
echo "nw-up: if[$if]($ifip:$ifnet) -> $br"
ip route del $ifnet dev $if
fi
done
)
else
ifconfig $if down
ifconfig $if 0.0.0.0 up
fi
ifconfig $br up
}
remove_bridge() {
br=$1
if=$2
mode=$3
if [ "" = "$mode" ]; then
ip route | grep "dev $br" | (
while read ifline; do
ifip=`echo "$ifline" | sed 's/.*src.\(.*\)/\1/'`
ifnet=`echo "$ifline" | cut -d\ -f1`
if [ "" != "$ifip" -a "" != "$ifnet" ]; then
ip route del $ifnet dev $br
ip route add $ifnet dev $if src $ifip
fi
done
)
fi
ifconfig $br down
if [ "isle" != "$mode" ];then
brctl delif $br $if
fi
brctl delbr $br
}
case ${OP} in
start)
setup_bridge gate eth0
setup_bridge lan eth1
setup_bridge xenbr0 - isle
;;
stop)
remove_bridge gate eth0
remove_bridge lan eth1
remove_bridge xenbr0 - isle
;;
*)
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start, stop'
exit 1
esac
--McAldo 22:07, 29. Okt 2006 (CET)
