[ovs-dev] [PATCH] physical: Preserve output port across multicast group output.

Ben Pfaff blp at nicira.com
Fri Oct 2 19:45:46 UTC 2015


Otherwise actions like this would not output to the same set of ports
for each output action (the second output would only forward to the
last port from the first output action):

    outport = "_MC_FLOOD"; output; output;

Obviously it's a corner case but it still seems worth implementing
correctly.

Found by inspection.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 ovn/controller/physical.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/ovn/controller/physical.c b/ovn/controller/physical.c
index efa34a2..0c239df 100644
--- a/ovn/controller/physical.c
+++ b/ovn/controller/physical.c
@@ -527,6 +527,10 @@ physical_run(struct controller_ctx *ctx, enum mf_field_id mff_ovn_geneve,
          * any. */
         bool local_ports = ofpacts.size > 0;
         if (local_ports) {
+            /* Following delivery to local logical ports, restore the multicast
+             * group as the logical output port. */
+            put_load(mc->tunnel_key, MFF_LOG_OUTPORT, 0, 32, &ofpacts);
+
             ofctrl_add_flow(flow_table, OFTABLE_LOCAL_OUTPUT, 100,
                             &match, &ofpacts);
         }
-- 
2.1.3




More information about the dev mailing list