net: vrf: Flip IPv6 output path from FIB lookup hook to out hook
authorDavid Ahern <dsa@cumulusnetworks.com>
Sat, 10 Sep 2016 19:09:56 +0000 (12:09 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 11 Sep 2016 06:12:52 +0000 (23:12 -0700)
commit4c1feac58e06270321cc500b85c2d94a11495775
treea4886fb789f2f611424d56ceab8dba670528c17d
parentebfc102c566d0d9c174ff9b721fd35ebda01f7eb
net: vrf: Flip IPv6 output path from FIB lookup hook to out hook

Flip the IPv6 output path to use the l3mdev tx out hook. The VRF dst
is not returned on the first FIB lookup. Instead, the dst on the
skb is switched at the beginning of the IPv6 output processing to
send the packet to the VRF driver on xmit.

Link scope addresses (linklocal and multicast) need special handling:
specifically the oif the flow struct can not be changed because we
want the lookup tied to the enslaved interface. ie., the source address
and the returned route MUST point to the interface scope passed in.
Convert the existing vrf_get_rt6_dst to handle only link scope addresses.

Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vrf.c
include/net/l3mdev.h
net/ipv6/route.c
net/l3mdev/l3mdev.c