diff options
Diffstat (limited to 'target/linux/generic/patches-3.8/613-netfilter_optional_tcp_window_check.patch')
-rw-r--r-- | target/linux/generic/patches-3.8/613-netfilter_optional_tcp_window_check.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.8/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/patches-3.8/613-netfilter_optional_tcp_window_check.patch new file mode 100644 index 0000000000..a828ef425d --- /dev/null +++ b/target/linux/generic/patches-3.8/613-netfilter_optional_tcp_window_check.patch @@ -0,0 +1,36 @@ +--- a/net/netfilter/nf_conntrack_proto_tcp.c ++++ b/net/netfilter/nf_conntrack_proto_tcp.c +@@ -29,6 +29,9 @@ + #include <net/netfilter/ipv4/nf_conntrack_ipv4.h> + #include <net/netfilter/ipv6/nf_conntrack_ipv6.h> + ++/* Do not check the TCP window for incoming packets */ ++static int nf_ct_tcp_no_window_check __read_mostly = 1; ++ + /* "Be conservative in what you do, + be liberal in what you accept from others." + If it's non-zero, we mark only out of window RST segments as INVALID. */ +@@ -526,6 +529,9 @@ static bool tcp_in_window(const struct n + s16 receiver_offset; + bool res; + ++ if (nf_ct_tcp_no_window_check) ++ return true; ++ + /* + * Get the required data from the packet. + */ +@@ -1438,6 +1444,13 @@ static struct ctl_table tcp_sysctl_table + .mode = 0644, + .proc_handler = proc_dointvec, + }, ++ { ++ .procname = "nf_conntrack_tcp_no_window_check", ++ .data = &nf_ct_tcp_no_window_check, ++ .maxlen = sizeof(unsigned int), ++ .mode = 0644, ++ .proc_handler = proc_dointvec, ++ }, + { } + }; + |