get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 809430,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/809430/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/1504478516-13224-2-git-send-email-pablo@netfilter.org/",
    "project": {
        "id": 26,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/26/?format=api",
        "name": "Netfilter Development",
        "link_name": "netfilter-devel",
        "list_id": "netfilter-devel.vger.kernel.org",
        "list_email": "netfilter-devel@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1504478516-13224-2-git-send-email-pablo@netfilter.org>",
    "list_archive_url": null,
    "date": "2017-09-03T22:41:43",
    "name": "[34/47] netfilter: conntrack: remove protocol name from l4proto struct",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "9449913101a57ead31cf6fdbd78933e1e106405d",
    "submitter": {
        "id": 1315,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/1315/?format=api",
        "name": "Pablo Neira Ayuso",
        "email": "pablo@netfilter.org"
    },
    "delegate": {
        "id": 6139,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/6139/?format=api",
        "username": "pablo",
        "first_name": "Pablo",
        "last_name": "Neira",
        "email": "pablo@netfilter.org"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/1504478516-13224-2-git-send-email-pablo@netfilter.org/mbox/",
    "series": [
        {
            "id": 1282,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/1282/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=1282",
            "date": "2017-09-03T22:40:11",
            "name": null,
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/1282/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/809430/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/809430/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netfilter-devel-owner@vger.kernel.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.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=netfilter-devel-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xlnzh67Z6z9sPs\n\tfor <incoming@patchwork.ozlabs.org>;\n\tMon,  4 Sep 2017 08:42:24 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753469AbdICWmW (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tSun, 3 Sep 2017 18:42:22 -0400",
            "from mail.us.es ([193.147.175.20]:52898 \"EHLO mail.us.es\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1753440AbdICWmM (ORCPT <rfc822; netfilter-devel@vger.kernel.org>);\n\tSun, 3 Sep 2017 18:42:12 -0400",
            "from antivirus1-rhel7.int (unknown [192.168.2.11])\n\tby mail.us.es (Postfix) with ESMTP id 4B7E3190F65\n\tfor <netfilter-devel@vger.kernel.org>;\n\tMon,  4 Sep 2017 00:41:45 +0200 (CEST)",
            "from antivirus1-rhel7.int (localhost [127.0.0.1])\n\tby antivirus1-rhel7.int (Postfix) with ESMTP id 360A3B502D\n\tfor <netfilter-devel@vger.kernel.org>;\n\tMon,  4 Sep 2017 00:41:45 +0200 (CEST)",
            "by antivirus1-rhel7.int (Postfix, from userid 99)\n\tid 2BAA7B5024; Mon,  4 Sep 2017 00:41:45 +0200 (CEST)",
            "from antivirus1-rhel7.int (localhost [127.0.0.1])\n\tby antivirus1-rhel7.int (Postfix) with ESMTP id F36D3B5026;\n\tMon,  4 Sep 2017 00:41:42 +0200 (CEST)",
            "from 192.168.1.97 (192.168.1.97) by antivirus1-rhel7.int\n\t(F-Secure/fsigk_smtp/550/antivirus1-rhel7.int); \n\tMon, 04 Sep 2017 00:41:42 +0200 (CEST)",
            "from salvia.here (unknown [31.4.193.113])\n\t(Authenticated sender: 1984lsi)\n\tby entrada.int (Postfix) with ESMTPA id 9C9814265A20;\n\tMon,  4 Sep 2017 00:41:42 +0200 (CEST)"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.1 (2015-04-28) on\n\tantivirus1-rhel7.int",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-108.2 required=7.5 tests=ALL_TRUSTED,BAYES_50,\n\tSMTPAUTH_US2,USER_IN_WHITELIST autolearn=disabled version=3.4.1",
        "X-Virus-Status": "clean(F-Secure/fsigk_smtp/550/antivirus1-rhel7.int)",
        "X-SMTPAUTHUS": "auth mail.us.es",
        "From": "Pablo Neira Ayuso <pablo@netfilter.org>",
        "To": "netfilter-devel@vger.kernel.org",
        "Cc": "davem@davemloft.net, netdev@vger.kernel.org",
        "Subject": "[PATCH 34/47] netfilter: conntrack: remove protocol name from\n\tl4proto struct",
        "Date": "Mon,  4 Sep 2017 00:41:43 +0200",
        "Message-Id": "<1504478516-13224-2-git-send-email-pablo@netfilter.org>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<1504478516-13224-1-git-send-email-pablo@netfilter.org>",
        "References": "<1504478516-13224-1-git-send-email-pablo@netfilter.org>",
        "X-Virus-Scanned": "ClamAV using ClamSMTP",
        "Sender": "netfilter-devel-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netfilter-devel.vger.kernel.org>",
        "X-Mailing-List": "netfilter-devel@vger.kernel.org"
    },
    "content": "From: Florian Westphal <fw@strlen.de>\n\nno need to waste storage for something that is only needed\nin one place and can be deduced from protocol number.\n\nSigned-off-by: Florian Westphal <fw@strlen.de>\nSigned-off-by: Pablo Neira Ayuso <pablo@netfilter.org>\n---\n include/net/netfilter/nf_conntrack_l4proto.h   |  3 ---\n net/ipv4/netfilter/nf_conntrack_proto_icmp.c   |  1 -\n net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c |  1 -\n net/netfilter/nf_conntrack_proto.c             |  8 ++++----\n net/netfilter/nf_conntrack_proto_dccp.c        |  2 --\n net/netfilter/nf_conntrack_proto_generic.c     |  1 -\n net/netfilter/nf_conntrack_proto_gre.c         |  1 -\n net/netfilter/nf_conntrack_proto_sctp.c        |  2 --\n net/netfilter/nf_conntrack_proto_tcp.c         |  2 --\n net/netfilter/nf_conntrack_proto_udp.c         |  4 ----\n net/netfilter/nf_conntrack_standalone.c        | 17 ++++++++++++++++-\n 11 files changed, 20 insertions(+), 22 deletions(-)",
    "diff": "diff --git a/include/net/netfilter/nf_conntrack_l4proto.h b/include/net/netfilter/nf_conntrack_l4proto.h\nindex b6e27cafb1d9..47c16bae5e00 100644\n--- a/include/net/netfilter/nf_conntrack_l4proto.h\n+++ b/include/net/netfilter/nf_conntrack_l4proto.h\n@@ -108,9 +108,6 @@ struct nf_conntrack_l4proto {\n \t/* Return the per-net protocol part. */\n \tstruct nf_proto_net *(*get_net_proto)(struct net *net);\n \n-\t/* Protocol name */\n-\tconst char *name;\n-\n \t/* Module (if any) which this is connected to. */\n \tstruct module *me;\n };\ndiff --git a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c\nindex 73c591d8a9a8..fdbeb03e4600 100644\n--- a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c\n+++ b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c\n@@ -362,7 +362,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_icmp __read_mostly =\n {\n \t.l3proto\t\t= PF_INET,\n \t.l4proto\t\t= IPPROTO_ICMP,\n-\t.name\t\t\t= \"icmp\",\n \t.pkt_to_tuple\t\t= icmp_pkt_to_tuple,\n \t.invert_tuple\t\t= icmp_invert_tuple,\n \t.print_tuple\t\t= icmp_print_tuple,\ndiff --git a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c\nindex d5f028e33f65..805ab122767a 100644\n--- a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c\n+++ b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c\n@@ -367,7 +367,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_icmpv6 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET6,\n \t.l4proto\t\t= IPPROTO_ICMPV6,\n-\t.name\t\t\t= \"icmpv6\",\n \t.pkt_to_tuple\t\t= icmpv6_pkt_to_tuple,\n \t.invert_tuple\t\t= icmpv6_invert_tuple,\n \t.print_tuple\t\t= icmpv6_print_tuple,\ndiff --git a/net/netfilter/nf_conntrack_proto.c b/net/netfilter/nf_conntrack_proto.c\nindex 85104a27cc89..0ecab7163d62 100644\n--- a/net/netfilter/nf_conntrack_proto.c\n+++ b/net/netfilter/nf_conntrack_proto.c\n@@ -437,8 +437,8 @@ int nf_ct_l4proto_register(struct nf_conntrack_l4proto *l4proto[],\n \t}\n \tif (i != num_proto) {\n \t\tver = l4proto[i]->l3proto == PF_INET6 ? 6 : 4;\n-\t\tpr_err(\"nf_conntrack_ipv%d: can't register %s%d proto.\\n\",\n-\t\t       ver, l4proto[i]->name, ver);\n+\t\tpr_err(\"nf_conntrack_ipv%d: can't register l4 %d proto.\\n\",\n+\t\t       ver, l4proto[i]->l4proto);\n \t\tnf_ct_l4proto_unregister(l4proto, i);\n \t}\n \treturn ret;\n@@ -458,8 +458,8 @@ int nf_ct_l4proto_pernet_register(struct net *net,\n \t\t\tbreak;\n \t}\n \tif (i != num_proto) {\n-\t\tpr_err(\"nf_conntrack_%s%d: pernet registration failed\\n\",\n-\t\t       l4proto[i]->name,\n+\t\tpr_err(\"nf_conntrack_proto_%d %d: pernet registration failed\\n\",\n+\t\t       l4proto[i]->l4proto,\n \t\t       l4proto[i]->l3proto == PF_INET6 ? 6 : 4);\n \t\tnf_ct_l4proto_pernet_unregister(net, l4proto, i);\n \t}\ndiff --git a/net/netfilter/nf_conntrack_proto_dccp.c b/net/netfilter/nf_conntrack_proto_dccp.c\nindex 4707d997558a..a0492184a0a8 100644\n--- a/net/netfilter/nf_conntrack_proto_dccp.c\n+++ b/net/netfilter/nf_conntrack_proto_dccp.c\n@@ -880,7 +880,6 @@ static struct nf_proto_net *dccp_get_net_proto(struct net *net)\n struct nf_conntrack_l4proto nf_conntrack_l4proto_dccp4 __read_mostly = {\n \t.l3proto\t\t= AF_INET,\n \t.l4proto\t\t= IPPROTO_DCCP,\n-\t.name\t\t\t= \"dccp\",\n \t.pkt_to_tuple\t\t= dccp_pkt_to_tuple,\n \t.invert_tuple\t\t= dccp_invert_tuple,\n \t.new\t\t\t= dccp_new,\n@@ -916,7 +915,6 @@ EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_dccp4);\n struct nf_conntrack_l4proto nf_conntrack_l4proto_dccp6 __read_mostly = {\n \t.l3proto\t\t= AF_INET6,\n \t.l4proto\t\t= IPPROTO_DCCP,\n-\t.name\t\t\t= \"dccp\",\n \t.pkt_to_tuple\t\t= dccp_pkt_to_tuple,\n \t.invert_tuple\t\t= dccp_invert_tuple,\n \t.new\t\t\t= dccp_new,\ndiff --git a/net/netfilter/nf_conntrack_proto_generic.c b/net/netfilter/nf_conntrack_proto_generic.c\nindex d5868bad33a7..4fe8b3312823 100644\n--- a/net/netfilter/nf_conntrack_proto_generic.c\n+++ b/net/netfilter/nf_conntrack_proto_generic.c\n@@ -187,7 +187,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_generic __read_mostly =\n {\n \t.l3proto\t\t= PF_UNSPEC,\n \t.l4proto\t\t= 255,\n-\t.name\t\t\t= \"unknown\",\n \t.pkt_to_tuple\t\t= generic_pkt_to_tuple,\n \t.invert_tuple\t\t= generic_invert_tuple,\n \t.print_tuple\t\t= generic_print_tuple,\ndiff --git a/net/netfilter/nf_conntrack_proto_gre.c b/net/netfilter/nf_conntrack_proto_gre.c\nindex 87bb40a3feb5..984bcfdbd4d7 100644\n--- a/net/netfilter/nf_conntrack_proto_gre.c\n+++ b/net/netfilter/nf_conntrack_proto_gre.c\n@@ -364,7 +364,6 @@ static int gre_init_net(struct net *net, u_int16_t proto)\n static struct nf_conntrack_l4proto nf_conntrack_l4proto_gre4 __read_mostly = {\n \t.l3proto\t = AF_INET,\n \t.l4proto\t = IPPROTO_GRE,\n-\t.name\t\t = \"gre\",\n \t.pkt_to_tuple\t = gre_pkt_to_tuple,\n \t.invert_tuple\t = gre_invert_tuple,\n \t.print_tuple\t = gre_print_tuple,\ndiff --git a/net/netfilter/nf_conntrack_proto_sctp.c b/net/netfilter/nf_conntrack_proto_sctp.c\nindex 6eef29d2eec4..1d7a995ea049 100644\n--- a/net/netfilter/nf_conntrack_proto_sctp.c\n+++ b/net/netfilter/nf_conntrack_proto_sctp.c\n@@ -791,7 +791,6 @@ static struct nf_proto_net *sctp_get_net_proto(struct net *net)\n struct nf_conntrack_l4proto nf_conntrack_l4proto_sctp4 __read_mostly = {\n \t.l3proto\t\t= PF_INET,\n \t.l4proto \t\t= IPPROTO_SCTP,\n-\t.name \t\t\t= \"sctp\",\n \t.pkt_to_tuple \t\t= sctp_pkt_to_tuple,\n \t.invert_tuple \t\t= sctp_invert_tuple,\n \t.print_tuple \t\t= sctp_print_tuple,\n@@ -828,7 +827,6 @@ EXPORT_SYMBOL_GPL(nf_conntrack_l4proto_sctp4);\n struct nf_conntrack_l4proto nf_conntrack_l4proto_sctp6 __read_mostly = {\n \t.l3proto\t\t= PF_INET6,\n \t.l4proto \t\t= IPPROTO_SCTP,\n-\t.name \t\t\t= \"sctp\",\n \t.pkt_to_tuple \t\t= sctp_pkt_to_tuple,\n \t.invert_tuple \t\t= sctp_invert_tuple,\n \t.print_tuple \t\t= sctp_print_tuple,\ndiff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c\nindex 9758a7dfd83e..e3e59e3d0592 100644\n--- a/net/netfilter/nf_conntrack_proto_tcp.c\n+++ b/net/netfilter/nf_conntrack_proto_tcp.c\n@@ -1556,7 +1556,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp4 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET,\n \t.l4proto \t\t= IPPROTO_TCP,\n-\t.name \t\t\t= \"tcp\",\n \t.pkt_to_tuple \t\t= tcp_pkt_to_tuple,\n \t.invert_tuple \t\t= tcp_invert_tuple,\n \t.print_tuple \t\t= tcp_print_tuple,\n@@ -1594,7 +1593,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_tcp6 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET6,\n \t.l4proto \t\t= IPPROTO_TCP,\n-\t.name \t\t\t= \"tcp\",\n \t.pkt_to_tuple \t\t= tcp_pkt_to_tuple,\n \t.invert_tuple \t\t= tcp_invert_tuple,\n \t.print_tuple \t\t= tcp_print_tuple,\ndiff --git a/net/netfilter/nf_conntrack_proto_udp.c b/net/netfilter/nf_conntrack_proto_udp.c\nindex f6ebce6178ca..ec861a1169f1 100644\n--- a/net/netfilter/nf_conntrack_proto_udp.c\n+++ b/net/netfilter/nf_conntrack_proto_udp.c\n@@ -313,7 +313,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udp4 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET,\n \t.l4proto\t\t= IPPROTO_UDP,\n-\t.name\t\t\t= \"udp\",\n \t.allow_clash\t\t= true,\n \t.pkt_to_tuple\t\t= udp_pkt_to_tuple,\n \t.invert_tuple\t\t= udp_invert_tuple,\n@@ -347,7 +346,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udplite4 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET,\n \t.l4proto\t\t= IPPROTO_UDPLITE,\n-\t.name\t\t\t= \"udplite\",\n \t.allow_clash\t\t= true,\n \t.pkt_to_tuple\t\t= udp_pkt_to_tuple,\n \t.invert_tuple\t\t= udp_invert_tuple,\n@@ -381,7 +379,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udp6 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET6,\n \t.l4proto\t\t= IPPROTO_UDP,\n-\t.name\t\t\t= \"udp\",\n \t.allow_clash\t\t= true,\n \t.pkt_to_tuple\t\t= udp_pkt_to_tuple,\n \t.invert_tuple\t\t= udp_invert_tuple,\n@@ -415,7 +412,6 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_udplite6 __read_mostly =\n {\n \t.l3proto\t\t= PF_INET6,\n \t.l4proto\t\t= IPPROTO_UDPLITE,\n-\t.name\t\t\t= \"udplite\",\n \t.allow_clash\t\t= true,\n \t.pkt_to_tuple\t\t= udp_pkt_to_tuple,\n \t.invert_tuple\t\t= udp_invert_tuple,\ndiff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c\nindex 359d7e6a4503..b28f9e93f574 100644\n--- a/net/netfilter/nf_conntrack_standalone.c\n+++ b/net/netfilter/nf_conntrack_standalone.c\n@@ -208,6 +208,21 @@ static const char* l3proto_name(u16 proto)\n \treturn \"unknown\";\n }\n \n+static const char* l4proto_name(u16 proto)\n+{\n+\tswitch (proto) {\n+\tcase IPPROTO_ICMP: return \"icmp\";\n+\tcase IPPROTO_TCP: return \"tcp\";\n+\tcase IPPROTO_UDP: return \"udp\";\n+\tcase IPPROTO_DCCP: return \"dccp\";\n+\tcase IPPROTO_GRE: return \"gre\";\n+\tcase IPPROTO_SCTP: return \"sctp\";\n+\tcase IPPROTO_UDPLITE: return \"udplite\";\n+\t}\n+\n+\treturn \"unknown\";\n+}\n+\n /* return 0 on success, 1 in case of error */\n static int ct_seq_show(struct seq_file *s, void *v)\n {\n@@ -242,7 +257,7 @@ static int ct_seq_show(struct seq_file *s, void *v)\n \tret = -ENOSPC;\n \tseq_printf(s, \"%-8s %u %-8s %u %ld \",\n \t\t   l3proto_name(l3proto->l3proto), nf_ct_l3num(ct),\n-\t\t   l4proto->name, nf_ct_protonum(ct),\n+\t\t   l4proto_name(l4proto->l4proto), nf_ct_protonum(ct),\n \t\t   nf_ct_expires(ct)  / HZ);\n \n \tif (l4proto->print_conntrack)\n",
    "prefixes": [
        "34/47"
    ]
}