Signed-off-by: Felix Huettner <felix.huettner@stackit.cloud> --- controller/ovn-controller.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index 1229569e3..3091128c7 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -4923,6 +4923,34 @@ route_runtime_data_handler(struct engine_node *node, void *data) return true; } +static bool +route_sb_port_binding_data_handler(struct engine_node *node, void *data) +{ + struct ed_type_route *re_data = data; + const struct sbrec_port_binding_table *pb_table = + EN_OVSDB_GET(engine_get_input("SB_port_binding", node)); + + const struct sbrec_port_binding *sbrec_pb; + SBREC_PORT_BINDING_TABLE_FOR_EACH_TRACKED (sbrec_pb, pb_table) { + struct tracked_datapath *re_t_dp = + tracked_datapath_find(&re_data->tracked_route_datapaths, + sbrec_pb->datapath); + if (re_t_dp) { + /* Until we get I-P support for route exchange we need to request + * recompute. */ + return false; + } + + if (route_exchange_relevant_port(sbrec_pb)) { + /* Until we get I-P support for route exchange we need to + * request recompute. */ + return false; + } + + } + return true; +} + static void en_route_exchange_run(struct engine_node *node, void *data OVS_UNUSED) { @@ -5315,7 +5343,8 @@ main(int argc, char *argv[]) engine_add_input(&en_route, &en_ovs_open_vswitch, NULL); engine_add_input(&en_route, &en_sb_chassis, NULL); - engine_add_input(&en_route, &en_sb_port_binding, NULL); + engine_add_input(&en_route, &en_sb_port_binding, + route_sb_port_binding_data_handler); engine_add_input(&en_route, &en_runtime_data, route_runtime_data_handler); engine_add_input(&en_route, &en_sb_route, -- 2.47.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev