On Wed, May 10, 2017 at 11:40 AM, Tulio Ribeiro
<[email protected]> wrote:
> Hi guys, sorry to bother you again and send this direct message, but I did a
> test without using Mininet, and the problem/behavior persists.
>
> Could someone try to test this, please?
> Thanks a lot in advance.
Thanks for reporting, I think it is a bug that triggered by having the
same controller
connection settings in multiple bridges, as shown in your example.
Do you mind try the fix below and let me know if it helps? I did not
test beyond compiling it.
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 31203d1ec232..5d13a1712168 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -2704,34 +2704,31 @@ static void
refresh_controller_status(void)
{
struct bridge *br;
- struct shash info;
- const struct ovsrec_controller *cfg;
-
- shash_init(&info);
/* Accumulate status for controllers on all bridges. */
HMAP_FOR_EACH (br, node, &all_bridges) {
+ struct shash info = SHASH_INITIALIZER(&info);
ofproto_get_ofproto_controller_info(br->ofproto, &info);
- }
- /* Update each controller in the database with current status. */
- OVSREC_CONTROLLER_FOR_EACH(cfg, idl) {
- struct ofproto_controller_info *cinfo =
- shash_find_data(&info, cfg->target);
+ /* Update each controller of the bridge in the database with
+ * current status. */
+ struct ovsrec_controller **controllers;
+ size_t n_controllers = bridge_get_controllers(br, &controllers);
+ size_t i;
+ for (i = 0; i < n_controllers; i++) {
+ struct ovsrec_controller *cfg = controllers[i];
+ struct ofproto_controller_info *cinfo =
+ shash_find_data(&info, cfg->target);
- if (cinfo) {
+ ovs_assert(cinfo);
ovsrec_controller_set_is_connected(cfg, cinfo->is_connected);
ovsrec_controller_set_role(cfg, ofp12_controller_role_to_str(
- cinfo->role));
+ cinfo->role));
ovsrec_controller_set_status(cfg, &cinfo->pairs);
- } else {
- ovsrec_controller_set_is_connected(cfg, false);
- ovsrec_controller_set_role(cfg, NULL);
- ovsrec_controller_set_status(cfg, NULL);
}
- }
- ofproto_free_ofproto_controller_info(&info);
+ ofproto_free_ofproto_controller_info(&info);
+ }
}
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss