/* size of tuple nlattr, fills a hole */
        u16 nla_size;
 
-       /* Protocol name */
-       const char *name;
-
        /*
         * Try to fill in the third arg: nhoff is offset of l3 proto
          * hdr.  Return true if possible.
 
 
 struct nf_conntrack_l3proto nf_conntrack_l3proto_ipv4 __read_mostly = {
        .l3proto         = PF_INET,
-       .name            = "ipv4",
        .pkt_to_tuple    = ipv4_pkt_to_tuple,
        .invert_tuple    = ipv4_invert_tuple,
        .print_tuple     = ipv4_print_tuple,
 
 
 struct nf_conntrack_l3proto nf_conntrack_l3proto_ipv6 __read_mostly = {
        .l3proto                = PF_INET6,
-       .name                   = "ipv6",
        .pkt_to_tuple           = ipv6_pkt_to_tuple,
        .invert_tuple           = ipv6_invert_tuple,
        .print_tuple            = ipv6_print_tuple,
 
 
 struct nf_conntrack_l3proto nf_conntrack_l3proto_generic __read_mostly = {
        .l3proto         = PF_UNSPEC,
-       .name            = "unknown",
        .pkt_to_tuple    = generic_pkt_to_tuple,
        .invert_tuple    = generic_invert_tuple,
        .print_tuple     = generic_print_tuple,
 
 }
 #endif
 
+static const char* l3proto_name(u16 proto)
+{
+       switch (proto) {
+       case AF_INET: return "ipv4";
+       case AF_INET6: return "ipv6";
+       }
+
+       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, nf_ct_l3num(ct),
+                  l3proto_name(l3proto->l3proto), nf_ct_l3num(ct),
                   l4proto->name, nf_ct_protonum(ct),
                   nf_ct_expires(ct)  / HZ);