diff options
Diffstat (limited to 'target/linux/generic/patches-3.6/613-netfilter_optional_tcp_window_check.patch')
-rw-r--r-- | target/linux/generic/patches-3.6/613-netfilter_optional_tcp_window_check.patch | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.6/613-netfilter_optional_tcp_window_check.patch b/target/linux/generic/patches-3.6/613-netfilter_optional_tcp_window_check.patch new file mode 100644 index 0000000000..1c259d4f0c --- /dev/null +++ b/target/linux/generic/patches-3.6/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. */ +@@ -524,6 +527,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. + */ +@@ -1321,6 +1327,13 @@ static struct ctl_table tcp_sysctl_table + .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, ++ }, ++ { + .procname = "nf_conntrack_tcp_be_liberal", + .data = &nf_ct_tcp_be_liberal, + .maxlen = sizeof(unsigned int), |