This series refactors the logical flow library with two goals in mind:

1) Eliminate the use of any structures that are created by the en-northd
incremental engine node. Composable services will define new datapath
types that will bypass en-northd processing. This allows for them to
add, remove and sync logical flows without the need for structures like
ovn_datapath or ovn_datapaths.

2) Eliminate the dichotomy that every logical datapath must either be a
switch or a router. New datapath types may be added, and when they are
added, the lflow library needs to accommodate those new types without
having to be altered.

The series may seem daunting since there are 18 patches. This is because
I attempted to keep each change small in order to make it easier to
review.

Note that the final patch in this series is marked as RFC. See its
commit message for further details.

Mark Michelson (18):
  northd: Find ovn_datapath from a single hmap.
  lflow-mgr: Remove the ovn_datapath from ovn_lflow.
  lflow-mgr: Use one ovn_datapaths arg for ovn_dp_group_create().
  lflow-mgr: Pass one ovn_datapaths arg to sync_lflow_to_sb().
  lflow_mgr: Pass dp_groups to sync_lflow_to_sb().
  northd: Convert ovn_stage from an enum to a struct.
  datapaths: Create enum alias for minimum datapath type.
  datapath_sync: Group synced datapaths by type.
  Add sparse array.
  northd: Convert ovn_datapath to use sparse_array.
  Use a sparse array for synced datapaths.
  northd: Base ovn_datapath index on synced_datapath index.
  lflow-mgr: Use a dynamic bitmap when updating SB DP groups.
  datapath-sync: Make ovn_synced_datapath_from_sb() public.
  lflow-mgr: Use an array for lflow dp groups.
  lflow-mgr: Don't use ovn_datapath when adding logical flows.
  lflow-mgr: Remove ovn_datapaths from functions.
  northd: Pass ovn_synced_datapath to lflow addition macros.

 lib/automake.mk                     |    2 +
 lib/sparse-array.c                  |  110 +++
 lib/sparse-array.h                  |   51 ++
 northd/datapath-sync.c              |   29 +-
 northd/datapath-sync.h              |   17 +-
 northd/en-datapath-logical-router.c |   23 +-
 northd/en-datapath-logical-switch.c |   23 +-
 northd/en-datapath-sync.c           |  200 +++--
 northd/en-datapath-sync.h           |    8 +
 northd/en-learned-route-sync.c      |    8 +-
 northd/en-lflow.c                   |   22 +-
 northd/en-lr-nat.c                  |    2 +-
 northd/en-lr-stateful.c             |    2 +-
 northd/en-ls-arp.c                  |    2 +-
 northd/en-ls-stateful.c             |    2 +-
 northd/en-multicast.c               |    3 +-
 northd/en-sync-sb.c                 |   47 +-
 northd/inc-proc-northd.c            |    3 +
 northd/lb.c                         |    4 +-
 northd/lflow-mgr.c                  |  298 ++++---
 northd/lflow-mgr.h                  |   79 +-
 northd/northd.c                     | 1279 ++++++++++++++-------------
 northd/northd.h                     |   83 +-
 tests/automake.mk                   |    1 +
 tests/ovn-inc-proc-graph-dump.at    |    2 +
 tests/ovn.at                        |    5 +
 tests/test-sparse-array.c           |  207 +++++
 27 files changed, 1482 insertions(+), 1030 deletions(-)
 create mode 100644 lib/sparse-array.c
 create mode 100644 lib/sparse-array.h
 create mode 100644 tests/test-sparse-array.c

-- 
2.51.1

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

Reply via email to