Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2194261/?format=api
{ "id": 2194261, "url": "http://patchwork.ozlabs.org/api/patches/2194261/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/20260207214852.86991-8-arukomoinikova@k2.cloud/", "project": { "id": 68, "url": "http://patchwork.ozlabs.org/api/projects/68/?format=api", "name": "Open Virtual Network development", "link_name": "ovn", "list_id": "ovs-dev.openvswitch.org", "list_email": "ovs-dev@openvswitch.org", "web_url": "http://openvswitch.org/", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260207214852.86991-8-arukomoinikova@k2.cloud>", "list_archive_url": null, "date": "2026-02-07T21:48:49", "name": "[ovs-dev,8/8,v2] northd: Refactor service monitor addresses into structure.", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "fe38977e13dd7cdca921353585e34a7e13ecca10", "submitter": { "id": 89461, "url": "http://patchwork.ozlabs.org/api/people/89461/?format=api", "name": "Rukomoinikova Aleksandra", "email": "ARukomoinikova@k2.cloud" }, "delegate": { "id": 94943, "url": "http://patchwork.ozlabs.org/api/users/94943/?format=api", "username": "dceara", "first_name": "Dumitru", "last_name": "Ceara", "email": "dceara@redhat.com" }, "mbox": "http://patchwork.ozlabs.org/project/ovn/patch/20260207214852.86991-8-arukomoinikova@k2.cloud/mbox/", "series": [ { "id": 491397, "url": "http://patchwork.ozlabs.org/api/series/491397/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=491397", "date": "2026-02-07T21:48:46", "name": "[ovs-dev,1/8,v2] ovn-nb, ovn-nbctl: Add Logical Switch Port Health Check support.", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/491397/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2194261/comments/", "check": "success", "checks": "http://patchwork.ozlabs.org/api/patches/2194261/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<ovs-dev-bounces@openvswitch.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "dev@openvswitch.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "ovs-dev@lists.linuxfoundation.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n unprotected) header.d=k2.cloud header.i=@k2.cloud header.a=rsa-sha256\n header.s=cloudmail header.b=cI3AKLfE;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=140.211.166.136; helo=smtp3.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)", "smtp3.osuosl.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key)\n header.d=k2.cloud header.i=@k2.cloud header.a=rsa-sha256 header.s=cloudmail\n header.b=cI3AKLfE", "smtp4.osuosl.org;\n dmarc=pass (p=none dis=none) header.from=k2.cloud", "smtp4.osuosl.org;\n dkim=pass (1024-bit key) header.d=k2.cloud header.i=@k2.cloud\n header.a=rsa-sha256 header.s=cloudmail header.b=cI3AKLfE" ], "Received": [ "from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4f7l3R1hRQz1xvW\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 08 Feb 2026 08:49:23 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id C994E612EC;\n\tSat, 7 Feb 2026 21:49:19 +0000 (UTC)", "from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id a49Cleydnfml; Sat, 7 Feb 2026 21:49:16 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56])\n\tby smtp3.osuosl.org (Postfix) with ESMTPS id 240F2612B5;\n\tSat, 7 Feb 2026 21:49:10 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id EBEC8C0780;\n\tSat, 7 Feb 2026 21:49:09 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id E4454C0784\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:03 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id BC55541BE1\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:03 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id JQ1-21VqPf84 for <dev@openvswitch.org>;\n Sat, 7 Feb 2026 21:49:02 +0000 (UTC)", "from mail1.k2.cloud (mail1.k2.cloud [109.73.14.252])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 5EB0840B89\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:02 +0000 (UTC)" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections - client-ip=140.211.9.56;\n helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp3.osuosl.org 240F2612B5", "OpenDKIM Filter v2.11.0 smtp4.osuosl.org 5EB0840B89" ], "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=109.73.14.252;\n helo=mail1.k2.cloud; envelope-from=arukomoinikova@k2.cloud;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp4.osuosl.org 5EB0840B89", "From": "Alexandra Rukomoinikova <arukomoinikova@k2.cloud>", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=k2.cloud;\n s=cloudmail; t=1770500938;\n bh=p/b8yS95GqFBcM0X9A7Jxh4CjUO3Puixs9T6VHen8mM=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References;\n b=cI3AKLfEh7Cxu61VO39OEVGldfghY1RQaK+nW3GCazQatrZmVLf2FKJbibzV570oR\n SZiOvVWLJ2wyY9aW97xb/n8XHJOdy7JTcwVpzUeO6HaAZ0TqAcwfzHvaXzKvPcY3Xb\n tv22kGp3J8U0Rsl2jn12M/5GtgV998lOcj5bkWbE=", "To": "dev@openvswitch.org", "Cc": "Alexandra Rukomoinikova <arukomoinikova@k2.cloud>", "Date": "Sun, 8 Feb 2026 00:48:49 +0300", "Message-Id": "<20260207214852.86991-8-arukomoinikova@k2.cloud>", "In-Reply-To": "<20260207214852.86991-1-arukomoinikova@k2.cloud>", "References": "<20260207214852.86991-1-arukomoinikova@k2.cloud>", "MIME-Version": "1.0", "Subject": "[ovs-dev] [PATCH ovn 8/8 v2] northd: Refactor service monitor\n addresses into structure.", "X-BeenThere": "ovs-dev@openvswitch.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "<ovs-dev.openvswitch.org>", "List-Unsubscribe": "<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>", "List-Archive": "<http://mail.openvswitch.org/pipermail/ovs-dev/>", "List-Post": "<mailto:ovs-dev@openvswitch.org>", "List-Help": "<mailto:ovs-dev-request@openvswitch.org?subject=help>", "List-Subscribe": "<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "ovs-dev-bounces@openvswitch.org", "Sender": "\"dev\" <ovs-dev-bounces@openvswitch.org>" }, "content": "Replace individual global service monitor address parameters with unified\nsvc_monitor_addresses structure to simplify function signatures.\n\nSigned-off-by: Alexandra Rukomoinikova <arukomoinikova@k2.cloud>\n---\n northd/en-global-config.c | 47 +++++++++++---------\n northd/en-global-config.h | 29 ++++++------\n northd/en-lflow.c | 3 +-\n northd/en-northd.c | 8 +---\n northd/en-sync-sb.c | 4 +-\n northd/northd.c | 94 +++++++++++++++------------------------\n northd/northd.h | 8 +---\n 7 files changed, 84 insertions(+), 109 deletions(-)", "diff": "diff --git a/northd/en-global-config.c b/northd/en-global-config.c\nindex 2556b2888..bad1bcf68 100644\n--- a/northd/en-global-config.c\n+++ b/northd/en-global-config.c\n@@ -124,14 +124,17 @@ en_global_config_run(struct engine_node *node , void *data)\n const char *mac_addr_prefix = set_mac_prefix(smap_get(&nb->options,\n \"mac_prefix\"));\n \n+ struct svc_monitor_addresses *svc_addresses =\n+ &config_data->svc_global_addresses;\n+\n const char *monitor_mac = smap_get(&nb->options, \"svc_monitor_mac\");\n if (monitor_mac) {\n if (eth_addr_from_string(monitor_mac,\n- &config_data->svc_monitor_mac_ea)) {\n- snprintf(config_data->svc_monitor_mac,\n- sizeof config_data->svc_monitor_mac,\n+ &svc_addresses->mac_ea_src)) {\n+ snprintf(svc_addresses->mac_src,\n+ sizeof svc_addresses->mac_src,\n ETH_ADDR_FMT,\n- ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea));\n+ ETH_ADDR_ARGS(svc_addresses->mac_ea_src));\n } else {\n monitor_mac = NULL;\n }\n@@ -141,22 +144,22 @@ en_global_config_run(struct engine_node *node , void *data)\n \"svc_monitor_mac_dst\");\n if (dst_monitor_mac) {\n if (eth_addr_from_string(dst_monitor_mac,\n- &config_data->svc_monitor_mac_ea_dst)) {\n- snprintf(config_data->svc_monitor_mac_dst,\n- sizeof config_data->svc_monitor_mac_dst,\n+ &svc_addresses->mac_ea_dst)) {\n+ snprintf(svc_addresses->mac_dst,\n+ sizeof svc_addresses->mac_dst,\n ETH_ADDR_FMT,\n- ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea_dst));\n+ ETH_ADDR_ARGS(svc_addresses->mac_ea_dst));\n } else {\n dst_monitor_mac = NULL;\n }\n }\n \n const char *monitor_ip = smap_get(&nb->options, \"svc_monitor_ip\");\n- update_svc_monitor_addr(monitor_ip, &config_data->svc_monitor_ip);\n+ update_svc_monitor_addr(monitor_ip, &svc_addresses->ip_src);\n \n const char *monitor_ip_dst = smap_get(&nb->options, \"svc_monitor_ip_dst\");\n update_svc_monitor_addr(monitor_ip_dst,\n- &config_data->svc_monitor_ip_dst);\n+ &svc_addresses->ip_dst);\n \n struct smap *options = &config_data->nb_options;\n smap_destroy(options);\n@@ -165,21 +168,21 @@ en_global_config_run(struct engine_node *node , void *data)\n smap_replace(options, \"mac_prefix\", mac_addr_prefix);\n \n if (!monitor_mac) {\n- eth_addr_random(&config_data->svc_monitor_mac_ea);\n- snprintf(config_data->svc_monitor_mac,\n- sizeof config_data->svc_monitor_mac, ETH_ADDR_FMT,\n- ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea));\n+ eth_addr_random(&svc_addresses->mac_ea_src);\n+ snprintf(svc_addresses->mac_src,\n+ sizeof svc_addresses->mac_src, ETH_ADDR_FMT,\n+ ETH_ADDR_ARGS(svc_addresses->mac_ea_src));\n smap_replace(options, \"svc_monitor_mac\",\n- config_data->svc_monitor_mac);\n+ svc_addresses->mac_src);\n }\n \n if (!dst_monitor_mac) {\n- eth_addr_random(&config_data->svc_monitor_mac_ea_dst);\n- snprintf(config_data->svc_monitor_mac_dst,\n- sizeof config_data->svc_monitor_mac_dst, ETH_ADDR_FMT,\n- ETH_ADDR_ARGS(config_data->svc_monitor_mac_ea_dst));\n+ eth_addr_random(&svc_addresses->mac_ea_dst);\n+ snprintf(svc_addresses->mac_dst,\n+ sizeof svc_addresses->mac_dst, ETH_ADDR_FMT,\n+ ETH_ADDR_ARGS(svc_addresses->mac_ea_dst));\n smap_replace(options, \"svc_monitor_mac_dst\",\n- config_data->svc_monitor_mac_dst);\n+ svc_addresses->mac_dst);\n }\n \n bool ic_vxlan_mode = false;\n@@ -244,8 +247,8 @@ void en_global_config_cleanup(void *data OVS_UNUSED)\n struct ed_type_global_config *config_data = data;\n smap_destroy(&config_data->nb_options);\n smap_destroy(&config_data->sb_options);\n- free(config_data->svc_monitor_ip);\n- free(config_data->svc_monitor_ip_dst);\n+ free(config_data->svc_global_addresses.ip_src);\n+ free(config_data->svc_global_addresses.ip_dst);\n destroy_debug_config();\n }\n \ndiff --git a/northd/en-global-config.h b/northd/en-global-config.h\nindex 413cd3849..e84b0e9e5 100644\n--- a/northd/en-global-config.h\n+++ b/northd/en-global-config.h\n@@ -30,27 +30,30 @@ struct global_config_tracked_data {\n bool chassis_features_changed;\n };\n \n-/* struct which maintains the data of the engine node global_config. */\n-struct ed_type_global_config {\n- struct smap nb_options;\n- struct smap sb_options;\n- const struct nbrec_nb_global *nb_global;\n- const struct sbrec_sb_global *sb_global;\n-\n+struct svc_monitor_addresses {\n /* MAC allocated for service monitor usage. Just one pair is allocated\n * for this purpose and ovn-controller's on each chassis will make use\n * of this pair when sending out the packets to monitor the services\n * defined in Service_Monitor Southbound table. Since these packets\n * are locally handled, having just one pair is good enough. */\n- char svc_monitor_mac[ETH_ADDR_STRLEN + 1];\n- struct eth_addr svc_monitor_mac_ea;\n- char svc_monitor_mac_dst[ETH_ADDR_STRLEN + 1];\n- struct eth_addr svc_monitor_mac_ea_dst;\n+ char mac_src[ETH_ADDR_STRLEN + 1];\n+ struct eth_addr mac_ea_src;\n+ char mac_dst[ETH_ADDR_STRLEN + 1];\n+ struct eth_addr mac_ea_dst;\n \n /* IP addresses configured for NF service monitor usage. */\n- char *svc_monitor_ip;\n- char *svc_monitor_ip_dst;\n+ char *ip_src;\n+ char *ip_dst;\n+};\n+\n+/* struct which maintains the data of the engine node global_config. */\n+struct ed_type_global_config {\n+ struct smap nb_options;\n+ struct smap sb_options;\n+ const struct nbrec_nb_global *nb_global;\n+ const struct sbrec_sb_global *sb_global;\n \n+ struct svc_monitor_addresses svc_global_addresses;\n struct chassis_features features;\n \n bool ovn_internal_version_changed;\ndiff --git a/northd/en-lflow.c b/northd/en-lflow.c\nindex 41a5a97ff..0f64aef49 100644\n--- a/northd/en-lflow.c\n+++ b/northd/en-lflow.c\n@@ -113,7 +113,8 @@ lflow_get_input_data(struct engine_node *node,\n lflow_input->features = &global_config->features;\n lflow_input->ovn_internal_version_changed =\n global_config->ovn_internal_version_changed;\n- lflow_input->svc_monitor_mac = global_config->svc_monitor_mac;\n+ lflow_input->svc_monitor_mac =\n+ global_config->svc_global_addresses.mac_src;\n \n struct ed_type_sampling_app_data *sampling_app_data =\n engine_get_input_data(\"sampling_app\", node);\ndiff --git a/northd/en-northd.c b/northd/en-northd.c\nindex 9b37f3eee..e81e4bbb2 100644\n--- a/northd/en-northd.c\n+++ b/northd/en-northd.c\n@@ -117,12 +117,8 @@ northd_get_input_data(struct engine_node *node,\n engine_get_input_data(\"global_config\", node);\n input_data->nb_options = &global_config->nb_options;\n input_data->sb_options = &global_config->sb_options;\n- input_data->svc_monitor_mac = global_config->svc_monitor_mac;\n- input_data->svc_monitor_mac_ea = global_config->svc_monitor_mac_ea;\n- input_data->svc_monitor_mac_dst = global_config->svc_monitor_mac_dst;\n- input_data->svc_monitor_mac_ea_dst = global_config->svc_monitor_mac_ea_dst;\n- input_data->svc_monitor_ip = global_config->svc_monitor_ip;\n- input_data->svc_monitor_ip_dst = global_config->svc_monitor_ip_dst;\n+\n+ input_data->svc_global_addresses = &global_config->svc_global_addresses;\n input_data->features = &global_config->features;\n input_data->vxlan_mode = global_config->vxlan_mode;\n \ndiff --git a/northd/en-sync-sb.c b/northd/en-sync-sb.c\nindex fbe26eb8c..0b2a85b3b 100644\n--- a/northd/en-sync-sb.c\n+++ b/northd/en-sync-sb.c\n@@ -106,8 +106,8 @@ en_sync_to_sb_addr_set_run(struct engine_node *node, void *data OVS_UNUSED)\n nb_port_group_table, sb_address_set_table,\n &lr_stateful_data->table,\n &northd_data->lr_datapaths,\n- global_config->svc_monitor_mac,\n- global_config->svc_monitor_mac_dst);\n+ global_config->svc_global_addresses.mac_src,\n+ global_config->svc_global_addresses.mac_dst);\n \n return EN_UPDATED;\n }\ndiff --git a/northd/northd.c b/northd/northd.c\nindex 7a2c472c0..629651efb 100644\n--- a/northd/northd.c\n+++ b/northd/northd.c\n@@ -3165,28 +3165,28 @@ svc_mon_update_status_if_online(const struct sbrec_service_monitor *sbrec_mon,\n \n static void\n svc_mon_update_mac_ip_addresses(const struct sbrec_service_monitor *sbrec_mon,\n- const struct eth_addr *svc_monitor_mac_ea,\n- const char *source_mac,\n- const char *target_mac,\n- const char *source_ip,\n- const char *target_ip)\n+ const struct eth_addr *mac_ea_src,\n+ const char *mac_src,\n+ const char *mac_dst,\n+ const char *ip_src,\n+ const char *ip_dst)\n {\n struct eth_addr ea;\n if (sbrec_mon->src_mac ||\n !eth_addr_from_string(sbrec_mon->src_mac, &ea) ||\n- !eth_addr_equals(ea, *svc_monitor_mac_ea)) {\n- sbrec_service_monitor_set_src_mac(sbrec_mon, source_mac);\n+ !eth_addr_equals(ea, *mac_ea_src)) {\n+ sbrec_service_monitor_set_src_mac(sbrec_mon, mac_src);\n }\n \n- if (target_mac) {\n- svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->mac, target_mac,\n+ if (mac_dst) {\n+ svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->mac, mac_dst,\n sbrec_service_monitor_set_mac);\n }\n \n- svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->src_ip, source_ip,\n+ svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->src_ip, ip_src,\n sbrec_service_monitor_set_src_ip);\n- if (target_ip) {\n- svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->ip, target_ip,\n+ if (ip_dst) {\n+ svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->ip, ip_dst,\n sbrec_service_monitor_set_ip);\n }\n }\n@@ -3194,15 +3194,11 @@ svc_mon_update_mac_ip_addresses(const struct sbrec_service_monitor *sbrec_mon,\n static void\n ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n const struct nbrec_network_function *nbrec_nf,\n+ const struct svc_monitor_addresses *svc_global_addresses,\n struct hmap *local_svc_monitors_map,\n struct hmap *ic_learned_svc_monitors_map,\n struct sset *svc_monitor_lsps,\n- struct hmap *ls_ports,\n- const char *global_svc_monitor_mac_src,\n- const struct eth_addr *global_svc_monitor_mac_ea_src,\n- const char *global_svc_monitor_mac_dst,\n- const char *global_svc_monitor_ip_src,\n- const char *global_svc_monitor_ip_dst)\n+ struct hmap *ls_ports)\n {\n if (!nbrec_nf->health_check) {\n return;\n@@ -3241,22 +3237,18 @@ ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n local_svc_monitors_map,\n ic_learned_svc_monitors_map,\n \"network-function\",\n- global_svc_monitor_ip_dst,\n+ svc_global_addresses->ip_dst,\n nbrec_nf->outport->name,\n nbrec_nf->inport->name,\n- 0,\n- \"icmp\",\n- chassis_name,\n- false);\n+ 0, \"icmp\", chassis_name, false);\n set_service_mon_options(mon_info->sbrec_mon,\n- &nbrec_nf->health_check->options,\n- NULL);\n+ &nbrec_nf->health_check->options, NULL);\n svc_mon_update_mac_ip_addresses(mon_info->sbrec_mon,\n- global_svc_monitor_mac_ea_src,\n- global_svc_monitor_mac_src,\n- global_svc_monitor_mac_dst,\n- global_svc_monitor_ip_src,\n- global_svc_monitor_ip_dst);\n+ &svc_global_addresses->mac_ea_src,\n+ svc_global_addresses->mac_src,\n+ svc_global_addresses->mac_dst,\n+ svc_global_addresses->ip_src,\n+ svc_global_addresses->ip_dst);\n svc_mon_update_status_if_online(mon_info->sbrec_mon,\n !port_up_condition);\n }\n@@ -3264,8 +3256,7 @@ ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n static void\n ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n const struct ovn_northd_lb *lb,\n- const char *global_svc_monitor_mac_src,\n- const struct eth_addr *global_svc_monitor_mac_ea_src,\n+ const struct svc_monitor_addresses *svc_global_addresses,\n struct hmap *ls_ports,\n struct sset *svc_monitor_lsps,\n struct hmap *local_svc_monitors_map,\n@@ -3311,8 +3302,8 @@ ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n source_mac_ea = &backend_nb->svc_mon_lrp->lrp_networks.ea;\n source_mac = backend_nb->svc_mon_lrp->lrp_networks.ea_s;\n } else {\n- source_mac_ea = global_svc_monitor_mac_ea_src;\n- source_mac = global_svc_monitor_mac_src;\n+ source_mac_ea = &svc_global_addresses->mac_ea_src;\n+ source_mac = svc_global_addresses->mac_src;\n }\n \n const char *protocol = lb->nlb->protocol;\n@@ -3554,8 +3545,7 @@ build_lb_datapaths(const struct hmap *lbs, const struct hmap *lb_groups,\n static void\n ovn_lsp_svc_monitors_process_port(\n struct ovsdb_idl_txn *ovnsb_txn, const struct ovn_port *op,\n- const char *global_svc_monitor_mac_src,\n- const struct eth_addr *global_svc_monitor_mac_ea_src,\n+ const struct svc_monitor_addresses *svc_global_addresses,\n struct hmap *local_svc_monitors_map,\n struct sset *svc_monitor_lsps)\n {\n@@ -3597,8 +3587,8 @@ ovn_lsp_svc_monitors_process_port(\n set_service_mon_options(mon_info->sbrec_mon,\n &lsp_hc->options, NULL);\n svc_mon_update_mac_ip_addresses(mon_info->sbrec_mon,\n- global_svc_monitor_mac_ea_src,\n- global_svc_monitor_mac_src,\n+ &svc_global_addresses->mac_ea_src,\n+ svc_global_addresses->mac_src,\n NULL, lsp_hc->src_ip, NULL);\n svc_mon_update_status_if_online(mon_info->sbrec_mon,\n port_up_condition);\n@@ -3610,11 +3600,7 @@ build_svc_monitors_data(\n struct ovsdb_idl_txn *ovnsb_txn,\n struct ovsdb_idl_index *sbrec_service_monitor_by_learned_type,\n const struct nbrec_network_function_table *nbrec_network_function_table,\n- const char *global_svc_monitor_mac_src,\n- const struct eth_addr *global_svc_monitor_mac_ea_src,\n- const char *global_svc_monitor_mac_dst,\n- const char *global_svc_monitor_ip_src,\n- const char *global_svc_monitor_ip_dst,\n+ const struct svc_monitor_addresses *svc_global_addresses,\n struct hmap *ls_ports, struct hmap *lb_dps_map,\n struct sset *svc_monitor_lsps,\n struct hmap *local_svc_monitors_map,\n@@ -3645,8 +3631,7 @@ build_svc_monitors_data(\n struct ovn_lb_datapaths *lb_dps;\n HMAP_FOR_EACH (lb_dps, hmap_node, lb_dps_map) {\n ovn_lb_svc_create(ovnsb_txn, lb_dps->lb,\n- global_svc_monitor_mac_src,\n- global_svc_monitor_mac_ea_src,\n+ svc_global_addresses,\n ls_ports,\n svc_monitor_lsps,\n local_svc_monitors_map,\n@@ -3658,15 +3643,11 @@ build_svc_monitors_data(\n nbrec_network_function_table) {\n ovn_nf_svc_create(ovnsb_txn,\n nbrec_nf,\n+ svc_global_addresses,\n local_svc_monitors_map,\n ic_learned_svc_monitors_map,\n svc_monitor_lsps,\n- ls_ports,\n- global_svc_monitor_mac_src,\n- global_svc_monitor_mac_ea_src,\n- global_svc_monitor_mac_dst,\n- global_svc_monitor_ip_src,\n- global_svc_monitor_ip_dst);\n+ ls_ports);\n }\n \n struct hmapx_node *hmapx_node;\n@@ -3675,8 +3656,7 @@ build_svc_monitors_data(\n op = hmapx_node->data;\n ovn_lsp_svc_monitors_process_port(ovnsb_txn,\n op,\n- global_svc_monitor_mac_src,\n- global_svc_monitor_mac_ea_src,\n+ svc_global_addresses,\n local_svc_monitors_map,\n svc_monitor_lsps);\n }\n@@ -20771,11 +20751,7 @@ ovnnb_db_run(struct northd_input *input_data,\n build_svc_monitors_data(ovnsb_txn,\n input_data->sbrec_service_monitor_by_learned_type,\n input_data->nbrec_network_function_table,\n- input_data->svc_monitor_mac,\n- &input_data->svc_monitor_mac_ea,\n- input_data->svc_monitor_mac_dst,\n- input_data->svc_monitor_ip,\n- input_data->svc_monitor_ip_dst,\n+ input_data->svc_global_addresses,\n &data->ls_ports, &data->lb_datapaths_map,\n &data->svc_monitor_lsps, &data->local_svc_monitors_map,\n input_data->ic_learned_svc_monitors_map,\n@@ -20785,7 +20761,7 @@ ovnnb_db_run(struct northd_input *input_data,\n input_data->nbrec_network_function_group_table,\n &data->local_svc_monitors_map,\n input_data->ic_learned_svc_monitors_map,\n- input_data->svc_monitor_ip_dst);\n+ input_data->svc_global_addresses->ip_dst);\n build_ipam(&data->ls_datapaths.datapaths);\n build_lrouter_groups(&data->lr_ports, &data->lr_datapaths);\n build_ip_mcast(ovnsb_txn, input_data->sbrec_ip_multicast_table,\ndiff --git a/northd/northd.h b/northd/northd.h\nindex f5c8b17dd..b7cea07c1 100644\n--- a/northd/northd.h\n+++ b/northd/northd.h\n@@ -23,6 +23,7 @@\n #include \"lib/hmapx.h\"\n #include \"northd/en-port-group.h\"\n #include \"northd/en-sync-from-sb.h\"\n+#include \"northd/en-global-config.h\"\n #include \"northd/ipam.h\"\n #include \"northd/lb.h\"\n #include \"openvswitch/hmap.h\"\n@@ -70,12 +71,7 @@ struct northd_input {\n /* Global config data node inputs. */\n const struct smap *nb_options;\n const struct smap *sb_options;\n- const char *svc_monitor_mac;\n- struct eth_addr svc_monitor_mac_ea;\n- const char *svc_monitor_mac_dst;\n- struct eth_addr svc_monitor_mac_ea_dst;\n- char *svc_monitor_ip;\n- char *svc_monitor_ip_dst;\n+ const struct svc_monitor_addresses *svc_global_addresses;\n const struct chassis_features *features;\n bool vxlan_mode;\n \n", "prefixes": [ "ovs-dev", "8/8", "v2" ] }