|
@@ -529,6 +529,8 @@ static inline int ip_vs_tunnel_xmit_prepare(struct sk_buff *skb,
|
|
if (ret == NF_ACCEPT) {
|
|
if (ret == NF_ACCEPT) {
|
|
nf_reset(skb);
|
|
nf_reset(skb);
|
|
skb_forward_csum(skb);
|
|
skb_forward_csum(skb);
|
|
|
|
+ if (!skb->sk)
|
|
|
|
+ skb_sender_cpu_clear(skb);
|
|
}
|
|
}
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -569,6 +571,8 @@ static inline int ip_vs_nat_send_or_cont(int pf, struct sk_buff *skb,
|
|
|
|
|
|
if (!local) {
|
|
if (!local) {
|
|
skb_forward_csum(skb);
|
|
skb_forward_csum(skb);
|
|
|
|
+ if (!skb->sk)
|
|
|
|
+ skb_sender_cpu_clear(skb);
|
|
NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
|
|
NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
|
|
NULL, skb_dst(skb)->dev, dst_output_sk);
|
|
NULL, skb_dst(skb)->dev, dst_output_sk);
|
|
} else
|
|
} else
|
|
@@ -589,6 +593,8 @@ static inline int ip_vs_send_or_cont(int pf, struct sk_buff *skb,
|
|
if (!local) {
|
|
if (!local) {
|
|
ip_vs_drop_early_demux_sk(skb);
|
|
ip_vs_drop_early_demux_sk(skb);
|
|
skb_forward_csum(skb);
|
|
skb_forward_csum(skb);
|
|
|
|
+ if (!skb->sk)
|
|
|
|
+ skb_sender_cpu_clear(skb);
|
|
NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
|
|
NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
|
|
NULL, skb_dst(skb)->dev, dst_output_sk);
|
|
NULL, skb_dst(skb)->dev, dst_output_sk);
|
|
} else
|
|
} else
|