+ /* point to where the dst_entry copied from */
+ void *from;
So instead of using a real type here, your just going to cast
this thing to and from "struct dst_entry *" a thousand times?
That's terrible, there is zero value from using a void pointer
here, it just makes the code look ugly.