David Miller <[EMAIL PROTECTED]> wrote on 11/13/2006 04:50:58 PM:
 
> Puzzling :-)  Then why is the transformation only performed for
> UDP in the ipv4 stack?  It seems by your logic TCP would need
> to either do the "if (sum==0) sum=~0;"  thing or it would need
> to accept both "0" and "~0" in the checksum checking path.

        That's actually what I was suggesting. In 1's-complement,
~0 == -0 which is still 0, so barring any special case (like UDP's
"0 means no checksum" rule), it should be equally valid for a
packet to have 0 or ~0 as the checksum (with otherwise identical
data)-- they are both correct, and equal to each other. That
extra 1's-complement 0 is, of course, why UDP can have the
special case of remapping 0->~0.
        Since the patch was for output-side, it doesn't matter
whether you remap 0 to ~0 or not (except for the special case),
but a receiver technically should allow either.
        In practice, it won't matter if the machines you're talking
to are remapping (or not) in the same way. But 0 and -0 (aka ~0)
are still equal. :-)
        It obviously doesn't come up much.

                                                        +-DLS

-
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

Reply via email to