Signed-off-by: Darrell Ball <db...@vmware.com> --- ovn/controller/binding.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/ovn/controller/binding.c b/ovn/controller/binding.c index d3ca9c9..d947329 100644 --- a/ovn/controller/binding.c +++ b/ovn/controller/binding.c @@ -181,7 +181,9 @@ binding_run(struct controller_ctx *ctx, const struct ovsrec_bridge *br_int, = shash_find_and_delete(&lports, binding_rec->logical_port); if (iface_rec || (binding_rec->parent_port && binding_rec->parent_port[0] && - sset_contains(&all_lports, binding_rec->parent_port))) { + sset_contains(&all_lports, binding_rec->parent_port)) + || ((!strcmp(binding_rec->type, "gw")) && + (binding_rec->chassis == chassis_rec))) { if (binding_rec->parent_port && binding_rec->parent_port[0]) { /* Add child logical port to the set of all local ports. */ sset_add(&all_lports, binding_rec->logical_port); @@ -207,9 +209,14 @@ binding_run(struct controller_ctx *ctx, const struct ovsrec_bridge *br_int, } } else if (binding_rec->chassis == chassis_rec) { if (ctx->ovnsb_idl_txn) { - VLOG_INFO("Releasing lport %s from this chassis.", - binding_rec->logical_port); - sbrec_port_binding_set_chassis(binding_rec, NULL); + + if (strcmp(binding_rec->type, "gw")) { + /* gw logical port bindings are not based + * on external_ids mappings */ + sbrec_port_binding_set_chassis(binding_rec, NULL); + VLOG_INFO("Releasing lport %s from this chassis.", + binding_rec->logical_port); + } } } else if (!binding_rec->chassis && !strcmp(binding_rec->type, "localnet")) { -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev