Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Aug 2008 18:28:53 +0200
From:      Luigi Rizzo <rizzo@iet.unipi.it>
To:        Sam Leffler <sam@freebsd.org>
Cc:        gnn@freebsd.org, net@freebsd.org, "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
Subject:   Re: Small patch to multicast code...
Message-ID:  <20080829162853.GB46693@onelab2.iet.unipi.it>
In-Reply-To: <48B4A62D.3080300@freebsd.org>
References:  <48AF08B7.4090804@FreeBSD.org> <m2fxowhgq8.wl%gnn@neville-neil.com> <48AF330B.4010802@FreeBSD.org> <m28wuohfm5.wl%gnn@neville-neil.com> <20080825190207.GA73478@zibbi.meraka.csir.co.za> <20080825194038.GA75840@zibbi.meraka.csir.co.za> <m2y72jx33z.wl%gnn@neville-neil.com> <20080826144130.S66593@maildrop.int.zabbadoz.net> <m2abezwojl.wl%gnn@neville-neil.com> <48B4A62D.3080300@freebsd.org>

index | next in thread | previous in thread | raw e-mail

On Tue, Aug 26, 2008 at 05:56:13PM -0700, Sam Leffler wrote:
> gnn@freebsd.org wrote:
> >At Tue, 26 Aug 2008 14:50:33 +0000 (UTC),
> >Bjoern A. Zeeb wrote:
> >  
> >>On Tue, 26 Aug 2008, George V. Neville-Neil wrote:
> >>
> >>Hi,
> >>
> >>    
> >>>At Mon, 25 Aug 2008 21:40:38 +0200,
> >>>John Hay wrote:
> >>>      
> >>>>I have tried it and it does fix my problem. RIP2 over multicast works
> >>>>again. :-)
> >>>>        
> >>>Good to hear.  I'm waiting on a bit more feedback but I think I'll be
> >>>checking this in soon, with a big comment talking about the
> >>>performance implications etc.
> >>>      
> >>So wait a second; what was the m_pullup vs. m_dup thing? Has anyone
> >>actually tried that? I mean using a sledgehammer if a mitten would be
> >>enough is kind of .. uhm. You get it.
> >>    
> >
> >Perhaps I'm confused, I've been off dealing with other issues for a
> >few days, but m_pullup doesn't make a copy of the packet or its
> >fields, only makes sure that it's contiguous in memory.  Am I wrong in 
> >that?
> >
> >Since the bug is that two pieces of code modify the same data, in ways
> >that interfere, I'm not sure how we can avoid making a copy.  It might
> >be nice to limit the copy, but we'd still need two copies, one for the
> >loopback device and one for the real device.
> >
> >  
> pull the headers up.  copy just the headers.  no deep copy.

and to be more explicit - the result of m_pullup is that
the number of bytes specified as m_pullup argument are in
a private piece of memory -- the 'data' region within the mbuf -- so
you can freely play with them without trouble.

That is why i suggested to just increase the argument to m_pullup
by the size of the udp header so one can overwrite the checksum
within the mbuf without touching the shared part in the cluster
(if any).

	cheers
	luigi



home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080829162853.GB46693>