Luigi Rizzo wrote:
On Fri, Aug 22, 2008 at 03:27:11AM +0100, Bruce M. Simpson wrote:
[EMAIL PROTECTED] wrote:
The only thing i can think of is that it's the UDP checksum,
residing beyond hlen, which is overwritten somewhere in the
call to if_simloop -- in which case perhaps a better fix is
to m_pullup() the udp header as well ?
It is the checksum that gets trashed, yes.
...
The m_*() routines actually have reasonable comments, it just seems
the wrong one was used here.
Actually, m_copy() has been legacy for some time now -- see comments.
The API is undocumented, but in this specific function the reason
for using one rather than the other is undocumented. Especially,
if you use m_dup() then the call to m_pullup should be
unnecessary.
That's why I suggested to explain clearly what is wrong in the original
code, so even if now we only apply a temporary bandaid (for lack of time,
etc.) hopefully later this can be reverted to something more efficient
such as pulling up the UDP header as well.
I agree that doing the deep copy is just papering over a bigger problem.
Sam
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"