|
@@ -651,6 +651,11 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
|
|
|
arg.iov[0].iov_len, IPPROTO_TCP, 0);
|
|
|
arg.csumoffset = offsetof(struct tcphdr, check) / 2;
|
|
|
arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0;
|
|
|
+ /* When socket is gone, all binding information is lost.
|
|
|
+ * routing might fail in this case. using iif for oif to
|
|
|
+ * make sure we can deliver it
|
|
|
+ */
|
|
|
+ arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb);
|
|
|
|
|
|
net = dev_net(skb_dst(skb)->dev);
|
|
|
arg.tos = ip_hdr(skb)->tos;
|