get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 98809,
    "url": "http://patches.dpdk.org/api/patches/98809/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210913181510.46058-12-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": "<20210913181510.46058-12-stephen@networkplumber.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210913181510.46058-12-stephen@networkplumber.org",
    "date": "2021-09-13T18:15:09",
    "name": "[v8,11/12] doc: changes for new pcapng and dumpcap",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2e7f10268130696600744a3248b5f0ac57a4b268",
    "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/20210913181510.46058-12-stephen@networkplumber.org/mbox/",
    "series": [
        {
            "id": 18882,
            "url": "http://patches.dpdk.org/api/series/18882/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=18882",
            "date": "2021-09-13T18:14:58",
            "name": "Packet capture framework enhancements",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/18882/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/98809/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/98809/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 B871BA0C45;\n\tMon, 13 Sep 2021 20:16:27 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 45AB941143;\n\tMon, 13 Sep 2021 20:15:36 +0200 (CEST)",
            "from mail-pg1-f169.google.com (mail-pg1-f169.google.com\n [209.85.215.169])\n by mails.dpdk.org (Postfix) with ESMTP id BDFC141122\n for <dev@dpdk.org>; Mon, 13 Sep 2021 20:15:26 +0200 (CEST)",
            "by mail-pg1-f169.google.com with SMTP id k24so10212639pgh.8\n for <dev@dpdk.org>; Mon, 13 Sep 2021 11:15:26 -0700 (PDT)",
            "from hermes.local (204-195-33-123.wavecable.com. [204.195.33.123])\n by smtp.gmail.com with ESMTPSA id b10sm7616888pfl.220.2021.09.13.11.15.24\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Mon, 13 Sep 2021 11:15:24 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=networkplumber-org.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=sZLSndXLxcjS6FOOnOhpwtejA61rCphgVsE8THT4pZs=;\n b=kYz85tVza1PiwiF2s5V0eFz+uNLAkn7W91gJ+3ZeEibM3NlieNdVMApwHmnWd5nuKN\n vSAw51oTNDOY9P8NWnkRhvECrTb+pkhTyJWWOH3VlmPc7glzDdfokvHO0JYVOzlPbqtm\n rj5ypFK/qgAGDk4+u6RQnl5K6xMjDVRSayv0tcZGw8ny7hZGEGNcITynDz/EUB9vL5hR\n K0NisiwdDyX1JKQ26O+AHyPpoLdiH66EMv+/7R6lu3Pjya0fOifvHX8RxTgd0XeXAGqa\n I3lpYyYgZmPeBPkny0TY7q8gVBRRoAuSeCXdoKqRDD0Bklr62vhDlS1l6jH2S8Aq77a1\n /RyQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=sZLSndXLxcjS6FOOnOhpwtejA61rCphgVsE8THT4pZs=;\n b=UIefPu8t4dE7cwIFxC0x1h0hpEoyv3ZJnyoya5wWLwi39v0icxBOfdhn0WO8+uB9ZL\n PNs0evIGOu6vOLTgGrIh/dNcQWN8gvzg517SUrEu3xEWi4je/4DSBM9ymfveJT/v4Wd9\n dxEQm3RkxsZdxH52IQz8kkitvj66CxCjrQ99a6ZbdpXjAgS6aNizzKS0rBQEXKJN+V8q\n QhFwDtQ7uubCHj3hVD6/wHyAHqwTd0ouielvvGfW3b+/r9JbNXLM6O0H8DHbSGOK94AN\n F+wX3Awo0LFj2BHcC5kBvei4ITIQubthtCz3U15cntyfm0U+bGCnrX5c+22nuuYDqgLx\n UpbA==",
        "X-Gm-Message-State": "AOAM533BU9DDB0rKNeRM+KsD6AvOSaWrYgtaldQ6z73nBdJTadqkr5fJ\n xukza1VHl0drao/DV7dfRUi+qYKUiKNAYw==",
        "X-Google-Smtp-Source": "\n ABdhPJyQBM/xpHrAFT0+42f8PMlntGehML821uZbi1cGGGYUunVJj9YO4umxAG6inwGJ7sNd4C6pGA==",
        "X-Received": "by 2002:a05:6a00:10cb:b029:3c6:8cc9:5098 with SMTP id\n d11-20020a056a0010cbb02903c68cc95098mr664992pfu.41.1631556925082;\n Mon, 13 Sep 2021 11:15:25 -0700 (PDT)",
        "From": "Stephen Hemminger <stephen@networkplumber.org>",
        "To": "dev@dpdk.org",
        "Cc": "Stephen Hemminger <stephen@networkplumber.org>",
        "Date": "Mon, 13 Sep 2021 11:15:09 -0700",
        "Message-Id": "<20210913181510.46058-12-stephen@networkplumber.org>",
        "X-Mailer": "git-send-email 2.30.2",
        "In-Reply-To": "<20210913181510.46058-1-stephen@networkplumber.org>",
        "References": "<20210903004732.109023-1-stephen@networkplumber.org>\n <20210913181510.46058-1-stephen@networkplumber.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v8 11/12] doc: changes for new pcapng and dumpcap",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Describe the new packet capture library and utilities\n\nSigned-off-by: Stephen Hemminger <stephen@networkplumber.org>\n---\n doc/api/doxy-api-index.md                     |  1 +\n doc/api/doxy-api.conf.in                      |  1 +\n .../howto/img/packet_capture_framework.svg    | 96 +++++++++----------\n doc/guides/howto/packet_capture_framework.rst | 67 ++++++-------\n doc/guides/prog_guide/index.rst               |  1 +\n doc/guides/prog_guide/pcapng_lib.rst          | 24 +++++\n doc/guides/prog_guide/pdump_lib.rst           | 28 ++++--\n doc/guides/rel_notes/release_21_11.rst        | 10 ++\n doc/guides/tools/dumpcap.rst                  | 86 +++++++++++++++++\n doc/guides/tools/index.rst                    |  1 +\n 10 files changed, 228 insertions(+), 87 deletions(-)\n create mode 100644 doc/guides/prog_guide/pcapng_lib.rst\n create mode 100644 doc/guides/tools/dumpcap.rst",
    "diff": "diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md\nindex 1992107a0356..ee07394d1c78 100644\n--- a/doc/api/doxy-api-index.md\n+++ b/doc/api/doxy-api-index.md\n@@ -223,3 +223,4 @@ The public API headers are grouped by topics:\n   [experimental APIs]  (@ref rte_compat.h),\n   [ABI versioning]     (@ref rte_function_versioning.h),\n   [version]            (@ref rte_version.h)\n+  [pcapng]             (@ref rte_pcapng.h)\ndiff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in\nindex 325a0195c6ab..aba17799a9a1 100644\n--- a/doc/api/doxy-api.conf.in\n+++ b/doc/api/doxy-api.conf.in\n@@ -58,6 +58,7 @@ INPUT                   = @TOPDIR@/doc/api/doxy-api-index.md \\\n                           @TOPDIR@/lib/metrics \\\n                           @TOPDIR@/lib/node \\\n                           @TOPDIR@/lib/net \\\n+                          @TOPDIR@/lib/pcapng \\\n                           @TOPDIR@/lib/pci \\\n                           @TOPDIR@/lib/pdump \\\n                           @TOPDIR@/lib/pipeline \\\ndiff --git a/doc/guides/howto/img/packet_capture_framework.svg b/doc/guides/howto/img/packet_capture_framework.svg\nindex a76baf71fdee..1c2646a81096 100644\n--- a/doc/guides/howto/img/packet_capture_framework.svg\n+++ b/doc/guides/howto/img/packet_capture_framework.svg\n@@ -1,6 +1,4 @@\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n-<!-- Created with Inkscape (http://www.inkscape.org/) -->\n-\n <svg\n    xmlns:osb=\"http://www.openswatchbook.org/uri/2009/osb\"\n    xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n@@ -16,8 +14,8 @@\n    viewBox=\"0 0 425.19685 283.46457\"\n    id=\"svg2\"\n    version=\"1.1\"\n-   inkscape:version=\"0.91 r13725\"\n-   sodipodi:docname=\"drawing-pcap.svg\">\n+   inkscape:version=\"1.0.2 (e86c870879, 2021-01-15)\"\n+   sodipodi:docname=\"packet_capture_framework.svg\">\n   <defs\n      id=\"defs4\">\n     <marker\n@@ -228,7 +226,7 @@\n        x2=\"487.64606\"\n        y2=\"258.38232\"\n        gradientUnits=\"userSpaceOnUse\"\n-       gradientTransform=\"translate(-84.916417,744.90779)\" />\n+       gradientTransform=\"matrix(1.1457977,0,0,0.99944907,-151.97019,745.05014)\" />\n     <linearGradient\n        inkscape:collect=\"always\"\n        xlink:href=\"#linearGradient5784\"\n@@ -277,17 +275,18 @@\n      borderopacity=\"1.0\"\n      inkscape:pageopacity=\"0.0\"\n      inkscape:pageshadow=\"2\"\n-     inkscape:zoom=\"0.57434918\"\n-     inkscape:cx=\"215.17857\"\n-     inkscape:cy=\"285.26445\"\n+     inkscape:zoom=\"1\"\n+     inkscape:cx=\"226.77165\"\n+     inkscape:cy=\"78.124511\"\n      inkscape:document-units=\"px\"\n      inkscape:current-layer=\"layer1\"\n      showgrid=\"false\"\n-     inkscape:window-width=\"1874\"\n-     inkscape:window-height=\"971\"\n-     inkscape:window-x=\"2\"\n-     inkscape:window-y=\"24\"\n-     inkscape:window-maximized=\"0\" />\n+     inkscape:window-width=\"2560\"\n+     inkscape:window-height=\"1414\"\n+     inkscape:window-x=\"0\"\n+     inkscape:window-y=\"0\"\n+     inkscape:window-maximized=\"1\"\n+     inkscape:document-rotation=\"0\" />\n   <metadata\n      id=\"metadata7\">\n     <rdf:RDF>\n@@ -296,7 +295,7 @@\n         <dc:format>image/svg+xml</dc:format>\n         <dc:type\n            rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n-        <dc:title></dc:title>\n+        <dc:title />\n       </cc:Work>\n     </rdf:RDF>\n   </metadata>\n@@ -321,15 +320,15 @@\n        y=\"790.82452\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"61.050636\"\n        y=\"807.3205\"\n-       id=\"text4152\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4152\"><tspan\n          sodipodi:role=\"line\"\n          id=\"tspan4154\"\n          x=\"61.050636\"\n-         y=\"807.3205\">DPDK Primary Application</tspan></text>\n+         y=\"807.3205\"\n+         style=\"font-size:12.5px;line-height:1.25\">DPDK Primary Application</tspan></text>\n     <rect\n        style=\"fill:#000000;fill-opacity:0;stroke:#257cdc;stroke-width:2;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n        id=\"rect4156-6\"\n@@ -339,19 +338,20 @@\n        y=\"827.01843\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"350.68585\"\n        y=\"841.16058\"\n-       id=\"text4189\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4189\"><tspan\n          sodipodi:role=\"line\"\n          id=\"tspan4191\"\n          x=\"350.68585\"\n-         y=\"841.16058\">dpdk-pdump</tspan><tspan\n+         y=\"841.16058\"\n+         style=\"font-size:12.5px;line-height:1.25\">dpdk-dumpcap</tspan><tspan\n          sodipodi:role=\"line\"\n          x=\"350.68585\"\n          y=\"856.78558\"\n-         id=\"tspan4193\">tool</tspan></text>\n+         id=\"tspan4193\"\n+         style=\"font-size:12.5px;line-height:1.25\">tool</tspan></text>\n     <rect\n        style=\"fill:#000000;fill-opacity:0;stroke:#257cdc;stroke-width:2;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n        id=\"rect4156-6-4\"\n@@ -361,15 +361,15 @@\n        y=\"891.16315\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"352.70612\"\n        y=\"905.3053\"\n-       id=\"text4189-1\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4189-1\"><tspan\n          sodipodi:role=\"line\"\n          x=\"352.70612\"\n          y=\"905.3053\"\n-         id=\"tspan4193-3\">PCAP PMD</tspan></text>\n+         id=\"tspan4193-3\"\n+         style=\"font-size:12.5px;line-height:1.25\">librte_pcapng</tspan></text>\n     <rect\n        style=\"fill:url(#linearGradient5745);fill-opacity:1;stroke:#257cdc;stroke-width:2;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n        id=\"rect4156-6-6\"\n@@ -379,15 +379,15 @@\n        y=\"923.9931\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"136.02846\"\n        y=\"938.13525\"\n-       id=\"text4189-0\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4189-0\"><tspan\n          sodipodi:role=\"line\"\n          x=\"136.02846\"\n          y=\"938.13525\"\n-         id=\"tspan4193-6\">dpdk_port0</tspan></text>\n+         id=\"tspan4193-6\"\n+         style=\"font-size:12.5px;line-height:1.25\">dpdk_port0</tspan></text>\n     <rect\n        style=\"fill:#000000;fill-opacity:0;stroke:#257cdc;stroke-width:2;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n        id=\"rect4156-6-5\"\n@@ -397,33 +397,33 @@\n        y=\"824.99817\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"137.54369\"\n        y=\"839.14026\"\n-       id=\"text4189-4\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4189-4\"><tspan\n          sodipodi:role=\"line\"\n          x=\"137.54369\"\n          y=\"839.14026\"\n-         id=\"tspan4193-2\">librte_pdump</tspan></text>\n+         id=\"tspan4193-2\"\n+         style=\"font-size:12.5px;line-height:1.25\">librte_pdump</tspan></text>\n     <rect\n-       style=\"fill:url(#linearGradient5788);fill-opacity:1;stroke:#257cdc;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+       style=\"fill:url(#linearGradient5788);fill-opacity:1;stroke:#257cdc;stroke-width:1.07013;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n        id=\"rect4156-6-4-5\"\n-       width=\"94.449265\"\n-       height=\"35.355339\"\n-       x=\"307.7804\"\n-       y=\"985.61243\" />\n+       width=\"108.21974\"\n+       height=\"35.335861\"\n+       x=\"297.9809\"\n+       y=\"985.62219\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"352.70618\"\n        y=\"999.75458\"\n-       id=\"text4189-1-8\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4189-1-8\"><tspan\n          sodipodi:role=\"line\"\n          x=\"352.70618\"\n          y=\"999.75458\"\n-         id=\"tspan4193-3-2\">capture.pcap</tspan></text>\n+         id=\"tspan4193-3-2\"\n+         style=\"font-size:12.5px;line-height:1.25\">capture.pcapng</tspan></text>\n     <rect\n        style=\"fill:url(#linearGradient5788-1);fill-opacity:1;stroke:#257cdc;stroke-width:1.12555885;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n        id=\"rect4156-6-4-5-1\"\n@@ -433,15 +433,15 @@\n        y=\"983.14984\" />\n     <text\n        xml:space=\"preserve\"\n-       style=\"font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n+       style=\"font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1\"\n        x=\"136.53352\"\n        y=\"1002.785\"\n-       id=\"text4189-1-8-4\"\n-       sodipodi:linespacing=\"125%\"><tspan\n+       id=\"text4189-1-8-4\"><tspan\n          sodipodi:role=\"line\"\n          x=\"136.53352\"\n          y=\"1002.785\"\n-         id=\"tspan4193-3-2-7\">Traffic Generator</tspan></text>\n+         id=\"tspan4193-3-2-7\"\n+         style=\"font-size:12.5px;line-height:1.25\">Traffic Generator</tspan></text>\n     <path\n        style=\"fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker7331)\"\n        d=\"m 351.46948,927.02357 c 0,57.5787 0,57.5787 0,57.5787\"\ndiff --git a/doc/guides/howto/packet_capture_framework.rst b/doc/guides/howto/packet_capture_framework.rst\nindex c31bac52340e..78baa609a021 100644\n--- a/doc/guides/howto/packet_capture_framework.rst\n+++ b/doc/guides/howto/packet_capture_framework.rst\n@@ -1,18 +1,19 @@\n ..  SPDX-License-Identifier: BSD-3-Clause\n     Copyright(c) 2017 Intel Corporation.\n \n-DPDK pdump Library and pdump Tool\n-=================================\n+DPDK packet capture libraries and tools\n+=======================================\n \n This document describes how the Data Plane Development Kit (DPDK) Packet\n Capture Framework is used for capturing packets on DPDK ports. It is intended\n for users of DPDK who want to know more about the Packet Capture feature and\n for those who want to monitor traffic on DPDK-controlled devices.\n \n-The DPDK packet capture framework was introduced in DPDK v16.07. The DPDK\n-packet capture framework consists of the DPDK pdump library and DPDK pdump\n-tool.\n-\n+The DPDK packet capture framework was introduced in DPDK v16.07 and\n+enhanced in 21.1. The DPDK packet capture framework consists of the\n+libraries for collecting packets ``librte_pdump`` and writing packets\n+to a file ``librte_pcapng``. There are two sample applications:\n+``dpdk-dumpcap`` and older ``dpdk-pdump``.\n \n Introduction\n ------------\n@@ -22,43 +23,46 @@ allow users to initialize the packet capture framework and to enable or\n disable packet capture. The library works on a multi process communication model and its\n usage is recommended for debugging purposes.\n \n-The :ref:`dpdk-pdump <pdump_tool>` tool is developed based on the\n-``librte_pdump`` library.  It runs as a DPDK secondary process and is capable\n-of enabling or disabling packet capture on DPDK ports. The ``dpdk-pdump`` tool\n-provides command-line options with which users can request enabling or\n-disabling of the packet capture on DPDK ports.\n+The :ref:`librte_pcapng <pcapng_library>` library provides the APIs to format\n+packets and write them to a file in Pcapng format.\n+\n+\n+The :ref:`dpdk-dumpcap <dumpcap_tool>` is a tool that captures packets in\n+like Wireshark dumpcap does for Linux. It runs as a DPDK secondary process and\n+captures packets from one or more interfaces and writes them to a file\n+in Pcapng format.  The ``dpdk-dumpcap`` tool is designed to take\n+most of the same options as the Wireshark ``dumpcap`` command.\n \n-The application which initializes the packet capture framework will be a primary process\n-and the application that enables or disables the packet capture will\n-be a secondary process. The primary process sends the Rx and Tx packets from the DPDK ports\n-to the secondary process.\n+Without any options it will use the packet capture framework to\n+capture traffic from the first available DPDK port.\n \n In DPDK the ``testpmd`` application can be used to initialize the packet\n-capture framework and acts as a server, and the ``dpdk-pdump`` tool acts as a\n+capture framework and acts as a server, and the ``dpdk-dumpcap`` tool acts as a\n client. To view Rx or Tx packets of ``testpmd``, the application should be\n-launched first, and then the ``dpdk-pdump`` tool. Packets from ``testpmd``\n-will be sent to the tool, which then sends them on to the Pcap PMD device and\n-that device writes them to the Pcap file or to an external interface depending\n-on the command-line option used.\n+launched first, and then the ``dpdk-dumpcap`` tool. Packets from ``testpmd``\n+will be sent to the tool, and then to the Pcapng file.\n \n Some things to note:\n \n-* The ``dpdk-pdump`` tool can only be used in conjunction with a primary\n+* All tools using ``librte_pdump`` can only be used in conjunction with a primary\n   application which has the packet capture framework initialized already. In\n   dpdk, only ``testpmd`` is modified to initialize packet capture framework,\n-  other applications remain untouched. So, if the ``dpdk-pdump`` tool has to\n+  other applications remain untouched. So, if the ``dpdk-dumpcap`` tool has to\n   be used with any application other than the testpmd, the user needs to\n   explicitly modify that application to call the packet capture framework\n   initialization code. Refer to the ``app/test-pmd/testpmd.c`` code and look\n   for ``pdump`` keyword to see how this is done.\n \n-* The ``dpdk-pdump`` tool depends on the libpcap based PMD.\n+* The ``dpdk-pdump`` tool is an older tool created as demonstration of ``librte_pdump``\n+  library. The ``dpdk-pdump`` tool provides more limited functionality and\n+  and depends on the Pcap PMD. It is retained only for compatibility reasons;\n+  users should use ``dpdk-dumpcap`` instead.\n \n \n Test Environment\n ----------------\n \n-The overview of using the Packet Capture Framework and the ``dpdk-pdump`` tool\n+The overview of using the Packet Capture Framework and the ``dpdk-dumpcap`` utility\n for packet capturing on the DPDK port in\n :numref:`figure_packet_capture_framework`.\n \n@@ -66,13 +70,13 @@ for packet capturing on the DPDK port in\n \n .. figure:: img/packet_capture_framework.*\n \n-   Packet capturing on a DPDK port using the dpdk-pdump tool.\n+   Packet capturing on a DPDK port using the dpdk-dumpcap utility.\n \n \n Running the Application\n -----------------------\n \n-The following steps demonstrate how to run the ``dpdk-pdump`` tool to capture\n+The following steps demonstrate how to run the ``dpdk-dumpcap`` tool to capture\n Rx side packets on dpdk_port0 in :numref:`figure_packet_capture_framework` and\n inspect them using ``tcpdump``.\n \n@@ -80,16 +84,15 @@ inspect them using ``tcpdump``.\n \n      sudo <build_dir>/app/dpdk-testpmd -c 0xf0 -n 4 -- -i --port-topology=chained\n \n-#. Launch the pdump tool as follows::\n+#. Launch the dpdk-dump as follows::\n \n-     sudo <build_dir>/app/dpdk-pdump -- \\\n-          --pdump 'port=0,queue=*,rx-dev=/tmp/capture.pcap'\n+     sudo <build_dir>/app/dpdk-dumpcap -w /tmp/capture.pcapng\n \n #. Send traffic to dpdk_port0 from traffic generator.\n-   Inspect packets captured in the file capture.pcap using a tool\n-   that can interpret Pcap files, for example tcpdump::\n+   Inspect packets captured in the file capture.pcap using a tool such as\n+   tcpdump or tshark that can interpret Pcapng files::\n \n-     $tcpdump -nr /tmp/capture.pcap\n+     $ tcpdump -nr /tmp/capture.pcapng\n      reading from file /tmp/capture.pcap, link-type EN10MB (Ethernet)\n      11:11:36.891404 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18\n      11:11:36.891442 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18\ndiff --git a/doc/guides/prog_guide/index.rst b/doc/guides/prog_guide/index.rst\nindex 2dce507f46a3..b440c77c2ba1 100644\n--- a/doc/guides/prog_guide/index.rst\n+++ b/doc/guides/prog_guide/index.rst\n@@ -43,6 +43,7 @@ Programmer's Guide\n     ip_fragment_reassembly_lib\n     generic_receive_offload_lib\n     generic_segmentation_offload_lib\n+    pcapng_lib\n     pdump_lib\n     multi_proc_support\n     kernel_nic_interface\ndiff --git a/doc/guides/prog_guide/pcapng_lib.rst b/doc/guides/prog_guide/pcapng_lib.rst\nnew file mode 100644\nindex 000000000000..36379b530a57\n--- /dev/null\n+++ b/doc/guides/prog_guide/pcapng_lib.rst\n@@ -0,0 +1,24 @@\n+..  SPDX-License-Identifier: BSD-3-Clause\n+    Copyright(c) 2016 Intel Corporation.\n+\n+.. _pcapng_library:\n+\n+Packet Capture File Writer\n+==========================\n+\n+Pcapng is a library for creating files in Pcapng file format.\n+The Pcapng file format is the default capture file format for modern\n+network capture processing tools. It can be read by wireshark and tcpdump.\n+\n+Usage\n+-----\n+\n+Before the library can be used the function ``rte_pcapng_init``\n+should be called once to initialize timestamp computation.\n+\n+\n+References\n+----------\n+* Draft RFC https://www.ietf.org/id/draft-tuexen-opsawg-pcapng-03.html\n+\n+* Project repository  https://github.com/pcapng/pcapng/\ndiff --git a/doc/guides/prog_guide/pdump_lib.rst b/doc/guides/prog_guide/pdump_lib.rst\nindex 62c0b015b2fe..9af91415e5ea 100644\n--- a/doc/guides/prog_guide/pdump_lib.rst\n+++ b/doc/guides/prog_guide/pdump_lib.rst\n@@ -3,10 +3,10 @@\n \n .. _pdump_library:\n \n-The librte_pdump Library\n-========================\n+The Packet Capture Library\n+==========================\n \n-The ``librte_pdump`` library provides a framework for packet capturing in DPDK.\n+The DPDK ``pdump`` library provides a framework for packet capturing in DPDK.\n The library does the complete copy of the Rx and Tx mbufs to a new mempool and\n hence it slows down the performance of the applications, so it is recommended\n to use this library for debugging purposes.\n@@ -23,11 +23,19 @@ or disable the packet capture, and to uninitialize it.\n \n * ``rte_pdump_enable()``:\n   This API enables the packet capture on a given port and queue.\n-  Note: The filter option in the API is a place holder for future enhancements.\n+\n+* ``rte_pdump_enable_bpf()``\n+  This API enables the packet capture on a given port and queue.\n+  It also allows setting an optional filter using DPDK BPF interpreter and\n+  setting the captured packet length.\n \n * ``rte_pdump_enable_by_deviceid()``:\n   This API enables the packet capture on a given device id (``vdev name or pci address``) and queue.\n-  Note: The filter option in the API is a place holder for future enhancements.\n+\n+* ``rte_pdump_enable_bpf_by_deviceid()``\n+  This API enables the packet capture on a given device id (``vdev name or pci address``) and queue.\n+  It also allows seating an optional filter using DPDK BPF interpreter and\n+  setting the captured packet length.\n \n * ``rte_pdump_disable()``:\n   This API disables the packet capture on a given port and queue.\n@@ -61,6 +69,12 @@ and enables the packet capture by registering the Ethernet RX and TX callbacks f\n and queue combinations. Then the primary process will mirror the packets to the new mempool and enqueue them to\n the rte_ring that secondary process have passed to these APIs.\n \n+The packet ring supports one of two formats. The default format enqueues copies of the original packets\n+into the rte_ring. If the ``RTE_PDUMP_FLAG_PCAPNG`` is set the mbuf data is extended with header and trailer\n+to match the format of Pcapng enhanced packet block. The enhanced packet block has meta-data such as the\n+timestamp, port and queue the packet was captured on. It is up to the application consuming the\n+packets from the ring to select the format desired.\n+\n The library APIs ``rte_pdump_disable()`` and ``rte_pdump_disable_by_deviceid()`` disables the packet capture.\n For the calls to these APIs from secondary process, the library creates the \"pdump disable\" request and sends\n the request to the primary process over the multi process channel. The primary process takes this request and\n@@ -74,5 +88,5 @@ function.\n Use Case: Packet Capturing\n --------------------------\n \n-The DPDK ``app/pdump`` tool is developed based on this library to capture packets in DPDK.\n-Users can use this as an example to develop their own packet capturing tools.\n+The DPDK ``app/dpdk-dumpcap`` utility uses this library\n+to capture packets in DPDK.\ndiff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst\nindex 3fa80186957a..43464e999aaa 100644\n--- a/doc/guides/rel_notes/release_21_11.rst\n+++ b/doc/guides/rel_notes/release_21_11.rst\n@@ -82,6 +82,16 @@ New Features\n \n   * Added PDCP short MAC-I support.\n \n+* **Enhanced Packet capture.**\n+\n+  * New dpdk-dumpcap program that has most of the features of the\n+    wireshark dumpcap utility including: capture of multiple interfaces,\n+    filtering, and stopping after number of bytes, packets.\n+  * New library for writing pcapng packet capture files.\n+  * Enhancements to the pdump library to support:\n+    * Packet filter with BPF.\n+    * Pcapng format with timestamps and meta-data.\n+    * Fixes packet capture with stripped VLAN tags.\n \n Removed Items\n -------------\ndiff --git a/doc/guides/tools/dumpcap.rst b/doc/guides/tools/dumpcap.rst\nnew file mode 100644\nindex 000000000000..664ea0c79802\n--- /dev/null\n+++ b/doc/guides/tools/dumpcap.rst\n@@ -0,0 +1,86 @@\n+..  SPDX-License-Identifier: BSD-3-Clause\n+    Copyright(c) 2020 Microsoft Corporation.\n+\n+.. _dumpcap_tool:\n+\n+dpdk-dumpcap Application\n+========================\n+\n+The ``dpdk-dumpcap`` tool is a Data Plane Development Kit (DPDK)\n+network traffic dump tool.  The interface is similar to  the dumpcap tool in Wireshark.\n+It runs as a secondary DPDK process and lets you capture packets that are\n+coming into and out of a DPDK primary process.\n+The ``dpdk-dumpcap`` writes files in Pcapng packet format using\n+capture file format is pcapng.\n+\n+Without any options set it will use DPDK to capture traffic from the first\n+available DPDK interface and write the received raw packet data, along\n+with timestamps into a pcapng file.\n+\n+If the ``-w`` option is not specified, ``dpdk-dumpcap`` writes to a newly\n+create file with a name chosen based on interface name and timestamp.\n+If ``-w`` option is specified, then that file is used.\n+\n+   .. Note::\n+      * The ``dpdk-dumpcap`` tool can only be used in conjunction with a primary\n+        application which has the packet capture framework initialized already.\n+        In dpdk, only the ``testpmd`` is modified to initialize packet capture\n+        framework, other applications remain untouched. So, if the ``dpdk-dumpcap``\n+        tool has to be used with any application other than the testpmd, user\n+        needs to explicitly modify that application to call packet capture\n+        framework initialization code. Refer ``app/test-pmd/testpmd.c``\n+        code to see how this is done.\n+\n+      * The ``dpdk-dumpcap`` tool runs as a DPDK secondary process. It exits when\n+        the primary application exits.\n+\n+\n+Running the Application\n+-----------------------\n+\n+To list interfaces available for capture use ``--list-interfaces``.\n+\n+To filter packets in style of *tshark* use the ``-f`` flag.\n+\n+To capture on multiple interfaces at once, use multiple ``-I`` flags.\n+\n+Example\n+-------\n+\n+.. code-block:: console\n+\n+   # ./<build_dir>/app/dpdk-dumpcap --list-interfaces\n+   0. 000:00:03.0\n+   1. 000:00:03.1\n+\n+   # ./<build_dir>/app/dpdk-dumpcap -I 0000:00:03.0 -c 6 -w /tmp/sample.pcapng\n+   Packets captured: 6\n+   Packets received/dropped on interface '0000:00:03.0' 6/0\n+\n+   # ./<build_dir>/app/dpdk-dumpcap -f 'tcp port 80'\n+   Packets captured: 6\n+   Packets received/dropped on interface '0000:00:03.0' 10/8\n+\n+\n+Limitations\n+-----------\n+The following option of Wireshark ``dumpcap`` is not yet implemented:\n+\n+   * ``-b|--ring-buffer`` -- more complex file management.\n+\n+The following options do not make sense in the context of DPDK.\n+\n+   * ``-C <byte_limit>`` -- its a kernel thing\n+\n+   * ``-t`` -- use a thread per interface\n+\n+   * Timestamp type.\n+\n+   * Link data types. Only EN10MB (Ethernet) is supported.\n+\n+   * Wireless related options:  ``-I|--monitor-mode`` and  ``-k <freq>``\n+\n+\n+.. Note::\n+   * The options to ``dpdk-dumpcap`` are like the Wireshark dumpcap program and\n+     are not the same as ``dpdk-pdump`` and other DPDK applications.\ndiff --git a/doc/guides/tools/index.rst b/doc/guides/tools/index.rst\nindex 93dde4148e90..b71c12b8f2dd 100644\n--- a/doc/guides/tools/index.rst\n+++ b/doc/guides/tools/index.rst\n@@ -8,6 +8,7 @@ DPDK Tools User Guides\n     :maxdepth: 2\n     :numbered:\n \n+    dumpcap\n     proc_info\n     pdump\n     pmdinfo\n",
    "prefixes": [
        "v8",
        "11/12"
    ]
}