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:16:25 +0000 (11:16 -0800)
commit71225d423b845d957f1feab55623ecf7afb39a0c
tree168df8acf43823a8047abbe25dc36d2226a36d92
parent4fa126216803df65814fa5f69b12a66b2541f808
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