1#ifndef __NETNS_CONNTRACK_H 2#define __NETNS_CONNTRACK_H 3 4#include <linux/list.h> 5#include <linux/list_nulls.h> 6#include <linux/atomic.h> 7#include <linux/workqueue.h> 8#include <linux/netfilter/nf_conntrack_tcp.h> 9#include <linux/seqlock.h> 10 11struct ctl_table_header; 12struct nf_conntrack_ecache; 13 14struct nf_proto_net { 15#ifdef CONFIG_SYSCTL 16 struct ctl_table_header *ctl_table_header; 17 struct ctl_table *ctl_table; 18#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT 19 struct ctl_table_header *ctl_compat_header; 20 struct ctl_table *ctl_compat_table; 21#endif 22#endif 23 unsigned int users; 24}; 25 26struct nf_generic_net { 27 struct nf_proto_net pn; 28 unsigned int timeout; 29}; 30 31struct nf_tcp_net { 32 struct nf_proto_net pn; 33 unsigned int timeouts[TCP_CONNTRACK_TIMEOUT_MAX]; 34 unsigned int tcp_loose; 35 unsigned int tcp_be_liberal; 36 unsigned int tcp_max_retrans; 37}; 38 39enum udp_conntrack { 40 UDP_CT_UNREPLIED, 41 UDP_CT_REPLIED, 42 UDP_CT_MAX 43}; 44 45struct nf_udp_net { 46 struct nf_proto_net pn; 47 unsigned int timeouts[UDP_CT_MAX]; 48}; 49 50struct nf_icmp_net { 51 struct nf_proto_net pn; 52 unsigned int timeout; 53}; 54 55struct nf_ip_net { 56 struct nf_generic_net generic; 57 struct nf_tcp_net tcp; 58 struct nf_udp_net udp; 59 struct nf_icmp_net icmp; 60 struct nf_icmp_net icmpv6; 61#if defined(CONFIG_SYSCTL) && defined(CONFIG_NF_CONNTRACK_PROC_COMPAT) 62 struct ctl_table_header *ctl_table_header; 63 struct ctl_table *ctl_table; 64#endif 65}; 66 67struct ct_pcpu { 68 spinlock_t lock; 69 struct hlist_nulls_head unconfirmed; 70 struct hlist_nulls_head dying; 71 struct hlist_nulls_head tmpl; 72}; 73 74struct netns_ct { 75 atomic_t count; 76 unsigned int expect_count; 77#ifdef CONFIG_NF_CONNTRACK_EVENTS 78 struct delayed_work ecache_dwork; 79 bool ecache_dwork_pending; 80#endif 81#ifdef CONFIG_SYSCTL 82 struct ctl_table_header *sysctl_header; 83 struct ctl_table_header *acct_sysctl_header; 84 struct ctl_table_header *tstamp_sysctl_header; 85 struct ctl_table_header *event_sysctl_header; 86 struct ctl_table_header *helper_sysctl_header; 87#endif 88 char *slabname; 89 unsigned int sysctl_log_invalid; /* Log invalid packets */ 90 int sysctl_events; 91 int sysctl_acct; 92 int sysctl_auto_assign_helper; 93 bool auto_assign_helper_warned; 94 int sysctl_tstamp; 95 int sysctl_checksum; 96 97 unsigned int htable_size; 98 seqcount_t generation; 99 struct kmem_cache *nf_conntrack_cachep; 100 struct hlist_nulls_head *hash; 101 struct hlist_head *expect_hash; 102 struct ct_pcpu __percpu *pcpu_lists; 103 struct ip_conntrack_stat __percpu *stat; 104 struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; 105 struct nf_exp_event_notifier __rcu *nf_expect_event_cb; 106 struct nf_ip_net nf_ct_proto; 107#if defined(CONFIG_NF_CONNTRACK_LABELS) 108 unsigned int labels_used; 109 u8 label_words; 110#endif 111#ifdef CONFIG_NF_NAT_NEEDED 112 struct hlist_head *nat_bysource; 113 unsigned int nat_htable_size; 114#endif 115}; 116#endif 117