All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] xen bridged network setup fixes
@ 2006-05-12 10:24 Gerd Hoffmann
  2006-06-14 14:38 ` Ewan Mellor
  0 siblings, 1 reply; 3+ messages in thread
From: Gerd Hoffmann @ 2006-05-12 10:24 UTC (permalink / raw)
  To: Xen devel list

[-- Attachment #1: Type: text/plain, Size: 650 bytes --]

  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@suse.de>
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

[-- Attachment #2: xen-netconf.diff --]
[-- Type: text/x-patch, Size: 3977 bytes --]

--- /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
+}
+

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-06-15 13:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-12 10:24 [patch] xen bridged network setup fixes Gerd Hoffmann
2006-06-14 14:38 ` Ewan Mellor
2006-06-15 13:24   ` Gerd Hoffmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.