nx-match: Check prerequisites for ICMPv6 before outputting subfields.
authorBen Pfaff <blp@nicira.com>
Mon, 9 May 2011 23:21:00 +0000 (16:21 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 27 May 2011 22:42:19 +0000 (15:42 -0700)
commitf740239011a9650ab4d63a336a4170e8f1983a63
tree73dddc67291e300522e83ccab0f44f29938237fa
parentaf6bce18eeb7736426e593d6fb042a4d56805172
nx-match: Check prerequisites for ICMPv6 before outputting subfields.

nicira-ext.h documents that NXM_NX_ND_TARGET requires ND_NEIGHBOR_SOLICIT
or ND_NEIGHBOR_ADVERT, that NXM_NX_ND_SLL requires ND_NEIGHBOR_SOLICIT,
and that NXM_NX_ND_TLL requires ND_NEIGHBOR_ADVERT, but nx_put_match()
would add them to the match regardless of whether these prerequisites were
satisfied.  On the other side, nx_pull_match() did check the prerequisites,
so this was a case where OVS could output flows that it would refused to
parse.  This fixes the problem.

Found by inspection.
lib/nx-match.c