net: Abstract dst->neighbour accesses behind helpers.
[cascardo/linux.git] / include / net / dst.h
index 0dd7ccb..8147206 100644 (file)
@@ -37,7 +37,7 @@ struct dst_entry {
        unsigned long           _metrics;
        unsigned long           expires;
        struct dst_entry        *path;
-       struct neighbour        *neighbour;
+       struct neighbour        *_neighbour;
 #ifdef CONFIG_XFRM
        struct xfrm_state       *xfrm;
 #else
@@ -86,6 +86,16 @@ struct dst_entry {
        };
 };
 
+static inline struct neighbour *dst_get_neighbour(struct dst_entry *dst)
+{
+       return dst->_neighbour;
+}
+
+static inline void dst_set_neighbour(struct dst_entry *dst, struct neighbour *neigh)
+{
+       dst->_neighbour = neigh;
+}
+
 extern u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old);
 extern const u32 dst_default_metrics[RTAX_MAX];
 
@@ -371,8 +381,10 @@ static inline void dst_rcu_free(struct rcu_head *head)
 
 static inline void dst_confirm(struct dst_entry *dst)
 {
-       if (dst)
-               neigh_confirm(dst->neighbour);
+       if (dst) {
+               struct neighbour *n = dst_get_neighbour(dst);
+               neigh_confirm(n);
+       }
 }
 
 static inline void dst_link_failure(struct sk_buff *skb)