Signed-off-by: Alexandra Rukomoinikova <[email protected]>
---
 northd/en-sync-from-sb.c | 28 +++++++++++++++++++---------
 northd/en-sync-from-sb.h |  6 ++++++
 northd/northd.c          | 29 +++++++++++++++++------------
 northd/northd.h          |  7 +++----
 4 files changed, 45 insertions(+), 25 deletions(-)

diff --git a/northd/en-sync-from-sb.c b/northd/en-sync-from-sb.c
index dde0e9f55..6d4ff3e39 100644
--- a/northd/en-sync-from-sb.c
+++ b/northd/en-sync-from-sb.c
@@ -40,23 +40,33 @@ void *
 en_sync_from_sb_init(struct engine_node *node OVS_UNUSED,
                      struct engine_arg *arg OVS_UNUSED)
 {
-    return NULL;
+    struct en_sync_from_sb_data *data = xmalloc(sizeof *data);
+    return data;
+}
+
+static void
+en_sync_from_sb_get_input_data(struct engine_node *node,
+                               struct en_sync_from_sb_data *data)
+{
+    data->sb_pb_table =
+        EN_OVSDB_GET(engine_get_input("SB_port_binding", node));
+    data->sb_ha_ch_grp_table =
+        EN_OVSDB_GET(engine_get_input("SB_ha_chassis_group", node));
 }
 
 enum engine_node_state
-en_sync_from_sb_run(struct engine_node *node, void *data OVS_UNUSED)
+en_sync_from_sb_run(struct engine_node *node, void *data_)
 {
+    struct en_sync_from_sb_data *data =
+        (struct en_sync_from_sb_data *) data_;
     const struct engine_context *eng_ctx = engine_get_context();
-    struct northd_data *nd = engine_get_input_data("northd", node);
+    struct northd_data *northd_data = engine_get_input_data("northd", node);
+
+    en_sync_from_sb_get_input_data(node, data);
 
-    const struct sbrec_port_binding_table *sb_pb_table =
-        EN_OVSDB_GET(engine_get_input("SB_port_binding", node));
-    const struct sbrec_ha_chassis_group_table *sb_ha_ch_grp_table =
-        EN_OVSDB_GET(engine_get_input("SB_ha_chassis_group", node));
     stopwatch_start(OVNSB_DB_RUN_STOPWATCH_NAME, time_msec());
     ovnsb_db_run(eng_ctx->ovnsb_idl_txn,
-                 sb_pb_table, sb_ha_ch_grp_table,
-                 &nd->ls_ports, &nd->lr_ports);
+                 data, northd_data);
     stopwatch_stop(OVNSB_DB_RUN_STOPWATCH_NAME, time_msec());
 
     return EN_UNCHANGED;
diff --git a/northd/en-sync-from-sb.h b/northd/en-sync-from-sb.h
index 0ad07853a..bea248c45 100644
--- a/northd/en-sync-from-sb.h
+++ b/northd/en-sync-from-sb.h
@@ -3,6 +3,12 @@
 
 #include "lib/inc-proc-eng.h"
 
+struct en_sync_from_sb_data {
+    /* Southbound table references */
+    const struct sbrec_port_binding_table *sb_pb_table;
+    const struct sbrec_ha_chassis_group_table *sb_ha_ch_grp_table;
+};
+
 void *en_sync_from_sb_init(struct engine_node *, struct engine_arg *);
 enum engine_node_state en_sync_from_sb_run(struct engine_node *, void *data);
 void en_sync_from_sb_cleanup(void *data);
diff --git a/northd/northd.c b/northd/northd.c
index 79bff21b4..f6411dd3b 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -55,6 +55,7 @@
 #include "en-sampling-app.h"
 #include "en-datapath-logical-switch.h"
 #include "en-datapath-logical-router.h"
+#include "en-sync-from-sb.h"
 #include "lib/ovn-parallel-hmap.h"
 #include "ovn/actions.h"
 #include "ovn/features.h"
@@ -2429,7 +2430,7 @@ op_get_name(const struct ovn_port *op)
 }
 
 static void
