From cd786de2018b72b1aa8e8435dd2db50665dab5ad Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Fri, 2 Mar 2012 13:26:35 -0800 Subject: [PATCH] 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 Signed-off-by: Ben Pfaff --- AUTHORS | 1 + vswitchd/bridge.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index 150d1bbf1..27b6025ba 100644 --- a/AUTHORS +++ b/AUTHORS @@ -87,6 +87,7 @@ Gregor Schaffrath grsch@net.t-labs.tu-berlin.de Hassan Khan hassan.khan@seecs.edu.pk Hector Oron hector.oron@gmail.com Henrik Amren henrik@nicira.com +Hiroshi Tanaka htanaka@nicira.com Jad Naous jnaous@gmail.com Jamal Hadi Salim hadi@cyberus.ca Jan Medved jmedved@juniper.net diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index d9efdc397..e09b552ad 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -434,8 +434,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) { -- 2.20.1