提交 c1fe3ca5 编写于 作者: G George Hansper 提交者: David S. Miller

[NETFILTER]: TCP conntrack: improve dead connection detection

Don't count window updates as retransmissions.
Signed-off-by: NGeorge Hansper <georgeh@anstat.com.au>
Signed-off-by: NPatrick McHardy <kaber@trash.net>
上级 71cd83a8
...@@ -49,6 +49,7 @@ struct ip_ct_tcp ...@@ -49,6 +49,7 @@ struct ip_ct_tcp
u_int32_t last_seq; /* Last sequence number seen in dir */ u_int32_t last_seq; /* Last sequence number seen in dir */
u_int32_t last_ack; /* Last sequence number seen in opposite dir */ u_int32_t last_ack; /* Last sequence number seen in opposite dir */
u_int32_t last_end; /* Last seq + len */ u_int32_t last_end; /* Last seq + len */
u_int16_t last_win; /* Last window advertisement seen in dir */
}; };
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
......
...@@ -731,13 +731,15 @@ static int tcp_in_window(struct ip_ct_tcp *state, ...@@ -731,13 +731,15 @@ static int tcp_in_window(struct ip_ct_tcp *state,
if (state->last_dir == dir if (state->last_dir == dir
&& state->last_seq == seq && state->last_seq == seq
&& state->last_ack == ack && state->last_ack == ack
&& state->last_end == end) && state->last_end == end
&& state->last_win == win)
state->retrans++; state->retrans++;
else { else {
state->last_dir = dir; state->last_dir = dir;
state->last_seq = seq; state->last_seq = seq;
state->last_ack = ack; state->last_ack = ack;
state->last_end = end; state->last_end = end;
state->last_win = win;
state->retrans = 0; state->retrans = 0;
} }
} }
......
...@@ -688,13 +688,15 @@ static int tcp_in_window(struct ip_ct_tcp *state, ...@@ -688,13 +688,15 @@ static int tcp_in_window(struct ip_ct_tcp *state,
if (state->last_dir == dir if (state->last_dir == dir
&& state->last_seq == seq && state->last_seq == seq
&& state->last_ack == ack && state->last_ack == ack
&& state->last_end == end) && state->last_end == end
&& state->last_win == win)
state->retrans++; state->retrans++;
else { else {
state->last_dir = dir; state->last_dir = dir;
state->last_seq = seq; state->last_seq = seq;
state->last_ack = ack; state->last_ack = ack;
state->last_end = end; state->last_end = end;
state->last_win = win;
state->retrans = 0; state->retrans = 0;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册