ofp-util: Revise OpenFlow 1.0 ofp_match normalization.
authorBen Pfaff <blp@nicira.com>
Mon, 2 May 2011 18:04:33 +0000 (11:04 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 13 May 2011 21:45:52 +0000 (14:45 -0700)
commit1c0b7503afdd750a7f2cadcd63b65d64889366c9
tree3fb6a7ef047d24f0da71a12483ea233d7f2c532f
parent34276a57908ddac57a1f7f67addad7896503055a
ofp-util: Revise OpenFlow 1.0 ofp_match normalization.

For a long time, Open vSwitch has "normalized" OpenFlow 1.0 flows in a
funny way: it tries to change fields that are wildcarded into fields
that are exact-match.  For example, the normalize_match() function
knows that if dl_type is wildcarded, then all of the L3 and L4 fields
will always be extracted as 0, so it sets those fields to exact-match
and their values to 0.

The reason for this was originally that exact-match flows were much
cheaper for Open vSwitch to implement, because they could be implemented
with a hash table, whereas other kinds of flows had to be implemented
with an expensive linear search.  But these days Open vSwitch has a
smarter classifier in which wildcarded flows have minimal cost.  Also,
it is no longer possible for OpenFlow 1.0 to specify truly exact-match
flows, because Open vSwitch supports fields for which OpenFlow 1.0
cannot specify values and therefore will always be wildcarded.

Now, it no longer makes sense to do this transformation, so this commit
removes it.  Presumably, this will be less surprising for users.

Reviewed-by: Simon Horman <horms@verge.net.au>
lib/ofp-util.c
lib/ofp-util.h
tests/ofp-print.at