[ovs-dev] [PATCH 11/14] Support physical endpoint based binding for SW gateway logical ports

Darrell Ball dlu998 at gmail.com
Thu Mar 17 03:15:16 UTC 2016


Signed-off-by: Darrell Ball <dball at 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




More information about the dev mailing list