... | ... | ||
---|---|---|---|
14 | .../networking/nf_conntrack-sysctl.rst | 29 +++++++++++++++---- | 14 | .../networking/nf_conntrack-sysctl.rst | 29 +++++++++++++++---- |
15 | include/net/netfilter/nf_conntrack.h | 8 ++++- | 15 | include/net/netfilter/nf_conntrack.h | 8 ++++- |
16 | include/net/netns/conntrack.h | 1 + | 16 | include/net/netns/conntrack.h | 1 + |
17 | net/netfilter/nf_conntrack_core.c | 19 ++++++------ | 17 | net/netfilter/nf_conntrack_core.c | 19 ++++++------ |
18 | net/netfilter/nf_conntrack_netlink.c | 2 +- | 18 | net/netfilter/nf_conntrack_netlink.c | 2 +- |
19 | net/netfilter/nf_conntrack_standalone.c | 5 ++-- | 19 | net/netfilter/nf_conntrack_standalone.c | 7 +++-- |
20 | 6 files changed, 44 insertions(+), 20 deletions(-) | 20 | 6 files changed, 46 insertions(+), 20 deletions(-) |
21 | 21 | ||
22 | diff --git a/Documentation/networking/nf_conntrack-sysctl.rst b/Documentation/networking/nf_conntrack-sysctl.rst | 22 | diff --git a/Documentation/networking/nf_conntrack-sysctl.rst b/Documentation/networking/nf_conntrack-sysctl.rst |
23 | index XXXXXXX..XXXXXXX 100644 | 23 | index XXXXXXX..XXXXXXX 100644 |
24 | --- a/Documentation/networking/nf_conntrack-sysctl.rst | 24 | --- a/Documentation/networking/nf_conntrack-sysctl.rst |
25 | +++ b/Documentation/networking/nf_conntrack-sysctl.rst | 25 | +++ b/Documentation/networking/nf_conntrack-sysctl.rst |
... | ... | ||
32 | - Note that connection tracking entries are added to the table twice -- once | 32 | - Note that connection tracking entries are added to the table twice -- once |
33 | - for the original direction and once for the reply direction (i.e., with | 33 | - for the original direction and once for the reply direction (i.e., with |
34 | - the reversed address). This means that with default settings a maxed-out | 34 | - the reversed address). This means that with default settings a maxed-out |
35 | - table will have a average hash chain length of 2, not 1. | 35 | - table will have a average hash chain length of 2, not 1. |
36 | + - 0 - disabled (unlimited) | 36 | + - 0 - disabled (unlimited) |
37 | + - not 0 - enabled | 37 | + - not 0 - enabled |
38 | + | 38 | + |
39 | + Maximum number of allowed connection tracking entries per netns. This value | 39 | + Maximum number of allowed connection tracking entries per netns. This value |
40 | + is set to nf_conntrack_buckets by default. | 40 | + is set to nf_conntrack_buckets by default. |
41 | + | 41 | + |
42 | + Note that connection tracking entries are added to the table twice -- once | 42 | + Note that connection tracking entries are added to the table twice -- once |
... | ... | ||
91 | +++ b/include/net/netns/conntrack.h | 91 | +++ b/include/net/netns/conntrack.h |
92 | @@ -XXX,XX +XXX,XX @@ struct netns_ct { | 92 | @@ -XXX,XX +XXX,XX @@ struct netns_ct { |
93 | u8 sysctl_acct; | 93 | u8 sysctl_acct; |
94 | u8 sysctl_tstamp; | 94 | u8 sysctl_tstamp; |
95 | u8 sysctl_checksum; | 95 | u8 sysctl_checksum; |
96 | + unsigned int sysctl_max; | 96 | + unsigned int sysctl_max; |
97 | 97 | ||
98 | struct ip_conntrack_stat __percpu *stat; | 98 | struct ip_conntrack_stat __percpu *stat; |
99 | struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; | 99 | struct nf_ct_event_notifier __rcu *nf_conntrack_event_cb; |
100 | diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c | 100 | diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c |
101 | index XXXXXXX..XXXXXXX 100644 | 101 | index XXXXXXX..XXXXXXX 100644 |
... | ... | ||
213 | .maxlen = sizeof(int), | 213 | .maxlen = sizeof(int), |
214 | .mode = 0644, | 214 | .mode = 0644, |
215 | .proc_handler = proc_dointvec_minmax, | 215 | .proc_handler = proc_dointvec_minmax, |
216 | @@ -XXX,XX +XXX,XX @@ static int nf_conntrack_standalone_init_sysctl(struct net *net) | 216 | @@ -XXX,XX +XXX,XX @@ static int nf_conntrack_standalone_init_sysctl(struct net *net) |
217 | 217 | ||
218 | table[NF_SYSCTL_CT_COUNT].data = &cnet->count; | ||
219 | table[NF_SYSCTL_CT_CHECKSUM].data = &net->ct.sysctl_checksum; | ||
220 | + table[NF_SYSCTL_CT_MAX].data = &net->ct.sysctl_max; | ||
221 | table[NF_SYSCTL_CT_LOG_INVALID].data = &net->ct.sysctl_log_invalid; | ||
222 | table[NF_SYSCTL_CT_ACCT].data = &net->ct.sysctl_acct; | ||
223 | #ifdef CONFIG_NF_CONNTRACK_EVENTS | ||
224 | @@ -XXX,XX +XXX,XX @@ static int nf_conntrack_standalone_init_sysctl(struct net *net) | ||
225 | |||
218 | /* Don't allow non-init_net ns to alter global sysctls */ | 226 | /* Don't allow non-init_net ns to alter global sysctls */ |
219 | if (!net_eq(&init_net, net)) { | 227 | if (!net_eq(&init_net, net)) { |
220 | - table[NF_SYSCTL_CT_MAX].mode = 0444; | 228 | - table[NF_SYSCTL_CT_MAX].mode = 0444; |
221 | table[NF_SYSCTL_CT_EXPECT_MAX].mode = 0444; | 229 | table[NF_SYSCTL_CT_EXPECT_MAX].mode = 0444; |
222 | table[NF_SYSCTL_CT_BUCKETS].mode = 0444; | 230 | table[NF_SYSCTL_CT_BUCKETS].mode = 0444; |
223 | } | 231 | } |
232 | @@ -XXX,XX +XXX,XX @@ static int nf_conntrack_pernet_init(struct net *net) | ||
233 | int ret; | ||
234 | |||
235 | net->ct.sysctl_checksum = 1; | ||
236 | + net->ct.sysctl_max = init_net.ct.sysctl_max; | ||
237 | |||
238 | ret = nf_conntrack_standalone_init_sysctl(net); | ||
239 | if (ret < 0) | ||
224 | -- | 240 | -- |
225 | 2.40.1 | 241 | 2.40.1 | diff view generated by jsdifflib |