1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _NF_CONNTRACK_COMMON_H 3 #define _NF_CONNTRACK_COMMON_H 4 5 #include <linux/refcount.h> 6 #include <uapi/linux/netfilter/nf_conntrack_common.h> 7 8 struct ip_conntrack_stat { 9 unsigned int found; 10 unsigned int invalid; 11 unsigned int insert; 12 unsigned int insert_failed; 13 unsigned int clash_resolve; 14 unsigned int drop; 15 unsigned int early_drop; 16 unsigned int error; 17 unsigned int expect_new; 18 unsigned int expect_create; 19 unsigned int expect_delete; 20 unsigned int search_restart; 21 unsigned int chaintoolong; 22 }; 23 24 #define NFCT_INFOMASK 7UL 25 #define NFCT_PTRMASK ~(NFCT_INFOMASK) 26 27 struct nf_conntrack { 28 refcount_t use; 29 }; 30 31 void nf_conntrack_destroy(struct nf_conntrack *nfct); 32 33 /* like nf_ct_put, but without module dependency on nf_conntrack */ nf_conntrack_put(struct nf_conntrack * nfct)34static inline void nf_conntrack_put(struct nf_conntrack *nfct) 35 { 36 if (nfct && refcount_dec_and_test(&nfct->use)) 37 nf_conntrack_destroy(nfct); 38 } nf_conntrack_get(struct nf_conntrack * nfct)39static inline void nf_conntrack_get(struct nf_conntrack *nfct) 40 { 41 if (nfct) 42 refcount_inc(&nfct->use); 43 } 44 45 #endif /* _NF_CONNTRACK_COMMON_H */ 46