Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 08 Jan 2007 14:00:14 -0800
From:      Julian Elischer <julian@elischer.org>
To:        Lee Brotherston <lee@nerds.org.uk>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: TCP Checksums in mbufs
Message-ID:  <45A2BEEE.5010202@elischer.org>
In-Reply-To: <20070108203211.GF41066@nerds.org.uk>
References:  <20070108203211.GF41066@nerds.org.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
Lee Brotherston wrote:
> Hi,
> 
> I have a bit of code I have written that uses pfil to access network
> traffic as it passes between interfaces on a FreeBSD router.  One of
> the functions it performs is some incredibly basic rewrites of certain
> packets (keeping the same length, so no issues about sequence
> numbers), but it does alter the payload.
> 
> I just wanted to check what is the "proper" way to be going about
> recalculating the checksums on the packet?  I can write a function to
> do this and write this into the packet stored in the mbuf directly,
> however I wasn't sure if there was a more acceptable method such as
> flagging it to be re-checksum'd as it's routed, or to offload the
> computation to the NIC or something?
> 
> Any thoughts, suggestions, etc very welcome!
> 
> By the way, I'm not subscribed to the list right now, so I'd
> appreciate it if people could CC me on replies.
> 
> Many thanks
> 
>   Lee

there is an algorythm to recalculate the tcp/ip
checksum when you replace a byte. you subtract the old value from the 
csum and add the new one, but not quite a as easy as that.

I think it's given in one of the RFCs but  I think it may also
be used in the tcpmss port, or possibly the mss fixup code in ppp.
I know I've used it somewhere but forget where :-)





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