This allows upcoming patches to initialize the I-P engine from different
places in ovn-controller.

Signed-off-by: Dumitru Ceara <[email protected]>
---
 controller/ovn-controller.c | 222 ++++++++++++++++++++----------------
 1 file changed, 121 insertions(+), 101 deletions(-)

diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
index 93cd5cec5a..f9f2172768 100644
--- a/controller/ovn-controller.c
+++ b/controller/ovn-controller.c
@@ -998,61 +998,6 @@ ctrl_register_ovs_idl(struct ovsdb_idl *ovs_idl)
      * track that column which should be addressed in the future. */
 }
 
-#define SB_NODES \
-    SB_NODE(sb_global) \
-    SB_NODE(chassis) \
-    SB_NODE(ha_chassis_group) \
-    SB_NODE(encap) \
-    SB_NODE(address_set) \
-    SB_NODE(port_group) \
-    SB_NODE(multicast_group) \
-    SB_NODE(datapath_binding) \
-    SB_NODE(logical_dp_group) \
-    SB_NODE(port_binding) \
-    SB_NODE(mac_binding) \
-    SB_NODE(logical_flow) \
-    SB_NODE(dhcp_options) \
-    SB_NODE(dhcpv6_options) \
-    SB_NODE(dns) \
-    SB_NODE(load_balancer) \
-    SB_NODE(fdb) \
-    SB_NODE(meter) \
-    SB_NODE(static_mac_binding) \
-    SB_NODE(chassis_template_var) \
-    SB_NODE(acl_id) \
-    SB_NODE(advertised_route) \
-    SB_NODE(learned_route) \
-    SB_NODE(advertised_mac_binding)
-
-enum sb_engine_node {
-#define SB_NODE(NAME) SB_##NAME,
-    SB_NODES
-#undef SB_NODE
-};
-
-#define SB_NODE(NAME) ENGINE_FUNC_SB(NAME);
-    SB_NODES
-#undef SB_NODE
-
-#define OVS_NODES \
-    OVS_NODE(open_vswitch) \
-    OVS_NODE(bridge) \
-    OVS_NODE(port) \
-    OVS_NODE(interface) \
-    OVS_NODE(qos) \
-    OVS_NODE(queue) \
-    OVS_NODE(flow_sample_collector_set)
-
-enum ovs_engine_node {
-#define OVS_NODE(NAME) OVS_##NAME,
-    OVS_NODES
-#undef OVS_NODE
-};
-
-#define OVS_NODE(NAME) ENGINE_FUNC_OVS(NAME);
-    OVS_NODES
-#undef OVS_NODE
-
 struct ed_type_ofctrl_is_connected {
     bool connected;
 };
@@ -6515,6 +6460,127 @@ evpn_arp_vtep_binding_handler(struct engine_node *node, 
void *data OVS_UNUSED)
     return EN_UNHANDLED;
 }
 
