packet: Match userspace and kernel definition of ICMP header.
authorJesse Gross <jesse@nicira.com>
Tue, 27 Dec 2011 01:33:03 +0000 (17:33 -0800)
committerJesse Gross <jesse@nicira.com>
Tue, 27 Dec 2011 19:17:09 +0000 (11:17 -0800)
commitd730ccf057353ca94500fe8f2e6db25bbb1499f2
tree300c6a5d0dfb502558c981dfc452d9626c7707da
parent6cfaea860adeff6afb4004e3cc1a38642a02be87
packet: Match userspace and kernel definition of ICMP header.

Current userspace considers an ICMP header to be 4 bytes consisting
of the type, code, and checksum.  The kernel considers it to be 8
bytes because it also counts the two data fields that contain
type-specific information (and are always present).  Since flow
extract will zero out headers that are not completely present this
means that an ICMP packet that has a header of 5-7 bytes will be
interpreted differently by userspace and kernel.  This fixes the
problem by adopting the kernel's version of the ICMP header in
userspace.

Signed-off-by: Jesse Gross <jesse@nicira.com>
lib/packets.h