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 11 struct ctl_table_header; 12 struct nf_conntrack_ecache; 13 14 struct 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 26 struct nf_generic_net { 27 struct nf_proto_net pn; 28 unsigned int timeout; 29 }; 30 31 struct 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 39 enum udp_conntrack { 40 UDP_CT_UNREPLIED, 41 UDP_CT_REPLIED, 42 UDP_CT_MAX 43 }; 44 45 struct nf_udp_net { 46 struct nf_proto_net pn; 47 unsigned int timeouts[UDP_CT_MAX]; 48 }; 49 50 struct nf_icmp_net { 51 struct nf_proto_net pn; 52 unsigned int timeout; 53 }; 54 55 struct 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 67 struct ct_pcpu { 68 spinlock_t lock; 69 struct hlist_nulls_head unconfirmed; 70 struct hlist_nulls_head dying; 71 }; 72 73 struct netns_ct { 74 atomic_t count; 75 unsigned int expect_count; 76 #ifdef CONFIG_NF_CONNTRACK_EVENTS 77 struct delayed_work ecache_dwork; 78 bool ecache_dwork_pending; 79 #endif 80 #ifdef CONFIG_SYSCTL 81 struct ctl_table_header *sysctl_header; 82 struct ctl_table_header *acct_sysctl_header; 83 struct ctl_table_header *tstamp_sysctl_header; 84 struct ctl_table_header *event_sysctl_header; 85 struct ctl_table_header *helper_sysctl_header; 86 #endif 87 char *slabname; 88 unsigned int sysctl_log_invalid; /* Log invalid packets */ 89 int sysctl_events; 90 int sysctl_acct; 91 int sysctl_auto_assign_helper; 92 bool auto_assign_helper_warned; 93 int sysctl_tstamp; 94 int sysctl_checksum; 95 96 unsigned int htable_size; 97 seqcount_t generation; 98 struct kmem_cache *nf_conntrack_cachep; 99 struct hlist_nulls_head *hash; 100 struct hlist_head *expect_hash; 101 struct ct_pcpu __percpu *pcpu_lists; 102 struct ip_conntrack_stat __percpu *stat; 103 struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; 104 struct nf_exp_event_notifier __rcu *nf_expect_event_cb; 105 struct nf_ip_net nf_ct_proto; 106 #if defined(CONFIG_NF_CONNTRACK_LABELS) 107 unsigned int labels_used; 108 u8 label_words; 109 #endif 110 #ifdef CONFIG_NF_NAT_NEEDED 111 struct hlist_head *nat_bysource; 112 unsigned int nat_htable_size; 113 #endif 114 }; 115 #endif 116