datapath: IP fragments should include L4 header in flow length.
authorJesse Gross <jesse@nicira.com>
Wed, 8 Jun 2011 19:23:05 +0000 (12:23 -0700)
committerJesse Gross <jesse@nicira.com>
Wed, 8 Jun 2011 20:56:19 +0000 (13:56 -0700)
commit5f4d087c768fb88ebca05b5f5b6dee59cf63017b
treec6ab83d2880bc8960c97a32f8ee2745da1d4986b
parent0b813a372f67858e1422a832cc922f10d5149f93
datapath: IP fragments should include L4 header in flow length.

If we can't parse a header because it is invalid or not present due to
fragmentation, we still need to include the length of that header when
comparing the flow key.  The value of the field will be zero to
indicate that header was not present, rather than effectively
wildcarding the value.  However, this was not done with fragments on
flow extract but is effectively done on flow setup.  Since the flow
length also changes the hash, it caused all fragments to miss the
hash table and be sent to useerspace.

Reported-by: Ben Pfaff <blp@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Tested-by: Ben Pfaff <blp@nicira.com>
datapath/flow.c