classifier: Support table versioning
authorJarno Rajahalme <jrajahalme@nicira.com>
Wed, 10 Jun 2015 00:00:00 +0000 (17:00 -0700)
committerJarno Rajahalme <jrajahalme@nicira.com>
Wed, 10 Jun 2015 23:17:47 +0000 (16:17 -0700)
commit2b7b1427c177d28ec63632646ce896eec7f162b6
tree97d4fecd8ca81249fbd5ccf9cb8a03a28571460e
parentdb5076eee46e5ad4d67dc02b902c9b4aaeb190a4
classifier: Support table versioning

This patch allows classifier rules to become visible and invisible in
specific versions.  A 'version' is defined as a positive monotonically
increasing integer, which never wraps around.

The new 'visibility' attribute replaces the prior 'to_be_removed' and
'visible' attributes.

When versioning is not used, the 'version' parameter should be passed
as 'CLS_MIN_VERSION' when creating rules, and 'CLS_MAX_VERSION' when
looking up flows.

This feature enables the support for atomic OpenFlow bundles without
significant performance penalty on 64-bit systems. There is a
performance decrease in 32-bit systems due to 64-bit atomics used.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
lib/classifier-private.h
lib/classifier.c
lib/classifier.h
lib/ovs-router.c
lib/tnl-ports.c
ofproto/ofproto-dpif.c
ofproto/ofproto.c
tests/test-classifier.c
utilities/ovs-ofctl.c