aboutsummaryrefslogtreecommitdiff
path: root/vswitchd/ovs-brcompatd.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2009-08-19 16:08:18 -0700
committerBen Pfaff <blp@nicira.com>2009-08-19 16:08:18 -0700
commit1d87357a1322c2faa290452c08c7f794c0be848b (patch)
tree6f23fc2348b7c35f6a95157b0322b95d4ec07568 /vswitchd/ovs-brcompatd.c
parent8fef8c7121222233075a03d57db7e0b48d5f6be5 (diff)
parent641a0a4ed0a79d53a52d4e78ce1d90140a768798 (diff)
Merge citrix into master.
Diffstat (limited to 'vswitchd/ovs-brcompatd.c')
-rw-r--r--vswitchd/ovs-brcompatd.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/vswitchd/ovs-brcompatd.c b/vswitchd/ovs-brcompatd.c
index 39844f69..d351c059 100644
--- a/vswitchd/ovs-brcompatd.c
+++ b/vswitchd/ovs-brcompatd.c
@@ -790,6 +790,7 @@ handle_get_bridges_cmd(struct ofpbuf *buffer)
/* Get all the real bridges and all the fake ones. */
cfg_read();
+ svec_init(&bridges);
cfg_get_subsections(&bridges, "bridge");
SVEC_FOR_EACH (i, br_name, &bridges) {
const char *iface_name;
@@ -840,6 +841,8 @@ handle_get_ports_cmd(struct ofpbuf *buffer)
svec_init(&ports);
get_bridge_ports(ovs_bridge, &ports, br_vlan);
+ svec_sort(&ports);
+ svec_del(&ports, linux_bridge);
send_ifindex_reply(seq, &ports); /* XXX bonds won't show up */
svec_destroy(&ports);
@@ -967,7 +970,6 @@ rtnl_recv_update(void)
const char *port_name = nl_attr_get_string(attrs[IFLA_IFNAME]);
char br_name[IFNAMSIZ];
uint32_t br_idx = nl_attr_get_u32(attrs[IFLA_MASTER]);
- struct svec ports;
if (!if_indextoname(br_idx, br_name)) {
ofpbuf_delete(buf);
@@ -983,8 +985,11 @@ rtnl_recv_update(void)
if (!netdev_exists(port_name)) {
/* Network device is really gone. */
+ struct svec ports;
+
VLOG_INFO("network device %s destroyed, "
"removing from bridge %s", port_name, br_name);
+
svec_init(&ports);
cfg_get_all_keys(&ports, "bridge.%s.port", br_name);
svec_sort(&ports);
@@ -992,6 +997,7 @@ rtnl_recv_update(void)
del_port(br_name, port_name);
rewrite_and_reload_config();
}
+ svec_destroy(&ports);
} else {
/* A network device by that name exists even though the kernel
* told us it had disappeared. Probably, what happened was