This adds a new WITH_DP_GROUP() macro that can be used as an argument to
ovn_lflow_add().

This commit converts all uses of ovn_lflow_add_with_dp_group() to
ovn_lflow_add().

Signed-off-by: Mark Michelson <[email protected]>
---
 northd/lflow-mgr.c |  8 ++++
 northd/lflow-mgr.h | 11 ++----
 northd/northd.c    | 96 +++++++++++++++++++++++++++-------------------
 3 files changed, 68 insertions(+), 47 deletions(-)

diff --git a/northd/lflow-mgr.c b/northd/lflow-mgr.c
index bdd290814..7f7288416 100644
--- a/northd/lflow-mgr.c
+++ b/northd/lflow-mgr.c
@@ -776,6 +776,14 @@ lflow_table_add_lflow(struct lflow_table *lflow_table,
 void
 lflow_table_add_lflow__(struct lflow_table_add_args *args)
 {
+    /* It is invalid for both args.dp_bitmap and args.od to be
+     * Non-NULL. We favor the non-NULL args.dp_bitmap over the
+     * non-NULL args.od
+     */
+    if (args->dp_bitmap) {
+        args->od = NULL;
+    }
+
     lflow_table_add_lflow(args->table, args->od, args->dp_bitmap,
                           args->dp_bitmap_len, args->stage, args->priority,
                           args->match, args->actions, args->io_port,
diff --git a/northd/lflow-mgr.h b/northd/lflow-mgr.h
index 8eb69c958..bacfd25b6 100644
--- a/northd/lflow-mgr.h
+++ b/northd/lflow-mgr.h
@@ -107,6 +107,9 @@ void lflow_table_add_lflow(struct lflow_table *, const 
struct ovn_datapath *,
 
 
 #define WITH_HINT(HINT) .stage_hint = HINT
+#define WITH_DP_GROUP(DP_BITMAP, DP_BITMAP_LEN) \
+    .dp_bitmap = DP_BITMAP, \
+    .dp_bitmap_len = DP_BITMAP_LEN
 /* The IN_OUT_PORT argument tells the lport name that appears in the MATCH,
  * which helps ovn-controller to bypass lflows parsing when the lport is
  * not local to the chassis. The critiera of the lport to be added using this
@@ -120,14 +123,6 @@ void lflow_table_add_lflow(struct lflow_table *, const 
struct ovn_datapath *,
 #define WITH_IO_PORT(IO_PORT) .io_port = IO_PORT
 #define WITH_CTRL_METER(CTRL_METER) .ctrl_meter = CTRL_METER
 
-/* Adds a row with the specified contents to the Logical_Flow table. */
-#define ovn_lflow_add_with_dp_group(LFLOW_TABLE, DP_BITMAP, DP_BITMAP_LEN, \
-                                    STAGE, PRIORITY, MATCH, ACTIONS, \
-                                    STAGE_HINT, LFLOW_REF) \
-    lflow_table_add_lflow(LFLOW_TABLE, NULL, DP_BITMAP, DP_BITMAP_LEN, STAGE, \
-                          PRIORITY, MATCH, ACTIONS, NULL, NULL, STAGE_HINT, \
-                          OVS_SOURCE_LOCATOR, NULL, LFLOW_REF)
-
 /* Adds a row with the specified contents to the Logical_Flow table. */
 #define ovn_lflow_add_default_drop(LFLOW_TABLE, OD, STAGE, LFLOW_REF, ...) \
     ovn_lflow_add(LFLOW_TABLE, OD, STAGE, 0, "1", debug_drop_action(), \
diff --git a/northd/northd.c b/northd/northd.c
index e45d00e1f..17da62d97 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -8092,10 +8092,11 @@ build_lb_rules_pre_stateful(struct lflow_table *lflows,
                           lb_vip->port_str);
         }
 
-        ovn_lflow_add_with_dp_group(
-            lflows, lb_dps->nb_ls_map.map, ods_size(ls_datapaths),
-            S_SWITCH_IN_PRE_STATEFUL, 120, ds_cstr(match), ds_cstr(action),
-            &lb->nlb->header_, lb_dps->lflow_ref);
+        ovn_lflow_add(
+            lflows, NULL, S_SWITCH_IN_PRE_STATEFUL, 120, ds_cstr(match),
+            ds_cstr(action), lb_dps->lflow_ref,
+            WITH_HINT(&lb->nlb->header_),
+            WITH_DP_GROUP(lb_dps->nb_ls_map.map, ods_size(ls_datapaths)));
 
         struct lflow_ref *lflow_ref = lb_dps->lflow_ref;
         struct hmapx_node *hmapx_node;
@@ -8201,10 +8202,12 @@ build_lb_affinity_lr_flows(struct lflow_table *lflows,
     }
 
     /* Create affinity check flow. */
-    ovn_lflow_add_with_dp_group(
-        lflows, dp_bitmap, ods_size(lr_datapaths), S_ROUTER_IN_LB_AFF_CHECK,
+    ovn_lflow_add(
+        lflows, NULL, S_ROUTER_IN_LB_AFF_CHECK,
         100, new_lb_match, REGBIT_KNOWN_LB_SESSION" = chk_lb_aff(); next;",
-        &lb->nlb->header_, lflow_ref);
+        lflow_ref,
+        WITH_HINT(&lb->nlb->header_),
+        WITH_DP_GROUP(dp_bitmap, ods_size(lr_datapaths)));
 
     /* Prepare common part of affinity LB and affinity learn action. */
     ds_put_cstr(&aff_action_learn, "commit_lb_aff(vip = \"");
@@ -8282,17 +8285,20 @@ build_lb_affinity_lr_flows(struct lflow_table *lflows,
                       lb->affinity_timeout);
 
         /* Forward to OFTABLE_CHK_LB_AFFINITY table to store flow tuple. */
-        ovn_lflow_add_with_dp_group(
-            lflows, dp_bitmap, ods_size(lr_datapaths),
-            S_ROUTER_IN_LB_AFF_LEARN, 100, ds_cstr(&aff_match_learn),
-            ds_cstr(&aff_action_learn), &lb->nlb->header_,
-            lflow_ref);
+        ovn_lflow_add(
+            lflows, NULL, S_ROUTER_IN_LB_AFF_LEARN, 100,
+            ds_cstr(&aff_match_learn),
+            ds_cstr(&aff_action_learn),
+            lflow_ref,
+            WITH_HINT(&lb->nlb->header_),
+            WITH_DP_GROUP(dp_bitmap, ods_size(lr_datapaths)));
 
         /* Use already selected backend within affinity timeslot. */
-        ovn_lflow_add_with_dp_group(
-            lflows, dp_bitmap, ods_size(lr_datapaths), S_ROUTER_IN_DNAT, 150,
-            ds_cstr(&aff_match), ds_cstr(&aff_action), &lb->nlb->header_,
-            lflow_ref);
+        ovn_lflow_add(
+            lflows, NULL, S_ROUTER_IN_DNAT, 150,
+            ds_cstr(&aff_match), ds_cstr(&aff_action), lflow_ref,
+            WITH_HINT(&lb->nlb->header_),
+            WITH_DP_GROUP(dp_bitmap, ods_size(lr_datapaths)));
 
         ds_truncate(&aff_action, aff_action_len);
         ds_truncate(&aff_action_learn, aff_action_learn_len);
@@ -8372,10 +8378,12 @@ build_lb_affinity_ls_flows(struct lflow_table *lflows,
 
     static char *aff_check = REGBIT_KNOWN_LB_SESSION" = chk_lb_aff(); next;";
 
-    ovn_lflow_add_with_dp_group(
-        lflows, lb_dps->nb_ls_map.map, ods_size(ls_datapaths),
+    ovn_lflow_add(
+        lflows, NULL,
         S_SWITCH_IN_LB_AFF_CHECK, 100, ds_cstr(&new_lb_match), aff_check,
-        &lb_dps->lb->nlb->header_, lflow_ref);
+        lflow_ref,
+        WITH_HINT(&lb_dps->lb->nlb->header_),
+        WITH_DP_GROUP(lb_dps->nb_ls_map.map, ods_size(ls_datapaths)));
     ds_destroy(&new_lb_match);
 
     struct ds aff_action = DS_EMPTY_INITIALIZER;
@@ -8454,17 +8462,20 @@ build_lb_affinity_ls_flows(struct lflow_table *lflows,
                       lb->affinity_timeout);
 
         /* Forward to OFTABLE_CHK_LB_AFFINITY table to store flow tuple. */
-        ovn_lflow_add_with_dp_group(
-            lflows, lb_dps->nb_ls_map.map, ods_size(ls_datapaths),
+        ovn_lflow_add(
+            lflows, NULL,
             S_SWITCH_IN_LB_AFF_LEARN, 100, ds_cstr(&aff_match_learn),
-            ds_cstr(&aff_action_learn), &lb->nlb->header_,
-            lflow_ref);
+            ds_cstr(&aff_action_learn), lflow_ref,
+            WITH_HINT(&lb->nlb->header_),
+            WITH_DP_GROUP(lb_dps->nb_ls_map.map, ods_size(ls_datapaths)));
 
         /* Use already selected backend within affinity timeslot. */
-        ovn_lflow_add_with_dp_group(
-            lflows, lb_dps->nb_ls_map.map, ods_size(ls_datapaths),
+        ovn_lflow_add(
+            lflows, NULL,
             S_SWITCH_IN_LB, 150, ds_cstr(&aff_match), ds_cstr(&aff_action),
-            &lb->nlb->header_, lflow_ref);
+            lflow_ref,
+            WITH_HINT(&lb->nlb->header_),
+            WITH_DP_GROUP(lb_dps->nb_ls_map.map, ods_size(ls_datapaths)));
 
         ds_truncate(&aff_action, aff_action_len);
         ds_truncate(&aff_action_learn, aff_action_learn_len);
@@ -8590,11 +8601,14 @@ build_lb_rules(struct lflow_table *lflows, struct 
ovn_lb_datapaths *lb_dps,
             }
         }
         if (!reject || build_non_meter) {
-            ovn_lflow_add_with_dp_group(
-                lflows, dp_non_meter ? dp_non_meter : lb_dps->nb_ls_map.map,
-                ods_size(ls_datapaths), S_SWITCH_IN_LB, priority,
-                ds_cstr(match), ds_cstr(action), &lb->nlb->header_,
-                lb_dps->lflow_ref);
+            ovn_lflow_add(
+                lflows, NULL, S_SWITCH_IN_LB, priority,
+                ds_cstr(match), ds_cstr(action), lb_dps->lflow_ref,
+                WITH_HINT(&lb->nlb->header_),
+                WITH_DP_GROUP(dp_non_meter ?
+                              dp_non_meter :
+                              lb_dps->nb_ls_map.map,
+                              ods_size(ls_datapaths)));
         }
         bitmap_free(dp_non_meter);
     }
@@ -12806,10 +12820,13 @@ build_gw_lrouter_nat_flows_for_lb(struct 
lrouter_nat_lb_flows_ctx *ctx,
         }
     }
     if (!ctx->reject || build_non_meter) {
-        ovn_lflow_add_with_dp_group(ctx->lflows,
-            dp_non_meter ? dp_non_meter : dp_bitmap, ods_size(lr_datapaths),
-            S_ROUTER_IN_DNAT, ctx->prio, ds_cstr(ctx->new_match),
-            ctx->new_action[type], &ctx->lb->nlb->header_, lflow_ref);
+        ovn_lflow_add(ctx->lflows, NULL,
+                      S_ROUTER_IN_DNAT, ctx->prio, ds_cstr(ctx->new_match),
+                      ctx->new_action[type], lflow_ref,
+                      WITH_HINT(&ctx->lb->nlb->header_),
+                      WITH_DP_GROUP(dp_non_meter ?
+                                    dp_non_meter :
+                                    dp_bitmap, ods_size(lr_datapaths)));
     }
     bitmap_free(dp_non_meter);
 }
@@ -13086,10 +13103,11 @@ build_lrouter_defrag_flows_for_lb(struct 
ovn_lb_datapaths *lb_dps,
         ds_put_format(match, "ip && ip%c.dst == %s", ipv6 ? '6' : '4',
                       lb_vip->vip_str);
 
-        ovn_lflow_add_with_dp_group(
-            lflows, lb_dps->nb_lr_map.map, ods_size(lr_datapaths),
-            S_ROUTER_IN_DEFRAG, prio, ds_cstr(match), "ct_dnat;",
-            &lb_dps->lb->nlb->header_, lb_dps->lflow_ref);
+        ovn_lflow_add(
+            lflows, NULL, S_ROUTER_IN_DEFRAG, prio, ds_cstr(match),
+            "ct_dnat;", lb_dps->lflow_ref,
+            WITH_HINT(&lb_dps->lb->nlb->header_),
+            WITH_DP_GROUP(lb_dps->nb_lr_map.map, ods_size(lr_datapaths)));
     }
 }
 
-- 
2.51.1

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

Reply via email to