openvswitch/types.h: New macros OVS_BE16_MAX, OVS_BE32_MAX, OVS_BE64_MAX.

These seem slightly nicer than e.g. htons(UINT16_MAX).

Signed-off-by: Ben Pfaff <blp@nicira.com>
match: New function minimatch_matches_flow().

Signed-off-by: Ben Pfaff <blp@nicira.com>
tag: Reintroduce tag library.

It is needed for the classifier partitioning optimization.

Signed-off-by: Ben Pfaff <blp@nicira.com>
classifier: Speed up lookup when metadata partitions the flow table.

We have a controller that puts many rules with different metadata values
into the flow table, where metadata is used (by "resubmit"s) to distinguish
stages in a pipeline.  Thus, any given flow only needs to be hashed into
classifier "cls_table"s that contain a match for the flow's metadata value.
This commit optimizes the classifier lookup by (probabilistically) skipping
the "cls_table"s that can't possibly match.

(The "metadata" referred to here is the OpenFlow 1.1+ "metadata" field,
which is a 64-bit field similar in purpose to the "registers" defined by
Open vSwitch.)

Previous versions of this patch, with earlier versions of the controller in
question, improved flow setup performance by about 19%.  This version needs
performance testing before it is worth reviewing.  Some review comments on
previous versions, not yet addressed, are posted here:
     http://openvswitch.org/pipermail/dev/2013-May/027297.html

Bug #14282.
Signed-off-by: Ben Pfaff <blp@nicira.com>