Signed-off-by: Felix Huettner <[email protected]>
---
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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev