On 8/31/15 1:44 PM, David Miller wrote:
From: David Ahern <d...@cumulusnetworks.com>
Date: Mon, 31 Aug 2015 09:29:40 -0700
Remove the VRF change in udp_sendmsg to set the source address. The VRF
driver already has access to the packet on the TX path via the dst. It
can be used to update the source address in the header.
Update function based on OVS.
Cc: Tom Herbert <t...@herbertland.com>
Signed-off-by: David Ahern <d...@cumulusnetworks.com>
This is worse.
You have the source address in the VRF driver's output routine in
fl4.saddr, just use it as-is.
The original saddr code in vrf_xmit was just wrong. It should not have
been there and was a leftover from early development days.
The saddr needs to be set in the dst output function (vrf_output) as I
did in this patch otherwise the packet hits the tcpdump tap with
potentially no source address.
You're adding even more route lookups, at least the existing code
just walks the device address less which is often cheaper than
a full-blown route lookup.
TCP (and connected sockets) do not hit this lookup in vrf_output.
If anything I should be going straight to fib_table_lookup in the VRF
driver for this new lookup to get the source address. It knows the exact
table that should be used and hence can avoid the rules walk + local
table miss which happens using the ip_route_xxxxx functions as well as
the rth lookup/create which is not needed here.
Opinions before I work on another version?
David
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html