This series lays the groundwork for EVPN active-active multihoming
support in OVN by adding the ability to sync the kernel nexthop table
and consolidating the existing netlink notification infrastructure.
The first two patches are small fixes — a missing destroy call for
neighbor table notifications and a memory leak in route data during
change checks.
The core of the series is the consolidation of the netlink notifiers.
The neighbor and route table notifiers shared a lot of nearly
identical code; this is extracted into a common ovn-netlink-notifier
module that allows defining listeners with their specific data. This
makes it straightforward to add new notifiers and opens the door
for incremental processing instead of full recomputes on every
change.
Building on the consolidated notifier, the final patch adds support
for syncing the nexthop table from netlink. The nexthop table
contains entries about individual nexthops and nexthop groups, which
are used by EVPN when remote VTEPs are configured with active-active
multihoming. This data will be used in subsequent work to configure
multihoming for OVN EVPN.
Ales Musil (6):
controller: Add missing neighbor_table_notify_destroy call.
controller: Make sure we free the route_data during change check.
vec: Extend the vector with pop iterator and bsearch wrapper.
controller: Consolidate the netlink notifiers.
tests: Add basic test for route notifier.
controller: Add support for syncing the nexthop table.
configure.ac | 1 +
controller/automake.mk | 16 +-
controller/neighbor-exchange.c | 4 +-
controller/neighbor-exchange.h | 4 +-
controller/neighbor-table-notify.c | 244 ---------------
controller/neighbor-table-notify.h | 45 ---
...-notify-stub.c => nexthop-exchange-stub.c} | 41 +--
controller/nexthop-exchange.c | 230 ++++++++++++++
controller/nexthop-exchange.h | 61 ++++
controller/ovn-controller.c | 168 +++++++---
...ify-stub.c => ovn-netlink-notifier-stub.c} | 35 +--
controller/ovn-netlink-notifier.c | 294 ++++++++++++++++++
controller/ovn-netlink-notifier.h | 39 +++
controller/route-exchange-netlink.h | 1 +
controller/route-exchange.c | 4 +-
controller/route-exchange.h | 2 +-
controller/route-table-notify.c | 235 --------------
controller/route-table-notify.h | 44 ---
lib/vec.h | 12 +
m4/ovn.m4 | 16 +
tests/automake.mk | 6 +-
tests/system-common-macros.at | 3 +
tests/system-ovn-netlink.at | 218 +++++++++++--
tests/test-ovn-netlink.c | 143 +++++++--
24 files changed, 1135 insertions(+), 731 deletions(-)
delete mode 100644 controller/neighbor-table-notify.c
delete mode 100644 controller/neighbor-table-notify.h
rename controller/{route-table-notify-stub.c => nexthop-exchange-stub.c} (51%)
create mode 100644 controller/nexthop-exchange.c
create mode 100644 controller/nexthop-exchange.h
rename controller/{neighbor-table-notify-stub.c =>
ovn-netlink-notifier-stub.c} (51%)
create mode 100644 controller/ovn-netlink-notifier.c
create mode 100644 controller/ovn-netlink-notifier.h
delete mode 100644 controller/route-table-notify.c
delete mode 100644 controller/route-table-notify.h
--
2.53.0
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev