Subject: Re: [PATCH] netfilter: undefined reference to 'nf_conntrack_tstamp_*'

From: Patrick McHardy <[email-masked]>
Date: Thu, 20 Jan 2011 20:52:35 +0100

Am 20.01.2011 20:16, schrieb John Fastabend:
> net/built-in.o: In function `nf_conntrack_init_net':
> net/netfilter/nf_conntrack_core.c:1521:
> 	undefined reference to `nf_conntrack_tstamp_init'
> net/netfilter/nf_conntrack_core.c:1531:
> 	undefined reference to `nf_conntrack_tstamp_fini'
> 
> Add 'selects' notation to Kconfig to include NF_CONNTRACK_TIMESTAMP
> this resolves all the config files I tested.

That's not the correct fix, NF_CONNTRACK_TIMESTAMP is supposed
to be option. Please try whether this patch fixes the problem.

commit 2f1e3176723d74ea2dd975e5be0ef6bb4fed2e2e
Author: Patrick McHardy <[email-masked]>
Date:   Thu Jan 20 20:46:52 2011 +0100

    netfilter: nf_conntrack: fix linker error with NF_CONNTRACK_TIMESTAMP=n
    
    net/built-in.o: In function `nf_conntrack_init_net':
    net/netfilter/nf_conntrack_core.c:1521:
    	undefined reference to `nf_conntrack_tstamp_init'
    net/netfilter/nf_conntrack_core.c:1531:
    	undefined reference to `nf_conntrack_tstamp_fini'
    
    Add dummy inline functions for the =n case to fix this.
    
    Reported-by: John Fastabend <[email-masked]>
    Signed-off-by: Patrick McHardy <[email-masked]>

diff --git a/include/net/netfilter/nf_conntrack_timestamp.h b/include/net/netfilter/nf_conntrack_timestamp.h
index f17dcb6..fc9c82b 100644
--- a/include/net/netfilter/nf_conntrack_timestamp.h
+++ b/include/net/netfilter/nf_conntrack_timestamp.h
@@ -47,7 +47,19 @@ static inline void nf_ct_set_tstamp(struct net *net, bool enable)
 	net->ct.sysctl_tstamp = enable;
 }
 
+#ifdef CONFIG_NF_CONNTRACK_TIMESTAMP
 extern int nf_conntrack_tstamp_init(struct net *net);
 extern void nf_conntrack_tstamp_fini(struct net *net);
+#else
+static inline int nf_conntrack_tstamp_init(struct net *net)
+{
+	return 0;
+}
+
+static inline void nf_conntrack_tstamp_fini(struct net *net)
+{
+	return;
+}
+#endif /* CONFIG_NF_CONNTRACK_TIMESTAMP */
 
 #endif /* _NF_CONNTRACK_TSTAMP_H */