On Fri, Nov 10, 2006 at 06:05:34PM +0000, Al Viro wrote:
> On Fri, Nov 10, 2006 at 12:51:19PM -0500, Brian Haley wrote:
> > Al Viro wrote:
> > >On Fri, Nov 10, 2006 at 11:25:53AM -0500, Brian Haley wrote:
> > >>Since the only difference between echo requests and echo replies is the
> > >>ICMPv6 type value (which is a difference of 1), just subtracting one
> > >>from the request checksum will result in the correct checksum for the
> > >>reply.
> > >
> > >Um, no. That will *not* result in correct checksum. Please, RTFRFC 1071.
> >
> > I verified this works for echo request/reply on my IA64 box,
> > double-checked with ethereal/wireshark. Is there something specific in
> > RFC 1071 that I should be looking for?
>
> Definition of checksum.
>
> See also include/net/ip.h::ip_decrease_ttl() for similar situation.
Note that even on little-endian you want
3 -> 2
2 -> 1
1 -> 0xffff
0 -> 0xfffe
On big-endian you get
0x102 -> 2
0x101 -> 1
0x100 -> 0xffff
0xff -> 0xfffe
...
0 -> 0xfeff
so -= 1 is broken even on ia64 and it's *always* broken on big-endian
boxen.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html