xenserver: Various fixes for vif script
[openvswitch] / vswitchd / ovs-brcompatd.c
index faf1bee37cf7804d624abf1637aa46e372e48cd9..dd7ea42f7a74b6317101429efef93585b1183476 100644 (file)
@@ -479,6 +479,8 @@ del_port(const struct ovsrec_bridge *br, const char *port_name)
         }
         ovsrec_bridge_set_ports(br, ports, n);
         free(ports);
+
+        ovsrec_port_delete(port_rec);
     }
 }
 
@@ -496,8 +498,6 @@ del_bridge(const struct ovsrec_open_vswitch *ovs, const char *br_name)
 
     del_port(br, br_name);
 
-    ovsrec_bridge_delete(br);
-
     bridges = xmalloc(sizeof *ovs->bridges * ovs->n_bridges);
     for (i = n = 0; i < ovs->n_bridges; i++) {
         if (ovs->bridges[i] != br) {
@@ -507,6 +507,9 @@ del_bridge(const struct ovsrec_open_vswitch *ovs, const char *br_name)
     ovsrec_open_vswitch_set_bridges(ovs, bridges, n);
     free(bridges);
 
+    /* Delete the bridge itself. */
+    ovsrec_bridge_delete(br);
+
     VLOG_INFO("delbr %s: success", br_name);
 
     return 0;