This series is also available at: https://github.com/blp/ovs-reviews/tree/l3-4 g...@github.com:blp/ovs-reviews.git l3-4
This is the fourth revision of my "closures" series. The first version was: http://openvswitch.org/pipermail/dev/2016-January/064607.html The second version, unfortunately not marked v2, was: https://patchwork.ozlabs.org/patch/574946/ and the v1->v2 changes were described at: http://openvswitch.org/pipermail/dev/2016-January/064875.html Changes v2->v3: - Patches 1 through 6 are new. - There's a terminology change starting in patch 6. Now the process of pausing translation is called "freezing", and there are two users of freezing, which are recirculation and closures. - I added the ability to provide arbitrary user data on NXAST_PAUSE which is passed to the controller in a property on NXT_CLOSURE. - I made all the changes described in: http://openvswitch.org/pipermail/dev/2016-February/065984.html - I added a few more tests to ofp-print.at and ofp-actions.at. - Probably other refinements I've forgotten. Changes v3->v4: - Several patches were applied and thus dropped from the series. - I added the previous L3 ARP patches at the end, revised (see below). - I had a major change of heart on the approach here. Until now, I had an idea that "closures" were fundamentally different from OpenFlow "packet-ins" and thus deserved separate but parallel infrastructure. Now that I started to use them for ARP, I realized that there in fact isn't that much difference. Thus, this revision merges closures into packet-ins and drops the "closure" naming. Instead, what was previously a closure is just a packet-in that includes a "continuation", that is, the state that can be used to resume the pipeline. - The ARP series from before is tacked on the end here, but it is revised to use packet-ins instead of adding a specialized OpenFlow action for ARP. - The ARP patches (patches 8 and later) are not as mature as the rest of the series. In particular, I haven't been able to figure out why the final patch is necessary; it may indicate a bug in my test for the ARP support. In testing, I've definitely figured out that debugging is harder than it should be. Ben Pfaff (14): ofpbuf: New function ofpbuf_const_initializer(). ofp-util: Remove 'const' from struct ofputil_packet_in's 'packet' member. Implement new packet-in format NXT_PACKET_IN2. ofp-util: Rename struct ofputil_packet_in member 'len' to 'packet_len'. Support userdata in NXT_PACKET_IN2. ofp-prop: Add support for putting and parsing nested properties. Implement serializing the state of packet traversal in "continuations". pinctrl: Fix header guard. ofp-actions: Introduce macro for padding struct members. actions: Implement OVN "arp" action. ovn: Use callback function instead of simap for logical port number map. ovn-controller: Add data structure for indexing lports, multicast groups. ovn: Implement basic ARP support for L3 logical routers. [RFC] lflow: Disable egress table optimization. NEWS | 5 + include/openflow/nicira-ext.h | 136 +++++- lib/dpif-netlink.c | 72 ++- lib/learning-switch.c | 11 +- lib/meta-flow.c | 9 +- lib/meta-flow.h | 3 +- lib/netdev-windows.c | 18 +- lib/netlink-socket.c | 9 +- lib/nx-match.c | 15 +- lib/ofp-actions.c | 269 ++++++++--- lib/ofp-actions.h | 67 +-- lib/ofp-errors.c | 8 +- lib/ofp-errors.h | 16 +- lib/ofp-msgs.c | 4 +- lib/ofp-msgs.h | 7 + lib/ofp-print.c | 150 ++++--- lib/ofp-prop.c | 49 ++ lib/ofp-prop.h | 4 + lib/ofp-util.c | 957 ++++++++++++++++++++++++++++------------ lib/ofp-util.h | 65 ++- lib/ofpbuf.h | 26 +- lib/packets.c | 38 +- lib/packets.h | 3 +- lib/rconn.c | 3 +- ofproto/connmgr.c | 26 +- ofproto/connmgr.h | 2 +- ofproto/fail-open.c | 16 +- ofproto/ofproto-dpif-xlate.c | 211 +++++++-- ofproto/ofproto-dpif-xlate.h | 4 + ofproto/ofproto-dpif.c | 35 ++ ofproto/ofproto-provider.h | 3 + ofproto/ofproto.c | 61 ++- ovn/TODO | 112 +---- ovn/controller/automake.mk | 2 + ovn/controller/lflow.c | 251 +++++------ ovn/controller/lflow.h | 11 +- ovn/controller/lport.c | 157 +++++++ ovn/controller/lport.h | 67 +++ ovn/controller/ovn-controller.c | 47 +- ovn/controller/pinctrl.c | 323 ++++++++++++-- ovn/controller/pinctrl.h | 14 +- ovn/lib/actions.c | 235 +++++++++- ovn/lib/actions.h | 39 +- ovn/lib/expr.c | 141 ++++-- ovn/lib/expr.h | 16 +- ovn/northd/ovn-northd.8.xml | 112 +++-- ovn/northd/ovn-northd.c | 105 +++-- ovn/ovn-architecture.7.xml | 78 +++- ovn/ovn-sb.ovsschema | 15 +- ovn/ovn-sb.xml | 158 ++++++- ovn/utilities/ovn-sbctl.c | 4 + tests/ofp-actions.at | 14 + tests/ofp-print.at | 37 +- tests/ofproto-dpif.at | 346 +++++++++++---- tests/ofproto-macros.at | 35 +- tests/ofproto.at | 54 ++- tests/ovn.at | 190 +++++++- tests/test-ovn.c | 20 +- tests/tunnel-push-pop.at | 2 +- utilities/ovs-ofctl.8.in | 76 +++- utilities/ovs-ofctl.c | 187 +++++--- 61 files changed, 3853 insertions(+), 1297 deletions(-) create mode 100644 ovn/controller/lport.c create mode 100644 ovn/controller/lport.h -- 2.1.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev