The C language only allows pointer casting to another type if both sides have
compatible alignments, unaligned casts causes undefined behavior.
Since we do not have declared (and therefore not checked) mbuf alignments for
the various input functions in the IP stack, the worst case (alignment to char*)
should be expected.
A lot of work still needs to be done on IPv6, especially on the terrible accesses
to in6_addr members.
It should have no performance impact on all unaligned architectures.
MFC after: 1 month