Date: Thu, 21 Aug 2008 15:11:56 -0400 From: gnn@freebsd.org To: net@freebsd.org Subject: Small patch to multicast code... Message-ID: <m27iaa6v43.wl%gnn@neville-neil.com>
next in thread | raw e-mail | index | archive | help
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) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m27iaa6v43.wl%gnn>
