aboutsummaryrefslogtreecommitdiff
path: root/vswitchd
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-03-02 13:26:35 -0800
committerBen Pfaff <blp@nicira.com>2012-03-05 13:13:54 -0800
commit5aebcc661392c52409d44618c24651ed92bd6ff2 (patch)
tree43f68127a86220ab9c1aefbc224b9a12ac1ceea1 /vswitchd
parentb84642dc9ac1e08d802f37d0de31d920db2bdffa (diff)
bridge: Remove unwanted ports at time of ofproto creation.
The reconfiguration code only deleted unwanted ports for bridges that had been created in previous (re)configurations. In fact, we should run this step even for bridges that are newly added, e.g. to delete ports that were added by a previous run of ovs-vswitchd and deleted from the database between runs. Before this commit, the following left "int" in datapath br0. After this commit, "int" is properly deleted: 1. With ovs-vswitchd running: # ovs-vsctl add-br br0 # ovs-vsctl add-port br0 int -- set interface int type=internal 2. Kill ovs-vswitchd, then: # ovs-vsctl --no-wait -- del-port br0 int 3. Restart ovs-vswitchd. Bug #9957. Reported-by: Hiroshi Tanaka <htanaka@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'vswitchd')
-rw-r--r--vswitchd/bridge.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index b504b85b..5e2ad697 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -432,8 +432,12 @@ bridge_reconfigure(const struct ovsrec_open_vswitch *ovs_cfg)
* has at least one iface, every "struct iface" has a valid ofp_port and
* netdev. */
HMAP_FOR_EACH_SAFE (br, next, node, &all_bridges) {
- if (!br->ofproto && !bridge_add_ofprotos(br)) {
- bridge_destroy(br);
+ if (!br->ofproto) {
+ if (bridge_add_ofprotos(br)) {
+ bridge_del_ofproto_ports(br);
+ } else {
+ bridge_destroy(br);
+ }
}
}
HMAP_FOR_EACH (br, node, &all_bridges) {