/* called by gc worker if table is full */
        bool (*can_early_drop)(const struct nf_conn *ct);
 
-       /* Print out the private part of the conntrack. */
-       void (*print_conntrack)(struct seq_file *s, struct nf_conn *);
-
        /* Return the array of timeouts for this protocol. */
        unsigned int *(*get_timeouts)(struct net *net);
 
                u16 nlattr_max;
                const struct nla_policy *nla_policy;
        } ctnl_timeout;
+#endif
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
+       /* Print out the private part of the conntrack. */
+       void (*print_conntrack)(struct seq_file *s, struct nf_conn *);
 #endif
        unsigned int    *net_id;
        /* Init l4proto pernet data */
 
        return false;
 }
 
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
 static void dccp_print_conntrack(struct seq_file *s, struct nf_conn *ct)
 {
        seq_printf(s, "%s ", dccp_state_names[ct->proto.dccp.state]);
 }
+#endif
 
 #if IS_ENABLED(CONFIG_NF_CT_NETLINK)
 static int dccp_to_nlattr(struct sk_buff *skb, struct nlattr *nla,
        .get_timeouts           = dccp_get_timeouts,
        .error                  = dccp_error,
        .can_early_drop         = dccp_can_early_drop,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack        = dccp_print_conntrack,
+#endif
 #if IS_ENABLED(CONFIG_NF_CT_NETLINK)
        .to_nlattr              = dccp_to_nlattr,
        .nlattr_size            = dccp_nlattr_size,
        .get_timeouts           = dccp_get_timeouts,
        .error                  = dccp_error,
        .can_early_drop         = dccp_can_early_drop,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack        = dccp_print_conntrack,
+#endif
 #if IS_ENABLED(CONFIG_NF_CT_NETLINK)
        .to_nlattr              = dccp_to_nlattr,
        .nlattr_size            = dccp_nlattr_size,
 
        return true;
 }
 
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
 /* print private data for conntrack */
 static void gre_print_conntrack(struct seq_file *s, struct nf_conn *ct)
 {
                   (ct->proto.gre.timeout / HZ),
                   (ct->proto.gre.stream_timeout / HZ));
 }
+#endif
 
 static unsigned int *gre_get_timeouts(struct net *net)
 {
        .l4proto         = IPPROTO_GRE,
        .pkt_to_tuple    = gre_pkt_to_tuple,
        .invert_tuple    = gre_invert_tuple,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack = gre_print_conntrack,
+#endif
        .get_timeouts    = gre_get_timeouts,
        .packet          = gre_packet,
        .new             = gre_new,
 
        return true;
 }
 
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
 /* Print out the private part of the conntrack. */
 static void sctp_print_conntrack(struct seq_file *s, struct nf_conn *ct)
 {
        seq_printf(s, "%s ", sctp_conntrack_names[ct->proto.sctp.state]);
 }
+#endif
 
 #define for_each_sctp_chunk(skb, sch, _sch, offset, dataoff, count)    \
 for ((offset) = (dataoff) + sizeof(struct sctphdr), (count) = 0;       \
        .l4proto                = IPPROTO_SCTP,
        .pkt_to_tuple           = sctp_pkt_to_tuple,
        .invert_tuple           = sctp_invert_tuple,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack        = sctp_print_conntrack,
+#endif
        .packet                 = sctp_packet,
        .get_timeouts           = sctp_get_timeouts,
        .new                    = sctp_new,
        .l4proto                = IPPROTO_SCTP,
        .pkt_to_tuple           = sctp_pkt_to_tuple,
        .invert_tuple           = sctp_invert_tuple,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack        = sctp_print_conntrack,
+#endif
        .packet                 = sctp_packet,
        .get_timeouts           = sctp_get_timeouts,
        .new                    = sctp_new,
 
        return true;
 }
 
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
 /* Print out the private part of the conntrack. */
 static void tcp_print_conntrack(struct seq_file *s, struct nf_conn *ct)
 {
        seq_printf(s, "%s ", tcp_conntrack_names[ct->proto.tcp.state]);
 }
+#endif
 
 static unsigned int get_conntrack_index(const struct tcphdr *tcph)
 {
        .l4proto                = IPPROTO_TCP,
        .pkt_to_tuple           = tcp_pkt_to_tuple,
        .invert_tuple           = tcp_invert_tuple,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack        = tcp_print_conntrack,
+#endif
        .packet                 = tcp_packet,
        .get_timeouts           = tcp_get_timeouts,
        .new                    = tcp_new,
        .l4proto                = IPPROTO_TCP,
        .pkt_to_tuple           = tcp_pkt_to_tuple,
        .invert_tuple           = tcp_invert_tuple,
+#ifdef CONFIG_NF_CONNTRACK_PROCFS
        .print_conntrack        = tcp_print_conntrack,
+#endif
        .packet                 = tcp_packet,
        .get_timeouts           = tcp_get_timeouts,
        .new                    = tcp_new,