[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