-ovn_update_ipv6_prefix(struct hmap *lr_ports)
+ovn_update_ipv6_prefix(const struct hmap *lr_ports)
 {
     const struct ovn_port *op;
     HMAP_FOR_EACH (op, key_node, lr_ports) {
@@ -20912,10 +20913,11 @@ handle_cr_port_binding_changes(const struct 
sbrec_port_binding *sb,
  * this column is not empty, it means we need to set the corresponding logical
  * port as 'up' in the northbound DB. */
 static void
-handle_port_binding_changes(const struct sbrec_port_binding_table *sb_pb_table,
+handle_port_binding_changes(
+                const struct sbrec_port_binding_table *sb_pb_table,
                 const struct sbrec_ha_chassis_group_table *sb_ha_ch_grp_table,
-                struct hmap *ls_ports,
-                struct hmap *lr_ports,
+                const struct hmap *ls_ports,
+                const struct hmap *lr_ports,
                 struct shash *ha_ref_chassis_map)
 {
     struct hmapx lr_groups = HMAPX_INITIALIZER(&lr_groups);
@@ -20991,23 +20993,26 @@ handle_port_binding_changes(const struct 
sbrec_port_binding_table *sb_pb_table,
 /* Handle a fairly small set of changes in the southbound database. */
 void
 ovnsb_db_run(struct ovsdb_idl_txn *ovnsb_txn,
-             const struct sbrec_port_binding_table *sb_pb_table,
-             const struct sbrec_ha_chassis_group_table *sb_ha_ch_grp_table,
-             struct hmap *ls_ports,
-             struct hmap *lr_ports)
+             const struct en_sync_from_sb_data *sync_from_sb_data,
+             const struct northd_data *northd_data)
 {
     if (!ovsdb_idl_has_ever_connected(ovsdb_idl_txn_get_idl(ovnsb_txn))) {
         return;
     }
 
     struct shash ha_ref_chassis_map = SHASH_INITIALIZER(&ha_ref_chassis_map);
-    handle_port_binding_changes(sb_pb_table, sb_ha_ch_grp_table,
-                                ls_ports, lr_ports, &ha_ref_chassis_map);
-    update_sb_ha_group_ref_chassis(sb_ha_ch_grp_table, &ha_ref_chassis_map);
+    handle_port_binding_changes(sync_from_sb_data->sb_pb_table,
+                                sync_from_sb_data->sb_ha_ch_grp_table,
+                                &northd_data->ls_ports,
+                                &northd_data->lr_ports,
+                                &ha_ref_chassis_map);
+
+    update_sb_ha_group_ref_chassis(sync_from_sb_data->sb_ha_ch_grp_table,
+                                   &ha_ref_chassis_map);
 
     shash_destroy(&ha_ref_chassis_map);
 
-    ovn_update_ipv6_prefix(lr_ports);
+    ovn_update_ipv6_prefix(&northd_data->lr_ports);
 }
 
 const struct ovn_datapath *
diff --git a/northd/northd.h b/northd/northd.h
index bba3ee530..bb2196515 100644
--- a/northd/northd.h
+++ b/northd/northd.h
@@ -22,6 +22,7 @@
 #include "lib/sset.h"
 #include "lib/hmapx.h"
 #include "northd/en-port-group.h"
+#include "northd/en-sync-from-sb.h"
 #include "northd/ipam.h"
 #include "northd/lb.h"
 #include "openvswitch/hmap.h"
@@ -896,10 +897,8 @@ void ovnnb_db_run(struct northd_input *input_data,
                   struct northd_data *data,
                   struct ovsdb_idl_txn *ovnsb_txn);
 void ovnsb_db_run(struct ovsdb_idl_txn *ovnsb_txn,
-                  const struct sbrec_port_binding_table *,
-                  const struct sbrec_ha_chassis_group_table *,
-                  struct hmap *ls_ports,
-                  struct hmap *lr_ports);
+                  const struct en_sync_from_sb_data *sync_from_sb_data,
+                  const struct northd_data *northd_data);
 bool northd_handle_ls_changes(struct ovsdb_idl_txn *,
                               const struct northd_input *,
                               struct northd_data *);
-- 
2.48.1

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

Reply via email to