xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Ian Jackson <ian.jackson@eu.citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Ian Jackson <Ian.Jackson@eu.citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>
Subject: [OSSTEST PATCH 3/3] ts-xen-install: nodhcp: Make idempotent
Date: Thu, 17 Apr 2014 16:13:24 +0100	[thread overview]
Message-ID: <1397747604-9321-3-git-send-email-ian.jackson@eu.citrix.com> (raw)
In-Reply-To: <1397747604-9321-1-git-send-email-ian.jackson@eu.citrix.com>

If run more than once, this function would erroneously determine that
xenbr0 was the primary physical interface name and try to enroll it
into the bridge (also named xenbr0).

Instead, spot the "bridge_ports" line and use it to extract the
physical interface name.  Eliminate from consideration any interfaces
matching xenbr\d+.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
---
 ts-xen-install |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/ts-xen-install b/ts-xen-install
index c59fdd3..4215ed3 100755
--- a/ts-xen-install
+++ b/ts-xen-install
@@ -217,6 +217,7 @@ sub nodhcp () {
 	if (!defined $physif) {
 	    # preread /etc/network/interfaces to figure out the interface
 	    my %candidates;
+	    my @bridges;
 	    while (<EI>) {
 		if (
 		    m{^ \s* (  auto \s+ (\S+)               ) \s* $}x ||
@@ -225,10 +226,24 @@ sub nodhcp () {
 		    ) {
 		    push @{ $candidates{$2} }, $1;
 		}
+		if (
+			(
+			 (m{^ \s* iface \s+ (xenbr\w*) \s+ inet \s+ }x
+			      ? ((push @bridges, $1), 1) : 0)
+			 ...
+			 !m{^ [ \t] }x
+			)
+		    &&
+			m{^ \s+ bridge_ports \s+ (\S+) \s }x
+		    ) {
+		    push @{ $candidates{$1} }, "$bridges[$#bridges] $_";
+		}
 	    }
 	    EI->error and die $!;
 	    delete $candidates{'lo'};
-	    die Dumper(\%candidates)." -- cannot determine default interface"
+	    delete $candidates{$_} foreach @bridges;
+	    die Dumper(\%candidates, \@bridges).
+		" -- cannot determine default interface"
 		unless (scalar keys %candidates) == 1;
 	    ($physif,) = keys %candidates;
 	    seek EI,0,0 or die $!;
-- 
1.7.10.4

  parent reply	other threads:[~2014-04-17 15:13 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-11 15:25 [OSSTEST PATCH 00/12] Wheezy Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 01/12] ts-xen-build-prep: avoid lvextend segfault (Debian #736173) with wheezy Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 02/12] ts-kernel-build: force CONFIG_BLK_DEV_NBD=y Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 03/12] ts-host-install: set `IPAPPEND 2' (if interface isn't forced) Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 04/12] ts-xen-install: nodhcp: restructure Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 05/12] ts-xen-install: default the interface to the one in /etc/network/interfaces Ian Jackson
2014-04-16 14:51   ` Ian Campbell
2014-04-16 15:02     ` Ian Jackson
2014-04-16 15:05       ` Ian Campbell
2014-04-17 15:13         ` [OSSTEST PATCH 1/3] ts-xen-install: nodhcp: Fix iface regexp Ian Jackson
2014-04-17 15:13           ` [OSSTEST PATCH 2/3] ts-xen-install: nohcp: Invert sense of interfaces loop Ian Jackson
2014-04-17 15:13           ` Ian Jackson [this message]
2014-04-22  8:41           ` [OSSTEST PATCH 1/3] ts-xen-install: nodhcp: Fix iface regexp Ian Campbell
2014-02-11 15:25 ` [OSSTEST PATCH 06/12] TestSupport: break out target_run_apt Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 07/12] TestSupport: Suppress prompting by apt Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 08/12] ts-guests-nbd-mirror: purge old packages first Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 09/12] ts-guests-nbd-mirror: add checkaccessible test Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 10/12] ts-guests-nbd-mirror: set "oldstyle=true" Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 11/12] Debian: Switch to wheezy Ian Jackson
2014-02-11 15:25 ` [OSSTEST PATCH 12/12] make-flight: abolish special-casing of suite for armhf Ian Jackson

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=1397747604-9321-3-git-send-email-ian.jackson@eu.citrix.com \
    --to=ian.jackson@eu.citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).