Hi, Turns out there is a bug in the code that loops back multicast packets. If the underlying device driver supports checksum offloading then the packet that is looped back, when it is transmitted on the wire, is incorrect, due to the fact that the packet is not fully copied.
Here is a patch. Comments welcome. Best, George Index: ip_output.c =================================================================== --- ip_output.c (revision 181731) +++ ip_output.c (working copy) @@ -1135,7 +1135,7 @@ register struct ip *ip; struct mbuf *copym; - copym = m_copy(m, 0, M_COPYALL); + copym = m_dup(m, M_DONTWAIT); if (copym != NULL && (copym->m_flags & M_EXT || copym->m_len < hlen)) copym = m_pullup(copym, hlen); if (copym != NULL) { _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"