get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 806000,
    "url": "http://patchwork.ozlabs.org/api/patches/806000/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/1503687941-626-7-git-send-email-dsahern@gmail.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1503687941-626-7-git-send-email-dsahern@gmail.com>",
    "list_archive_url": null,
    "date": "2017-08-25T19:05:39",
    "name": "[v2,net-next,6/8] samples/bpf: Add option to dump socket settings",
    "commit_ref": null,
    "pull_url": null,
    "state": "deferred",
    "archived": true,
    "hash": "33c0380cd3d2897772ff700b00ad0fedb6d88890",
    "submitter": {
        "id": 6918,
        "url": "http://patchwork.ozlabs.org/api/people/6918/?format=api",
        "name": "David Ahern",
        "email": "dsahern@gmail.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/1503687941-626-7-git-send-email-dsahern@gmail.com/mbox/",
    "series": [],
    "comments": "http://patchwork.ozlabs.org/api/patches/806000/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/806000/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"jf4LN4FZ\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xf9cW6ghJz9t1m\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat, 26 Aug 2017 05:06:19 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1758155AbdHYTGS (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 25 Aug 2017 15:06:18 -0400",
            "from mail-pg0-f66.google.com ([74.125.83.66]:35663 \"EHLO\n\tmail-pg0-f66.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1758131AbdHYTF4 (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 25 Aug 2017 15:05:56 -0400",
            "by mail-pg0-f66.google.com with SMTP id r133so904751pgr.2\n\tfor <netdev@vger.kernel.org>; Fri, 25 Aug 2017 12:05:56 -0700 (PDT)",
            "from kenny.it.cumulusnetworks.com. (fw.cumulusnetworks.com.\n\t[216.129.126.126]) by smtp.googlemail.com with ESMTPSA id\n\t16sm16642137pfn.188.2017.08.25.12.05.55\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tFri, 25 Aug 2017 12:05:55 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=ihB5AkKeDEQxTR3QdZAuGSSt8ZSoKEsvrkmmbvX2ZNk=;\n\tb=jf4LN4FZ9lMiaIUagjcn9w+iuybUM/EK1hr9HHm+8tOvzJnCnX2+q9hvFFOxBLAgEm\n\tIc1fUApuUJ3gcPdve98rUgdLVwHEm0ZQ5t0c7IhHKefz5a0sssA+78NL1rPBx5bRQoTr\n\tG4BXoeXssRmf7LiQJ/7NFV7JMio4ckFDr55Fqq4JtFfRMcqEiWVJiQDqxxDHK1KqDbjO\n\tT6YY/L8E3EpPURaLMoiDIRt8q+Ufd61n5V+wjC3zM1mnolzNFrTAcFlVU02DIVX0B0c2\n\tS7oKyJy6eN1xRdMW5Kx33yFVAUUlU0z2VRu08OfyEBZxUIgksSBJt5oPlF9mFN7kd4Ku\n\tiXQQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=ihB5AkKeDEQxTR3QdZAuGSSt8ZSoKEsvrkmmbvX2ZNk=;\n\tb=Uc7brbBjL/C1ooEGYhj7GukNM1icDzmGEuulEQ3/TFet71rsoOjd/NcPIKU6lNT25E\n\tk2coVGLSWgFGLeNfrW83eLaY+3FP45DYqepyaEO9WRgWlHvzZYiphjbT7k1DLk4nzCWT\n\tqpiKE97NoZ0pMMj9iRxq4WdZRZPpgs4Xm+j8C4fTorFg6B+cfzR1bU2T8ag2eWvlky7J\n\twYoTKscRbZ6VsL7PdGz5ABTHM5f4pyOnP6P2liC8c3q5ZhBMLmTn6NCk7y2x+1NuHFBK\n\tKKJft5jdiAr0W/AZWMYK4Lyv1LyKwXblSdO5UwZBv/HMLPWfApDk+nffSDDkzFT1anG4\n\tbbsA==",
        "X-Gm-Message-State": "AHYfb5j6uIWkKJmJaMYJJ+Dyvte2tzO/uMudVOFK9kof/rGtwRv1TDT7\n\tq971XJNOSVB3Uejf",
        "X-Received": "by 10.84.230.137 with SMTP id e9mr11468858plk.71.1503687956271; \n\tFri, 25 Aug 2017 12:05:56 -0700 (PDT)",
        "From": "David Ahern <dsahern@gmail.com>",
        "To": "netdev@vger.kernel.org, daniel@iogearbox.net, ast@kernel.org,\n\ttj@kernel.org, davem@davemloft.net",
        "Cc": "David Ahern <dsahern@gmail.com>",
        "Subject": "[PATCH v2 net-next 6/8] samples/bpf: Add option to dump socket\n\tsettings",
        "Date": "Fri, 25 Aug 2017 12:05:39 -0700",
        "Message-Id": "<1503687941-626-7-git-send-email-dsahern@gmail.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<1503687941-626-1-git-send-email-dsahern@gmail.com>",
        "References": "<1503687941-626-1-git-send-email-dsahern@gmail.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "Add option to dump socket settings. Will be used in the next patch\nto verify bpf programs are correctly setting mark, priority and\ndevice based on the cgroup attachment for the program run.\n\nSigned-off-by: David Ahern <dsahern@gmail.com>\n---\n samples/bpf/test_cgrp2_sock.c | 75 +++++++++++++++++++++++++++++++++++++++++--\n 1 file changed, 73 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/samples/bpf/test_cgrp2_sock.c b/samples/bpf/test_cgrp2_sock.c\nindex a1ef7b8bd3f9..eabf530a5223 100644\n--- a/samples/bpf/test_cgrp2_sock.c\n+++ b/samples/bpf/test_cgrp2_sock.c\n@@ -112,6 +112,70 @@ static int prog_load(__u32 idx, __u32 mark, __u32 prio)\n \treturn ret;\n }\n \n+static int get_bind_to_device(int sd, char *name, size_t len)\n+{\n+\tsocklen_t optlen = len;\n+\tint rc;\n+\n+\tname[0] = '\\0';\n+\trc = getsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, name, &optlen);\n+\tif (rc < 0)\n+\t\tperror(\"setsockopt(SO_BINDTODEVICE)\");\n+\n+\treturn rc;\n+}\n+\n+static unsigned int get_somark(int sd)\n+{\n+\tunsigned int mark = 0;\n+\tsocklen_t optlen = sizeof(mark);\n+\tint rc;\n+\n+\trc = getsockopt(sd, SOL_SOCKET, SO_MARK, &mark, &optlen);\n+\tif (rc < 0)\n+\t\tperror(\"getsockopt(SO_MARK)\");\n+\n+\treturn mark;\n+}\n+\n+static unsigned int get_priority(int sd)\n+{\n+\tunsigned int prio = 0;\n+\tsocklen_t optlen = sizeof(prio);\n+\tint rc;\n+\n+\trc = getsockopt(sd, SOL_SOCKET, SO_PRIORITY, &prio, &optlen);\n+\tif (rc < 0)\n+\t\tperror(\"getsockopt(SO_PRIORITY)\");\n+\n+\treturn prio;\n+}\n+\n+static int show_sockopts(int family)\n+{\n+\tunsigned int mark, prio;\n+\tchar name[16];\n+\tint sd;\n+\n+\tsd = socket(family, SOCK_DGRAM, 17);\n+\tif (sd < 0) {\n+\t\tperror(\"socket\");\n+\t\treturn 1;\n+\t}\n+\n+\tif (get_bind_to_device(sd, name, sizeof(name)) < 0)\n+\t\treturn 1;\n+\n+\tmark = get_somark(sd);\n+\tprio = get_priority(sd);\n+\n+\tclose(sd);\n+\n+\tprintf(\"sd %d: dev %s, mark %u, priority %u\\n\", sd, name, mark, prio);\n+\n+\treturn 0;\n+}\n+\n static int usage(const char *argv0)\n {\n \tprintf(\"Usage:\\n\");\n@@ -120,6 +184,9 @@ static int usage(const char *argv0)\n \tprintf(\"\\n\");\n \tprintf(\"  Detach a program\\n\");\n \tprintf(\"  %s -d cg-path\\n\", argv0);\n+\tprintf(\"\\n\");\n+\tprintf(\"  Show inherited socket settings (mark, priority, and device)\\n\");\n+\tprintf(\"  %s [-6]\\n\", argv0);\n \treturn EXIT_FAILURE;\n }\n \n@@ -129,10 +196,11 @@ int main(int argc, char **argv)\n \t__u32 idx = 0, mark = 0, prio = 0;\n \tconst char *cgrp_path = NULL;\n \tint cg_fd, prog_fd, ret;\n+\tint family = PF_INET;\n \tint do_attach = 1;\n \tint rc;\n \n-\twhile ((rc = getopt(argc, argv, \"db:m:p:r\")) != -1) {\n+\twhile ((rc = getopt(argc, argv, \"db:m:p:r6\")) != -1) {\n \t\tswitch (rc) {\n \t\tcase 'd':\n \t\t\tdo_attach = 0;\n@@ -156,13 +224,16 @@ int main(int argc, char **argv)\n \t\tcase 'r':\n \t\t\tattach_flags |= BPF_F_RECURSIVE;\n \t\t\tbreak;\n+\t\tcase '6':\n+\t\t\tfamily = PF_INET6;\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\treturn usage(argv[0]);\n \t\t}\n \t}\n \n \tif (optind == argc)\n-\t\treturn usage(argv[0]);\n+\t\treturn show_sockopts(family);\n \n \tcgrp_path = argv[optind];\n \tif (!cgrp_path) {\n",
    "prefixes": [
        "v2",
        "net-next",
        "6/8"
    ]
}