Skip to content
  • Ed Swierk's avatar
    0dacea92
    net: Transmit zero UDP checksum as 0xFFFF · 0dacea92
    Ed Swierk authored
    
    
    The checksum algorithm used by IPv4, TCP and UDP allows a zero value
    to be represented by either 0x0000 and 0xFFFF. But per RFC 768, a zero
    UDP checksum must be transmitted as 0xFFFF because 0x0000 is a special
    value meaning no checksum.
    
    Substitute 0xFFFF whenever a checksum is computed as zero when
    modifying a UDP datagram header. Doing this on IPv4 and TCP checksums
    is unnecessary but legal. Add a wrapper for net_checksum_finish() that
    makes the substitution.
    
    (We can't just change net_checksum_finish(), as that function is also
    used by receivers to verify checksums, and in that case the expected
    value is always 0x0000.)
    
    Signed-off-by: default avatarEd Swierk <eswierk@skyportsystems.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    0dacea92
    net: Transmit zero UDP checksum as 0xFFFF
    Ed Swierk authored
    
    
    The checksum algorithm used by IPv4, TCP and UDP allows a zero value
    to be represented by either 0x0000 and 0xFFFF. But per RFC 768, a zero
    UDP checksum must be transmitted as 0xFFFF because 0x0000 is a special
    value meaning no checksum.
    
    Substitute 0xFFFF whenever a checksum is computed as zero when
    modifying a UDP datagram header. Doing this on IPv4 and TCP checksums
    is unnecessary but legal. Add a wrapper for net_checksum_finish() that
    makes the substitution.
    
    (We can't just change net_checksum_finish(), as that function is also
    used by receivers to verify checksums, and in that case the expected
    value is always 0x0000.)
    
    Signed-off-by: default avatarEd Swierk <eswierk@skyportsystems.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Loading