Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!beta!hc!ames!ucbcad!ucbvax!bostic From: bostic@ucbvax.BERKELEY.EDU (Keith Bostic) Newsgroups: comp.bugs.4bsd Subject: Re: 4.[23]BSD TCP checksum problem Message-ID: <21219@ucbvax.BERKELEY.EDU> Date: Fri, 9-Oct-87 15:11:33 EDT Article-I.D.: ucbvax.21219 Posted: Fri Oct 9 15:11:33 1987 Date-Received: Sun, 11-Oct-87 15:59:43 EDT References: <1985@encore.UUCP> Organization: University of California at Berkeley Lines: 20 Keywords: don't turn it off Summary: checksum of zero is meaningless In article <1985@encore.UUCP>, loverso@encore.UUCP (John LoVerso) writes: > Index: netinet/tcp_input.c 4.[23]BSD +FIX > > Description: > If you turn off checking of TCP checksums (via the tcpcksum > variable in tcp_input.c), then checksums on outgoing datagrams > are computed incorrectly. When checking is off, the checksum > on an incoming frame isn't recalculated, and thus doesn't get > set to zero. When tcp_respond() (of tcp_subr.c) is called, it > reuses the tcpiphdr of the received frame and a garbage TCP > checksum gets calculated. A checksum value of zero has no special meaning to tcp, i.e. if you choose not to compute a checksum there is no way to indicate this. The only reasonable alternative here to to change the meaning of tcp_cksum to be that checksums are generated on outgoing packets but not validated on incoming packets, otherwise running with tcp_cksum disabled is non-standard. --keith