/* Return the per-net protocol part. */
        struct nf_proto_net *(*get_net_proto)(struct net *net);
 
-       /* Protocol name */
-       const char *name;
-
        /* Module (if any) which this is connected to. */
        struct module *me;
 };
 
 {
        .l3proto                = PF_INET,
        .l4proto                = IPPROTO_ICMP,
-       .name                   = "icmp",
        .pkt_to_tuple           = icmp_pkt_to_tuple,
        .invert_tuple           = icmp_invert_tuple,
        .print_tuple            = icmp_print_tuple,
 
 {
        .l3proto                = PF_INET6,
        .l4proto                = IPPROTO_ICMPV6,
-       .name                   = "icmpv6",
        .pkt_to_tuple           = icmpv6_pkt_to_tuple,
        .invert_tuple           = icmpv6_invert_tuple,
        .print_tuple            = icmpv6_print_tuple,
 
        }
        if (i != num_proto) {
                ver = l4proto[i]->l3proto == PF_INET6 ? 6 : 4;
-               pr_err("nf_conntrack_ipv%d: can't register %s%d proto.\n",
-                      ver, l4proto[i]->name, ver);
+               pr_err("nf_conntrack_ipv%d: can't register l4 %d proto.\n",
+                      ver, l4proto[i]->l4proto);
                nf_ct_l4proto_unregister(l4proto, i);
        }
        return ret;
                        break;
        }
        if (i != num_proto) {
-               pr_err("nf_conntrack_%s%d: pernet registration failed\n",
-                      l4proto[i]->name,
+               pr_err("nf_conntrack_proto_%d %d: pernet registration failed\n",
+                      l4proto[i]->l4proto,
                       l4proto[i]->l3proto == PF_INET6 ? 6 : 4);
                nf_ct_l4proto_pernet_unregister(net, l4proto, i);
        }
 
 struct nf_conntrack_l4proto nf_conntrack_l4proto_dccp4 __read_mostly = {
        .l3proto                = AF_INET,
        .l4proto                = IPPROTO_DCCP,
-       .name                   = "dccp",
        .pkt_to_tuple           = dccp_pkt_to_tuple,
        .invert_tuple           = dccp_invert_tuple,
        .new                    = dccp_new,
 struct nf_conntrack_l4proto nf_conntrack_l4proto_dccp6 __read_mostly = {
        .l3proto                = AF_INET6,
        .l4proto                = IPPROTO_DCCP,
-       .name                   = "dccp",
        .pkt_to_tuple           = dccp_pkt_to_tuple,
        .invert_tuple           = dccp_invert_tuple,
        .new                    = dccp_new,
 
 {
        .l3proto                = PF_UNSPEC,
        .l4proto                = 255,
-       .name                   = "unknown",
        .pkt_to_tuple           = generic_pkt_to_tuple,
        .invert_tuple           = generic_invert_tuple,
        .print_tuple            = generic_print_tuple,
 
 static struct nf_conntrack_l4proto nf_conntrack_l4proto_gre4 __read_mostly = {
        .l3proto         = AF_INET,
        .l4proto         = IPPROTO_GRE,
-       .name            = "gre",
        .pkt_to_tuple    = gre_pkt_to_tuple,
        .invert_tuple    = gre_invert_tuple,
        .print_tuple     = gre_print_tuple,
 
 struct nf_conntrack_l4proto nf_conntrack_l4proto_sctp4 __read_mostly = {
        .l3proto                = PF_INET,
        .l4proto                = IPPROTO_SCTP,
-       .name                   = "sctp",
        .pkt_to_tuple           = sctp_pkt_to_tuple,
        .invert_tuple           = sctp_invert_tuple,
        .print_tuple            = sctp_print_tuple,
 struct nf_conntrack_l4proto nf_conntrack_l4proto_sctp6 __read_mostly = {
        .l3proto                = PF_INET6,
        .l4proto                = IPPROTO_SCTP,
-       .name                   = "sctp",
        .pkt_to_tuple           = sctp_pkt_to_tuple,
        .invert_tuple           = sctp_invert_tuple,
        .print_tuple            = sctp_print_tuple,
 
 {
        .l3proto                = PF_INET,
        .l4proto                = IPPROTO_TCP,
-       .name                   = "tcp",
        .pkt_to_tuple           = tcp_pkt_to_tuple,
        .invert_tuple           = tcp_invert_tuple,
        .print_tuple            = tcp_print_tuple,
 {
        .l3proto                = PF_INET6,
        .l4proto                = IPPROTO_TCP,
-       .name                   = "tcp",
        .pkt_to_tuple           = tcp_pkt_to_tuple,
        .invert_tuple           = tcp_invert_tuple,
        .print_tuple            = tcp_print_tuple,
 
 {
        .l3proto                = PF_INET,
        .l4proto                = IPPROTO_UDP,
-       .name                   = "udp",
        .allow_clash            = true,
        .pkt_to_tuple           = udp_pkt_to_tuple,
        .invert_tuple           = udp_invert_tuple,
 {
        .l3proto                = PF_INET,
        .l4proto                = IPPROTO_UDPLITE,
-       .name                   = "udplite",
        .allow_clash            = true,
        .pkt_to_tuple           = udp_pkt_to_tuple,
        .invert_tuple           = udp_invert_tuple,
 {
        .l3proto                = PF_INET6,
        .l4proto                = IPPROTO_UDP,
-       .name                   = "udp",
        .allow_clash            = true,
        .pkt_to_tuple           = udp_pkt_to_tuple,
        .invert_tuple           = udp_invert_tuple,
 {
        .l3proto                = PF_INET6,
        .l4proto                = IPPROTO_UDPLITE,
-       .name                   = "udplite",
        .allow_clash            = true,
        .pkt_to_tuple           = udp_pkt_to_tuple,
        .invert_tuple           = udp_invert_tuple,
 
        return "unknown";
 }
 
+static const char* l4proto_name(u16 proto)
+{
+       switch (proto) {
+       case IPPROTO_ICMP: return "icmp";
+       case IPPROTO_TCP: return "tcp";
+       case IPPROTO_UDP: return "udp";
+       case IPPROTO_DCCP: return "dccp";
+       case IPPROTO_GRE: return "gre";
+       case IPPROTO_SCTP: return "sctp";
+       case IPPROTO_UDPLITE: return "udplite";
+       }
+
+       return "unknown";
+}
+
 /* return 0 on success, 1 in case of error */
 static int ct_seq_show(struct seq_file *s, void *v)
 {
        ret = -ENOSPC;
        seq_printf(s, "%-8s %u %-8s %u %ld ",
                   l3proto_name(l3proto->l3proto), nf_ct_l3num(ct),
-                  l4proto->name, nf_ct_protonum(ct),
+                  l4proto_name(l4proto->l4proto), nf_ct_protonum(ct),
                   nf_ct_expires(ct)  / HZ);
 
        if (l4proto->print_conntrack)