All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@do-not-panic.com>
To: netdev@vger.kernel.org
Cc: kvm@vger.kernel.org, "Luis R. Rodriguez" <mcgrof@suse.com>,
	bridge@lists.linux-foundation.org, linux-kernel@vger.kernel.org,
	Stephen Hemminger <stephen@networkplumber.org>,
	xen-devel@lists.xenproject.org
Subject: [RFC v2 1/4] bridge: enable interfaces to opt out from becoming the root bridge
Date: Fri, 14 Feb 2014 18:59:37 -0800	[thread overview]
Message-ID: <1392433180-16052-2-git-send-email-mcgrof__18896.3940403939$1392433316$gmane$org@do-not-panic.com> (raw)
In-Reply-To: <1392433180-16052-1-git-send-email-mcgrof@do-not-panic.com>

From: "Luis R. Rodriguez" <mcgrof@suse.com>

It doesn't make sense for some interfaces to become a root bridge
at any point in time. One example is virtual backend interfaces
which rely on other entities on the bridge for actual physical
connectivity. They only provide virtual access.

Device drivers that know they should never become part of the
root bridge have been using a trick of setting their MAC address
to a high broadcast MAC address such as FE:FF:FF:FF:FF:FF. Instead
of using these hacks lets the interfaces annotate its intent and
generalizes a solution for multiple drivers, while letting the
drivers use a random MAC address or one prefixed with a proper OUI.
This sort of hack is used by both qemu and xen for their backend
interfaces.

Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: bridge@lists.linux-foundation.org
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
---
 include/uapi/linux/if.h | 1 +
 net/bridge/br_if.c      | 2 ++
 net/bridge/br_private.h | 1 +
 net/bridge/br_stp_if.c  | 2 ++
 4 files changed, 6 insertions(+)

diff --git a/include/uapi/linux/if.h b/include/uapi/linux/if.h
index d758163..8d10382 100644
--- a/include/uapi/linux/if.h
+++ b/include/uapi/linux/if.h
@@ -84,6 +84,7 @@
 #define IFF_LIVE_ADDR_CHANGE 0x100000	/* device supports hardware address
 					 * change when it's running */
 #define IFF_MACVLAN 0x200000		/* Macvlan device */
