@@ -191,7 +191,7 @@ ic_pb_get_type(const struct icsbrec_port_binding *isb_pb)
return IC_SWITCH_PORT;
}
-static void
+void
enumerate_datapaths(struct ic_context *ctx, struct hmap *dp_tnlids,
struct shash *isb_ts_dps, struct shash *isb_tr_dps)
{
@@ -220,7 +220,7 @@ is_az_leader(struct ovsdb_idl_txn *txn)
return idl && ovsdb_idl_has_lock(idl);
}
-static void
+void
ts_run(struct ic_context *ctx, struct hmap *dp_tnlids,
struct shash *isb_ts_dps)
{
@@ -353,7 +353,7 @@ ts_run(struct ic_context *ctx, struct hmap *dp_tnlids,
}
}
-static void
+void
tr_run(struct ic_context *ctx, struct hmap *dp_tnlids,
struct shash *isb_tr_dps)
{
@@ -610,7 +610,7 @@ sync_addr_set_from_icsb(struct ovsdb_idl_txn *ovnnb_txn,
sorted_array_destroy(&sorted_addrs);
}
-static void
+void
address_set_run(struct ic_context *ctx)
{
if (!ctx->ovnisb_unlocked_txn || !ctx->ovnnb_txn || !ctx->ovnsb_txn) {
@@ -710,7 +710,7 @@ address_set_run(struct ic_context *ctx)
shash_destroy(&ic_remote_as);
}
-static void
+void
gateway_run(struct ic_context *ctx)
{
if (!ctx->ovnisb_unlocked_txn || !ctx->ovnsb_txn) {
@@ -1399,7 +1399,7 @@ find_lsp_in_sb(struct ic_context *ctx,
return find_sb_pb_by_name(ctx->sbrec_port_binding_by_name, lsp->name);
}
-static void
+void
port_binding_run(struct ic_context *ctx)
{
if (!ctx->ovnisb_unlocked_txn || !ctx->ovnnb_txn || !ctx->ovnsb_txn) {
@@ -3134,7 +3134,7 @@ delete_orphan_ic_routes(struct ic_context *ctx,
icsbrec_route_index_destroy_row(isb_route_key);
}
-static void
+void
route_run(struct ic_context *ctx)
{
if (!ctx->ovnisb_unlocked_txn || !ctx->ovnnb_txn || !ctx->ovnsb_txn) {
@@ -3580,7 +3580,7 @@ destroy_service_monitor_data(struct sync_service_monitor_data *sync_data)
free(sync_data->prpg_svc_monitor_mac);
}
-static void
+void
sync_service_monitor(struct ic_context *ctx)
{
if (!ctx->ovnisb_unlocked_txn || !ctx->ovnsb_txn) {
@@ -62,6 +62,24 @@ struct ic_state {
enum ic_datapath_type { IC_SWITCH, IC_ROUTER, IC_DATAPATH_MAX };
enum ic_port_binding_type { IC_SWITCH_PORT, IC_ROUTER_PORT, IC_PORT_MAX };
+struct hmap;
+struct shash;
+
void ovn_db_run(struct ic_context *ctx);
+/* Per-subsystem entry points, invoked by the incremental-processing engine
+ * nodes (see ic/en-*.c). Each performs a full recompute of its subsystem and
+ * may be invoked independently when its engine inputs change. */
+void enumerate_datapaths(struct ic_context *ctx, struct hmap *dp_tnlids,
+ struct shash *isb_ts_dps, struct shash *isb_tr_dps);
+void gateway_run(struct ic_context *ctx);
+void address_set_run(struct ic_context *ctx);
+void ts_run(struct ic_context *ctx, struct hmap *dp_tnlids,
+ struct shash *isb_ts_dps);
+void tr_run(struct ic_context *ctx, struct hmap *dp_tnlids,
+ struct shash *isb_tr_dps);
+void port_binding_run(struct ic_context *ctx);
+void route_run(struct ic_context *ctx);
+void sync_service_monitor(struct ic_context *ctx);
+
#endif /* OVN_IC_H */
Make gateway_run, address_set_run, ts_run, tr_run, port_binding_run, route_run, sync_service_monitor and enumerate_datapaths non-static and declare them in ovn-ic.h so the upcoming per-subsystem incremental-processing engine nodes (ic/en-*.c) can invoke them. No functional change. Assisted-by: Claude Opus 4.8, Claude Code Signed-off-by: Paulo Guilherme Silva <guilherme.paulo@magalu.cloud> --- ic/ovn-ic.c | 16 ++++++++-------- ic/ovn-ic.h | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-)