aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-07-03 00:52:24 -0400
committerDavid S. Miller <davem@davemloft.net>2012-07-05 04:04:01 -0400
commitf894cbf847c9bea1955095bf37aca6c050553167 (patch)
tree9cc63b36c2d299bba95ea90213f4a9ef0ae433d6 /include
parent5110effee8fde2edfacac9cd12a9960ab2dc39ea (diff)
net: Add optional SKB arg to dst_ops->neigh_lookup().
Causes the handler to use the daddr in the ipv4/ipv6 header when the route gateway is unspecified (local subnet). Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/net/dst.h8
-rw-r--r--include/net/dst_ops.h4
2 files changed, 10 insertions, 2 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index 84e7a3ff968d..295a70547e7d 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -420,7 +420,13 @@ static inline int dst_neigh_output(struct dst_entry *dst, struct neighbour *n,
420 420
421static inline struct neighbour *dst_neigh_lookup(const struct dst_entry *dst, const void *daddr) 421static inline struct neighbour *dst_neigh_lookup(const struct dst_entry *dst, const void *daddr)
422{ 422{
423 return dst->ops->neigh_lookup(dst, daddr); 423 return dst->ops->neigh_lookup(dst, NULL, daddr);
424}
425
426static inline struct neighbour *dst_neigh_lookup_skb(const struct dst_entry *dst,
427 struct sk_buff *skb)
428{
429 return dst->ops->neigh_lookup(dst, skb, NULL);
424} 430}
425 431
426static inline void dst_link_failure(struct sk_buff *skb) 432static inline void dst_link_failure(struct sk_buff *skb)
diff --git a/include/net/dst_ops.h b/include/net/dst_ops.h
index 3682a0a076c1..4badc86e45d1 100644
--- a/include/net/dst_ops.h
+++ b/include/net/dst_ops.h
@@ -26,7 +26,9 @@ struct dst_ops {
26 void (*link_failure)(struct sk_buff *); 26 void (*link_failure)(struct sk_buff *);
27 void (*update_pmtu)(struct dst_entry *dst, u32 mtu); 27 void (*update_pmtu)(struct dst_entry *dst, u32 mtu);
28 int (*local_out)(struct sk_buff *skb); 28 int (*local_out)(struct sk_buff *skb);
29 struct neighbour * (*neigh_lookup)(const struct dst_entry *dst, const void *daddr); 29 struct neighbour * (*neigh_lookup)(const struct dst_entry *dst,
30 struct sk_buff *skb,
31 const void *daddr);
30 32
31 struct kmem_cache *kmem_cachep; 33 struct kmem_cache *kmem_cachep;
32 34