Blob Blame History Raw
From fab3da1fc7a88dfbe2275fa0eccb798444eae385 Mon Sep 17 00:00:00 2001
From: Flavio Leitner <fbl@redhat.com>
Date: Tue, 1 Apr 2014 18:05:20 -0300
Subject: [PATCH] bridge: don't bring up internal ports by default.

It should be an administrator task to bring up devices as they
are configured properly.

Currently, Fedora is deleting the bridges when the interface is
brought down. Therefore, there is no bridge on the next boot and
the initscripts can apply the networking configuration properly
for a new bridge.

However, if the system didn't execute ifdown for some reason, the
bridge is left in the ovsdb and since internal ports are brought
up by default, there is no way for initscripts to known if the
adminitrator has already configured it or not.

This patch reverts commit bef071a5fdf8e2dd87677b04b3cf7a8f5094edcb
(bridge: Always "up" internal devices.).

Signed-off-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
---
 NEWS                  |  5 +++++
 tests/ofproto-dpif.at |  4 ++--
 tests/ofproto.at      | 16 ++++++++--------
 vswitchd/bridge.c     |  3 +--
 4 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/NEWS b/NEWS
index 839b4dd..91d9194 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+Backported from upstream:
+   - Internal ports are no longer brought up by default, because it
+     should be an administrator task to bring up devices as they are
+     configured properly.
+
 v2.1.0 - 19 Mar 2014
 ---------------------
    - Address prefix tracking support for flow tables.  New columns
diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
index 1a58da6..fbd40ff 100644
--- a/tests/ofproto-dpif.at
+++ b/tests/ofproto-dpif.at
@@ -1937,7 +1937,7 @@ IFCOUNTERS
 	type=6
 	ifspeed=100000000
 	direction=0
-	status=3
+	status=0
 	in_octets=0
 	in_unicasts=0
 	in_multicasts=0
@@ -2006,7 +2006,7 @@ IFCOUNTERS
 	type=6
 	ifspeed=100000000
 	direction=0
-	status=3
+	status=0
 	in_octets=0
 	in_unicasts=0
 	in_multicasts=0
diff --git a/tests/ofproto.at b/tests/ofproto.at
index f6a62cd..dd56b39 100644
--- a/tests/ofproto.at
+++ b/tests/ofproto.at
@@ -38,8 +38,8 @@ n_tables:254, n_buffers:256
 capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
 actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
  LOCAL(br0): addr:aa:55:aa:55:00:00
-     config:     0
-     state:      0
+     config:     PORT_DOWN
+     state:      LINK_DOWN
      speed: 0 Mbps now, 0 Mbps max
 OFPT_GET_CONFIG_REPLY: frags=normal miss_send_len=0
 ])
@@ -68,8 +68,8 @@ actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_N
      state:      LINK_DOWN
      speed: 0 Mbps now, 0 Mbps max
  LOCAL(br0): addr:aa:55:aa:55:00:0x
-     config:     0
-     state:      0
+     config:     PORT_DOWN
+     state:      LINK_DOWN
      speed: 0 Mbps now, 0 Mbps max
 OFPT_GET_CONFIG_REPLY: frags=normal miss_send_len=0
 ])
@@ -109,8 +109,8 @@ AT_CHECK([ovs-ofctl -vwarn dump-ports-desc br0], [0], [stdout])
 AT_CHECK([STRIP_XIDS stdout], [0], [dnl
 OFPST_PORT_DESC reply:
  LOCAL(br0): addr:aa:55:aa:55:00:00
-     config:     0
-     state:      0
+     config:     PORT_DOWN
+     state:      LINK_DOWN
      speed: 0 Mbps now, 0 Mbps max
 ])
 OVS_VSWITCHD_STOP
@@ -124,8 +124,8 @@ AT_CHECK([ovs-ofctl -O OpenFlow12 -vwarn dump-ports-desc br0], [0], [stdout])
 AT_CHECK([STRIP_XIDS stdout], [0], [dnl
 OFPST_PORT_DESC reply (OF1.2):
  LOCAL(br0): addr:aa:55:aa:55:00:00
-     config:     0
-     state:      0
+     config:     PORT_DOWN
+     state:      LINK_DOWN
      speed: 0 Mbps now, 0 Mbps max
 ])
 OVS_VSWITCHD_STOP
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index b72f0d8..5b81d62 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -1448,8 +1448,7 @@ iface_do_create(const struct bridge *br,
     VLOG_INFO("bridge %s: added interface %s on port %d",
               br->name, iface_cfg->name, *ofp_portp);
 
-    if ((port_cfg->vlan_mode && !strcmp(port_cfg->vlan_mode, "splinter"))
-        || iface_is_internal(iface_cfg, br->cfg)) {
+    if (port_cfg->vlan_mode && !strcmp(port_cfg->vlan_mode, "splinter")) {
         netdev_turn_flags_on(netdev, NETDEV_UP, NULL);
     }
 
-- 
1.8.5.3