]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: Fix vti use case with oif in dst lookups for IPv6
authorDavid Ahern <dsa@cumulusnetworks.com>
Mon, 5 Oct 2015 14:32:51 +0000 (08:32 -0600)
committerDavid S. Miller <davem@davemloft.net>
Wed, 7 Oct 2015 11:25:03 +0000 (04:25 -0700)
It occurred to me yesterday that c6b9b8dbeec12 ("net: ipv6: Add
RT6_LOOKUP_F_IFACE flag if oif is set") means that xfrm6_dst_lookup
needs the FLOWI_FLAG_SKIP_NH_OIF flag set. This latest commit causes
the oif to be considered in lookups which is known to break vti. This
explains why c8e929e63932 did not the IPv6 change at the time it was
submitted.

Fixes: 4fb8ab9aa1a2 ("xfrm: Add oif to dst lookups")
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/xfrm6_policy.c

index 30caa289c5dbf589270768ce90d15f2990341231..5cedfda4b241045e92fe89971836e549b88f5074 100644 (file)
@@ -37,6 +37,7 @@ static struct dst_entry *xfrm6_dst_lookup(struct net *net, int tos, int oif,
 
        memset(&fl6, 0, sizeof(fl6));
        fl6.flowi6_oif = oif;
+       fl6.flowi6_flags = FLOWI_FLAG_SKIP_NH_OIF;
        memcpy(&fl6.daddr, daddr, sizeof(fl6.daddr));
        if (saddr)
                memcpy(&fl6.saddr, saddr, sizeof(fl6.saddr));