Signed-off-by: Xavier Simonart <[email protected]>
---
 controller/physical.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/controller/physical.c b/controller/physical.c
index 8d5065098..6b93696fa 100644
--- a/controller/physical.c
+++ b/controller/physical.c
@@ -2194,15 +2194,15 @@ consider_mc_group(struct ovsdb_idl_index 
*sbrec_port_binding_by_name,
         }
 
         int zone_id = ct_zone_find_zone(ct_zones, port->logical_port);
-        if (zone_id) {
-            put_load(zone_id, MFF_LOG_CT_ZONE, 0, 16, &ofpacts);
-        }
 
         const char *lport_name = (port->parent_port && *port->parent_port) ?
                                   port->parent_port : port->logical_port;
 
         if (!strcmp(port->type, "patch")) {
             if (ldp->is_transit_switch) {
+                if (zone_id) {
+                    put_load(zone_id, MFF_LOG_CT_ZONE, 0, 16, &ofpacts);
+                }
                 local_output_pb(port->tunnel_key, &ofpacts);
             } else {
                 remote_ramp_ports = true;
@@ -2218,8 +2218,14 @@ consider_mc_group(struct ovsdb_idl_index 
*sbrec_port_binding_by_name,
                     || is_additional_chassis(port, chassis))
                    && (local_binding_get_primary_pb(local_bindings, lport_name)
                        || !strcmp(port->type, "l3gateway"))) {
+            if (zone_id) {
+                put_load(zone_id, MFF_LOG_CT_ZONE, 0, 16, &ofpacts);
+            }
             local_output_pb(port->tunnel_key, &ofpacts);
         } else if (simap_contains(patch_ofports, port->logical_port)) {
+            if (zone_id) {
+                put_load(zone_id, MFF_LOG_CT_ZONE, 0, 16, &ofpacts);
+            }
             local_output_pb(port->tunnel_key, &ofpacts);
         } else if (!strcmp(port->type, "chassisredirect")
                    && port->chassis == chassis) {
@@ -2231,6 +2237,9 @@ consider_mc_group(struct ovsdb_idl_index 
*sbrec_port_binding_by_name,
                                            distributed_port);
                 if (distributed_binding
                     && port->datapath == distributed_binding->datapath) {
+                    if (zone_id) {
+                        put_load(zone_id, MFF_LOG_CT_ZONE, 0, 16, &ofpacts);
+                    }
                     local_output_pb(distributed_binding->tunnel_key, &ofpacts);
                 }
             }
-- 
2.31.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to