In the 3.2, at least, It's true, there is no dst member in struct sk_buff.
Look at the definition in ./include/linux/skbuff.h, and you can see this clearly.
There is a struct dst_entry, which has _neighbour field.
There is also a fucntion:
Code:
static inline struct dst_entry *skb_dst(const struct sk_buff *skb)
So, if you have a struct sk_buff, you can use that to get a dst_entry, and then you can access neighbor.
In other words,
Code:
skb->dst->neighbour->ha
would need to become:
Code:
skb_dst(skb)->_neighbour->ha
Or similar, for ~3.2 series kernels.