Ethereal-users: [Ethereal-users] UDP checksum with less than 16 bytes

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Robert Morin" <morinr@xxxxxxxxxx>
Date: Tue, 20 Jan 2004 10:36:49 -0500
Hi everyone,

I am testing an ethernet driver and I notice something odd with the UDP
checksum with 
small IPv4 packet. If I send a UDP packet with only 4 bytes in the data
and padding
with 0 to have a valid IP packet (64 bytes) then I notice that the UDP
checksum is
computed using the length of the UDP data + the size of the padding.

I check in the code (in packet_udp.c function dissect_udp()) and the
size used for
the UDP checksum is the reported_len and not the upd size.


UDP data:

	      13 88 13 89 00 0c ef 68 31 32 33 34 00 00
	00 00 00 00 00 00 00 00 00 00 00

Checksum: 0xef68 (incorrect, should be 0xef5b). 

My length is 0x0c but the checksum is done with a length of 0x19 (this
explain the difference of 0x0d, the size of the padding).

Is this normal a normal behavior ?

Robert Morin
embVUE Inc.
Montreal