get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 134021,
    "url": "http://patches.dpdk.org/api/patches/134021/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231109173412.108093-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": "<20231109173412.108093-3-stephen@networkplumber.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231109173412.108093-3-stephen@networkplumber.org",
    "date": "2023-11-09T17:34:09",
    "name": "[v4,2/5] dumpcap: allow multiple invocations",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "85c9697b22bc030ed49e1441c949075976349840",
    "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/20231109173412.108093-3-stephen@networkplumber.org/mbox/",
    "series": [
        {
            "id": 30218,
            "url": "http://patches.dpdk.org/api/series/30218/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30218",
            "date": "2023-11-09T17:34:07",
            "name": "dumpcap and pcapng fixes",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/30218/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/134021/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/134021/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 DE3E9432E9;\n\tThu,  9 Nov 2023 18:34:35 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 2AEB84021E;\n\tThu,  9 Nov 2023 18:34:28 +0100 (CET)",
            "from mail-pl1-f170.google.com (mail-pl1-f170.google.com\n [209.85.214.170])\n by mails.dpdk.org (Postfix) with ESMTP id B9B2940DF5\n for <dev@dpdk.org>; Thu,  9 Nov 2023 18:34:26 +0100 (CET)",
            "by mail-pl1-f170.google.com with SMTP id\n d9443c01a7336-1cc2575dfc7so9500885ad.1\n for <dev@dpdk.org>; Thu, 09 Nov 2023 09:34:26 -0800 (PST)",
            "from hermes.local (204-195-123-141.wavecable.com. [204.195.123.141])\n by smtp.gmail.com with ESMTPSA id\n f7-20020a170902ab8700b001c76fcccee8sm3787356plr.156.2023.11.09.09.34.24\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 09 Nov 2023 09:34:24 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=networkplumber-org.20230601.gappssmtp.com; s=20230601; t=1699551266;\n x=1700156066; 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=o2G/RbxCtbubJZD6MEODF5wEL/gqk9pJIsV2iv3V91Q=;\n b=gCT2vo9vEGkh+F1wl8YpRsTuh/GkKs7HpLw9wOkCCIz3CkzZ1TWBevpxjkEB0GFueb\n BravMqoP0JHeyWfo8nVR6XvliD+Na0UWhSgAtt72ui4zoc/KeNHhksjiGqevzhb7g2+A\n V2nYQMYLTRkr0ESkTedFRstpEMMAAXorA1G+o1DwqPplfRJV09sAG/txuUiw4fTsH3Ku\n Vn2J7an0LZFImmi8sqxHUQA+MtkpDmVKzEjwvwIJmXf4xSWYtcqmLLd6af7DHHGg/dDr\n tR8BYhLYtJX+7I77Dr2TZa2GAIyCROie1446tVYLrwSlva1j3l2EyMK+w/U3/D92Dep4\n UGDw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1699551266; x=1700156066;\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=o2G/RbxCtbubJZD6MEODF5wEL/gqk9pJIsV2iv3V91Q=;\n b=KSd4AAsCoFdbOYNxRl7OW88u9TqoQ1Wrwbmio7uqd02S0TxAINKCUADflJNVlgAWFL\n T1g3EMkcMpHWxNSoyoVn5myA8j1FOLowBSZFp7NL/U4H/hP3jmtEuHdj0PAGqQ/GFJb6\n /XLCZLlBdKPTad54r6SVHRZ+42/hK5COuXOiIZgem/U1H0i0RK/+/O/9Yw2D73Mua3+v\n Lg/5NUHeH/2xRERiXSwCfXjHQDwtVPRJtWnd6aX387eWVWdDmXF9yyqC0kCPC3tZ3iH6\n 8Mm8RzsOKyUqHoW07fOdLCzDRVM5D7JDB2JxMwLm7fu3De8Bmtv4ibBxvXf5g39FzdP0\n COHQ==",
        "X-Gm-Message-State": "AOJu0YywMWpkcgOfJFzelTUUv3fzK7I3aaDvnxoiS90AVIovUUJrz9Mt\n KWhA99za4SD9l5wymvzX92WRrb+zAhYqvh/6AsE=",
        "X-Google-Smtp-Source": "\n AGHT+IGYlnW+RlP3RorSnVVkqvohHeYrGV5gHyvzZEA4ZdXUAoSV50KltHAJk0m8fOWZgJjIxeU5Lg==",
        "X-Received": "by 2002:a17:903:11cd:b0:1ca:362b:166c with SMTP id\n q13-20020a17090311cd00b001ca362b166cmr6266754plh.61.1699551265711;\n Thu, 09 Nov 2023 09:34:25 -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 v4 2/5] dumpcap: allow multiple invocations",
        "Date": "Thu,  9 Nov 2023 09:34:09 -0800",
        "Message-Id": "<20231109173412.108093-3-stephen@networkplumber.org>",
        "X-Mailer": "git-send-email 2.39.2",
        "In-Reply-To": "<20231109173412.108093-1-stephen@networkplumber.org>",
        "References": "<20230921042349.104150-1-stephen@networkplumber.org>\n <20231109173412.108093-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 64294bbfb3e6..74c754e272c5 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_%u\", 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": [
        "v4",
        "2/5"
    ]
}