Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2194260/?format=api
{ "id": 2194260, "url": "http://patchwork.ozlabs.org/api/patches/2194260/?format=api", "web_url": "http://patchwork.ozlabs.org/project/ovn/patch/20260207214852.86991-6-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-6-arukomoinikova@k2.cloud>", "list_archive_url": null, "date": "2026-02-07T21:48:47", "name": "[ovs-dev,6/8,v2] pinctrl: Clean up service monitor type/protocol handling.", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "336bb3f0e5fb7099e3290cb6ec34d3cd122a150e", "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-6-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/2194260/comments/", "check": "success", "checks": "http://patchwork.ozlabs.org/api/patches/2194260/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=eKKCcTdn;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::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=eKKCcTdn", "smtp1.osuosl.org;\n dmarc=pass (p=none dis=none) header.from=k2.cloud", "smtp1.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=eKKCcTdn" ], "Received": [ "from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::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 4f7l3M6dgKz1xvh\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 08 Feb 2026 08:49:19 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp3.osuosl.org (Postfix) with ESMTP id 066BF612DE;\n\tSat, 7 Feb 2026 21:49:17 +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 BCbEyiyrBOIb; Sat, 7 Feb 2026 21:49:14 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp3.osuosl.org (Postfix) with ESMTPS id 7494B60744;\n\tSat, 7 Feb 2026 21:49:08 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 25065C0780;\n\tSat, 7 Feb 2026 21:49:08 +0000 (UTC)", "from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 0A256C02A4\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:03 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id E995A83330\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:02 +0000 (UTC)", "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id WJ0PKZC_usp4 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 smtp1.osuosl.org (Postfix) with ESMTPS id DEFE480ED6\n for <dev@openvswitch.org>; Sat, 7 Feb 2026 21:49:01 +0000 (UTC)" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections -\n client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp3.osuosl.org 7494B60744", "OpenDKIM Filter v2.11.0 smtp1.osuosl.org DEFE480ED6" ], "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 smtp1.osuosl.org DEFE480ED6", "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=+TchY/z7sSPHxZxwKHLzhBhHCBcHFOh5lb+PM4KII6U=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References;\n b=eKKCcTdnAWBbuap1n2vPsbixOx3kxDpAaMI3O4EeWKMupZelmxDdMkSiOeXz5dmGG\n C4DNqhE1mAzWlUlxbLfXzr+FYmPerMshiLY+4XKCDU9kSyxudHG7wIhPw6wn33t15Z\n bZ2fFGQHsgPA5FRZ1+hxUoBkYX7Inzzm2taTlLt8=", "To": "dev@openvswitch.org", "Cc": "Alexandra Rukomoinikova <arukomoinikova@k2.cloud>", "Date": "Sun, 8 Feb 2026 00:48:47 +0300", "Message-Id": "<20260207214852.86991-6-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 6/8 v2] pinctrl: Clean up service monitor\n type/protocol handling.", "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": "Create svc_monitor_type_from_sb() and svc_monitor_proto_from_sb()\nhelper functions for cleaner code. Add svc_monitor_type_allows_proto()\nto validate protocol-type compatibility. Simplify ICMP handling\nby removing redundant type checks since validation is now centralized.\n\nSigned-off-by: Alexandra Rukomoinikova <arukomoinikova@k2.cloud>\n---\n controller/pinctrl.c | 91 +++++++++++++++++++++++++++++---------------\n 1 file changed, 60 insertions(+), 31 deletions(-)", "diff": "diff --git a/controller/pinctrl.c b/controller/pinctrl.c\nindex 7b80f4725..476410dcc 100644\n--- a/controller/pinctrl.c\n+++ b/controller/pinctrl.c\n@@ -7021,6 +7021,55 @@ pinctrl_find_svc_monitor(uint32_t dp_key, uint32_t port_key,\n return NULL;\n }\n \n+static enum svc_monitor_type\n+svc_monitor_type_from_sb(const struct sbrec_service_monitor *sb)\n+{\n+ if (sb->type &&\n+ !strcmp(sb->type, \"network-function\")) {\n+ return SVC_MON_TYPE_NF;\n+ }\n+\n+ if (sb->type &&\n+ !strcmp(sb->type, \"logical-switch-port\")) {\n+ return SVC_MON_TYPE_LSP;\n+ }\n+\n+ return SVC_MON_TYPE_LB;\n+}\n+\n+static enum svc_monitor_protocol\n+svc_monitor_proto_from_sb(const struct sbrec_service_monitor *sb)\n+{\n+ if (!strcmp(sb->protocol, \"udp\")) {\n+ return SVC_MON_PROTO_UDP;\n+ }\n+\n+ if (!strcmp(sb->protocol, \"icmp\")) {\n+ return SVC_MON_PROTO_ICMP;\n+ }\n+\n+ return SVC_MON_PROTO_TCP;\n+}\n+\n+static bool\n+svc_monitor_type_allows_proto(enum svc_monitor_type type,\n+ enum svc_monitor_protocol proto)\n+{\n+ switch (type) {\n+ case SVC_MON_TYPE_NF:\n+ return proto == SVC_MON_PROTO_ICMP;\n+\n+ case SVC_MON_TYPE_LB:\n+ return proto == SVC_MON_PROTO_TCP ||\n+ proto == SVC_MON_PROTO_UDP;\n+\n+ case SVC_MON_TYPE_LSP:\n+ return true;\n+ }\n+\n+ return false;\n+}\n+\n static void\n sync_svc_monitors(struct ovsdb_idl_txn *ovnsb_idl_txn,\n const struct sbrec_service_monitor_table *svc_mon_table,\n@@ -7037,26 +7086,6 @@ sync_svc_monitors(struct ovsdb_idl_txn *ovnsb_idl_txn,\n \n const struct sbrec_service_monitor *sb_svc_mon;\n SBREC_SERVICE_MONITOR_TABLE_FOR_EACH (sb_svc_mon, svc_mon_table) {\n- enum svc_monitor_type mon_type;\n- if (sb_svc_mon->type && !strcmp(sb_svc_mon->type,\n- \"network-function\")) {\n- mon_type = SVC_MON_TYPE_NF;\n- } else if (sb_svc_mon->type && !strcmp(sb_svc_mon->type,\n- \"logical-switch-port\")) {\n- mon_type = SVC_MON_TYPE_LSP;\n- } else {\n- mon_type = SVC_MON_TYPE_LB;\n- }\n-\n- enum svc_monitor_protocol protocol;\n- if (!strcmp(sb_svc_mon->protocol, \"udp\")) {\n- protocol = SVC_MON_PROTO_UDP;\n- } else if (!strcmp(sb_svc_mon->protocol, \"icmp\")) {\n- protocol = SVC_MON_PROTO_ICMP;\n- } else {\n- protocol = SVC_MON_PROTO_TCP;\n- }\n-\n const struct sbrec_port_binding *pb\n = lport_lookup_by_name(sbrec_port_binding_by_name,\n sb_svc_mon->logical_port);\n@@ -7090,10 +7119,16 @@ sync_svc_monitors(struct ovsdb_idl_txn *ovnsb_idl_txn,\n struct eth_addr ea;\n bool mac_found = false;\n \n+ enum svc_monitor_type mon_type =\n+ svc_monitor_type_from_sb(sb_svc_mon);\n+ enum svc_monitor_protocol protocol =\n+ svc_monitor_proto_from_sb(sb_svc_mon);\n+\n+ if (!svc_monitor_type_allows_proto(mon_type, protocol)) {\n+ continue;\n+ }\n+\n if (mon_type == SVC_MON_TYPE_NF) {\n- if (protocol != SVC_MON_PROTO_ICMP) {\n- continue;\n- }\n input_pb = lport_lookup_by_name(sbrec_port_binding_by_name,\n sb_svc_mon->logical_input_port);\n if (!input_pb) {\n@@ -8432,10 +8467,7 @@ pinctrl_handle_svc_check(struct rconn *swconn, const struct flow *ip_flow,\n \"request\" : \"reply\");\n return;\n }\n- if (svc_mon->type == SVC_MON_TYPE_NF ||\n- svc_mon->type == SVC_MON_TYPE_LSP) {\n- pinctrl_handle_icmp_svc_check(pkt_in, svc_mon);\n- }\n+ pinctrl_handle_icmp_svc_check(pkt_in, svc_mon);\n return;\n }\n } else if (in_eth->eth_type == htons(ETH_TYPE_IPV6)) {\n@@ -8461,10 +8493,7 @@ pinctrl_handle_svc_check(struct rconn *swconn, const struct flow *ip_flow,\n \"request\" : \"reply\");\n return;\n }\n- if (svc_mon->type == SVC_MON_TYPE_NF ||\n- svc_mon->type == SVC_MON_TYPE_LSP) {\n- pinctrl_handle_icmp_svc_check(pkt_in, svc_mon);\n- }\n+ pinctrl_handle_icmp_svc_check(pkt_in, svc_mon);\n return;\n }\n }\n", "prefixes": [ "ovs-dev", "6/8", "v2" ] }