diff options
author | Ben Pfaff <blp@nicira.com> | 2009-08-19 16:08:18 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2009-08-19 16:08:18 -0700 |
commit | 1d87357a1322c2faa290452c08c7f794c0be848b (patch) | |
tree | 6f23fc2348b7c35f6a95157b0322b95d4ec07568 /vswitchd/ovs-brcompatd.c | |
parent | 8fef8c7121222233075a03d57db7e0b48d5f6be5 (diff) | |
parent | 641a0a4ed0a79d53a52d4e78ce1d90140a768798 (diff) |
Merge citrix into master.
Diffstat (limited to 'vswitchd/ovs-brcompatd.c')
-rw-r--r-- | vswitchd/ovs-brcompatd.c | 8 |
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 |