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 struct hlist_nulls_head tmpl; 72 }; 73 74 struct 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