get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 851554,
    "url": "http://patchwork.ozlabs.org/api/patches/851554/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20171220170607.41516-4-lorenzo@google.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": "<20171220170607.41516-4-lorenzo@google.com>",
    "list_archive_url": null,
    "date": "2017-12-20T17:06:03",
    "name": "[ipsec-next,3/7] net: xfrm: Add an xfrm lookup that ignores the mark.",
    "commit_ref": null,
    "pull_url": null,
    "state": "awaiting-upstream",
    "archived": true,
    "hash": "c69837e5567c36bfd36b47318136d5a763353ee0",
    "submitter": {
        "id": 3403,
        "url": "http://patchwork.ozlabs.org/api/people/3403/?format=api",
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.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/20171220170607.41516-4-lorenzo@google.com/mbox/",
    "series": [
        {
            "id": 19695,
            "url": "http://patchwork.ozlabs.org/api/series/19695/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=19695",
            "date": "2017-12-20T17:06:00",
            "name": ": Support multiple VTIs with the same src+dst pair",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/19695/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/851554/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/851554/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=google.com header.i=@google.com\n\theader.b=\"Awp6uwn/\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3z21Qc74kZz9sBd\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu, 21 Dec 2017 04:06:48 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1755668AbdLTRGj (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 20 Dec 2017 12:06:39 -0500",
            "from mail-pg0-f67.google.com ([74.125.83.67]:38041 \"EHLO\n\tmail-pg0-f67.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1755453AbdLTRGd (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 20 Dec 2017 12:06:33 -0500",
            "by mail-pg0-f67.google.com with SMTP id f12so12150291pgo.5\n\tfor <netdev@vger.kernel.org>; Wed, 20 Dec 2017 09:06:32 -0800 (PST)",
            "from lorenzo.tok.corp.google.com ([100.103.3.232])\n\tby smtp.gmail.com with ESMTPSA id\n\tt62sm29103067pgt.23.2017.12.20.09.06.29\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tWed, 20 Dec 2017 09:06:30 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=google.com; s=20161025;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=8SDjKF/74/cSVQULw+jqdy/InHXizM2CBMKHEvIrPDc=;\n\tb=Awp6uwn/YwnRv0mN0iQ6qnRlcoAORBRX6wuT7dhEJlMn7dwlrJ1OtdPxMmcwzQfqGv\n\tAfwS9+tLxtuLrz6HuPMOSeAUkFgvwu/obMGn5ccuiuKwEUUASuDo1XFxahiRc/4pQMyp\n\tjTP/kpnBDCULhrsSic9PHBpG6D4+sxmCHbTVCJyPqcom3RQosqwfnn2Arms7z6HgO/XT\n\tYYkydWwHMHufS6sKo9BERutfl0voj4YjuaQitjD4JIDpeZNpuBQgH1CXGNGgwYzNu2dT\n\tzLlZEUrXMi5MtD59Tg1sPDLUxYkel8YADlYjzjyaLvKvkKjQncUkMmS7y23HtGNkO24p\n\tQGtg==",
        "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=8SDjKF/74/cSVQULw+jqdy/InHXizM2CBMKHEvIrPDc=;\n\tb=UU1PC7Z4mmw3zW6qklVIQZFvl7GxcFmY8q9/TTIXm9vJGNM7zcTk4r8DBHv+gJ3z2S\n\tAa8O7jO986YFVrY77R6Uuss25fO9KOSB6g8JVnQHCx5b9BdNPs1fppPG0Xz/7WQCjGPN\n\thKT6qjpUeiQe5XK3Ye1njTlUlSq8U7rqu2ZRfIhECA3uoqp1316WioMWk5QPvXVVheKt\n\tA8dTBkl+MAyJVL7yJ+6vq4pHlRX7TBPYFiIIIwuqSM7cTp59q+mg+jnHktgR/UMnU2i3\n\tZ9UTbFlYnNQx2kE3boOnuJa/DFTzE44FLmn9NbHW+xM2do6Tsn9riFucf44RCSb7SJbl\n\tsvDA==",
        "X-Gm-Message-State": "AKGB3mJVNg3N2CBsww5Y5pqejGxCf6ptcUWk9CPfAhKVkMgjIQR/LBMD\n\t+gU/de3v6fEG7ij/M2bDBLs2dcCM5EM=",
        "X-Google-Smtp-Source": "ACJfBouARerJTbqG0pgRYXQV2G++9GQjcx18AdijrV1IVU+01pwg4k+R2v+e1OOOMBtww8ekzSPNug==",
        "X-Received": "by 10.99.111.8 with SMTP id k8mr6679366pgc.74.1513789591870;\n\tWed, 20 Dec 2017 09:06:31 -0800 (PST)",
        "From": "Lorenzo Colitti <lorenzo@google.com>",
        "To": "netdev@vger.kernel.org",
        "Cc": "steffen.klassert@secunet.com, subashab@codeaurora.org,\n\tnharold@google.com, davem@davemloft.net,\n\tLorenzo Colitti <lorenzo@google.com>",
        "Subject": "[PATCH ipsec-next 3/7] net: xfrm: Add an xfrm lookup that ignores\n\tthe mark.",
        "Date": "Thu, 21 Dec 2017 02:06:03 +0900",
        "Message-Id": "<20171220170607.41516-4-lorenzo@google.com>",
        "X-Mailer": "git-send-email 2.15.1.620.gb9897f4670-goog",
        "In-Reply-To": "<20171220170607.41516-1-lorenzo@google.com>",
        "References": "<20171220170607.41516-1-lorenzo@google.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "The xfrm inbound and ICMP error paths can match inbound XFRM states\nthat have a mark, but only if the skb mark is already correctly set\nto match the state mark. This typically requires iptables rules\n(potentially even per SA iptables rules), which impose configuration\ncomplexity.\n\nIn some cases, it may be useful to match such an SA anyway. An example\nis when processing an ICMP error to an ESP packet that we previously\nsent. In this case, the only information available to match the SA are\nthe IP addresses and the outbound SPI. Therefore, if the output SA has\na mark, the lookup will fail and the ICMP packet cannot be processed\nunless the packet is somehow already marked.\n\nSigned-off-by: Lorenzo Colitti <lorenzo@google.com>\n---\n include/net/xfrm.h    |  4 ++++\n net/xfrm/xfrm_state.c | 33 +++++++++++++++++++++++++++++++++\n 2 files changed, 37 insertions(+)",
    "diff": "diff --git a/include/net/xfrm.h b/include/net/xfrm.h\nindex 1ec0c47606..9d3b7c0ac6 100644\n--- a/include/net/xfrm.h\n+++ b/include/net/xfrm.h\n@@ -1550,6 +1550,10 @@ struct xfrm_state *xfrm_state_lookup_byaddr(struct net *net, u32 mark,\n \t\t\t\t\t    const xfrm_address_t *saddr,\n \t\t\t\t\t    u8 proto,\n \t\t\t\t\t    unsigned short family);\n+struct xfrm_state *xfrm_state_lookup_loose(struct net *net, u32 mark,\n+\t\t\t\t\t   const xfrm_address_t *daddr,\n+\t\t\t\t\t   __be32 spi, u8 proto,\n+\t\t\t\t\t   unsigned short family);\n #ifdef CONFIG_XFRM_SUB_POLICY\n int xfrm_tmpl_sort(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n,\n \t\t   unsigned short family, struct net *net);\ndiff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c\nindex 1b7856be3e..cff151c714 100644\n--- a/net/xfrm/xfrm_state.c\n+++ b/net/xfrm/xfrm_state.c\n@@ -839,6 +839,39 @@ static struct xfrm_state *__xfrm_state_lookup(struct net *net, u32 mark,\n \treturn NULL;\n }\n \n+struct xfrm_state *xfrm_state_lookup_loose(struct net *net, u32 mark,\n+\t\t\t\t\t   const xfrm_address_t *daddr,\n+\t\t\t\t\t   __be32 spi, u8 proto,\n+\t\t\t\t\t   unsigned short family)\n+{\n+\tunsigned int h = xfrm_spi_hash(net, daddr, spi, proto, family);\n+\tstruct xfrm_state *x, *cand = NULL;\n+\n+\trcu_read_lock();\n+\thlist_for_each_entry_rcu(x, net->xfrm.state_byspi + h, byspi) {\n+\t\tif (x->props.family != family ||\n+\t\t    x->id.spi       != spi ||\n+\t\t    x->id.proto     != proto ||\n+\t\t    !xfrm_addr_equal(&x->id.daddr, daddr, family))\n+\t\t\tcontinue;\n+\n+\t\tif (((mark & x->mark.m) == x->mark.v) &&\n+\t\t    xfrm_state_hold_rcu(x)) {\n+\t\t\tif (cand)\n+\t\t\t\txfrm_state_put(cand);\n+\t\t\trcu_read_unlock();\n+\t\t\treturn x;\n+\t\t}\n+\n+\t\tif (!cand && xfrm_state_hold_rcu(x))\n+\t\t\tcand = x;\n+\t}\n+\n+\trcu_read_unlock();\n+\treturn cand;\n+}\n+EXPORT_SYMBOL(xfrm_state_lookup_loose);\n+\n static struct xfrm_state *__xfrm_state_lookup_byaddr(struct net *net, u32 mark,\n \t\t\t\t\t\t     const xfrm_address_t *daddr,\n \t\t\t\t\t\t     const xfrm_address_t *saddr,\n",
    "prefixes": [
        "ipsec-next",
        "3/7"
    ]
}