net: ipmr: Fix some mroute forwarding issues in vrf's
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 10 Jun 2017 20:30:17 +0000 (16:30 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 11 Jun 2017 22:15:06 +0000 (18:15 -0400)
commit4b1f0d33db7d5bf92b5623e3ea2066e2de3999e3
tree0ea1ed7aca978f9575d56ca2ad8f8f046069e642
parent062bb997d290879ea711d149189daf485bd777b3
net: ipmr: Fix some mroute forwarding issues in vrf's

This patch fixes two issues:

1) When forwarding on *,G mroutes that are in a vrf, the
kernel was dropping information about the actual incoming
interface when calling ip_mr_forward from ip_mr_input.
This caused ip_mr_forward to send the multicast packet
back out the incoming interface.  Fix this by
modifying ip_mr_forward to be handed the correctly
resolved dev.

2) When a unresolved cache entry is created we store
the incoming skb on the unresolved cache entry and
upon mroute resolution from the user space daemon,
we attempt to forward the packet.  Again we were
not resolving to the correct incoming device for
a vrf scenario, before calling ip_mr_forward.
Fix this by resolving to the correct interface
and calling ip_mr_forward with the result.

Fixes: e58e41596811 ("net: Enable support for VRF with ipv4 multicast")
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Acked-by: David Ahern <dsahern@gmail.com>
Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Reviewed-by: Yotam Gigi <yotamg@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ipmr.c