Binding RST packet outgoing interface to incoming interface
for tcp v4 when there is no socket associate with it.
This has few benefits:
1. tcp_v6_send_reset already did that.
2. This helps tcp connect with SO_BINDTODEVICE set. When
connection is lost, we still able to sending out RST using
same interface.
3. we are sending reply, it is most likely to be succeed
if iif is used
Signed-off-by: Shawn Lu <redacted>
---
V3: reformat comments as suggested
net/ipv4/tcp_ipv4.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
@@ -676,6 +676,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(structtcphdr,check)/2;arg.flags=(sk&&inet_sk(sk)->transparent)?IP_REPLY_ARG_NOSRCCHECK:0;+/* When socket is gone, all binding information is lost.+*routingmightfailinthiscase.usingiifforoifto+*makesurewecandeliverit+*/+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;
From: David Miller <davem@davemloft.net> Date: 2012-02-04 21:47:12
From: Shawn Lu <redacted>
Date: Sat, 4 Feb 2012 13:44:57 -0800
Binding RST packet outgoing interface to incoming interface
for tcp v4 when there is no socket associate with it.
This has few benefits:
1. tcp_v6_send_reset already did that.
2. This helps tcp connect with SO_BINDTODEVICE set. When
connection is lost, we still able to sending out RST using
same interface.
3. we are sending reply, it is most likely to be succeed
if iif is used
Signed-off-by: Shawn Lu <redacted>
Sigh...
Thanks for giving Eric not credit whatsoever for his contributions
and feedback for this fix. :-/
From: Eric Dumazet <hidden> Date: 2012-02-04 21:49:23
Le samedi 04 février 2012 à 13:44 -0800, Shawn Lu a écrit :
quoted hunk
Binding RST packet outgoing interface to incoming interface
for tcp v4 when there is no socket associate with it.
This has few benefits:
1. tcp_v6_send_reset already did that.
2. This helps tcp connect with SO_BINDTODEVICE set. When
connection is lost, we still able to sending out RST using
same interface.
3. we are sending reply, it is most likely to be succeed
if iif is used
Signed-off-by: Shawn Lu <redacted>
---
V3: reformat comments as suggested
net/ipv4/tcp_ipv4.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
@@ -676,6 +676,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(structtcphdr,check)/2;arg.flags=(sk&&inet_sk(sk)->transparent)?IP_REPLY_ARG_NOSRCCHECK:0;+/* When socket is gone, all binding information is lost.+*routingmightfailinthiscase.usingiifforoifto+*makesurewecandeliverit+*/+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;
Hi,David:
I do appreciate Eric's helpand contribution in this fix.
I am a newer here. I just don't know how I can give credit to him. I thought
That you will put "Acked-by: Eric Dumazet [off-list ref]" to
Credit his contribution.
Thanks!
Shawn Lu
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
Sent: Saturday, February 04, 2012 1:47 PM
To: Shawn Lu
Cc: eric.dumazet@gmail.com; netdev@vger.kernel.org; xiaoclu@gmail.com
Subject: Re: [PATCH] tcp_v4_send_reset: binding oif to iif in
no sock case
From: Shawn Lu <redacted>
Date: Sat, 4 Feb 2012 13:44:57 -0800
quoted
Binding RST packet outgoing interface to incoming interface
for tcp v4
quoted
when there is no socket associate with it.
This has few benefits:
1. tcp_v6_send_reset already did that.
2. This helps tcp connect with SO_BINDTODEVICE set. When
connection is
quoted
lost, we still able to sending out RST using same interface.
3. we are sending reply, it is most likely to be succeed if iif is
used
Signed-off-by: Shawn Lu <redacted>
Sigh...
Thanks for giving Eric not credit whatsoever for his
contributions and feedback for this fix. :-/