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