Introduce ofputil_protocol, to abstract the protocol in use on a connection.
authorBen Pfaff <blp@nicira.com>
Fri, 10 Feb 2012 21:30:23 +0000 (13:30 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 7 Mar 2012 21:59:02 +0000 (13:59 -0800)
commit27527aa09ce456796eeea728cef9528aa5612b70
treefe9f12d78b25a5520a25b6cec7e3dd5b2727ea20
parent032f3fbd856864cdcbdf505d404e826999b8a2ae
Introduce ofputil_protocol, to abstract the protocol in use on a connection.

Open vSwitch already handles a few different protocol variations, but it
does so in a nonuniform manner:

  - OpenFlow 1.0 and NXM flow formats are distinguished using the NXFF_*
    constant values from nicira-ext.h.

  - The "flow_mod_table_id" feature setting is maintained in ofproto as
    part of an OpenFlow connection's (ofconn's) state.

There's no way to easily communicate this state among components.  It's
not much of a problem yet, but as more protocol support is added it seems
better to have an abstract, uniform way to represent protocol versions and
variants.  This commit implements that by introducing a new type
"enum ofputil_protocol".  Each ofputil_protocol value represents a variant
of a protocol version.  Each value is a separate bit, so a single enum
can also represent a set of protocols, which is often useful as well.

Reviewed-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Ben Pfaff <blp@nicira.com>
22 files changed:
lib/learning-switch.c
lib/learning-switch.h
lib/ofp-parse.c
lib/ofp-parse.h
lib/ofp-print.c
lib/ofp-util.c
lib/ofp-util.h
lib/rconn.c
lib/rconn.h
lib/util.h
lib/vconn.c
lib/vconn.h
ofproto/connmgr.c
ofproto/connmgr.h
ofproto/ofproto.c
tests/autopath.at
tests/learn.at
tests/ofproto.at
tests/ovs-ofctl.at
utilities/ovs-controller.c
utilities/ovs-ofctl.8.in
utilities/ovs-ofctl.c