1 #ifndef _NF_CONNTRACK_TSTAMP_H 2 #define _NF_CONNTRACK_TSTAMP_H 3 4 #include <net/net_namespace.h> 5 #include <linux/netfilter/nf_conntrack_common.h> 6 #include <linux/netfilter/nf_conntrack_tuple_common.h> 7 #include <net/netfilter/nf_conntrack.h> 8 #include <net/netfilter/nf_conntrack_extend.h> 9 10 struct nf_conn_tstamp { 11 u_int64_t start; 12 u_int64_t stop; 13 }; 14 15 static inline nf_conn_tstamp_find(const struct nf_conn * ct)16struct nf_conn_tstamp *nf_conn_tstamp_find(const struct nf_conn *ct) 17 { 18 #ifdef CONFIG_NF_CONNTRACK_TIMESTAMP 19 return nf_ct_ext_find(ct, NF_CT_EXT_TSTAMP); 20 #else 21 return NULL; 22 #endif 23 } 24 25 static inline nf_ct_tstamp_ext_add(struct nf_conn * ct,gfp_t gfp)26struct nf_conn_tstamp *nf_ct_tstamp_ext_add(struct nf_conn *ct, gfp_t gfp) 27 { 28 #ifdef CONFIG_NF_CONNTRACK_TIMESTAMP 29 struct net *net = nf_ct_net(ct); 30 31 if (!net->ct.sysctl_tstamp) 32 return NULL; 33 34 return nf_ct_ext_add(ct, NF_CT_EXT_TSTAMP, gfp); 35 #else 36 return NULL; 37 #endif 38 }; 39 nf_ct_tstamp_enabled(struct net * net)40static inline bool nf_ct_tstamp_enabled(struct net *net) 41 { 42 return net->ct.sysctl_tstamp != 0; 43 } 44 nf_ct_set_tstamp(struct net * net,bool enable)45static inline void nf_ct_set_tstamp(struct net *net, bool enable) 46 { 47 net->ct.sysctl_tstamp = enable; 48 } 49 50 #ifdef CONFIG_NF_CONNTRACK_TIMESTAMP 51 extern int nf_conntrack_tstamp_init(struct net *net); 52 extern void nf_conntrack_tstamp_fini(struct net *net); 53 #else nf_conntrack_tstamp_init(struct net * net)54static inline int nf_conntrack_tstamp_init(struct net *net) 55 { 56 return 0; 57 } 58 nf_conntrack_tstamp_fini(struct net * net)59static inline void nf_conntrack_tstamp_fini(struct net *net) 60 { 61 return; 62 } 63 #endif /* CONFIG_NF_CONNTRACK_TIMESTAMP */ 64 65 #endif /* _NF_CONNTRACK_TSTAMP_H */ 66