ipv6: tcp: send consistent autoflowlabel in RST packets
Blamed commit added a txhash parameter to tcp_v6_send_response()
but forgot to update tcp_v6_send_reset() accordingly.
Fixes: aa51b80e1a
("ipv6: tcp: send consistent autoflowlabel in SYN_RECV state")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20220922165036.1795862-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
99d01d7481
Коммит
9258b8b1be
|
@ -1001,6 +1001,7 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
|
||||||
__be32 label = 0;
|
__be32 label = 0;
|
||||||
u32 priority = 0;
|
u32 priority = 0;
|
||||||
struct net *net;
|
struct net *net;
|
||||||
|
u32 txhash = 0;
|
||||||
int oif = 0;
|
int oif = 0;
|
||||||
|
|
||||||
if (th->rst)
|
if (th->rst)
|
||||||
|
@ -1073,10 +1074,12 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
|
||||||
if (np->repflow)
|
if (np->repflow)
|
||||||
label = ip6_flowlabel(ipv6h);
|
label = ip6_flowlabel(ipv6h);
|
||||||
priority = sk->sk_priority;
|
priority = sk->sk_priority;
|
||||||
|
txhash = sk->sk_hash;
|
||||||
}
|
}
|
||||||
if (sk->sk_state == TCP_TIME_WAIT) {
|
if (sk->sk_state == TCP_TIME_WAIT) {
|
||||||
label = cpu_to_be32(inet_twsk(sk)->tw_flowlabel);
|
label = cpu_to_be32(inet_twsk(sk)->tw_flowlabel);
|
||||||
priority = inet_twsk(sk)->tw_priority;
|
priority = inet_twsk(sk)->tw_priority;
|
||||||
|
txhash = inet_twsk(sk)->tw_txhash;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (net->ipv6.sysctl.flowlabel_reflect & FLOWLABEL_REFLECT_TCP_RESET)
|
if (net->ipv6.sysctl.flowlabel_reflect & FLOWLABEL_REFLECT_TCP_RESET)
|
||||||
|
@ -1084,7 +1087,7 @@ static void tcp_v6_send_reset(const struct sock *sk, struct sk_buff *skb)
|
||||||
}
|
}
|
||||||
|
|
||||||
tcp_v6_send_response(sk, skb, seq, ack_seq, 0, 0, 0, oif, key, 1,
|
tcp_v6_send_response(sk, skb, seq, ack_seq, 0, 0, 0, oif, key, 1,
|
||||||
ipv6_get_dsfield(ipv6h), label, priority, 0);
|
ipv6_get_dsfield(ipv6h), label, priority, txhash);
|
||||||
|
|
||||||
#ifdef CONFIG_TCP_MD5SIG
|
#ifdef CONFIG_TCP_MD5SIG
|
||||||
out:
|
out:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче