[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20150829.164030.1189207364184023707.davem@davemloft.net>
Date:	Sat, 29 Aug 2015 16:40:30 -0700 (PDT)
From:	David Miller <davem@...emloft.net>
To:	dsa@...ulusnetworks.com
CC:	netdev@...r.kernel.org
Subject: vrf saddr selection
In the output path we go:
	struct flowi4 fl4 = {
		/* needed to match OIF rule */
		.flowi4_oif = vrf_dev->ifindex,
		.flowi4_iif = LOOPBACK_IFINDEX,
		.flowi4_tos = RT_TOS(ip4h->tos),
		.flowi4_flags = FLOWI_FLAG_ANYSRC | FLOWI_FLAG_VRFSRC,
		.daddr = ip4h->daddr,
	};
	if (vrf_send_v4_prep(skb, &fl4, vrf_dev))
		goto err;
	if (!ip4h->saddr) {
		ip4h->saddr = inet_select_addr(skb_dst(skb)->dev, 0,
					       RT_SCOPE_LINK);
	}
So in the case where the source address is needed, this
inet_select_addr() call looks like useless work.
The route lookup already filled in fl4.saddr for you, why don't we
just use that?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists
 
