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:
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,
would need to become:
Or similar, for ~3.2 series kernels.