Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2231474/?format=api
{ "id": 2231474, "url": "http://patchwork.ozlabs.org/api/patches/2231474/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/20260430180013.3202907-1-naveen.yerramneni@nutanix.com/", "project": { "id": 47, "url": "http://patchwork.ozlabs.org/api/projects/47/?format=api", "name": "Open vSwitch", "link_name": "openvswitch", "list_id": "ovs-dev.openvswitch.org", "list_email": "ovs-dev@openvswitch.org", "web_url": "http://openvswitch.org/", "scm_url": "git@github.com:openvswitch/ovs.git", "webscm_url": "https://github.com/openvswitch/ovs", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260430180013.3202907-1-naveen.yerramneni@nutanix.com>", "list_archive_url": null, "date": "2026-04-30T18:00:13", "name": "[ovs-dev] ofproto-dpif-xlate: Restore ctx->conntracked after reversible clone().", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "9841cb1b9687792f67252fbe1599d8036952fd4f", "submitter": { "id": 85983, "url": "http://patchwork.ozlabs.org/api/people/85983/?format=api", "name": "Naveen Yerramneni", "email": "naveen.yerramneni@nutanix.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/20260430180013.3202907-1-naveen.yerramneni@nutanix.com/mbox/", "series": [ { "id": 502353, "url": "http://patchwork.ozlabs.org/api/series/502353/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=502353", "date": "2026-04-30T18:00:13", "name": "[ovs-dev] ofproto-dpif-xlate: Restore ctx->conntracked after reversible clone().", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/502353/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2231474/comments/", "check": "success", "checks": "http://patchwork.ozlabs.org/api/patches/2231474/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\" (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=VikqP41G;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=hs9QQlO4;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)", "smtp2.osuosl.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key,\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=proofpoint20171006 header.b=VikqP41G;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key,\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=hs9QQlO4", "smtp1.osuosl.org;\n dmarc=pass (p=none dis=none) header.from=nutanix.com", "smtp1.osuosl.org;\n dkim=pass (2048-bit key, unprotected) header.d=nutanix.com\n header.i=@nutanix.com header.a=rsa-sha256 header.s=proofpoint20171006\n header.b=VikqP41G; dkim=pass (2048-bit key,\n unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256\n header.s=selector1 header.b=hs9QQlO4" ], "Received": [ "from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133])\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 4g625g6mkVz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 04:00:37 +1000 (AEST)", "from localhost (localhost [127.0.0.1])\n\tby smtp2.osuosl.org (Postfix) with ESMTP id 81DB740BEE;\n\tThu, 30 Apr 2026 18:00:29 +0000 (UTC)", "from smtp2.osuosl.org ([127.0.0.1])\n by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id dqIhX5F1Innn; Thu, 30 Apr 2026 18:00:27 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp2.osuosl.org (Postfix) with ESMTPS id 59F2940566;\n\tThu, 30 Apr 2026 18:00:27 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 0EF0FC04E8;\n\tThu, 30 Apr 2026 18:00:27 +0000 (UTC)", "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 385B5C04E7\n for <dev@openvswitch.org>; Thu, 30 Apr 2026 18:00:26 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id 189C884E79\n for <dev@openvswitch.org>; Thu, 30 Apr 2026 18:00:26 +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 IVmJIsAILg3P for <dev@openvswitch.org>;\n Thu, 30 Apr 2026 18:00:25 +0000 (UTC)", "from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com\n [148.163.151.68])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 14D3184E7B\n for <dev@openvswitch.org>; Thu, 30 Apr 2026 18:00:24 +0000 (UTC)", "from pps.filterd (m0127840.ppops.net [127.0.0.1])\n by mx0a-002c1b01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63UGPPq23531064\n for <dev@openvswitch.org>; Thu, 30 Apr 2026 11:00:23 -0700", "from ph0pr06cu001.outbound.protection.outlook.com\n (mail-westus3azon11021131.outbound.protection.outlook.com [40.107.208.131])\n by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 4du760whpq-1\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)\n for <dev@openvswitch.org>; Thu, 30 Apr 2026 11:00:23 -0700 (PDT)", "from SJ0PR02MB8369.namprd02.prod.outlook.com (2603:10b6:a03:3e4::5)\n by DM8PR02MB7959.namprd02.prod.outlook.com (2603:10b6:8:14::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.22; Thu, 30 Apr\n 2026 18:00:21 +0000", "from SJ0PR02MB8369.namprd02.prod.outlook.com\n ([fe80::7c30:f56e:e3cb:cb38]) by SJ0PR02MB8369.namprd02.prod.outlook.com\n ([fe80::7c30:f56e:e3cb:cb38%4]) with mapi id 15.20.9870.020; Thu, 30 Apr 2026\n 18:00:21 +0000" ], "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 smtp2.osuosl.org 59F2940566", "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 14D3184E7B" ], "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=148.163.151.68;\n helo=mx0a-002c1b01.pphosted.com; envelope-from=naveen.yerramneni@nutanix.com;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp1.osuosl.org 14D3184E7B", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=\n cc:content-transfer-encoding:content-type:date:from:message-id\n :mime-version:subject:to; s=proofpoint20171006; bh=Vs+Xb2qz7xw+S\n ImkTM9fyNiiJQJ/x5sTofcP6gVRbCA=; b=VikqP41GIzpDDekBtj3X7sLBhseZX\n dCB+M3J7rwKHwJvDp0meKyWg+SGEwYk4LsBTVGu6PDv7Pqbd0MtiYoGMztr52OO6\n /Ommubrejnq915m9VUzXBvW/xtQjfwQKiTiLAPRVssnzeoiJFiOcVhNkPmbfEZur\n OxOd+qkJ3UZYxqAfNeSesQm/A8tes5HuFpk6ocEXBKQiFY2OMKoM75+99V6AO+uT\n GCnv58f7lC1zVp74WMONHQZXL0oK2MwkhDSggZGXJYsIDxlDLhIvGZCuwKlnEFta\n R7cwVRWG2YoKWKwl2OsuOwyqHIyB+yyGrn0yDP0jNRlgM0IMBSXoNJ0Iw==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Vs+Xb2qz7xw+SImkTM9fyNiiJQJ/x5sTofcP6gVRbCA=;\n b=hs9QQlO4F+X+32M5w0kXPaVriSstKYsErIdnf78MoENj0td+5OgK1hiN51FyoZW9V/42xkdcU2xV3yt06Avh/K4pqn7/y9TdqauR7T81qNg/leYRNnSrInTxNvg8l0OQj5JvUXRnCdbTipwiQ+SDA5mWBYiUagm8KmY8Cfi0PUtCx57Aj/SI7NITXYqdaTV+j90Fz85rLvwHnj+OK0FGo4jhvz/L236tQcKMLUu8GVS+dGmmJYVWeVQO+mqnCUcQnm+UZqMQgq7UfnmaAELUJKd+jE2pnKN6U7IgBqYCS8aRkqoobRfYdHU7xut5Dc6xemhuqqftH89rOJZZVec/Mg==" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=djw2O3dZzcLFVhSqvtI1UXtqxC3V/N66nyjYU8XZZx643z/yB306WiIyFOz9aGiXcDkyVi5Ng3Ph3PwFccvZeZwKOjXwNDT32dU7ydQ2P2WMhiHdkjjVHytanHqhuknIJBOPoFurkPRAp7OoE5lzjtFXCC8WbxdsT/EzLFaVw87XZ02U57CarvOKHafffLklt6F+iu9zrxAbNWmgsVU0AaBMAYC+/uOacNvtv6g2Ra0jgSvHSNoNpgBYKu80h0B50qN+a3Ht+uG4JS90psD9ys7V3ayy6prM1we+/1Ih4lIWwN1pSUPUbdUkvC2sG1LQle371grbxvLYjAN42djasQ==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=Vs+Xb2qz7xw+SImkTM9fyNiiJQJ/x5sTofcP6gVRbCA=;\n b=rZ7qH35p8Pk8ksj3nFRetlQHw3siN0XMxJpwNY4gmOq/oICqv+WPiqAbgb1gZZyC4L1N3X1wzKwLCJuJ8R5I9o+3YjCipoUZLZz8xuEwsKefRA1hF7qKjrYuGTi8AxD6AVx4XfL7LgsZk/6YGvL9hVpMjXZjCIbPG8oGGgWj83s3eQhvhjckPDbLxvIeacDQT7XtTirjTFGA34EYqrgJCbnKt6muLWsTBlKfrmhnr9l0zvzcQoxkfPXIpMfTY9hJc8T1LSuhnSPtofXSmq+cRAD0LlgosysGRduAMVhbhXLf+aAiU4rj6dIzsfzSaGlefS8A4+gVoQrVgQazRo1biw==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com;\n dkim=pass header.d=nutanix.com; arc=none", "From": "Naveen Yerramneni <naveen.yerramneni@nutanix.com>", "To": "dev@openvswitch.org", "Date": "Thu, 30 Apr 2026 18:00:13 +0000", "Message-ID": "<20260430180013.3202907-1-naveen.yerramneni@nutanix.com>", "X-Mailer": "git-send-email 2.43.5", "X-ClientProxiedBy": "PH3PEPF00004098.namprd05.prod.outlook.com\n (2603:10b6:518:1::44) To SJ0PR02MB8369.namprd02.prod.outlook.com\n (2603:10b6:a03:3e4::5)", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "SJ0PR02MB8369:EE_|DM8PR02MB7959:EE_", "X-MS-Office365-Filtering-Correlation-Id": "3cf1b2d1-a19a-4b5a-178f-08dea6e258b1", "x-proofpoint-crosstenant": "true", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|376014|52116014|1800799024|366016|38350700014|18002099003|56012099003;", "X-Microsoft-Antispam-Message-Info": "\n j5dypqp+PjAGa8CEO4vUJ5LORMWAqgvTkezotxXYbS0fdQBIGmMUKdkuwLq2gISl50KsNCawWigKITWEUfmPl4cLkp3nNrRGYL9nY1dxpiZwMzN9cJFjM+Vf8mUqZg+PvVEcPZC7w6HNBZ3E9JnMYvfkrEWeCHwoB96/WPwV7hHcLhOm0QdqxgsHnmg///4zarY9pnhzQQEhy17LtadY75qGCjUPrglDFBxXkJDC5w94r26xs0Qsp8nghi9uJefA9bzUICj0LRcrbAEgbvS3FP0BxKOPVJk2rfuNkVx9eK/B8kQh21/TWnLY/I07oJob7x+y4EC6mSazRwbEEMXOspVaC1ZD7Ca/QmtnlBVajV7Op9O0Bpfqqonjjz8pGXZaR0qH2tiN1xDHByoAZXysNFhe0XSEhFiy+yKVwYuOkyhVMonbfURo0yamnAPaC35fy4eDqpHSZlLGx9iSUgqzAZY7omQVcd66iYTdKZacgySn9Kl2j0CPJT1cb/4UjZDNV/uVTntykQFgyoRONi8Q/bcqdreds2rLXH2LsiQOQ/AuLq432xHGHj7JCjOUPNatHYkSf/M5yXCGYRN3bll9w9xknNH0Nm2DP67uOYLEYx3Dg8RtAq7ykUIBqVGO525MyYDNikIwHITeimHnahNI/E1myb45wN1HIhRjzVIkxT8QQnKmaR+kPgWbbqFKnU9jJOgg20t0JgM629vEmyaAJxBG7X3es9+4SZgfovO3cYvgWhlbFW/E0BrJbXksvVuP", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:SJ0PR02MB8369.namprd02.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014)(18002099003)(56012099003);\n DIR:OUT; SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n zWGDzPgpIWlsaNghjOoN7k3nZVR+lzBLq2Zi+4xa1reu8vdDZbTn4uaxUjoimsIdI3bsbTeKDWWK8gqovOeeqGOQCa8uNjejXpSOGSjA+53rembUfWfkSjub8/WXp6aft5+Bs6Ww0jtWRK3gMqpeZolPbrJdyU0XujHN1kHZfpPFy22S8WuAV5ni2bAgz631+wJeKRrzS/cEJa3OERH0AgU2BggQKfgCdUSxx2Fiy7bc79Sqm33oMxw7gJDfguKM+nrzARr4fl4vRDqMYUDuHDFAHKLeUQb2+iDp47yhAXu+UmUyZfcKod56lXC/a1yPeIl4SXX5F6s56wg18p6WQnbTv6NXkOOw2b2TNOmxq734C2NDzp5s4KW9WvXd4xnUUhmzOg1kFxe0ieYk34NxSVd7oeeX8k992BV/Yv0fn+t0tL5E4s64FZH2F30AHidghx7hIeRyn417KPTjT7GolMwRpLByBaG0E2Om9Mv9KxB+Cby8ik4gt3Jcq410ryFullo3vd+EZe8rU5IFJzEy9zo8O0YfIS72foJOjDHWyE1id6yEE+0ZynkD6O7Rf/kDItE7muNNuaEOVdnBYtVjhoX2p1HDXxO/nDNbqqH/reVuuJjIJ9YxHG1LCNZsGFLPaOIRCAdGB9xwpIua+fD4dddKIzMWE3kpsKnxUeCTvx4nlHRoUhc54vtNKY+O+Jjx6qpHzmaZDRaV1VQmMmaAqKweZonTGT7XBfgbtW5iZcJqGFD+LvlXA0Kw9yoXE0ZQVxNoz4ZOjepKZh6KqhvjRjqlK4XH4Gy6uhMJhXejOWNL9wRrajffdJOEv0415flvA7rJ4VIAvMo3ugQg9rqbzoR2R7wkRB+I4G1tr6KRpL6dwxtSF40PgfqKfhE20eGoHO30Oz4S6FOjEcbIKMGEKJljROKGz/SMP9p79qKmxPIXrzMAi4G/SnNmDqlaRigAL+bvNv0Jdvb5TfuoIH3Q4g56gC5H6YHDBfEdq/RDsVcEtEJZN94QFzrl7fhbt+TcA7aDrEz62Rxd+bhDQQPAcgW54BzqU5lA9ZnyfElC2Z5zCPiwig8h0VilieOyTkKEGkuj6imwSQsI8VeyEnb64RjhMbEeTp44kR4AG4K8pCFMVfsk+1Ik8PS8vJFBfBbs2DqswS1Bjcz6J0kBCQCwIdhMf58wNM6ZXEWh7rVP7skSh3SMDQXgqitFzDFjhJIdzNAirBEcs2ptPCwAafv6mIKFWpgcG94jHJJgRNKz+L2t22PTLJRGA4lL4thKc8AmQdeuqLSTwLfQe0CZkacurpYOZDkTvLKXsa6WxPEy6Fe0y4tFU6Ph+TPCvc0CeUgnO2raFXKR3OSWT3iAyt3JSjyDazXSyd0kCN8qLDfZcHOLb9we75OjV7Un8c5dQRYhyLShJrwr/EMItmhqG9wmcerO/DdXNTP5OeIIoZNQvtCqELmrCrC8g/6rJsl9qkdl/Z15h5xnSK+rLnakvCF9F4zL9WhWrC4LmdWmZHRBsB11PNhyr13uE3bFcbnyR2wdZAHqE2QWsJq9UZCVxb2L1EUw4FQU6GieU0KTnsiB3x0hrXjWKNo5njlvgixoC47Ff5YJEg+RuCYWDtDMQeQPH1vWD/qOGn+hCGAtEU0zOKdA5rIdpmZpWWMj+7VWrdrJavnQSRccJ9umRnEa4C9tjcm5c4qmx9SFfGaAMBYsulKbDH0VghpQ0jGrb8hWR2xzXL2C4oWp22B5IUTXXQdgYFBgdhFa6DNTsRdhXApjdu0=", "X-Exchange-RoutingPolicyChecked": "\n pN6QT4RdoS27uWpsDjoztYJgJighTgxoEeOR20psd0MEN7HzNXN1getoltXDB8tr3Q/XBOp/ibk7XNZVNYgWY2Kdf/bueC1lDTKh0ye76iQah2VvDsedyh9SPOpS0rL5zMfcl6ypprP5/Q0c0jqIQrn0WYBQQGb2t6qj5dCZWbGk8EMn3ItpCztt+XpIZUE0ycant4eMV8e1QsE1KgqjqkCEemFMOdUq8+iAUZ8As7KVFkcBs4snqtZ+DfXOw9i1pgqGqpLWLHx6On3pZGp85zjr+e1ZOUFoas//kUaPVGr3zdGHg1IgSymtTtjOhxaQoLQwDBq73XROSoxbddxIJg==", "X-OriginatorOrg": "nutanix.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 3cf1b2d1-a19a-4b5a-178f-08dea6e258b1", "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR02MB8369.namprd02.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "30 Apr 2026 18:00:21.5459 (UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "bb047546-786f-4de1-bd75-24e5b6f79043", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n YCdunlH/CkabpZUsRPY6gkMQA9ySxMf1tc7NEgGRHeCExy8NWANTWBa3j1ey/PWj47Z+QLOtD8XOeoEKh7/vQPuXqNDZwqWwmI9AcGJ+Xis=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM8PR02MB7959", "X-Proofpoint-GUID": "WlD5XMVU-Sw4QqIpgx1db_4tH3jlbezg", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDMwMDE4NiBTYWx0ZWRfX+r0StCCiygZa\n segMvbDWOk/qELKxPh4e9EaRXqiFuFSV9Udb+C2bk98LD2xNlmGsqfRNmFOCQalkhJVFoWq8s94\n x0Hf6cYKcJpS6tvdMujieeMdHyXSD3HDPjz9pTD6Lpv8YstJp30rFM4tItt9+0uFvM8VzXLhTgl\n dbUBAB2LsggwnLasQj38/r03VIVBqfxJPDPnX2HTNV7xdyI5UiTNDONFxxnzEHYDkDjGiJxRzY1\n sM51/zUZfAE/O+HNwuB+0fQSOMxt/fscGcEHNZTz87ZmhXASDULiXbLZ7GAszBJMXYWs3ZdvOxQ\n KnzE+PgQFcDNpstBbv4WIu/2zutLe6pY/tr0Fd1I4EH3frD/3GPjDv1G2NxsiMyWXbxqd5n+k9Y\n WfXGTiSBKgFbCXHAjTcqSykIi496EphOCa55NoLQlY2EgY4sHVOy29rnZlki9LjvHANDdBUlMDz\n vM58MB7FSDpX60TojlA==", "X-Authority-Analysis": "v=2.4 cv=DO+/JSNb c=1 sm=1 tr=0 ts=69f398b7 cx=c_pps\n a=J/nSLBw9du72GTmP7dreuw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19\n a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19\n a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10 a=0kUYKlekyDsA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=VofLwUrZ8Iiv6rRUPXIb:22 a=_-M8LpHI31CeLmyZm6wg:22\n a=64Cc0HZtAAAA:8 a=4V-ss95HuajUfE8GCDoA:9 a=O8hF6Hzn-FEA:10", "X-Proofpoint-ORIG-GUID": "WlD5XMVU-Sw4QqIpgx1db_4tH3jlbezg", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-30_05,2026-04-30_02,2025-10-01_01", "X-Proofpoint-Spam-Reason": "safe", "Subject": "[ovs-dev] [PATCH] ofproto-dpif-xlate: Restore ctx->conntracked\n after reversible clone().", "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": "clone_xlate_actions() has two code paths. The non-reversible path\nsaves and restores ctx->conntracked across the inner actions, but\nthe reversible path does not.\n\nThis is a problem for flows like:\n clone(ct_clear, <actions>), ct_clear, resubmit(,N)\n\nThe ct_clear inside the clone sets ctx->conntracked to false. After\nthe clone returns, the flag stays false but flow.ct_state is\nrestored by xretain_state_restore_and_free(). The ct_clear that\nfollows the clone then does nothing, because OFPACT_CT_CLEAR runs\nonly when ctx->conntracked is true. The original packet keeps its old\nct_state, and the ct_clear did not take effect.\n\nSave and restore ctx->conntracked in the reversible path too, so it\nbehaves the same as the non-reversible path.\n\nAdd a kernel datapath system test to cover this scenario.\n\nSigned-off-by: Naveen Yerramneni <naveen.yerramneni@nutanix.com>\n---\n ofproto/ofproto-dpif-xlate.c | 6 +++\n tests/system-traffic.at | 89 ++++++++++++++++++++++++++++++++++++\n 2 files changed, 95 insertions(+)", "diff": "diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c\nindex 0b38dcf55..d4c5f266d 100644\n--- a/ofproto/ofproto-dpif-xlate.c\n+++ b/ofproto/ofproto-dpif-xlate.c\n@@ -6199,6 +6199,8 @@ clone_xlate_actions(const struct ofpact *actions, size_t actions_len,\n retained_state = xretain_state_save(ctx);\n \n if (reversible_actions(actions, actions_len) || is_last_action) {\n+ bool old_conntracked = ctx->conntracked;\n+\n do_xlate_actions(actions, actions_len, ctx, is_last_action, false);\n if (!ctx->freezing) {\n xlate_action_set(ctx);\n@@ -6206,6 +6208,10 @@ clone_xlate_actions(const struct ofpact *actions, size_t actions_len,\n if (ctx->freezing) {\n finish_freezing(ctx);\n }\n+\n+ /* The clone's conntrack execution should have no effect on the\n+ * original packet. */\n+ ctx->conntracked = old_conntracked;\n goto xlate_done;\n }\n \ndiff --git a/tests/system-traffic.at b/tests/system-traffic.at\nindex f67e7d17a..f1db5a1de 100644\n--- a/tests/system-traffic.at\n+++ b/tests/system-traffic.at\n@@ -3739,6 +3739,95 @@ AT_CHECK([ovs-appctl dpctl/dump-conntrack | grep \"10\\.1\\.1\\.1,\"], [1])\n OVS_TRAFFIC_VSWITCHD_STOP\n AT_CLEANUP\n \n+\n+AT_SETUP([conntrack - verify ct_clear with clone])\n+AT_SKIP_IF([test $HAVE_TCPDUMP = no])\n+CHECK_CONNTRACK()\n+OVS_TRAFFIC_VSWITCHD_START()\n+\n+dnl Validate that ct_clear works correctly with clone() in below cases:\n+dnl\n+dnl 1. ct_clear placed inside clone(ct_clear, ....) clears the\n+dnl conntrack state of the cloned packet only. Subsequent OF rule\n+dnl lookups on the original packet must still see the original\n+dnl ct_state.\n+dnl\n+dnl 2. ct_clear placed outside the clone (on the original packet's\n+dnl path) must still happen, even when an inner ct_clear has already\n+dnl run inside the preceding clone.\n+dnl\n+dnl Scenario:\n+dnl 3 ports on the same subnet; an inbound ICMP session (p0 -> p1) is\n+dnl committed to conntrack zone 1 and mirrored to a third port (p2).\n+dnl Inbound conns (both the request and the reply) are cloned to the\n+dnl mirror dest, with ct_clear applied inside the clone (cloned copy)\n+dnl and again outside the clone (original packet).\n+dnl\n+dnl Topology:\n+dnl p0 (of-port 1) - 192.168.1.1 client\n+dnl p1 (of-port 2) - 192.168.1.2 server (mirror source)\n+dnl p2 (of-port 3) - 192.168.1.3 mirror dest\n+dnl\n+dnl Pipeline:\n+dnl table=0 request (in_port=1) ct(zone=1, table=1) [lookup]\n+dnl table=0 reply (in_port=2) ct(zone=1, table=3) [lookup]\n+dnl table=1 +trk ct(commit, zone=1, table=2)\n+dnl table=2 +trk -rpl, nw_dst=192.168.1.2 clone(output:3), output:2\n+dnl table=3 +trk +rpl, in_port=2 clone(ct_clear, output:3),\n+dnl ct_clear, resubmit(,4)\n+dnl table=4 -trk, nw_dst=192.168.1.1 output:1\n+dnl table=4 +trk, nw_dst=192.168.1.1 drop (safety: ct_clear missed)\n+ADD_NAMESPACES(at_ns0, at_ns1, at_ns2)\n+\n+ADD_VETH(p0, at_ns0, br0, \"192.168.1.1/24\")\n+ADD_VETH(p1, at_ns1, br0, \"192.168.1.2/24\")\n+ADD_VETH(p2, at_ns2, br0, \"192.168.1.3/24\")\n+\n+AT_CHECK([ovs-vsctl -- set interface ovs-p0 ofport_request=1 \\\n+ -- set interface ovs-p1 ofport_request=2 \\\n+ -- set interface ovs-p2 ofport_request=3])\n+\n+AT_DATA([flows.txt], [dnl\n+priority=1,action=drop\n+priority=10,arp,action=normal\n+priority=100,in_port=1,icmp,ct_state=-trk,actions=ct(zone=1,table=1)\n+priority=100,in_port=2,icmp,ct_state=-trk,actions=ct(zone=1,table=3)\n+table=1,priority=100,icmp,ct_state=+trk,actions=ct(commit,zone=1,table=2)\n+table=2,priority=100,icmp,ct_state=+trk-rpl,nw_dst=192.168.1.2,actions=clone(output:3),output:2\n+table=3,priority=100,in_port=2,icmp,ct_state=+trk+rpl,actions=clone(ct_clear,output:3),ct_clear,resubmit(,4)\n+table=4,priority=100,icmp,nw_dst=192.168.1.1,ct_state=+trk,actions=drop\n+table=4,priority=99,icmp,nw_dst=192.168.1.1,ct_state=-trk,actions=output:1\n+])\n+\n+AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt])\n+\n+dnl Capture mirrored ICMP traffic on the mirror dest port (p2 inside at_ns2).\n+NETNS_DAEMONIZE([at_ns2], [tcpdump -l -n -U -i p2 icmp > p2.pcap 2>p2.err], [tcpdump.pid])\n+OVS_WAIT_UNTIL([grep \"listening\" p2.err])\n+\n+dnl Send 3 ICMP echo requests from the client (p0) to the server (p1).\n+NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -W 2 192.168.1.2 | FORMAT_PING], [0], [dnl\n+3 packets transmitted, 3 received, 0% packet loss, time 0ms\n+])\n+\n+dnl A single conntrack entry should exist in zone 1 for the icmp session.\n+AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(192.168.1.2)], [0], [dnl\n+icmp,orig=(src=192.168.1.1,dst=192.168.1.2,id=<cleared>,type=8,code=0),reply=(src=192.168.1.2,dst=192.168.1.1,id=<cleared>,type=0,code=0),zone=1\n+])\n+\n+sleep 1\n+AT_CHECK([kill -15 $(cat tcpdump.pid)])\n+OVS_WAIT_WHILE([kill -0 $(cat tcpdump.pid)])\n+\n+dnl The mirror dest port should have received 6 ICMP packets in total.\n+AT_CHECK([grep -c \"ICMP\" p2.pcap], [0], [dnl\n+6\n+])\n+\n+OVS_TRAFFIC_VSWITCHD_STOP\n+AT_CLEANUP\n+\n+\n AT_SETUP([conntrack - IPv4 ping])\n CHECK_CONNTRACK()\n OVS_TRAFFIC_VSWITCHD_START()\n", "prefixes": [ "ovs-dev" ] }