aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlad Drukker <vlad@storewiz.com>2005-11-12 15:13:14 -0500
committerDavid S. Miller <davem@davemloft.net>2005-11-12 15:13:14 -0500
commita2d7222f0f5861ce13b9308c30bd18f28ebeb583 (patch)
tree09d4dafe35b9cd4de344c4a8a63ef7d922466c2a
parentefacfbcb6c88677809f44a574fbcd9824835dccb (diff)
[NETFILTER] {ip,nf}_conntrack TCP: Accept SYN+PUSH like SYN
Some devices (e.g. Qlogic iSCSI HBA hardware like QLA4010 up to firmware 3.0.0.4) initiates TCP with SYN and PUSH flags set. The Linux TCP/IP stack deals fine with that, but the connection tracking code doesn't. This patch alters TCP connection tracking to accept SYN+PUSH as a valid flag combination. Signed-off-by: Vlad Drukker <vlad@storewiz.com> Signed-off-by: Harald Welte <laforge@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv4/netfilter/ip_conntrack_proto_tcp.c1
-rw-r--r--net/netfilter/nf_conntrack_proto_tcp.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv4/netfilter/ip_conntrack_proto_tcp.c b/net/ipv4/netfilter/ip_conntrack_proto_tcp.c
index 468c6003b4c..5b3f5220f28 100644
--- a/net/ipv4/netfilter/ip_conntrack_proto_tcp.c
+++ b/net/ipv4/netfilter/ip_conntrack_proto_tcp.c
@@ -814,6 +814,7 @@ static u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG) + 1] =
814{ 814{
815 [TH_SYN] = 1, 815 [TH_SYN] = 1,
816 [TH_SYN|TH_ACK] = 1, 816 [TH_SYN|TH_ACK] = 1,
817 [TH_SYN|TH_PUSH] = 1,
817 [TH_SYN|TH_ACK|TH_PUSH] = 1, 818 [TH_SYN|TH_ACK|TH_PUSH] = 1,
818 [TH_RST] = 1, 819 [TH_RST] = 1,
819 [TH_RST|TH_ACK] = 1, 820 [TH_RST|TH_ACK] = 1,
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index 83d90dd624f..156680ddb04 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -779,6 +779,7 @@ static u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_PUSH|TH_ACK|TH_URG) + 1] =
779{ 779{
780 [TH_SYN] = 1, 780 [TH_SYN] = 1,
781 [TH_SYN|TH_ACK] = 1, 781 [TH_SYN|TH_ACK] = 1,
782 [TH_SYN|TH_PUSH] = 1,
782 [TH_SYN|TH_ACK|TH_PUSH] = 1, 783 [TH_SYN|TH_ACK|TH_PUSH] = 1,
783 [TH_RST] = 1, 784 [TH_RST] = 1,
784 [TH_RST|TH_ACK] = 1, 785 [TH_RST|TH_ACK] = 1,