Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2194262/?format=api
{ "id": 2194262, "url": "http://patchwork.ozlabs.org/api/patches/2194262/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/20260207214852.86991-7-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-7-arukomoinikova@k2.cloud>", "list_archive_url": null, "date": "2026-02-07T21:48:48", "name": "[ovs-dev,7/8,v2] northd: Refactor service monitor creation for consistency.", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "dbd04d0764dc8603daf744aa4b9bcdfcde3ed773", "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-7-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/2194262/comments/", "check": "success", "checks": "http://patchwork.ozlabs.org/api/patches/2194262/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=KlFneq/E;\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=KlFneq/E", "smtp3.osuosl.org;\n dmarc=pass (p=none dis=none) header.from=k2.cloud" ], "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 4f7l3T6ZJDz1xvW\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 08 Feb 2026 08:49:25 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id D157B612EE;\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 EpGgSawV6cSU; 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 5AA07612AC;\n\tSat, 7 Feb 2026 21:49:09 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 064BDC0780;\n\tSat, 7 Feb 2026 21:49:09 +0000 (UTC)", "from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 7E99EC0782\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:03 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp3.osuosl.org (Postfix) with ESMTP id 6794A60797\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:03 +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 Q5KgLfFfw_rj 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 smtp3.osuosl.org (Postfix) with ESMTPS id 2C1F060744\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 5AA07612AC", "OpenDKIM Filter v2.11.0 smtp3.osuosl.org 2C1F060744" ], "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 smtp3.osuosl.org 2C1F060744", "From": "Alexandra Rukomoinikova <arukomoinikova@k2.cloud>", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=k2.cloud;\n s=cloudmail; t=1770500937;\n bh=c/qjHGbpT5arEPb2JO27Qn/t0E2oOK7ViZ4C5d2ZzWU=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References;\n b=KlFneq/ELSzPuV/rsETrtkTHwEcbUYGDUTncScJ/XS8j+/KSSmDp0J9d5DLqtUgSk\n oOeDrhTLbdbP6SfR7GdwsOj0ZhJfh2zlUTMIuJNJB+Gpmc7u9ltLYzXY/QI6QG01Dn\n OaOcaCWbtdk32prrlc49MDfV+TXFsQRSp2viy4oE=", "To": "dev@openvswitch.org", "Cc": "Alexandra Rukomoinikova <arukomoinikova@k2.cloud>", "Date": "Sun, 8 Feb 2026 00:48:48 +0300", "Message-Id": "<20260207214852.86991-7-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 7/8 v2] northd: Refactor service monitor\n creation for consistency.", "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": "1) Extract common service monitor update logic into helper functions:\n- svc_mon_update_field_if_changed() for field updates with change detection\n- svc_mon_update_status_if_online() for status transition to offline\n- svc_mon_update_mac_ip_addresses() for MAC/IP address updates\n\n2) Simplify Network Function service monitor creation by passing the\nnbrec_network_function object directly instead of individual fields.\n\n3) Improve parameter naming consistency across LB, LSP, and NF service\nmonitor creation functions.\n\nSigned-off-by: Alexandra Rukomoinikova <arukomoinikova@k2.cloud>\n---\nv2: After adding lsp hc, its ended up with three part of nearly identical\n code for creating service monitors. I split it all into functions to make it more uniform.\n---\n northd/northd.c | 270 +++++++++++++++++++++++-------------------------\n 1 file changed, 131 insertions(+), 139 deletions(-)", "diff": "diff --git a/northd/northd.c b/northd/northd.c\nindex b11a57ca9..7a2c472c0 100644\n--- a/northd/northd.c\n+++ b/northd/northd.c\n@@ -3110,6 +3110,7 @@ create_or_get_service_mon(struct ovsdb_idl_txn *ovnsb_txn,\n */\n sbrec_service_monitor_set_ic_learned(mon_info->sbrec_mon,\n false);\n+ mon_info->required = true;\n return mon_info;\n }\n \n@@ -3137,32 +3138,80 @@ create_or_get_service_mon(struct ovsdb_idl_txn *ovnsb_txn,\n mon_info = xzalloc(sizeof *mon_info);\n mon_info->sbrec_mon = sbrec_mon;\n hmap_insert(local_svc_monitors_map, &mon_info->hmap_node, hash);\n+ mon_info->required = true;\n return mon_info;\n }\n \n+static inline void\n+svc_mon_update_field_if_changed(\n+ const struct sbrec_service_monitor *sbrec_mon,\n+ const char *old_value, const char *new_value,\n+ void (*setter)(const struct sbrec_service_monitor *, const char *))\n+{\n+ if (old_value && new_value && strcmp(old_value, new_value)) {\n+ setter(sbrec_mon, new_value);\n+ }\n+}\n+\n+static inline void\n+svc_mon_update_status_if_online(const struct sbrec_service_monitor *sbrec_mon,\n+ bool condition)\n+{\n+ if (condition && sbrec_mon->status &&\n+ !strcmp(sbrec_mon->status, \"online\")) {\n+ sbrec_service_monitor_set_status(sbrec_mon, \"offline\");\n+ }\n+}\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+{\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+ }\n+\n+ if (target_mac) {\n+ svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->mac, target_mac,\n+ sbrec_service_monitor_set_mac);\n+ }\n+\n+ svc_mon_update_field_if_changed(sbrec_mon, sbrec_mon->src_ip, source_ip,\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+ sbrec_service_monitor_set_ip);\n+ }\n+}\n+\n static void\n ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n+ const struct nbrec_network_function *nbrec_nf,\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 *mac_src, const char *mac_dst,\n- const char *ip_src, const char *ip_dst,\n- const char *logical_port, const char *logical_input_port,\n- const struct smap *health_check_options)\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 {\n- static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);\n-\n- if (!ip_src || !ip_dst || !mac_src || !mac_dst) {\n- VLOG_ERR_RL(&rl, \"NetworkFunction: invalid service monitor \"\n- \"src_mac: %s dst_mac:%s src_ip:%s dst_ip:%s\",\n- mac_src, mac_dst, ip_src, ip_dst);\n+ if (!nbrec_nf->health_check) {\n return;\n }\n \n- const char *ports[] = {logical_port, logical_input_port};\n+ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);\n+ const char *ports[] = {nbrec_nf->outport->name, nbrec_nf->inport->name};\n const char *chassis_name = NULL;\n- bool port_up = true;\n+ bool port_up_condition = true;\n \n for (size_t i = 0; i < ARRAY_SIZE(ports); i++) {\n const char *port = ports[i];\n@@ -3183,58 +3232,40 @@ ovn_nf_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n op->sb->chassis->name, port);\n }\n }\n- port_up = port_up && (op->sb->n_up && op->sb->up[0]);\n+ port_up_condition = port_up_condition &&\n+ (op->sb->n_up && op->sb->up[0]);\n }\n \n struct service_monitor_info *mon_info =\n create_or_get_service_mon(ovnsb_txn,\n local_svc_monitors_map,\n ic_learned_svc_monitors_map,\n- \"network-function\", ip_dst,\n- logical_port,\n- logical_input_port,\n+ \"network-function\",\n+ global_svc_monitor_ip_dst,\n+ nbrec_nf->outport->name,\n+ nbrec_nf->inport->name,\n 0,\n \"icmp\",\n chassis_name,\n false);\n- ovs_assert(mon_info);\n- sbrec_service_monitor_set_options(\n- mon_info->sbrec_mon, health_check_options);\n-\n- if (!mon_info->sbrec_mon->src_mac ||\n- strcmp(mon_info->sbrec_mon->src_mac, mac_src)) {\n- sbrec_service_monitor_set_src_mac(mon_info->sbrec_mon,\n- mac_src);\n- }\n-\n- if (!mon_info->sbrec_mon->mac ||\n- strcmp(mon_info->sbrec_mon->mac, mac_dst)) {\n- sbrec_service_monitor_set_mac(mon_info->sbrec_mon,\n- mac_dst);\n- }\n-\n- if (!mon_info->sbrec_mon->src_ip ||\n- strcmp(mon_info->sbrec_mon->src_ip, ip_src)) {\n- sbrec_service_monitor_set_src_ip(mon_info->sbrec_mon, ip_src);\n- }\n-\n- if (!mon_info->sbrec_mon->ip ||\n- strcmp(mon_info->sbrec_mon->ip, ip_dst)) {\n- sbrec_service_monitor_set_ip(mon_info->sbrec_mon, ip_dst);\n- }\n-\n- if (!port_up && mon_info->sbrec_mon->status\n- && !strcmp(mon_info->sbrec_mon->status, \"online\")) {\n- sbrec_service_monitor_set_status(mon_info->sbrec_mon, \"offline\");\n- }\n- mon_info->required = true;\n+ set_service_mon_options(mon_info->sbrec_mon,\n+ &nbrec_nf->health_check->options,\n+ 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_mon_update_status_if_online(mon_info->sbrec_mon,\n+ !port_up_condition);\n }\n \n static void\n ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n const struct ovn_northd_lb *lb,\n- const char *svc_monitor_mac,\n- const struct eth_addr *svc_monitor_mac_ea,\n+ const char *global_svc_monitor_mac_src,\n+ const struct eth_addr *global_svc_monitor_mac_ea_src,\n struct hmap *ls_ports,\n struct sset *svc_monitor_lsps,\n struct hmap *local_svc_monitors_map,\n@@ -3267,6 +3298,9 @@ ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n continue;\n }\n \n+ bool port_up_condition = !backend_nb->remote_backend &&\n+ (!op->sb->n_up || !op->sb->up[0]);\n+\n ovn_northd_lb_backend_set_mon_port(op, backend_nb);\n \n /* If the service monitor is backed by a real port, use its MAC\n@@ -3277,8 +3311,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 = svc_monitor_mac_ea;\n- source_mac = svc_monitor_mac;\n+ source_mac_ea = global_svc_monitor_mac_ea_src;\n+ source_mac = global_svc_monitor_mac_src;\n }\n \n const char *protocol = lb->nlb->protocol;\n@@ -3286,52 +3320,26 @@ ovn_lb_svc_create(struct ovsdb_idl_txn *ovnsb_txn,\n protocol = \"tcp\";\n }\n \n- const char *chassis_name = NULL;\n- if (!backend_nb->remote_backend && op->sb->chassis) {\n- chassis_name = op->sb->chassis->name;\n- }\n-\n struct service_monitor_info *mon_info =\n create_or_get_service_mon(ovnsb_txn,\n local_svc_monitors_map,\n ic_learned_svc_monitors_map,\n- \"load-balancer\",\n- backend->ip_str,\n+ \"load-balancer\", backend->ip_str,\n backend_nb->logical_port,\n- NULL,\n- backend->port,\n- protocol,\n- chassis_name,\n+ NULL, backend->port, protocol,\n+ (!backend_nb->remote_backend &&\n+ op->sb->chassis) ?\n+ op->sb->chassis->name : NULL,\n backend_nb->remote_backend);\n- ovs_assert(mon_info);\n+\n set_service_mon_options(mon_info->sbrec_mon,\n &lb_vip_nb->lb_health_check->options,\n backend_nb->az_name);\n- struct eth_addr ea;\n- if (!mon_info->sbrec_mon->src_mac ||\n- !eth_addr_from_string(mon_info->sbrec_mon->src_mac, &ea) ||\n- !eth_addr_equals(ea, *source_mac_ea)) {\n- sbrec_service_monitor_set_src_mac(mon_info->sbrec_mon,\n- source_mac);\n- }\n-\n- if (!mon_info->sbrec_mon->src_ip ||\n- strcmp(mon_info->sbrec_mon->src_ip,\n- backend_nb->svc_mon_src_ip)) {\n- sbrec_service_monitor_set_src_ip(\n- mon_info->sbrec_mon,\n- backend_nb->svc_mon_src_ip);\n- }\n-\n- if (!backend_nb->remote_backend &&\n- (!op->sb->n_up || !op->sb->up[0])\n- && mon_info->sbrec_mon->status\n- && !strcmp(mon_info->sbrec_mon->status, \"online\")) {\n- sbrec_service_monitor_set_status(mon_info->sbrec_mon,\n- \"offline\");\n- }\n-\n- mon_info->required = true;\n+ svc_mon_update_mac_ip_addresses(mon_info->sbrec_mon,\n+ source_mac_ea, source_mac, NULL,\n+ backend_nb->svc_mon_src_ip, NULL);\n+ svc_mon_update_status_if_online(mon_info->sbrec_mon,\n+ port_up_condition);\n }\n }\n }\n@@ -3544,13 +3552,14 @@ build_lb_datapaths(const struct hmap *lbs, const struct hmap *lb_groups,\n }\n \n static void\n-ovn_lsp_svc_monitors_process_port(struct ovsdb_idl_txn *ovnsb_txn,\n- const struct ovn_port *op,\n- const char *svc_monitor_mac,\n- const struct eth_addr *svc_monitor_mac_ea,\n- struct hmap *local_svc_monitors_map,\n- struct sset *svc_monitor_lsps)\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+ struct hmap *local_svc_monitors_map,\n+ struct sset *svc_monitor_lsps)\n {\n+ bool port_up_condition = !op->sb->n_up || !op->sb->up[0];\n sset_add(svc_monitor_lsps, op->key);\n \n for (size_t i = 0; i < op->nbsp->n_health_checks; i++) {\n@@ -3585,31 +3594,14 @@ ovn_lsp_svc_monitors_process_port(struct ovsdb_idl_txn *ovnsb_txn,\n (op->sb && op->sb->chassis) ?\n op->sb->chassis->name : NULL,\n false);\n-\n- mon_info->required = true;\n set_service_mon_options(mon_info->sbrec_mon,\n &lsp_hc->options, NULL);\n-\n- struct eth_addr ea;\n- if (!mon_info->sbrec_mon->src_mac ||\n- !eth_addr_from_string(mon_info->sbrec_mon->src_mac, &ea) ||\n- !eth_addr_equals(ea, *svc_monitor_mac_ea)) {\n- sbrec_service_monitor_set_src_mac(mon_info->sbrec_mon,\n- svc_monitor_mac);\n- }\n-\n- if (!mon_info->sbrec_mon->src_ip ||\n- strcmp(mon_info->sbrec_mon->src_ip, lsp_hc->src_ip)) {\n- sbrec_service_monitor_set_src_ip(mon_info->sbrec_mon,\n- lsp_hc->src_ip);\n- }\n-\n- if ((!op->sb->n_up || !op->sb->up[0]) &&\n- mon_info->sbrec_mon->status &&\n- !strcmp(mon_info->sbrec_mon->status, \"online\")) {\n- sbrec_service_monitor_set_status(mon_info->sbrec_mon,\n- \"offline\");\n- }\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+ NULL, lsp_hc->src_ip, NULL);\n+ svc_mon_update_status_if_online(mon_info->sbrec_mon,\n+ port_up_condition);\n }\n }\n \n@@ -3617,13 +3609,13 @@ static void\n build_svc_monitors_data(\n struct ovsdb_idl_txn *ovnsb_txn,\n struct ovsdb_idl_index *sbrec_service_monitor_by_learned_type,\n- const char *svc_monitor_mac,\n- const struct eth_addr *svc_monitor_mac_ea,\n- const char *svc_monitor_mac_dst,\n- const char *svc_monitor_ip,\n- const char *svc_monitor_ip_dst,\n- struct hmap *ls_ports, struct hmap *lb_dps_map,\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+ struct hmap *ls_ports, struct hmap *lb_dps_map,\n struct sset *svc_monitor_lsps,\n struct hmap *local_svc_monitors_map,\n struct hmap *ic_learned_svc_monitors_map,\n@@ -3653,8 +3645,8 @@ 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- svc_monitor_mac,\n- svc_monitor_mac_ea,\n+ global_svc_monitor_mac_src,\n+ global_svc_monitor_mac_ea_src,\n ls_ports,\n svc_monitor_lsps,\n local_svc_monitors_map,\n@@ -3664,17 +3656,17 @@ build_svc_monitors_data(\n const struct nbrec_network_function *nbrec_nf;\n NBREC_NETWORK_FUNCTION_TABLE_FOR_EACH (nbrec_nf,\n nbrec_network_function_table) {\n- if (nbrec_nf->health_check) {\n- ovn_nf_svc_create(ovnsb_txn,\n- local_svc_monitors_map,\n- ic_learned_svc_monitors_map,\n- svc_monitor_lsps,\n- ls_ports,\n- svc_monitor_mac, svc_monitor_mac_dst,\n- svc_monitor_ip, svc_monitor_ip_dst,\n- nbrec_nf->outport->name, nbrec_nf->inport->name,\n- &nbrec_nf->health_check->options);\n- }\n+ ovn_nf_svc_create(ovnsb_txn,\n+ nbrec_nf,\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 }\n \n struct hmapx_node *hmapx_node;\n@@ -3683,8 +3675,8 @@ build_svc_monitors_data(\n op = hmapx_node->data;\n ovn_lsp_svc_monitors_process_port(ovnsb_txn,\n op,\n- svc_monitor_mac,\n- svc_monitor_mac_ea,\n+ global_svc_monitor_mac_src,\n+ global_svc_monitor_mac_ea_src,\n local_svc_monitors_map,\n svc_monitor_lsps);\n }\n@@ -20778,13 +20770,13 @@ ovnnb_db_run(struct northd_input *input_data,\n &data->lb_group_datapaths_map);\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 &data->ls_ports, &data->lb_datapaths_map,\n- input_data->nbrec_network_function_table,\n &data->svc_monitor_lsps, &data->local_svc_monitors_map,\n input_data->ic_learned_svc_monitors_map,\n &data->monitored_ports_map);\n", "prefixes": [ "ovs-dev", "7/8", "v2" ] }