]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/ipv4/route.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / net / ipv4 / route.c
index 0197747961748aff73465a90bd689d70b3113880..815989b90dea2df70d865ce0958442d4bd5bb8f9 100644 (file)
@@ -1116,12 +1116,17 @@ static struct neighbour *ipv4_neigh_lookup(const struct dst_entry *dst, const vo
        static const __be32 inaddr_any = 0;
        struct net_device *dev = dst->dev;
        const __be32 *pkey = daddr;
+       const struct rtable *rt;
        struct neighbour *n;
 
+       rt = (const struct rtable *) dst;
+
        if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))
                pkey = &inaddr_any;
+       else if (rt->rt_gateway)
+               pkey = (const __be32 *) &rt->rt_gateway;
 
-       n = __ipv4_neigh_lookup(&arp_tbl, dev, *(__force u32 *)pkey);
+       n = __ipv4_neigh_lookup(dev, *(__force u32 *)pkey);
        if (n)
                return n;
        return neigh_create(&arp_tbl, pkey, dev);