netfilter: nf_flow_table: clear skb tstamp before xmit
If 'fq' qdisc is used and a program has requested timestamps, skb->tstamp needs to be cleared, else fq will treat these as 'transmit time'. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
Родитель
478553fd1b
Коммит
de20900fbe
|
@ -228,7 +228,6 @@ static unsigned int nf_flow_xmit_xfrm(struct sk_buff *skb,
|
|||
{
|
||||
skb_orphan(skb);
|
||||
skb_dst_set_noref(skb, dst);
|
||||
skb->tstamp = 0;
|
||||
dst_output(state->net, state->sk, skb);
|
||||
return NF_STOLEN;
|
||||
}
|
||||
|
@ -284,6 +283,7 @@ nf_flow_offload_ip_hook(void *priv, struct sk_buff *skb,
|
|||
flow->timeout = (u32)jiffies + NF_FLOW_TIMEOUT;
|
||||
iph = ip_hdr(skb);
|
||||
ip_decrease_ttl(iph);
|
||||
skb->tstamp = 0;
|
||||
|
||||
if (unlikely(dst_xfrm(&rt->dst))) {
|
||||
memset(skb->cb, 0, sizeof(struct inet_skb_parm));
|
||||
|
@ -512,6 +512,7 @@ nf_flow_offload_ipv6_hook(void *priv, struct sk_buff *skb,
|
|||
flow->timeout = (u32)jiffies + NF_FLOW_TIMEOUT;
|
||||
ip6h = ipv6_hdr(skb);
|
||||
ip6h->hop_limit--;
|
||||
skb->tstamp = 0;
|
||||
|
||||
if (unlikely(dst_xfrm(&rt->dst))) {
|
||||
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
||||
|
|
Загрузка…
Ссылка в новой задаче