net: Fix vti use case with oif in dst lookups
authorDavid Ahern <dsa@cumulusnetworks.com>
Tue, 15 Sep 2015 22:10:50 +0000 (15:10 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 17 Sep 2015 23:36:34 +0000 (16:36 -0700)
commit58189ca7b27411c3dc9a5cb9eeee0906da684c59
treea193039f8278a234772c8a84fc21aaead1370457
parentd828755eae637c6ca39e30702e98abaf34cac146
net: Fix vti use case with oif in dst lookups

Steffen reported that the recent change to add oif to dst lookups breaks
the VTI use case. The problem is that with the oif set in the flow struct
the comparison to the nh_oif is triggered. Fix by splitting the
FLOWI_FLAG_VRFSRC into 2 flags -- one that triggers the vrf device cache
bypass (FLOWI_FLAG_VRFSRC) and another telling the lookup to not compare
nh oif (FLOWI_FLAG_SKIP_NH_OIF).

Fixes: 42a7b32b73d6 ("xfrm: Add oif to dst lookups")
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vrf.c
include/net/flow.h
include/net/route.h
net/ipv4/fib_trie.c
net/ipv4/udp.c
net/ipv4/xfrm4_policy.c