[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [patch] xen bridged network setup fixes
Hi, The attached patch fixes the setup of the bridge ports and the bridge itself. Changes: * move some functions to xen-network-common.sh, so both vif-bridge and network-bridge can use them. * add a new function to configure bridge ports and use it. * make sure arp requests, ipv6 autoconfiguration and ipv6 router solicitations are disabled for the bridge ports and also for the bridge itself. cheers, Gerd -- Gerd Hoffmann <kraxel@xxxxxxx> Erst mal heiraten, ein, zwei Kinder, und wenn alles läuft geh' ich nach drei Jahren mit der Familie an die Börse. http://www.suse.de/~kraxel/julika-dora.jpeg --- /etc/xen/scripts/vif-bridge.ipv6 2006-05-11 17:23:16.000000000 +0200 +++ /etc/xen/scripts/vif-bridge 2006-05-12 09:12:12.000000000 +0200 @@ -48,16 +48,8 @@ case "$command" in online) - if brctl show | grep -q "$vif" - then - log debug "$vif already attached to a bridge" - exit 0 - fi - - brctl addif "$bridge" "$vif" || - fatal "brctl addif $bridge $vif failed" - - ifconfig "$vif" up || fatal "ifconfig $vif up failed" + setup_bridge_port "$vif" + add_to_bridge "$bridge" "$vif" ;; offline) --- /etc/xen/scripts/network-bridge.ipv6 2006-05-11 17:23:30.000000000 +0200 +++ /etc/xen/scripts/network-bridge 2006-05-12 10:27:04.000000000 +0200 @@ -137,29 +137,6 @@ } -# Usage: create_bridge bridge -create_bridge () { - local bridge=$1 - - # Don't create the bridge if it already exists. - if [ ! -e "/sys/class/net/${bridge}/bridge" ]; then - brctl addbr ${bridge} - brctl stp ${bridge} off - brctl setfd ${bridge} 0 - fi - ip link set ${bridge} up -} - -# Usage: add_to_bridge bridge dev -add_to_bridge () { - local bridge=$1 - local dev=$2 - # Don't add $dev to $bridge if it's already on a bridge. - if [ ! -e "/sys/class/net/${bridge}/brif/${dev}" ]; then - brctl addif ${bridge} ${dev} - fi -} - # Set the default forwarding policy for $dev to drop. # Allow forwarding to the bridge. antispoofing () { @@ -220,15 +197,14 @@ ifdown ${netdev} ip link set ${netdev} name ${pdev} ip link set ${vdev} name ${netdev} - ip link set ${pdev} down arp off - ip link set ${pdev} addr fe:ff:ff:ff:ff:ff - ip addr flush ${pdev} + + setup_bridge_port ${pdev} + setup_bridge_port ${vif0} ip link set ${netdev} addr ${mac} arp on - add_to_bridge ${bridge} ${vif0} ip link set ${bridge} up - ip link set ${vif0} up - ip link set ${pdev} up + add_to_bridge ${bridge} ${vif0} add_to_bridge2 ${bridge} ${pdev} + ip link set ${netdev} up ifup ${hwddev} else @@ -286,6 +262,7 @@ local maxtries=10 echo -n "Waiting for ${dev} to negotiate link." + ip link set ${dev} up for i in `seq ${maxtries}` ; do if ifconfig ${dev} | grep -q RUNNING ; then break --- /etc/xen/scripts/xen-network-common.sh.ipv6 2006-05-12 08:58:19.000000000 +0200 +++ /etc/xen/scripts/xen-network-common.sh 2006-05-12 10:41:47.000000000 +0200 @@ -67,3 +67,57 @@ { first_file -x /etc/init.d/{dhcp3-server,dhcp,dhcpd} } + +# configure interfaces which act as pure bridge ports: +# - make quiet: no arp, no ipv6 autoconf +# - set mac address to fe:ff:ff:ff:ff:ff +setup_bridge_port() { + local dev="$1" + + # take interface down ... + ip link set ${dev} up # creates ipv6 conf dir + ip link set ${dev} down + + # ... and configure + if test -f /proc/sys/net/ipv6/conf/${dev}/autoconf; then + echo 0 > /proc/sys/net/ipv6/conf/${dev}/autoconf + echo 0 > /proc/sys/net/ipv6/conf/${dev}/router_solicitations + fi + ip link set ${dev} arp off + ip link set ${dev} addr fe:ff:ff:ff:ff:ff + ip addr flush ${dev} +} + +# Usage: create_bridge bridge +create_bridge () { + local bridge=$1 + + # Don't create the bridge if it already exists. + if [ ! -e "/sys/class/net/${bridge}/bridge" ]; then + brctl addbr ${bridge} + brctl stp ${bridge} off + brctl setfd ${bridge} 0 + ip link set ${bridge} arp off + ip link set ${bridge} up # creates ipv6 conf dir + if test -f /proc/sys/net/ipv6/conf/${bridge}/autoconf; then + echo 0 > /proc/sys/net/ipv6/conf/${bridge}/autoconf + echo 0 > /proc/sys/net/ipv6/conf/${bridge}/router_solicitations + fi + else + ip link set ${bridge} up + fi +} + +# Usage: add_to_bridge bridge dev +add_to_bridge () { + local bridge=$1 + local dev=$2 + + # Don't add $dev to $bridge if it's already on a bridge. + if [ -e "/sys/class/net/${bridge}/brif/${dev}" ]; then + return + fi + brctl addif ${bridge} ${dev} + ip link set ${dev} up +} + _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |