get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2231474/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "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"
    ]
}