get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 134465,
    "url": "http://patches.dpdk.org/api/patches/134465/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231117163729.243188-3-stephen@networkplumber.org/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231117163729.243188-3-stephen@networkplumber.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231117163729.243188-3-stephen@networkplumber.org",
    "date": "2023-11-17T16:35:56",
    "name": "[v7,2/5] dumpcap: allow multiple invocations",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "a983f8c014989751271f82c4995b2d3bdea3d6e9",
    "submitter": {
        "id": 27,
        "url": "http://patches.dpdk.org/api/people/27/?format=api",
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231117163729.243188-3-stephen@networkplumber.org/mbox/",
    "series": [
        {
            "id": 30330,
            "url": "http://patches.dpdk.org/api/series/30330/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30330",
            "date": "2023-11-17T16:35:55",
            "name": "dumpcap and pcapng fixes",
            "version": 7,
            "mbox": "http://patches.dpdk.org/series/30330/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/134465/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/134465/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5702843355;\n\tFri, 17 Nov 2023 17:37:56 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 12BAD427E6;\n\tFri, 17 Nov 2023 17:37:45 +0100 (CET)",
            "from mail-il1-f176.google.com (mail-il1-f176.google.com\n [209.85.166.176])\n by mails.dpdk.org (Postfix) with ESMTP id A2B38411F3\n for <dev@dpdk.org>; Fri, 17 Nov 2023 17:37:42 +0100 (CET)",
            "by mail-il1-f176.google.com with SMTP id\n e9e14a558f8ab-359343e399fso7186065ab.0\n for <dev@dpdk.org>; Fri, 17 Nov 2023 08:37:42 -0800 (PST)",
            "from hermes.local (204-195-123-141.wavecable.com. [204.195.123.141])\n by smtp.gmail.com with ESMTPSA id\n f22-20020a631016000000b005bd3f34b10dsm1595541pgl.24.2023.11.17.08.37.40\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 17 Nov 2023 08:37:41 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1700239062;\n x=1700843862; darn=dpdk.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=FG4uvSUBDITeHxIlCSAt5isKVOrazsLOUShZ5sWpXiY=;\n b=EDeJi4mRTD/siU5xmmLUq7wXsOeSc/pLW01rjAZ04cLfMpM8KOAEwzlpYiEv5WUY0W\n CqKxY2JfWvQ2plhmBHUHW9CxyB7itgjgHfHLqofGhKYkQZpWh+mbhvq2lGBwJfeeOcwR\n O4fol33v2KrqtNHrySRN1n7O2BQZnwnyWsP8EzPIf6fu0mTkv6dAn/smxlUdhbXi/FsZ\n 77COpoR9eE8C1MX6mIdkItIhl9cisz8emE75SF872EmQifKMOB41Ez3fFDWsA52434Cp\n Fx5bwCGx0HhT//A4NtE6yXLCL2uvGme6QPc36xySnkeD9UxShPptwCr+r/k/oyCD7Lwi\n j+/Q==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1700239062; x=1700843862;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=FG4uvSUBDITeHxIlCSAt5isKVOrazsLOUShZ5sWpXiY=;\n b=t7sTbb3v5GfFW70Gjhvn7dzUKM7J/wSNI5sd9a5EQdfTH3ELKEGEUmxdsDuNbK61pU\n b9RxmUXdVhGEMPqGNRy6Sywm2YBbz4tuBX1X6STsMyLMkE3nLK2+NB+aJ9zxf8tE+vMN\n 1N75uCOiAFHP4GyBkqAlzaTq2+NVMpTgHDDDJcpF4kNjHhMLeMCgXxrAT/Fittn/e7Ri\n 8Ad6BtJkAEoF+coh4GdNPn/LK9WzpNG07noGV2IL8EIlR9Yc9N1IQYLXLiPmhu3ua8RE\n imbYnt0VL5DVWP82ub8Td50oGY18+AgSQA+/hnddASfUu+Ryxbfu93EeDb8a4EM1fh9t\n Kv1w==",
        "X-Gm-Message-State": "AOJu0YxyGy0xZ5ilvWkZy1A1Jcb+rz2Rd2XnV5ha/aXPJGpLsLc1Ptzh\n nh1+QmIDl817GpQlNp3ca9bNHKzQ/UzV6YsT6yPDMA==",
        "X-Google-Smtp-Source": "\n AGHT+IHhzMpniq33ad/bXZF6jQam9wnBX0YyBXoR/xKuLddXtfpv0CxyFHbyPRIeyVwlwSV/Hco/Cg==",
        "X-Received": "by 2002:a92:cdab:0:b0:359:ca5f:5103 with SMTP id\n g11-20020a92cdab000000b00359ca5f5103mr27568477ild.6.1700239061819;\n Fri, 17 Nov 2023 08:37:41 -0800 (PST)",
        "From": "Stephen Hemminger <stephen@networkplumber.org>",
        "To": "dev@dpdk.org",
        "Cc": "Stephen Hemminger <stephen@networkplumber.org>,\n Isaac Boukris <iboukris@gmail.com>, Reshma Pattan <reshma.pattan@intel.com>",
        "Subject": "[PATCH v7 2/5] dumpcap: allow multiple invocations",
        "Date": "Fri, 17 Nov 2023 08:35:56 -0800",
        "Message-ID": "<20231117163729.243188-3-stephen@networkplumber.org>",
        "X-Mailer": "git-send-email 2.42.0",
        "In-Reply-To": "<20231117163729.243188-1-stephen@networkplumber.org>",
        "References": "<20230921042349.104150-1-stephen@networkplumber.org>\n <20231117163729.243188-1-stephen@networkplumber.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "If dumpcap is run twice with each instance pointing a different\ninterface, it would fail because of overlap in ring a pool names.\nFix by putting process id in the name.\n\nIt is still not allowed to do multiple invocations on the same\ninterface because only one callback is allowed and only one copy\nof mbuf is done. Dumpcap will fail with error in this case:\n\n   pdump_prepare_client_request(): client request for pdump enable/disable failed\n   EAL: Error - exiting with code: 1\n     Cause: Packet dump enable on 0:net_null0 failed File exists\n\nFixes: cbb44143be74 (\"app/dumpcap: add new packet capture application\")\nReported-by: Isaac Boukris <iboukris@gmail.com>\nSigned-off-by: Stephen Hemminger <stephen@networkplumber.org>\n---\n app/dumpcap/main.c | 28 ++++++++++++++--------------\n 1 file changed, 14 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c\nindex 4f581bd341d8..d05dddac0071 100644\n--- a/app/dumpcap/main.c\n+++ b/app/dumpcap/main.c\n@@ -44,7 +44,6 @@\n #include <pcap/pcap.h>\n #include <pcap/bpf.h>\n \n-#define RING_NAME \"capture-ring\"\n #define MONITOR_INTERVAL  (500 * 1000)\n #define MBUF_POOL_CACHE_SIZE 32\n #define BURST_SIZE 32\n@@ -647,6 +646,7 @@ static void dpdk_init(void)\n static struct rte_ring *create_ring(void)\n {\n \tstruct rte_ring *ring;\n+\tchar ring_name[RTE_RING_NAMESIZE];\n \tsize_t size, log2;\n \n \t/* Find next power of 2 >= size. */\n@@ -660,28 +660,28 @@ static struct rte_ring *create_ring(void)\n \t\tring_size = size;\n \t}\n \n-\tring = rte_ring_lookup(RING_NAME);\n-\tif (ring == NULL) {\n-\t\tring = rte_ring_create(RING_NAME, ring_size,\n-\t\t\t\t\trte_socket_id(), 0);\n-\t\tif (ring == NULL)\n-\t\t\trte_exit(EXIT_FAILURE, \"Could not create ring :%s\\n\",\n-\t\t\t\t rte_strerror(rte_errno));\n-\t}\n+\t/* Want one ring per invocation of program */\n+\tsnprintf(ring_name, sizeof(ring_name),\n+\t\t \"dumpcap-%d\", getpid());\n+\n+\tring = rte_ring_create(ring_name, ring_size,\n+\t\t\t       rte_socket_id(), 0);\n+\tif (ring == NULL)\n+\t\trte_exit(EXIT_FAILURE, \"Could not create ring :%s\\n\",\n+\t\t\t rte_strerror(rte_errno));\n+\n \treturn ring;\n }\n \n static struct rte_mempool *create_mempool(void)\n {\n \tconst struct interface *intf;\n-\tstatic const char pool_name[] = \"capture_mbufs\";\n+\tchar pool_name[RTE_MEMPOOL_NAMESIZE];\n \tsize_t num_mbufs = 2 * ring_size;\n \tstruct rte_mempool *mp;\n \tuint32_t data_size = 128;\n \n-\tmp = rte_mempool_lookup(pool_name);\n-\tif (mp)\n-\t\treturn mp;\n+\tsnprintf(pool_name, sizeof(pool_name), \"capture_%d\", getpid());\n \n \t/* Common pool so size mbuf for biggest snap length */\n \tTAILQ_FOREACH(intf, &interfaces, next) {\n@@ -826,7 +826,7 @@ static void enable_pdump(struct rte_ring *r, struct rte_mempool *mp)\n \t\t\trte_exit(EXIT_FAILURE,\n \t\t\t\t\"Packet dump enable on %u:%s failed %s\\n\",\n \t\t\t\tintf->port, intf->name,\n-\t\t\t\trte_strerror(-ret));\n+\t\t\t\trte_strerror(rte_errno));\n \t\t}\n \n \t\tif (intf->opts.promisc_mode) {\n",
    "prefixes": [
        "v7",
        "2/5"
    ]
}