On 5/8/21 5:08 PM, Han Zhou wrote:
> In commit b468c2c1 it avoided using DPG for multicast related lflows, but
> commit dd94f126 update the MC_UNKNOWN related lflows with DPG used again
> by mistake. This patch fixes it to avoid problems when a lflow using
> MC_UNKNOWN is monitored by a ovn-controller before the related mc-group
> is monitored, which could cause ovn-controller problem due to an
> incomplete dependency handling in I-P.
> 
> This change can be removed (and applying DPG for all the other mc-group
> related lflows) when the I-P dependency handling problem is fixed.
> 
> This change didn't address the ovn-northd-ddlog part because commit
> b468c2c1 didn't update ovn-northd-ddlog either. To be consistent, the
> ddlog change will be added together for all mc-group related flows.

At a second look, the ddlog implementation is mainly up to date wrt DPG
and unique flows.

I think we just miss the incremental below.

Regards,
Dumitru

diff --git a/northd/ovn_northd.dl b/northd/ovn_northd.dl
index ffd09c35f..147b0fcb6 100644
--- a/northd/ovn_northd.dl
+++ b/northd/ovn_northd.dl
@@ -4218,17 +4218,22 @@ for (sw in &Switch(.ls = nb::Logical_Switch{._uuid = 
ls_uuid})) {
          .actions          = "outport = get_fdb(eth.dst); next;",
          .external_ids     = map_empty());
 
-    Flow(.logical_datapath = ls_uuid,
-         .stage            = s_SWITCH_IN_L2_UNKNOWN(),
-         .priority         = 50,
-         .__match          = "outport == \"none\"",
-         .actions          = if (sw.has_unknown_ports) {
-                                 var mc_unknown = 
json_string_escape(mC_UNKNOWN().0);
-                                 "outport = ${mc_unknown}; output;"
-                             } else {
-                                 "drop;"
-                             },
-         .external_ids     = map_empty());
+    if (sw.has_unknown_ports) {
+        var mc_unknown = json_string_escape(mC_UNKNOWN().0) in
+        UniqueFlow[Flow{.logical_datapath = ls_uuid,
+                        .stage            = s_SWITCH_IN_L2_UNKNOWN(),
+                        .priority         = 50,
+                        .__match          = "outport == \"none\"",
+                        .actions          = "outport = ${mc_unknown}; output;",
+                        .external_ids     = map_empty()}]
+    } else {
+        Flow(.logical_datapath = ls_uuid,
+             .stage            = s_SWITCH_IN_L2_UNKNOWN(),
+             .priority         = 50,
+             .__match          = "outport == \"none\"",
+             .actions          = "drop;",
+             .external_ids     = map_empty())
+    };
 
     Flow(.logical_datapath = ls_uuid,
          .stage            = s_SWITCH_IN_L2_UNKNOWN(),

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

Reply via email to