Index: sys/netinet/in_gif.c =================================================================== --- sys/netinet/in_gif.c +++ sys/netinet/in_gif.c @@ -294,6 +294,8 @@ ("in_gif_output: unexpected misalignment")); m->m_data += len; m->m_len -= ETHERIP_ALIGN; + if ((m->m_flags & M_PKTHDR) != 0) + m->m_pkthdr.len -= ETHERIP_ALIGN; } #endif ip = mtod(m, struct ip *); Index: sys/netinet6/in6_gif.c =================================================================== --- sys/netinet6/in6_gif.c +++ sys/netinet6/in6_gif.c @@ -309,6 +309,8 @@ ("in6_gif_output: unexpected misalignment")); m->m_data += len; m->m_len -= ETHERIP_ALIGN; + if ((m->m_flags & M_PKTHDR) != 0) + m->m_pkthdr.len -= ETHERIP_ALIGN; } #endif