Hi Ben, Hi All, this series adds infrastructure and message encoding and decoding to allow Open Flow 1.2 to be used to the extent that ovs-controller works as a learning-switch and similar logic implemented using Ryu[1].
[1] Ryu is an OpenFlow controller implemented in Python http://osrg.github.com/ryu/ Differing from the previous posting, this series also supports a number of statistics messages. These have been tested using the dump-flows, dump-aggregate, dump-port and dump-tables subcommands of ovs-ofctl. This series also includes a number of ofp-print.at tests which were not present in the previous series. Finally, it also addresses all concerns raised by Ben in relation to the previous posting. I believe this series is ready for review. Base ---- This series is based the of1.1 branch of git://benpfaff.org/openvswitch, commit bce80ff228223ec9dfde8d348822e264cf99487e (ofp-util: Work on decoding OF1.1 flow_mods.). Availability ------------ This series is availabile in the devel/of1.2 (n.b: not devel/of12) branch of git://github.com/horms/openvswitch.git Patches ------- Patches 1-13 are infrastructure patches and other supporting changes indirectly related to Open Flow 1.2 messages. [PATCH 01/45] openflow: Add enum ofp_version [PATCH 02/45] ofproto: As of Open Flow 1.1 switch_features has no [PATCH 03/45] ofp-util: Add of12_action_bits [PATCH 04/45] ofp-util: Reduce scope of variables in [PATCH 05/45] ofp-util: Update Capabilities for Open Flow 1.2 [PATCH 06/45] nx-match: Separate raw match and header/pad pull/put [PATCH 07/45] ofp-util: Add ofputil_pull_ofp12_match() [PATCH 08/45] ofp-util: Allow encoding of Open Flow 1.1 & 1.2 [PATCH 09/45] ofp-util: Make ofperr_encode_msg__() use correct Open [PATCH 10/45] ofp-error: Remove ofperr_domain from external API [PATCH 11/45] ofp-util: Make make_echo_request() aware of different [PATCH 12/45] ofp-print: Use the prevailing protocol to call [PATCH 13/45] learning-switch: Send Features Request and Set Config Patches 14-42 add support for encoding and decoding of a number of Open Flow 1.2 messages. [PATCH 14/45] ofp-util: Allow encoding of Open Flow 1.2 Flow Mod [PATCH 15/45] ofp-util: Allow decoding of Open Flow 1.2 Flow Mod [PATCH 16/45] ofp-util: Allow encoding of Open Flow 1.2 Packet In [PATCH 17/45] ofp-util: Allow decoding of Open Flow 1.2 Packet In [PATCH 18/45] ofp-msgs: Update OFPRAW_OFPT_SET_CONFIG for OpenFlow [PATCH 19/45] ofp-actions: Return action size [PATCH 20/45] ofp-util: Prepare Packet Out encoder for other Open [PATCH 21/45] ofp-util: Allow encoding of Open Flow 1.1 and 1.2 [PATCH 22/45] ofp-util: Prepare Packet Out decoder for other Open [PATCH 23/45] ofp-util: Allow decoding of Open Flow 1.1 and 1.2 [PATCH 24/45] ofp-util: Allow encoding of Open Flow 1.2 Flow Removed [PATCH 25/45] ofp-util: Allow encoding Open Flow 1.2 Flow Stats [PATCH 26/45] ofp-util: Allow use of OF12 flow format [PATCH 27/45] ofp-util: Allow encoding of Open Flow 1.2 Port Mod [PATCH 28/45] ofp-util: Allow decoding of Open Flow 1.2 Port Mod [PATCH 29/45] ofp-msgs: Split OFPRAW_OFPST_FLOW_{REQUEST,REPLY} [PATCH 30/45] ofp-util: Prepare Flow Statistics Request Decoder for [PATCH 31/45] ofp-util: Allow decoding of Open Flow 1.2 Flow [PATCH 32/45] ofp-util: Allow encoding of Open Flow 1.2 Flow [PATCH 33/45] ofp-util: Allow decoding of Open Flow 1.2 Flow [PATCH 34/45] ofp-msgs: Split OFPRAW_OFPST_AGGREGATE_REQUEST [PATCH 35/45] ofp-msgs: Allow 1.0-1.2 range [PATCH 36/45] ofp-msgs: Split OFPRAW_OFPST_TABLE_REPLY [PATCH 37/45] ofp-print: Enable display of Open Flow 1.1 & 1.2 Table [PATCH 38/45] ofp-util: Allow decoding of Open Flow 1.1 & 1.2 Table [PATCH 39/45] ovs-ofctl: Use vconn as a parameter of [PATCH 40/45] ofp-msgs: Split OFPRAW_OFPST_PORT_{REQUEST,REPLY} [PATCH 41/45] ofp-util: Allow encoding of Open Flow 1.1 & 1.2 Port [PATCH 42/45] ofp-msgs: Allow encoding and decoding of Open Flow 1.1 The last three patches are local hacks I have been using. They should not be applied but are provided for reference, in particular for anyone who wishes to try learning-switch testing. These patches should not be applied. [PATCH 43/45] Local: learning-switch: Call ofputil_encode_flow_mod() [PATCH 44/45] Local: ovs-controller: Make sure vconn is connected [PATCH 45/45] Local: Allow Open Flow 1.2 session to be negotiated Overall Diffstat (excluding patches 43-45) ------------------------------------------ build-aux/extract-ofp-msgs | 3 include/openflow/openflow-1.1.h | 4 include/openflow/openflow-1.2.h | 29 include/openflow/openflow-common.h | 8 lib/learning-switch.c | 13 lib/nx-match.c | 235 + lib/nx-match.h | 14 lib/ofp-actions.c | 5 lib/ofp-actions.h | 4 lib/ofp-errors.c | 103 lib/ofp-errors.h | 22 lib/ofp-msgs.c | 47 lib/ofp-msgs.h | 63 lib/ofp-print.c | 186 - lib/ofp-util.c | 764 +++- lib/ofp-util.h | 35 lib/rconn.c | 7 lib/vconn-provider.h | 5 lib/vconn.c | 12 lib/vconn.h | 5 ofproto/connmgr.c | 3 ofproto/ofproto-dpif.c | 32 ofproto/ofproto-provider.h | 71 ofproto/ofproto.c | 196 + tests/learn.at | 2 tests/ofp-print.at | 4663 ++++++++++++++++++++++++++- tests/ofproto.at | 12 utilities/ovs-ofctl.c | 109 28 files changed, 6120 insertions(+), 532 deletions(-) _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev