diff mbox series

[ovs-dev,06/14] northd: Track lsp names referenced by LB health-check.

Message ID 20230513000356.2475960-7-hzhou@ovn.org
State Changes Requested
Headers show
Series ovn-northd incremental processing for VIF changes | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes success github build: passed

Commit Message

Han Zhou May 13, 2023, 12:03 a.m. UTC
Maintain a set of lsp names that are referenced in the column
"ip_port_mappings" of load_balancer records (used for health check
purpose), which will be used for lsp incremental processing.

Signed-off-by: Han Zhou <hzhou@ovn.org>
---
 northd/northd.c | 21 ++++++++++++++-------
 northd/northd.h |  1 +
 2 files changed, 15 insertions(+), 7 deletions(-)
diff mbox series

Patch

diff --git a/northd/northd.c b/northd/northd.c
index 3214b86fc589..13d45adf6f08 100644
--- a/northd/northd.c
+++ b/northd/northd.c
@@ -3835,7 +3835,8 @@  create_or_get_service_mon(struct ovsdb_idl_txn *ovnsb_txn,
 
 static void
 ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn, struct ovn_northd_lb *lb,
-                  struct hmap *monitor_map, struct hmap *ls_ports)
+                  struct hmap *monitor_map, struct hmap *ls_ports,
+                  struct sset *svc_monitor_lsps)
 {
     if (lb->template) {
         return;
@@ -3866,6 +3867,7 @@  ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn, struct ovn_northd_lb *lb,
                 if (p) {
                     *p = 0;
                     p++;
+                    sset_add(svc_monitor_lsps, port_name);
                     op = ovn_port_find(ls_ports, port_name);
                     struct sockaddr_storage svc_mon_src_addr;
                     if (!inet_parse_address(p, &svc_mon_src_addr)) {
@@ -4147,8 +4149,7 @@  static void
 build_lb_svcs(
     struct ovsdb_idl_txn *ovnsb_txn,
     const struct sbrec_service_monitor_table *sbrec_service_monitor_table,
-    struct hmap *ls_ports,
-    struct hmap *lbs)
+    struct hmap *ls_ports, struct hmap *lbs, struct sset *svc_monitor_lsps)
 {
     struct hmap monitor_map = HMAP_INITIALIZER(&monitor_map);
 
@@ -4166,7 +4167,8 @@  build_lb_svcs(
 
     struct ovn_northd_lb *lb;
     HMAP_FOR_EACH (lb, hmap_node, lbs) {
-        ovn_lb_svc_create(ovnsb_txn, lb, &monitor_map, ls_ports);
+        ovn_lb_svc_create(ovnsb_txn, lb, &monitor_map, ls_ports,
+                          svc_monitor_lsps);
     }
 
     struct service_monitor_info *mon_info;
@@ -4345,11 +4347,12 @@  build_lb_port_related_data(
     struct ovsdb_idl_txn *ovnsb_txn,
     const struct sbrec_service_monitor_table *sbrec_service_monitor_table,
     struct ovn_datapaths *lr_datapaths, struct hmap *ls_ports,
-    struct hmap *lbs, struct hmap *lb_groups)
+    struct hmap *lbs, struct hmap *lb_groups, struct sset *svc_monitor_lsps)
 {
     build_lrouter_lbs_check(lr_datapaths);
     build_lrouter_lbs_reachable_ips(lr_datapaths, lbs, lb_groups);
-    build_lb_svcs(ovnsb_txn, sbrec_service_monitor_table, ls_ports, lbs);
+    build_lb_svcs(ovnsb_txn, sbrec_service_monitor_table, ls_ports, lbs,
+                  svc_monitor_lsps);
     build_lswitch_lbs_from_lrouter(lr_datapaths, lbs, lb_groups);
 }
 
@@ -16499,6 +16502,7 @@  northd_init(struct northd_data *data)
         .ct_lb_related = true,
     };
     data->ovn_internal_version_changed = false;
+    sset_init(&data->svc_monitor_lsps);
 }
 
 void
@@ -16542,6 +16546,8 @@  northd_destroy(struct northd_data *data)
                                 &data->ls_ports, &data->lr_ports,
                                 &data->lr_list);
     destroy_debug_config();
+
+    sset_destroy(&data->svc_monitor_lsps);
 }
 
 static void
@@ -16653,7 +16659,8 @@  ovnnb_db_run(struct northd_input *input_data,
     build_lb_port_related_data(ovnsb_txn,
                                input_data->sbrec_service_monitor_table,
                                &data->lr_datapaths, &data->ls_ports,
-                               &data->lbs, &data->lb_groups);
+                               &data->lbs, &data->lb_groups,
+                               &data->svc_monitor_lsps);
     build_lb_count_dps(&data->lbs,
                        ods_size(&data->ls_datapaths),
                        ods_size(&data->lr_datapaths));
diff --git a/northd/northd.h b/northd/northd.h
index dc630b488410..35195549d6e4 100644
--- a/northd/northd.h
+++ b/northd/northd.h
@@ -97,6 +97,7 @@  struct northd_data {
     struct ovs_list lr_list;
     bool ovn_internal_version_changed;
     struct chassis_features features;
+    struct sset svc_monitor_lsps;
 };
 
 struct lflow_data {