|
@@ -63,6 +63,7 @@
|
|
|
#include <net/ip_vs.h>
|
|
|
#include <net/netfilter/nf_conntrack_core.h>
|
|
|
#include <net/netfilter/nf_conntrack_expect.h>
|
|
|
+#include <net/netfilter/nf_conntrack_seqadj.h>
|
|
|
#include <net/netfilter/nf_conntrack_helper.h>
|
|
|
#include <net/netfilter/nf_conntrack_zones.h>
|
|
|
|
|
@@ -97,6 +98,11 @@ ip_vs_update_conntrack(struct sk_buff *skb, struct ip_vs_conn *cp, int outin)
|
|
|
if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
|
|
|
return;
|
|
|
|
|
|
+ /* Applications may adjust TCP seqs */
|
|
|
+ if (cp->app && nf_ct_protonum(ct) == IPPROTO_TCP &&
|
|
|
+ !nfct_seqadj(ct) && !nfct_seqadj_ext_add(ct))
|
|
|
+ return;
|
|
|
+
|
|
|
/*
|
|
|
* The connection is not yet in the hashtable, so we update it.
|
|
|
* CIP->VIP will remain the same, so leave the tuple in
|