projects
/
GitHub
/
moto-9609
/
android_kernel_motorola_exynos9610.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
3bfd847
)
net: Use VRF index for oif in ip_send_unicast_reply
author
David Ahern
<dsa@cumulusnetworks.com>
Thu, 13 Aug 2015 20:59:08 +0000
(14:59 -0600)
committer
David S. Miller
<davem@davemloft.net>
Fri, 14 Aug 2015 05:43:21 +0000
(22:43 -0700)
If output device is not specified use VRF device if input device is
enslaved. This is needed to ensure tcp acks and resets go out VRF device.
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_output.c
patch
|
blob
|
blame
|
history
diff --git
a/net/ipv4/ip_output.c
b/net/ipv4/ip_output.c
index 6bf89a6312bc1c71da41ad0a1ebdbf819504367d..0138fada0951b17b175be0b215c248fc7224dc5a 100644
(file)
--- a/
net/ipv4/ip_output.c
+++ b/
net/ipv4/ip_output.c
@@
-1542,6
+1542,7
@@
void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb,
struct net *net = sock_net(sk);
struct sk_buff *nskb;
int err;
+ int oif;
if (__ip_options_echo(&replyopts.opt.opt, skb, sopt))
return;
@@
-1559,7
+1560,11
@@
void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb,
daddr = replyopts.opt.opt.faddr;
}
- flowi4_init_output(&fl4, arg->bound_dev_if,
+ oif = arg->bound_dev_if;
+ if (!oif && netif_index_is_vrf(net, skb->skb_iif))
+ oif = skb->skb_iif;
+
+ flowi4_init_output(&fl4, oif,
IP4_REPLY_MARK(net, skb->mark),
RT_TOS(arg->tos),
RT_SCOPE_UNIVERSE, ip_hdr(skb)->protocol,