This changes lflow_table_add_lflow() to take an ovn_synced_datapath instead of ovn_datapath.
Signed-off-by: Mark Michelson <[email protected]> --- northd/lflow-mgr.c | 34 ++++++++++++++++++---------------- northd/lflow-mgr.h | 38 ++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/northd/lflow-mgr.c b/northd/lflow-mgr.c index a1b1d876e..21a47021b 100644 --- a/northd/lflow-mgr.c +++ b/northd/lflow-mgr.c @@ -76,10 +76,11 @@ static void ovn_dp_group_use(struct ovn_dp_group *); static void ovn_dp_group_release(struct hmap *dp_groups, struct ovn_dp_group *); static void ovn_dp_group_destroy(struct ovn_dp_group *dpg); -static void ovn_dp_group_add_with_reference(struct ovn_lflow *, - const struct ovn_datapath *od, - const unsigned long *dp_bitmap, - size_t bitmap_len); +static void ovn_dp_group_add_with_reference( + struct ovn_lflow *, + const struct ovn_synced_datapath *sdp, + const unsigned long *dp_bitmap, + size_t bitmap_len); static bool lflow_ref_sync_lflows__( struct lflow_ref *, struct lflow_table *, @@ -740,7 +741,7 @@ lflow_ref_sync_lflows(struct lflow_ref *lflow_ref, */ void lflow_table_add_lflow(struct lflow_table *lflow_table, - const struct ovn_datapath *od, + const struct ovn_synced_datapath *sdp, const unsigned long *dp_bitmap, size_t dp_bitmap_len, const struct ovn_stage *stage, uint16_t priority, const char *match, const char *actions, @@ -753,8 +754,9 @@ lflow_table_add_lflow(struct lflow_table *lflow_table, struct ovs_mutex *hash_lock; uint32_t hash; - ovs_assert(!od || - ovn_stage_to_datapath_type(stage) == ovn_datapath_get_type(od)); + ovs_assert(!sdp || + ovn_stage_to_datapath_type(stage) == + ovn_datapath_type_from_string(datapath_get_nb_type(sdp->sb_dp))); hash = ovn_logical_flow_hash(ovn_stage_get_table(stage), ovn_stage_get_pipeline(stage), @@ -764,7 +766,7 @@ lflow_table_add_lflow(struct lflow_table *lflow_table, hash_lock = lflow_hash_lock(&lflow_table->entries, hash); struct ovn_lflow *lflow = do_ovn_lflow_add(lflow_table, - od ? ods_size(od->datapaths) : dp_bitmap_len, + sdp ? sdp->dps->dps_array.len : dp_bitmap_len, hash, stage, priority, match, actions, io_port, ctrl_meter, stage_hint, where, flow_desc); @@ -775,12 +777,12 @@ lflow_table_add_lflow(struct lflow_table *lflow_table, lrn = xzalloc(sizeof *lrn); lrn->lflow = lflow; lrn->lflow_ref = lflow_ref; - lrn->dpgrp_lflow = !od; + lrn->dpgrp_lflow = !sdp; if (lrn->dpgrp_lflow) { lrn->dpgrp_bitmap = bitmap_clone(dp_bitmap, dp_bitmap_len); lrn->dpgrp_bitmap_len = dp_bitmap_len; } else { - lrn->dp_index = od->sdp->index; + lrn->dp_index = sdp->index; } ovs_list_insert(&lflow->referenced_by, &lrn->ref_list_node); hmap_insert(&lflow_ref->lflow_ref_nodes, &lrn->ref_node, hash); @@ -806,19 +808,19 @@ lflow_table_add_lflow(struct lflow_table *lflow_table, lrn->linked = true; } - ovn_dp_group_add_with_reference(lflow, od, dp_bitmap, dp_bitmap_len); + ovn_dp_group_add_with_reference(lflow, sdp, dp_bitmap, dp_bitmap_len); lflow_hash_unlock(hash_lock); } void lflow_table_add_lflow_default_drop(struct lflow_table *lflow_table, - const struct ovn_datapath *od, + const struct ovn_synced_datapath *sdp, const struct ovn_stage *stage, const char *where, struct lflow_ref *lflow_ref) { - lflow_table_add_lflow(lflow_table, od, NULL, 0, stage, 0, "1", + lflow_table_add_lflow(lflow_table, sdp, NULL, 0, stage, 0, "1", debug_drop_action(), NULL, NULL, NULL, where, NULL, lflow_ref); } @@ -1332,13 +1334,13 @@ ovn_sb_insert_or_update_logical_dp_group( * hash lock is already taken. */ static void ovn_dp_group_add_with_reference(struct ovn_lflow *lflow_ref, - const struct ovn_datapath *od, + const struct ovn_synced_datapath *sdp, const unsigned long *dp_bitmap, size_t bitmap_len) OVS_REQUIRES(fake_hash_mutex) { - if (od) { - dynamic_bitmap_set1(&lflow_ref->dpg_bitmap, od->sdp->index); + if (sdp) { + dynamic_bitmap_set1(&lflow_ref->dpg_bitmap, sdp->index); } if (dp_bitmap) { dynamic_bitmap_or(&lflow_ref->dpg_bitmap, dp_bitmap, bitmap_len); diff --git a/northd/lflow-mgr.h b/northd/lflow-mgr.h index cbd9f9e03..9d9904c1e 100644 --- a/northd/lflow-mgr.h +++ b/northd/lflow-mgr.h @@ -76,7 +76,8 @@ bool lflow_ref_sync_lflows(struct lflow_ref *, const struct sbrec_logical_dp_group_table *); -void lflow_table_add_lflow(struct lflow_table *, const struct ovn_datapath *, +void lflow_table_add_lflow(struct lflow_table *, + const struct ovn_synced_datapath *, const unsigned long *dp_bitmap, size_t dp_bitmap_len, const struct ovn_stage *stage, uint16_t priority, const char *match, @@ -86,7 +87,7 @@ void lflow_table_add_lflow(struct lflow_table *, const struct ovn_datapath *, const char *where, const char *flow_desc, struct lflow_ref *); void lflow_table_add_lflow_default_drop(struct lflow_table *, - const struct ovn_datapath *, + const struct ovn_synced_datapath *, const struct ovn_stage *stage, const char *where, struct lflow_ref *); @@ -95,14 +96,14 @@ void lflow_table_add_lflow_default_drop(struct lflow_table *, #define ovn_lflow_add_with_hint__(LFLOW_TABLE, OD, STAGE, PRIORITY, MATCH, \ ACTIONS, IN_OUT_PORT, CTRL_METER, \ STAGE_HINT, LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, PRIORITY, MATCH, \ - ACTIONS, IN_OUT_PORT, CTRL_METER, STAGE_HINT, \ - OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, PRIORITY, \ + MATCH, ACTIONS, IN_OUT_PORT, CTRL_METER, \ + STAGE_HINT, OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) #define ovn_lflow_add_with_hint(LFLOW_TABLE, OD, STAGE, PRIORITY, MATCH, \ ACTIONS, STAGE_HINT, LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, PRIORITY, MATCH, \ - ACTIONS, NULL, NULL, STAGE_HINT, \ + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, PRIORITY, \ + MATCH, ACTIONS, NULL, NULL, STAGE_HINT, \ OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) #define ovn_lflow_add_with_dp_group(LFLOW_TABLE, DP_BITMAP, DP_BITMAP_LEN, \ @@ -113,7 +114,7 @@ void lflow_table_add_lflow_default_drop(struct lflow_table *, OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) #define ovn_lflow_add_default_drop(LFLOW_TABLE, OD, STAGE, LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, 0, "1", \ + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, 0, "1", \ debug_drop_action(), NULL, NULL, NULL, \ OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) @@ -131,29 +132,30 @@ void lflow_table_add_lflow_default_drop(struct lflow_table *, #define ovn_lflow_add_with_lport_and_hint(LFLOW_TABLE, OD, STAGE, PRIORITY, \ MATCH, ACTIONS, IN_OUT_PORT, \ STAGE_HINT, LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, PRIORITY, MATCH, \ - ACTIONS, IN_OUT_PORT, NULL, STAGE_HINT, \ + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, PRIORITY, \ + MATCH, ACTIONS, IN_OUT_PORT, NULL, STAGE_HINT, \ OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) #define ovn_lflow_add(LFLOW_TABLE, OD, STAGE, PRIORITY, MATCH, ACTIONS, \ LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, PRIORITY, MATCH, \ - ACTIONS, NULL, NULL, NULL, OVS_SOURCE_LOCATOR, \ - NULL, LFLOW_REF) + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, PRIORITY, \ + MATCH, ACTIONS, NULL, NULL, NULL, \ + OVS_SOURCE_LOCATOR, NULL, LFLOW_REF) #define ovn_lflow_add_drop_with_desc(LFLOW_TABLE, OD, STAGE, PRIORITY, MATCH, \ DESCRIPTION, LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, PRIORITY, MATCH, \ - debug_drop_action(), NULL, NULL, NULL, \ + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, PRIORITY, \ + MATCH, debug_drop_action(), NULL, NULL, NULL, \ OVS_SOURCE_LOCATOR, DESCRIPTION, LFLOW_REF) #define ovn_lflow_add_drop_with_lport_hint_and_desc(LFLOW_TABLE, OD, STAGE, \ PRIORITY, MATCH, \ IN_OUT_PORT, STAGE_HINT, \ DESCRIPTION, LFLOW_REF) \ - lflow_table_add_lflow(LFLOW_TABLE, OD, NULL, 0, STAGE, PRIORITY, MATCH, \ - debug_drop_action(), IN_OUT_PORT, NULL, STAGE_HINT, \ - OVS_SOURCE_LOCATOR, DESCRIPTION, LFLOW_REF) + lflow_table_add_lflow(LFLOW_TABLE, OD->sdp, NULL, 0, STAGE, PRIORITY, \ + MATCH, debug_drop_action(), IN_OUT_PORT, NULL, \ + STAGE_HINT, OVS_SOURCE_LOCATOR, DESCRIPTION, \ + LFLOW_REF) #define ovn_lflow_metered(LFLOW_TABLE, OD, STAGE, PRIORITY, MATCH, ACTIONS, \ CTRL_METER, LFLOW_REF) \ -- 2.51.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
