From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Date: Tue, 04 Oct 2005 23:03:08 -0500 Message-ID: <4343507C.4000002@us.ibm.com> References: <20050929222041.GA26407@us.ibm.com> <20051004235436.GB7576@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20051004235436.GB7576@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: Jon Mason Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org A slightly less invasive way to do it is to have a Gentoo compatibility script that looks something like this: # Gentoo doesn't have ifup/ifdown so if we're on Gentoo define some which ifup >& /dev/null if [ "$?" != 0 -a -e /etc/conf.d/net ]; then ifup() { /etc/init.d/net.$1 start } ifdown() { /etc/init.d/net.$1 stop } fi This could then be sourced from the network script (or just inlined). Jon Mason wrote: >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} > >_______________________________________________ >Xen-devel mailing list >Xen-devel@lists.xensource.com >http://lists.xensource.com/xen-devel > > >