+#define IFF_BRIDGE_NON_ROOT 0x400000    /* Don't consider for root bridge */
 
 
 #define IF_GET_IFACE	0x0001		/* for querying only */
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 4bf02ad..a745415 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -228,6 +228,8 @@ static struct net_bridge_port *new_nbp(struct net_bridge *br,
 	br_init_port(p);
 	p->state = BR_STATE_DISABLED;
 	br_stp_port_timer_init(p);
+	if (dev->priv_flags & IFF_BRIDGE_NON_ROOT)
+		p->flags |= BR_DONT_ROOT;
 	br_multicast_add_port(p);
 
 	return p;
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 045d56e..a89e8ad 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -173,6 +173,7 @@ struct net_bridge_port
 #define BR_ADMIN_COST		0x00000010
 #define BR_LEARNING		0x00000020
 #define BR_FLOOD		0x00000040
+#define BR_DONT_ROOT		0x00000080
 
 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
 	struct bridge_mcast_query	ip4_query;
diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
index 656a6f3..12fd848 100644
--- a/net/bridge/br_stp_if.c
+++ b/net/bridge/br_stp_if.c
@@ -228,6 +228,8 @@ bool br_stp_recalculate_bridge_id(struct net_bridge *br)
 		return false;
 
 	list_for_each_entry(p, &br->port_list, list) {
+		if (p->flags & BR_DONT_ROOT)
+			continue;
 		if (addr == br_mac_zero ||
 		    memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
 			addr = p->dev->dev_addr;
-- 
1.8.5.2

  reply	other threads:[~2014-02-15  2:59 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-15  2:59 [RFC v2 0/4] net: bridge / ip optimizations for virtual net backends Luis R. Rodriguez
2014-02-15  2:59 ` Luis R. Rodriguez [this message]
2014-02-15  2:59 ` [RFC v2 1/4] bridge: enable interfaces to opt out from becoming the root bridge Luis R. Rodriguez
2014-02-15  2:59   ` [Bridge] " Luis R. Rodriguez
2014-02-15  2:59   ` Luis R. Rodriguez
2014-02-16 18:56   ` Ben Hutchings
2014-02-16 18:56     ` [Bridge] " Ben Hutchings
2014-02-16 18:56   ` Ben Hutchings
2014-02-16 18:57   ` Stephen Hemminger
2014-02-16 18:57   ` Stephen Hemminger
2014-02-16 18:57     ` [Bridge] " Stephen Hemminger
2014-02-16 18:57     ` Stephen Hemminger
2014-02-18 21:02     ` Luis R. Rodriguez
2014-02-18 21:02     ` Luis R. Rodriguez
2014-02-18 21:02       ` [Bridge] " Luis R. Rodriguez
2014-02-19  9:52       ` [Xen-devel] " Ian Campbell
2014-02-19  9:52         ` [Bridge] " Ian Campbell
2014-02-19  9:52         ` Ian Campbell
2014-02-19 14:35         ` Zoltan Kiss
2014-02-19 14:35         ` [Xen-devel] " Zoltan Kiss
2014-02-19 14:35           ` [Bridge] " Zoltan Kiss
2014-02-19 17:02           ` Luis R. Rodriguez
2014-02-19 17:02           ` [Xen-devel] " Luis R. Rodriguez
2014-02-19 17:02             ` [Bridge] " Luis R. Rodriguez
2014-02-19 17:08             ` Stephen Hemminger
2014-02-19 17:08             ` [Xen-devel] " Stephen Hemminger
2014-02-19 17:08               ` [Bridge] " Stephen Hemminger
2014-02-19 17:08               ` Stephen Hemminger
2014-02-19 17:59               ` Luis R. Rodriguez
2014-02-19 17:59               ` [Xen-devel] " Luis R. Rodriguez
2014-02-19 17:59                 ` [Bridge] " Luis R. Rodriguez
2014-02-19 17:59                 ` Luis R. Rodriguez
2014-02-20 17:19                 ` Stephen Hemminger
2014-02-20 17:19                 ` [Xen-devel] " Stephen Hemminger
2014-02-20 17:19                   ` [Bridge] " Stephen Hemminger
2014-02-20 17:19                   ` Stephen Hemminger
2014-02-20 20:24                   ` Luis R. Rodriguez
2014-02-20 20:24                   ` [Xen-devel] " Luis R. Rodriguez
2014-02-20 20:24                     ` [Bridge] " Luis R. Rodriguez
2014-02-20 20:24                     ` Luis R. Rodriguez
2014-02-21 13:02                     ` Zoltan Kiss
2014-02-21 13:02                     ` [Xen-devel] " Zoltan Kiss
2014-02-21 13:02                       ` [Bridge] " Zoltan Kiss
2014-02-21 16:01                       ` Luis R. Rodriguez
2014-02-21 16:01                       ` [Xen-devel] " Luis R. Rodriguez
2014-02-21 16:01                         ` [Bridge] " Luis R. Rodriguez
2014-02-21 16:01                         ` Luis R. Rodriguez
2014-02-22  1:38                         ` Luis R. Rodriguez
2014-02-22  1:38                           ` [Bridge] " Luis R. Rodriguez
2014-02-22  1:38                           ` Luis R. Rodriguez
2014-02-22  1:38                         ` Luis R. Rodriguez
2014-02-20 13:19             ` Zoltan Kiss
2014-02-20 13:19             ` [Xen-devel] " Zoltan Kiss
2014-02-20 13:19               ` [Bridge] " Zoltan Kiss
2014-02-20 20:01               ` Luis R. Rodriguez
2014-02-20 20:01               ` [Xen-devel] " Luis R. Rodriguez
2014-02-20 20:01                 ` [Bridge] " Luis R. Rodriguez
2014-02-20 20:01                 ` Luis R. Rodriguez
2014-02-21 13:02                 ` Zoltan Kiss
2014-02-21 13:02                   ` [Bridge] " Zoltan Kiss
2014-02-21 15:59                   ` Luis R. Rodriguez
2014-02-21 15:59                   ` [Xen-devel] " Luis R. Rodriguez
2014-02-21 15:59                     ` [Bridge] " Luis R. Rodriguez
2014-02-21 15:59                     ` Luis R. Rodriguez
2014-02-21 13:02                 ` Zoltan Kiss
2014-02-19  9:52       ` Ian Campbell
2014-02-17 17:52   ` Zoltan Kiss
2014-02-17 17:52   ` [Xen-devel] " Zoltan Kiss
2014-02-17 17:52     ` [Bridge] " Zoltan Kiss
2014-02-19 16:45     ` Luis R. Rodriguez
2014-02-19 16:45     ` [Xen-devel] " Luis R. Rodriguez
2014-02-19 16:45       ` [Bridge] " Luis R. Rodriguez
2014-02-19 16:45       ` Luis R. Rodriguez
2014-02-20 14:47       ` Zoltan Kiss
2014-02-20 14:47       ` [Xen-devel] " Zoltan Kiss
2014-02-20 14:47         ` [Bridge] " Zoltan Kiss
2014-02-20 20:28         ` Luis R. Rodriguez
2014-02-20 20:28         ` [Xen-devel] " Luis R. Rodriguez
2014-02-20 20:28           ` [Bridge] " Luis R. Rodriguez
2014-02-20 20:28           ` Luis R. Rodriguez
2014-02-15  2:59 ` [RFC v2 2/4] net: enables interface option to skip IP Luis R. Rodriguez
2014-02-15  2:59   ` Luis R. Rodriguez
2014-02-17 20:23   ` Dan Williams
2014-02-18 21:19     ` Luis R. Rodriguez
2014-02-18 21:42       ` Stephen Hemminger
2014-02-18 21:42       ` Stephen Hemminger
2014-02-19 17:13         ` Luis R. Rodriguez
2014-02-19 17:13         ` Luis R. Rodriguez
2014-02-19 16:45       ` Dan Williams
2014-02-19 16:45       ` Dan Williams
2014-02-19 17:20         ` Luis R. Rodriguez
2014-02-19 19:13           ` Zoltan Kiss
2014-02-19 19:13           ` Zoltan Kiss
2014-02-20 20:39             ` Luis R. Rodriguez
2014-02-21 13:02               ` Zoltan Kiss
2014-02-21 13:02               ` Zoltan Kiss
2014-02-22  1:40                 ` Luis R. Rodriguez
2014-02-22  1:40                 ` Luis R. Rodriguez
2014-02-20 20:39             ` Luis R. Rodriguez
2014-02-20  0:56           ` Dan Williams
2014-02-20  0:56           ` Dan Williams
2014-02-20  0:58             ` Hannes Frederic Sowa
2014-02-20  0:58             ` Hannes Frederic Sowa
2014-02-20  1:02               ` Dan Williams
2014-02-20  1:02               ` Dan Williams
2014-02-20 20:31             ` Luis R. Rodriguez
2014-02-20 20:31             ` Luis R. Rodriguez
2014-02-24 18:22               ` Dan Williams
2014-02-24 20:33                 ` Luis R. Rodriguez
2014-02-24 20:33                 ` Luis R. Rodriguez
2014-02-24 23:04                 ` David Miller
2014-02-24 23:04                 ` David Miller
2014-02-25  0:02                   ` Ben Hutchings
2014-02-25  0:12                     ` David Miller
2014-02-25  0:12                     ` David Miller
2014-02-25  2:01                       ` Ben Hutchings
2014-02-25  2:01                       ` Ben Hutchings
2014-02-25  2:23                         ` Hannes Frederic Sowa
2014-02-25  2:23                         ` Hannes Frederic Sowa
2014-02-25 19:50                       ` Paul Marks
2014-02-25 19:50                       ` Paul Marks
2014-02-25  0:02                   ` Ben Hutchings
2014-02-25 21:07                   ` Dan Williams
2014-02-25 21:07                   ` Dan Williams
2014-02-25 21:18                     ` David Miller
2014-02-25 21:18                     ` David Miller
2014-02-26  1:29                       ` Hannes Frederic Sowa
2014-02-26  1:29                       ` Hannes Frederic Sowa
2014-02-24 18:22               ` Dan Williams
2014-02-19 17:20         ` Luis R. Rodriguez
2014-02-18 21:19     ` Luis R. Rodriguez
2014-02-17 20:23   ` Dan Williams
2014-02-15  2:59 ` [RFC v2 3/4] xen-netback: use a random MAC address Luis R. Rodriguez
2014-02-15  2:59 ` Luis R. Rodriguez
2014-02-17 10:29   ` [Xen-devel] " David Vrabel
2014-02-18 11:22     ` Ian Campbell
2014-02-18 21:30       ` Luis R. Rodriguez
2014-02-18 21:30       ` Luis R. Rodriguez
2014-02-18 11:22     ` Ian Campbell
2014-02-17 10:29   ` David Vrabel
2014-02-15  2:59 ` [RFC v2 4/4] xen-netback: skip IPv4 and IPv6 interfaces Luis R. Rodriguez
2014-02-17 14:36   ` Zoltan Kiss
2014-02-17 14:36   ` [Xen-devel] " Zoltan Kiss
2014-02-18 20:16     ` Luis R. Rodriguez
2014-02-19  9:47       ` Ian Campbell
2014-02-19  9:47       ` Ian Campbell
2014-02-18 20:16     ` Luis R. Rodriguez
2014-02-15  2:59 ` Luis R. Rodriguez
2014-02-17 10:27 ` [Xen-devel] [RFC v2 0/4] net: bridge / ip optimizations for virtual net backends David Vrabel
2014-02-18 19:43   ` Luis R. Rodriguez
2014-02-18 19:43   ` [Xen-devel] " Luis R. Rodriguez
2014-02-19  9:48     ` Ian Campbell
2014-02-19  9:48     ` [Xen-devel] " Ian Campbell
2014-02-19 17:10       ` Luis R. Rodriguez
2014-02-19 17:10       ` [Xen-devel] " Luis R. Rodriguez
2014-02-17 10:27 ` David Vrabel

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='1392433180-16052-2-git-send-email-mcgrof__18896.3940403939$1392433316$gmane$org@do-not-panic.com' \
    --to=mcgrof@do-not-panic.com \
    --cc=bridge@lists.linux-foundation.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcgrof@suse.com \
    --cc=netdev@vger.kernel.org \
    --cc=stephen@networkplumber.org \
    --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 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.