Date: Fri, 27 Oct 2006 15:14:52 +0200 From: Olivier MATZ <olivier.matz@6wind.com> Subject: [users:00251] Computed checksum is wrong To: users@tahi.org Message-Id: <4542064C.6000302@6wind.com> X-Mail-Count: 00251Hi all, I have a FAIL in ready logo phase2 host tests : Here is a part of the log, as you can see checksum is not the one expected : | | ICMPv6_ParameterProblem (length:64) | | | Type = 4 | | | Code = 1 | | | Checksum = 65535 calc(0) [...] ng compare _ICMPV6_icmperr.Checksum received:65535 = 0 This fail occurs in : Section 1: RFC 2460 - IPv6 Specification TEST 13, Part A: Unrecognized Next Header in Extension Header (Multiple Values) In this test, multiple values of Next Header are tested, so the nut generates each time a different packet with a different checksum... on my nut I have no luck, the processed checksum is 0. But as you know (from RFC): o Unlike IPv4, when UDP packets are originated by an IPv6 node, the UDP checksum is not optional. That is, whenever originating a UDP packet, an IPv6 node must compute a UDP checksum over the packet and the pseudo-header, and, if that computation yields a result of zero, it must be changed to hex FFFF for placement in the UDP header. IPv6 receivers must discard UDP packets containing a zero checksum, and should log the error. I made a patch that fixes the problem, but I'm not really sure of it, since I'm not very familiar with TAHI development. Can someone have a look at it ? There are 2 fixes in it : - first I replaced '~checksum' by 0xFFFF, because ~checksum is 0xFFFFFFFF as it is an uint32_t. - I also invert the optionable test, because I think we should replace the value only if the checksum field is not an option. Olivier251_2.txt (attatchment)(tag is disabled)