Date: Wed, 5 Feb 1997 11:00:53 -0800 (PST) From: Archie Cobbs <archie@whistle.com> To: cmott@srv.net (Charles Mott) Cc: brian@utell.co.uk, julian@whistle.com, eivind@dimaga.com, brian@awfulhak.demon.co.uk, ari.suutari@ps.carel.fi, hackers@freebsd.org Subject: Re: Single socket version of natd Message-ID: <199702051900.LAA23732@bubba.whistle.com> In-Reply-To: <Pine.BSF.3.91.970204100202.8654C-100000@darkstar> from Charles Mott at "Feb 4, 97 10:17:41 am"
next in thread | previous in thread | raw e-mail | index | archive | help
> > With a "leave the sum alone option", natd could pass the packet > > with the zero'd ip_sum to PacketAliasIn() and know that it has > > to calculate it itself afterwards.... > > Why does the kernel zero the checksum? The kernel leaves the checksum zero because: (a) When a packet comes in, the way the checksum is verified is to checksum the packet as is and replace the checksum. If the original checksum was valid, then the new checksum will be zero. So the checksum field is already zero before the divert code even gets the packet. (b) Packets being diverted are often mangled, so the checksum has to be recomputed anyway. So having the divert code recompute the checksum before sending it up would just be useless extra work. The "right" thing to do would be to modify the kernel so that checking checksums does not replace the original packet checksum. This should be easy enough. -Archie ___________________________________________________________________________ Archie Cobbs * Whistle Communications, Inc. * http://www.whistle.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702051900.LAA23732>