forked from luck/tmp_suning_uos_patched
vrf: check the original netdevice for generating redirect
Use the right device to determine if redirect should be sent especially when using vrf. Same as well as when sending the redirect. Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com> Acked-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cfed0a2c98
commit
2f17becfbe
|
@ -482,7 +482,8 @@ int ip6_forward(struct sk_buff *skb)
|
|||
send redirects to source routed frames.
|
||||
We don't send redirects to frames decapsulated from IPsec.
|
||||
*/
|
||||
if (skb->dev == dst->dev && opt->srcrt == 0 && !skb_sec_path(skb)) {
|
||||
if (IP6CB(skb)->iif == dst->dev->ifindex &&
|
||||
opt->srcrt == 0 && !skb_sec_path(skb)) {
|
||||
struct in6_addr *target = NULL;
|
||||
struct inet_peer *peer;
|
||||
struct rt6_info *rt;
|
||||
|
|
|
@ -1578,6 +1578,12 @@ void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target)
|
|||
ops_data_buf[NDISC_OPS_REDIRECT_DATA_SPACE], *ops_data = NULL;
|
||||
bool ret;
|
||||
|
||||
if (netif_is_l3_master(skb->dev)) {
|
||||
dev = __dev_get_by_index(dev_net(skb->dev), IPCB(skb)->iif);
|
||||
if (!dev)
|
||||
return;
|
||||
}
|
||||
|
||||
if (ipv6_get_lladdr(dev, &saddr_buf, IFA_F_TENTATIVE)) {
|
||||
ND_PRINTK(2, warn, "Redirect: no link-local address on %s\n",
|
||||
dev->name);
|
||||
|
|
Loading…
Reference in New Issue
Block a user