All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tools: Fix network-bridge to work with Gentoo
@ 2005-09-29 22:20 Jon Mason
  2005-09-29 23:11 ` Dan Smith
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jon Mason @ 2005-09-29 22:20 UTC (permalink / raw)
  To: xen-devel

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.  

Signed-off-by: Jon Mason <jdmason@us.ibm.com>

# HG changeset patch
# User root@pentium4
# Node ID 07ba15ba986268ff869d7d2253eab8eed3edbe8b
# Parent  f529cd119470032c2bc70b21432e733f9605727b
Fix network-bridge to work with Gentoo

diff -r f529cd119470 -r 07ba15ba9862 tools/examples/network-bridge
--- a/tools/examples/network-bridge	Thu Sep 29 17:28:28 2005
+++ b/tools/examples/network-bridge	Thu Sep 29 22:03:46 2005
@@ -177,7 +177,12 @@
 
     if ifconfig veth0 2>/dev/null | grep -q veth0 ; then
 	mac=`ifconfig ${netdev} | grep HWadd | sed -e 's/.*\(..:..:..:..:..:..\).*/\1/'`
-	if ! ifdown ${netdev} ; then
+	if which ifdown 2> /dev/null ; then
+		ifdown ${netdev} 2> RC=$?
+	else
+        	/etc/init.d/net.${netdev} stop 2> RC=$? 
+	fi
+	if ! $RC ; 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 +202,12 @@
 	ip link set ${bridge} up
 	ip link set vif0.0 up
 	ip link set p${netdev} up
-	if ! ifup ${netdev} ; then
+	if which ifup 2> /dev/null ; then
+		ifup ${netdev} 2> RC=$?
+	else
+        	/etc/init.d/net.${netdev} start 2> RC=$? 
+	fi
+	if ! $RC  ; then
 		if [ ${kip} ] ; then
 			# use the addresses we grocked from /proc/cmdline	
 			ifconfig ${netdev} ${kip} 
@@ -238,7 +248,7 @@
         ip link set peth0 name eth0
         ifconfig ${bridge} down
         brctl delbr ${bridge}
-        ifup eth0
+        ifup eth0 2>/dev/null || /etc/init.d/net.eth0 start
 
     else
         transfer_routes ${bridge} ${netdev}

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

* Re: [PATCH] tools: Fix network-bridge to work with Gentoo
  2005-09-29 22:20 [PATCH] tools: Fix network-bridge to work with Gentoo Jon Mason
@ 2005-09-29 23:11 ` Dan Smith
  2005-09-29 23:31   ` Nivedita Singhvi
  2005-09-29 23:23 ` Robb Romans
  2005-10-04 23:54 ` [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Jon Mason
  2 siblings, 1 reply; 7+ messages in thread
From: Dan Smith @ 2005-09-29 23:11 UTC (permalink / raw)
  To: xen-devel; +Cc: Jon Mason


JM> This patch fixes domU networking in Gentoo.  The change to
JM> ifup/ifdown (which isn't availabe in Gentoo) prevents the bridge
JM> from being setup correctly.  The patch below checks if ifup is
JM> avaiable, and if not starts the Gentoo networking scripts.

This brings up the idea about how we can be as distro-friendly as
possible when it comes to network configuration.

How about if we replace the distro-specific bits of the network-bridge
script with calls out to a dedicated one, after we determine which
distro we're on?  That way, we can cleanly add support for a new
distro, without adding a bunch of if-then-elsif's to the main script.

Also, it would allow the distros to easily maintain and plug in their
own scripts to integrate with their network configuration utilities.
That way, they wouldn't have to maintain a patch to the monolithic xen
script.  They could just drop their module into, say,
/etc/xen/scripts/distros/redhat.sh, or something similar.

I think that if we were to make a standard function interface (like
LSB) that the scripts implement, then we could just source them and
use their functions to carry out the wishes of the more complex logic
in the master network-bridge script.

Thoughts?

-- 
Dan Smith
IBM Linux Technology Center
Open Hypervisor Team
email: danms@us.ibm.com

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

* Re: [PATCH] tools: Fix network-bridge to work with Gentoo
  2005-09-29 22:20 [PATCH] tools: Fix network-bridge to work with Gentoo Jon Mason
  2005-09-29 23:11 ` Dan Smith
