Ali Abdallah <ali.abdallah@xxxxxxxx> wrote: > In ignore state, we let SYN goes in original, the server might respond > with RST/ACK, and that RST packet is erroneously dropped because of the > flag IP_CT_TCP_FLAG_MAXACK_SET being already set. > --- > net/netfilter/nf_conntrack_proto_tcp.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c > index ec23330687a5..891a66e35afd 100644 > --- a/net/netfilter/nf_conntrack_proto_tcp.c > +++ b/net/netfilter/nf_conntrack_proto_tcp.c > @@ -963,6 +963,9 @@ int nf_conntrack_tcp_packet(struct nf_conn *ct, > > ct->proto.tcp.last_flags = > ct->proto.tcp.last_wscale = 0; > + /* Reset the max ack flag so in case the server replies > + * with RST/ACK it will be marked as an invalid rst */ "not be marked"? > + ct->proto.tcp.seen[dir].flags &= ~IP_CT_TCP_FLAG_MAXACK_SET; > tcp_options(skb, dataoff, th, &seen); > if (seen.flags & IP_CT_TCP_FLAG_WINDOW_SCALE) {