Date: Fri, 6 May 2011 09:09:37 -0700 From: John-Mark Gurney <jmg@funkthat.com> To: Cole <cole@opteqint.net> Cc: freebsd-net@freebsd.org Subject: Re: kernel module, TCP state, and mbuf question Message-ID: <20110506160937.GN90732@funkthat.com> In-Reply-To: <BANLkTin__GBFkT-T90rg8StKeyYEf-vuog@mail.gmail.com> References: <BANLkTin__GBFkT-T90rg8StKeyYEf-vuog@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Cole wrote this message on Fri, May 06, 2011 at 15:49 +0200:
> Im currently working on a kernel module to modify data on tcp sessions
> leaving and coming into the box. And I have this working. However I've
> run into the issue where I am now breaking the TCP state.
> When I modify the data in the tcp packets, the size of that data may
> change, meaning that I have to then update the packet size and so
> forth. Now this works for the first packet with data inside it, but
> the rest of the packets leaving on this TCP stream then have the error
> where their sequence number is now wrong. i.e. If I modify the data,
> and the new data size is then less than that of the original packet,
> that means the next sequence number of the out going packet will
> actually be higher than it should be, and the other side will think it
> has missed a packet somewhere.
Why not keep a delta sequence number and always update the sequence
number by this delta? Where the delta is the number of bytes
added/removed from the stream?
Seems easier than reaching into the TCP structure.
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110506160937.GN90732>