@ 2005-09-29 23:23 ` Robb Romans
  2005-10-04 23:54 ` [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Jon Mason
  2 siblings, 0 replies; 7+ messages in thread
From: Robb Romans @ 2005-09-29 23:23 UTC (permalink / raw)
  To: xen-devel; +Cc: Jon Mason

On Thursday 29 September 2005 05:20 pm, 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.
>
> Signed-off-by: Jon Mason <jdmason@us.ibm.com>
>
> # HG changeset patch
> # User root@pentium4
> # Node ID 07ba15ba986268ff869d7d2253eab8eed3edbe8b
> # Parent  f529cd119470032c2bc70b21432e733f9605727b
> Fix network-bridge to work with Gentoo
>
> diff -r f529cd119470 -r 07ba15ba9862 tools/examples/network-bridge
> --- a/tools/examples/network-bridge	Thu Sep 29 17:28:28 2005
> +++ b/tools/examples/network-bridge	Thu Sep 29 22:03:46 2005
> @@ -177,7 +177,12 @@
>
>      if ifconfig veth0 2>/dev/null | grep -q veth0 ; then
>  	mac=`ifconfig ${netdev} | grep HWadd | sed -e
> 's/.*\(..:..:..:..:..:..\).*/\1/'` -	if ! ifdown ${netdev} ; then
> +	if which ifdown 2> /dev/null ; then

> +		ifdown ${netdev} 2> RC=$?

I don't think you want the "2>" in there. You're missing a semicolon in 
front of "RC=..."

> +	else
> +        	/etc/init.d/net.${netdev} stop 2> RC=$?

Same problem here.

> +	fi
> +	if ! $RC ; 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 +202,12 @@
>  	ip link set ${bridge} up
>  	ip link set vif0.0 up
>  	ip link set p${netdev} up
> -	if ! ifup ${netdev} ; then
> +	if which ifup 2> /dev/null ; then
> +		ifup ${netdev} 2> RC=$?

Same problem here.

> +	else
> +        	/etc/init.d/net.${netdev} start 2> RC=$?

Same problem here.

> +	fi
> +	if ! $RC  ; then
>  		if [ ${kip} ] ; then
>  			# use the addresses we grocked from /proc/cmdline
>  			ifconfig ${netdev} ${kip}
> @@ -238,7 +248,7 @@
>          ip link set peth0 name eth0
>          ifconfig ${bridge} down
>          brctl delbr ${bridge}
> -        ifup eth0
> +        ifup eth0 2>/dev/null || /etc/init.d/net.eth0 start

I think you want to check whether 'ifup' exists, not whether the command 
fails.

Regards,
Robb

-- 
Robb Romans                     (512) 838-0419
Linux Commando                  T/L   678-0419
ARS NA5TT
.-- - ..-. ..--..

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

* Re: [PATCH] tools: Fix network-bridge to work with Gentoo
  2005-09-29 23:11 ` Dan Smith
@ 2005-09-29 23:31   ` Nivedita Singhvi
  0 siblings, 0 replies; 7+ messages in thread
From: Nivedita Singhvi @ 2005-09-29 23:31 UTC (permalink / raw)
  To: Dan Smith; +Cc: xen-devel, Jon Mason

Dan Smith wrote:
> JM> This patch fixes domU networking in Gentoo.  The change to
> JM> ifup/ifdown (which isn't availabe in Gentoo) prevents the bridge
> JM> from being setup correctly.  The patch below checks if ifup is
> JM> avaiable, and if not starts the Gentoo networking scripts.
> 
> This brings up the idea about how we can be as distro-friendly as
> possible when it comes to network configuration.
> 
> How about if we replace the distro-specific bits of the network-bridge
> script with calls out to a dedicated one, after we determine which
> distro we're on?  That way, we can cleanly add support for a new
> distro, without adding a bunch of if-then-elsif's to the main script.
> 
> Also, it would allow the distros to easily maintain and plug in their
> own scripts to integrate with their network configuration utilities.
> That way, they wouldn't have to maintain a patch to the monolithic xen
> script.  They could just drop their module into, say,
> /etc/xen/scripts/distros/redhat.sh, or something similar.
> 
> I think that if we were to make a standard function interface (like
> LSB) that the scripts implement, then we could just source them and
> use their functions to carry out the wishes of the more complex logic
> in the master network-bridge script.
> 
> Thoughts?

Here's one vote for doing that - need a clean point to insert customized
pieces.

thanks,
Nivedita

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

* [PATCH] tools: Fix network-bridge to work with Gentoo (version 2)
  2005-09-29 22:20 [PATCH] tools: Fix network-bridge to work with Gentoo Jon Mason
  2005-09-29 23:11 ` Dan Smith
  2005-09-29 23:23 ` Robb Romans
@ 2005-10-04 23:54 ` Jon Mason
  2005-10-05  4:03   ` Anthony Liguori
  2005-10-05 15:05   ` Jeremy Katz
  2 siblings, 2 replies; 7+ messages in thread
From: Jon Mason @ 2005-10-04 23:54 UTC (permalink / raw)
  To: xen-devel

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 <jdmason@us.ibm.com>

# 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}

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

* Re: [PATCH] tools: Fix network-bridge to work with Gentoo (version 2)
  2005-10-04 23:54 ` [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Jon Mason
@ 2005-10-05  4:03   ` Anthony Liguori
  2005-10-05 15:05   ` Jeremy Katz
  1 sibling, 0 replies; 7+ messages in thread
From: Anthony Liguori @ 2005-10-05  4:03 UTC (permalink / raw)
  To: Jon Mason; +Cc: xen-devel

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 <jdmason@us.ibm.com>
>
># 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
>
>  
>

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

* Re: [PATCH] tools: Fix network-bridge to work with Gentoo (version 2)
  2005-10-04 23:54 ` [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Jon Mason
  2005-10-05  4:03   ` Anthony Liguori
@ 2005-10-05 15:05   ` Jeremy Katz
  1 sibling, 0 replies; 7+ messages in thread
From: Jeremy Katz @ 2005-10-05 15:05 UTC (permalink / raw)
  To: xen-devel

On Tue, 2005-10-04 at 18:54 -0500, 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).  

Doing this all in the same script feels like it's going to spiral out of
control into spaghetti-land kind of quickly and also not allow for some
of the real variation that's going to be desired for different
distributions.

Why try to do a one-size-fits-all instead of having scripts which really
can be made to best fit the distro?  With a more traditional build
process, it would be easy enough to have distro specific scripts dropped
into subdirs of the examples directory and use them as
overrides/replacements.  The thing that makes that tricky for Xen is the
way make dist works.  

Thinking aloud -- maybe just setting a variable so we know we're in the
'make dist' case and using that to install all the distro specific stuff
into DESTDIR and then letting install.sh also pick out the right distro
would work.  Then for the more normal install case, just the proper
things for the distro would get installed.  Does this seem reasonable?
I'll try to cook up something today

Jeremy

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

end of thread, other threads:[~2005-10-05 15:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-29 22:20 [PATCH] tools: Fix network-bridge to work with Gentoo Jon Mason
2005-09-29 23:11 ` Dan Smith
2005-09-29 23:31   ` Nivedita Singhvi
2005-09-29 23:23 ` Robb Romans
2005-10-04 23:54 ` [PATCH] tools: Fix network-bridge to work with Gentoo (version 2) Jon Mason
2005-10-05  4:03   ` Anthony Liguori
2005-10-05 15:05   ` Jeremy Katz

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.