On Wed, Jan 14, 2026 at 9:45 PM Mark Michelson via dev < [email protected]> wrote:
> The lflow_table_add_lflow() function takes 13 arguments. Many helper > macros exist to facilitate filling in those 13 arguments without having > to spell them all out every time. Unfortunately, the amount of different > macros has gotten a bit out of hand. Some macros, like > ovn_lflow_add_with_hint__() have misleading names. Some macros, like > ovn_lflow_add_drop_with_lport_hint_and_desc() have horribly unwieldy > names. Trying to add a new macro to the list is a minefield since you > need to cherry-pick exactly which arguments the new macro should require > and which ones the macro should fill in automatically. > > This series seeks to simplify things by getting rid of all helper macros > except for: > * ovn_lflow_add() > * ovn_lflow_add_with_dp_group() > * ovn_lflow_add_default_drop() > > We accomplish this by using variadic macros. A base set of required > arguments is used with each macro. Helper macros can then be used to > add additional arguments beyond the base. This allows for flexible > use of additional arguments without the need to define a bunch of > different macros for every possible case. > > Differences between v3 and v4 of this series: > * The lflow refactor has been committed to main, so this is rebased on > top of those changes. This mainly affects patch 1. > * Patch 6 of this series is quite different now. Instead of adding a > WITH_DP_GROUP() helper macro, we now retain the > ovn_lflow_add_with_dp_group() macro, but redefine it. This is because > passing a NULL ovn_datapath to ovn_lflow_add() does not work properly. > This is because ovn_lflow_add() dereferences the OD argument, and if > that argument is NULL, then that results in a compiler error. I > decided that the best way to handle this was to keep the > ovn_lflow_add_with_dp_group() macro, since that ensures that passing > a single ovn_datapath and passing a datapath bitmap are mutually > exclusive operations. We still maintain a safety check in > lflow_table_add_lflow() to ensure that we pass valid arguments to > lflow_table_add_lflow__(). > > Mark Michelson (9): > lflow-mgr: Use struct argument for lflow addition. > lflows: Create new ovn_lflow_add_default_drop(). > lflows: Remove ovn_lflow_add_with_hint(). > lflows: Remove ovn_lflow_add_with_lport_and_hint(). > lflows: Remove ovn_lflow_metered() and ovn_lflow_add_with_hint__(). > lflows: Redefine ovn_lflow_add_with_dp_group(). > lflows: Remove ovn_lflow_add_drop_with_desc(). > lflows: Remove ovn_lflow_add_drop_with_lport_hint_and_desc(). > lflows: Make non-struct version of lflow_table_add_lflow() private. > > northd/lflow-mgr.c | 51 +- > northd/lflow-mgr.h | 137 ++-- > northd/northd.c | 1571 ++++++++++++++++++++------------------------ > 3 files changed, 786 insertions(+), 973 deletions(-) > > -- > 2.51.1 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Looks good to me, thanks. Acked-by: Ales Musil <[email protected]> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
