All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@suse.de>
To: Xen devel list <xen-devel@lists.xensource.com>
Subject: [patch] xen bridged network setup fixes
Date: Fri, 12 May 2006 12:24:18 +0200	[thread overview]
Message-ID: <44646252.7080105@suse.de> (raw)

[-- 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

             reply	other threads:[~2006-05-12 10:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-12 10:24 Gerd Hoffmann [this message]
2006-06-14 14:38 ` [patch] xen bridged network setup fixes Ewan Mellor
2006-06-15 13:24   ` Gerd Hoffmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44646252.7080105@suse.de \
    --to=kraxel@suse.de \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.