netfilter: netns nf_conntrack: per-netns net.netfilter.nf_conntrack_checksum sysctl
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
committed by
Patrick McHardy
parent
802507071b
commit
c04d05529a
@@ -575,7 +575,7 @@ static int dccp_error(struct net *net, struct sk_buff *skb,
|
||||
}
|
||||
}
|
||||
|
||||
if (nf_conntrack_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
if (net->ct.sysctl_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
nf_checksum_partial(skb, hooknum, dataoff, cscov, IPPROTO_DCCP,
|
||||
pf)) {
|
||||
msg = "nf_ct_dccp: bad checksum ";
|
||||
|
@@ -780,7 +780,7 @@ static int tcp_error(struct net *net,
|
||||
* because the checksum is assumed to be correct.
|
||||
*/
|
||||
/* FIXME: Source route IP option packets --RR */
|
||||
if (nf_conntrack_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
if (net->ct.sysctl_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
nf_checksum(skb, hooknum, dataoff, IPPROTO_TCP, pf)) {
|
||||
if (LOG_INVALID(IPPROTO_TCP))
|
||||
nf_log_packet(pf, 0, skb, NULL, NULL, NULL,
|
||||
|
@@ -123,7 +123,7 @@ static int udp_error(struct net *net, struct sk_buff *skb, unsigned int dataoff,
|
||||
* We skip checking packets on the outgoing path
|
||||
* because the checksum is assumed to be correct.
|
||||
* FIXME: Source route IP option packets --RR */
|
||||
if (nf_conntrack_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
if (net->ct.sysctl_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
nf_checksum(skb, hooknum, dataoff, IPPROTO_UDP, pf)) {
|
||||
if (LOG_INVALID(IPPROTO_UDP))
|
||||
nf_log_packet(pf, 0, skb, NULL, NULL, NULL,
|
||||
|
@@ -129,7 +129,7 @@ static int udplite_error(struct net *net,
|
||||
}
|
||||
|
||||
/* Checksum invalid? Ignore. */
|
||||
if (nf_conntrack_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
if (net->ct.sysctl_checksum && hooknum == NF_INET_PRE_ROUTING &&
|
||||
nf_checksum_partial(skb, hooknum, dataoff, cscov, IPPROTO_UDP,
|
||||
pf)) {
|
||||
if (LOG_INVALID(IPPROTO_UDPLITE))
|
||||
|
@@ -322,9 +322,6 @@ static void nf_conntrack_standalone_fini_proc(struct net *net)
|
||||
|
||||
/* Sysctl support */
|
||||
|
||||
int nf_conntrack_checksum __read_mostly = 1;
|
||||
EXPORT_SYMBOL_GPL(nf_conntrack_checksum);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
/* Log invalid packets of a given protocol */
|
||||
static int log_invalid_proto_min = 0;
|
||||
@@ -360,7 +357,7 @@ static ctl_table nf_ct_sysctl_table[] = {
|
||||
{
|
||||
.ctl_name = NET_NF_CONNTRACK_CHECKSUM,
|
||||
.procname = "nf_conntrack_checksum",
|
||||
.data = &nf_conntrack_checksum,
|
||||
.data = &init_net.ct.sysctl_checksum,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec,
|
||||
@@ -425,6 +422,7 @@ static int nf_conntrack_standalone_init_sysctl(struct net *net)
|
||||
goto out_kmemdup;
|
||||
|
||||
table[1].data = &net->ct.count;
|
||||
table[3].data = &net->ct.sysctl_checksum;
|
||||
|
||||
net->ct.sysctl_header = register_net_sysctl_table(net,
|
||||
nf_net_netfilter_sysctl_path, table);
|
||||
@@ -474,6 +472,7 @@ static int nf_conntrack_net_init(struct net *net)
|
||||
ret = nf_conntrack_standalone_init_proc(net);
|
||||
if (ret < 0)
|
||||
goto out_proc;
|
||||
net->ct.sysctl_checksum = 1;
|
||||
ret = nf_conntrack_standalone_init_sysctl(net);
|
||||
if (ret < 0)
|
||||
goto out_sysctl;
|
||||
|
Reference in New Issue
Block a user