+/* Define engine node functions for nodes that represent SB tables.
+ *
+ * en_sb_<TABLE_NAME>_run()
+ * en_sb_<TABLE_NAME>_init()
+ * en_sb_<TABLE_NAME>_cleanup()
+ */
+#define SB_NODES \
+    SB_NODE(sb_global) \
+    SB_NODE(chassis) \
+    SB_NODE(ha_chassis_group) \
+    SB_NODE(encap) \
+    SB_NODE(address_set) \
+    SB_NODE(port_group) \
+    SB_NODE(multicast_group) \
+    SB_NODE(datapath_binding) \
+    SB_NODE(logical_dp_group) \
+    SB_NODE(port_binding) \
+    SB_NODE(mac_binding) \
+    SB_NODE(logical_flow) \
+    SB_NODE(dhcp_options) \
+    SB_NODE(dhcpv6_options) \
+    SB_NODE(dns) \
+    SB_NODE(load_balancer) \
+    SB_NODE(fdb) \
+    SB_NODE(meter) \
+    SB_NODE(static_mac_binding) \
+    SB_NODE(chassis_template_var) \
+    SB_NODE(acl_id) \
+    SB_NODE(advertised_route) \
+    SB_NODE(learned_route) \
+    SB_NODE(advertised_mac_binding)
+
+enum sb_engine_node {
+#define SB_NODE(NAME) SB_##NAME,
+    SB_NODES
+#undef SB_NODE
+};
+
+#define SB_NODE(NAME) ENGINE_FUNC_SB(NAME);
+    SB_NODES
+#undef SB_NODE
+
+/* Define engine node functions for nodes that represent OVS tables.
+ *
+ * en_ovs_<TABLE_NAME>_run()
+ * en_ovs_<TABLE_NAME>_init()
+ * en_ovs_<TABLE_NAME>_cleanup()
+ */
+#define OVS_NODES \
+    OVS_NODE(open_vswitch) \
+    OVS_NODE(bridge) \
+    OVS_NODE(port) \
+    OVS_NODE(interface) \
+    OVS_NODE(qos) \
+    OVS_NODE(queue) \
+    OVS_NODE(flow_sample_collector_set)
+
+enum ovs_engine_node {
+#define OVS_NODE(NAME) OVS_##NAME,
+    OVS_NODES
+#undef OVS_NODE
+};
+
+#define OVS_NODE(NAME) ENGINE_FUNC_OVS(NAME);
+    OVS_NODES
+#undef OVS_NODE
+
+/* Define engine nodes for SB and OVS tables.
+ *
+ * struct engine_node en_sb_<TABLE_NAME>
+ * struct engine_node en_ovs_<TABLE_NAME>
+ *
+ * Define nodes as static to avoid sparse errors.
+ */
+#define SB_NODE(NAME) static ENGINE_NODE_SB(NAME);
+    SB_NODES
+#undef SB_NODE
+
+#define OVS_NODE(NAME) static ENGINE_NODE_OVS(NAME);
+    OVS_NODES
+#undef OVS_NODE
+
+/* Define engine nodes for other nodes. They should be defined as static to
+ * avoid sparse errors. */
+static ENGINE_NODE(sb_ro);
+static ENGINE_NODE(template_vars, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(ct_zones, CLEAR_TRACKED_DATA, IS_VALID);
+static ENGINE_NODE(ovs_interface_shadow, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(runtime_data, CLEAR_TRACKED_DATA, SB_WRITE);
+static ENGINE_NODE(non_vif_data);
+static ENGINE_NODE(mff_ovn_geneve);
+static ENGINE_NODE(ofctrl_is_connected);
+static ENGINE_NODE(activated_ports, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(postponed_ports);
+static ENGINE_NODE(pflow_output);
+static ENGINE_NODE(lflow_output, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(controller_output);
+static ENGINE_NODE(addr_sets, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(port_groups, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(northd_options);
+static ENGINE_NODE(dhcp_options);
+static ENGINE_NODE(if_status_mgr);
+static ENGINE_NODE(lb_data, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(mac_cache);
+static ENGINE_NODE(bfd_chassis);
+static ENGINE_NODE(dns_cache);
+static ENGINE_NODE(acl_id, IS_VALID);
+static ENGINE_NODE(route);
+static ENGINE_NODE(route_table_notify);
+static ENGINE_NODE(route_exchange, SB_WRITE);
+static ENGINE_NODE(route_exchange_status);
+static ENGINE_NODE(garp_rarp, SB_WRITE);
+static ENGINE_NODE(host_if_monitor);
+static ENGINE_NODE(neighbor);
+static ENGINE_NODE(neighbor_table_notify);
+static ENGINE_NODE(neighbor_exchange);
+static ENGINE_NODE(neighbor_exchange_status);
+static ENGINE_NODE(evpn_vtep_binding, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(evpn_fdb, CLEAR_TRACKED_DATA);
+static ENGINE_NODE(evpn_arp, CLEAR_TRACKED_DATA);
+
 /* Returns false if the northd internal version stored in SB_Global
  * and ovn-controller internal version don't match.
  */
@@ -6813,52 +6879,6 @@ main(int argc, char *argv[])
     stopwatch_create(BFD_RUN_STOPWATCH_NAME, SW_MS);
     stopwatch_create(VIF_PLUG_RUN_STOPWATCH_NAME, SW_MS);
 
-    /* Define inc-proc-engine nodes. */
-    ENGINE_NODE(sb_ro);
-    ENGINE_NODE(template_vars, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(ct_zones, CLEAR_TRACKED_DATA, IS_VALID);
-    ENGINE_NODE(ovs_interface_shadow, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(runtime_data, CLEAR_TRACKED_DATA, SB_WRITE);
-    ENGINE_NODE(non_vif_data);
-    ENGINE_NODE(mff_ovn_geneve);
-    ENGINE_NODE(ofctrl_is_connected);
-    ENGINE_NODE(activated_ports, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(postponed_ports);
-    ENGINE_NODE(pflow_output);
-    ENGINE_NODE(lflow_output, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(controller_output);
-    ENGINE_NODE(addr_sets, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(port_groups, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(northd_options);
-    ENGINE_NODE(dhcp_options);
-    ENGINE_NODE(if_status_mgr);
-    ENGINE_NODE(lb_data, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(mac_cache);
-    ENGINE_NODE(bfd_chassis);
-    ENGINE_NODE(dns_cache);
-    ENGINE_NODE(acl_id, IS_VALID);
-    ENGINE_NODE(route);
-    ENGINE_NODE(route_table_notify);
-    ENGINE_NODE(route_exchange, SB_WRITE);
-    ENGINE_NODE(route_exchange_status);
-    ENGINE_NODE(garp_rarp, SB_WRITE);
-    ENGINE_NODE(host_if_monitor);
-    ENGINE_NODE(neighbor);
-    ENGINE_NODE(neighbor_table_notify);
-    ENGINE_NODE(neighbor_exchange);
-    ENGINE_NODE(neighbor_exchange_status);
-    ENGINE_NODE(evpn_vtep_binding, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(evpn_fdb, CLEAR_TRACKED_DATA);
-    ENGINE_NODE(evpn_arp, CLEAR_TRACKED_DATA);
-
-#define SB_NODE(NAME) ENGINE_NODE_SB(NAME);
-    SB_NODES
-#undef SB_NODE
-
-#define OVS_NODE(NAME) ENGINE_NODE_OVS(NAME);
-    OVS_NODES
-#undef OVS_NODE
-
     /* Add dependencies between inc-proc-engine nodes. */
     engine_add_input(&en_template_vars, &en_ovs_open_vswitch, NULL);
     engine_add_input(&en_template_vars, &en_sb_chassis, NULL);
-- 
2.51.1

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

Reply via email to