Hello, Thomas Huth, on lun. 24 avril 2017 11:15:56 +0200, wrote: > On 20.04.2017 22:43, Tao Wu wrote: > > The current code looks buggy, we zero ti_i while we access > > ti_dst/ti_src later.
Indeed. > > Signed-off-by: Tao Wu <lep...@google.com> > > *mtod(m, struct tcpiphdr *) = *ti; > > ti = mtod(m, struct tcpiphdr *); > > - memset(&ti->ti, 0, sizeof(ti->ti)); But then we don't make sure that ih_x1 is 0, which is needed for the checksum to be correct, but possibly not set by the caller. So please replace the memset call with setting the proper ih_x1 field to 0 (which thus needs the introductino of a switch over af like below in the code). Samuel