From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jon Mason Subject: [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Date: Tue, 4 Oct 2005 18:54:37 -0500 Message-ID: <20051004235436.GB7576@us.ibm.com> References: <20050929222041.GA26407@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20050929222041.GA26407@us.ibm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This patch fixes domU networking in Gentoo. The change to ifup/ifdown (which isn't availabe in Gentoo) prevents the bridge from being setup correctly. The patch below checks if ifup is avaiable, and if not starts the Gentoo networking scripts. This new version includes shell functions where distro specific options may be handled (per Ian's suggestion). Signed-off-by: Jon Mason # HG changeset patch # User root@pentium4 # Node ID 6de75791e5a54b8eb093c6630efb68f896c16fa3 # Parent 00037ba13f0bb8efe4b2c3efe40200eac21c68dd Fix network-bridge to work with Gentoo diff -r 00037ba13f0b -r 6de75791e5a5 tools/examples/network-bridge --- a/tools/examples/network-bridge Tue Oct 4 17:23:58 2005 +++ b/tools/examples/network-bridge Tue Oct 4 23:42:28 2005 @@ -54,6 +54,32 @@ antispoof=${antispoof:-no} echo "*network $OP bridge=$bridge netdev=$netdev antispoof=$antispoof" >&2 + +# Usage: eth_down interface +eth_down() { + local rc + local eth=$1 + ifdown=$(which ifdown 2>/dev/null) + if [ -n "$ifdown" ]; then + $ifdown ${eth}; rc=$? + else + /etc/init.d/net.${eth} stop; rc=$? + fi + return $rc +} + +# Usage: eth_up interface +eth_up() { + local rc + local eth=$1 + ifdown=$(which ifup 2>/dev/null) + if [ -n "$ifup" ]; then + $ifup ${eth}; rc=$? + else + /etc/init.d/net.${eth} start; rc=$? + fi + return $rc +} # Usage: transfer_addrs src dst # Copy all IP addresses (including aliases) from device $src to device $dst. @@ -177,7 +203,7 @@ if ifconfig veth0 2>/dev/null | grep -q veth0 ; then mac=`ifconfig ${netdev} | grep HWadd | sed -e 's/.*\(..:..:..:..:..:..\).*/\1/'` - if ! ifdown ${netdev} ; then + if ! eth_down ${netdev} ; then # if ifup didn't work, see if we have an ip= on cmd line if egrep 'ip=[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:' /proc/cmdline ; then @@ -197,7 +223,7 @@ ip link set ${bridge} up ip link set vif0.0 up ip link set p${netdev} up - if ! ifup ${netdev} ; then + if ! eth_up ${netdev} ; then if [ ${kip} ] ; then # use the addresses we grocked from /proc/cmdline ifconfig ${netdev} ${kip} @@ -238,7 +264,7 @@ ip link set peth0 name eth0 ifconfig ${bridge} down brctl delbr ${bridge} - ifup eth0 + eth_up eth0 else transfer_routes ${bridge} ${netdev}