Mailing List Archive

[xen-unstable] xend: Do not mess with bridge if admin has set one up already
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1276598187 -3600
# Node ID 856c4684603984f9e853baaa011db9847da0b4eb
# Parent 17354054a6e3a65d5c3e7dc32c45f9b885bb0d11
xend: Do not mess with bridge if admin has set one up already

Previously, the default "network-script",
/etc/xen/scripts/network-bridge, would attempt to do its horrid work
even if you had already set everything up in /etc/network/interfaces.

Setting up your bridge in /etc/network/interfaces is:
* easy
* required for libxl since libxl never does it for you
* not a fragile piece of lunacy
* properly documented
* the way everyone would expect it to work

In this small patch we make it so that the default config for xend
doesn't mess about on startup if you already have a bridge, and
doesn't mess about on shutdown unless your first-named bridge (eth0 or
xenbr0, normally) doesn't also have a physical interface named
p<whatever> (peth0 or pxenbr0) enslaved to it. The latter test is not
ideal but will hopefully do from now until the time xend finally dies.

We also fix the "documentation" - ie, the comments in the default
xend-config.sxp - to correspond to reality.

Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
tools/examples/xend-config.sxp | 21 ++++++++++++++++++---
tools/hotplug/Linux/network-bridge | 8 ++++++++
2 files changed, 26 insertions(+), 3 deletions(-)

diff -r 17354054a6e3 -r 856c46846039 tools/examples/xend-config.sxp
--- a/tools/examples/xend-config.sxp Tue Jun 15 11:35:46 2010 +0100
+++ b/tools/examples/xend-config.sxp Tue Jun 15 11:36:27 2010 +0100
@@ -147,8 +147,22 @@
#
# (network-script 'network-bridge netdev=eth1')
#
-# The bridge is named xenbr0, by default. To rename the bridge, use
-#
+# The bridge is named eth0, by default (yes, really!)
+#
+
+# It is normally much better to create the bridge yourself in
+# /etc/network/interfaces. network-bridge start does nothing if you
+# already have a bridge, and network-bridge stop does nothing if the
+# default bridge name (normally eth0) is not a bridge. See
+# bridge-utils-interfaces(5) for full information on the syntax in
+# /etc/network/interfaces, but you probably want something like this:
+# iface xenbr0 inet static
+# address [etc]
+# netmask [etc]
+# [etc]
+# bridge_ports eth0
+#
+# To have network-bridge create a differently-named bridge, use:
# (network-script 'network-bridge bridge=<name>')
#
# It is possible to use the network-bridge script in more complicated
@@ -169,7 +183,8 @@
# configuring a new vif, but a value specified here would act as a default.
#
# If you are using only one bridge, the vif-bridge script will discover that,
-# so there is no need to specify it explicitly.
+# so there is no need to specify it explicitly. The default is to use
+# the bridge which is listed first in the output from brctl.
#
(vif-script vif-bridge)

diff -r 17354054a6e3 -r 856c46846039 tools/hotplug/Linux/network-bridge
--- a/tools/hotplug/Linux/network-bridge Tue Jun 15 11:35:46 2010 +0100
+++ b/tools/hotplug/Linux/network-bridge Tue Jun 15 11:36:27 2010 +0100
@@ -216,6 +216,10 @@ op_start () {
return
fi

+ if [ `brctl show | wc -l` != 1 ]; then
+ return
+ fi
+
if link_exists "$pdev"; then
# The device is already up.
return
@@ -263,6 +267,10 @@ op_stop () {
fi
if ! link_exists "$bridge"; then
return
+ fi
+ if ! [ -e "/sys/class/net/${bridge}/brif/${pdev}" ]; then
+ # $bridge is not a bridge to which pdev is enslaved
+ return
fi

claim_lock "network-bridge"

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog