[ovs-dev] [PATCH 00/26] Make ofproto-dpif-xlate easier to understand

Ben Pfaff blp at nicira.com
Thu Jul 30 06:42:20 UTC 2015


For testing OVN, I wanted to make what I thought would be straightforward
changes to ofproto-dpif-xlate, but I found that it was too obscure.  This
series refactors it in several minor ways that in my opinion make it
easier to understand.

A few of the patches may improve performance (e.g. patch 5) or fix
bugs (e.g. the final patch).

Ben Pfaff (26):
  ofproto-dpif-xlate: Initialize '*xout' all together at beginning.
  list: New macro OVS_LIST_POISON for initializing a poisoned list.
  ofpbuf: New macro OFPBUF_STUB_INITIALIZER.
  ofproto-dpif-xlate: Initialize 'ctx' all in one place.
  ofproto-dpif-xlate: Make xlate_actions() caller supply flow_wildcards.
  ofproto-dpif-xlate: Make xlate_actions() caller supply action buffer.
  ofproto-dpif-xlate: Calculate 'ofpacts' in more restricted scope.
  ofproto-dpif-xlate: Eliminate 'rule' local variable.
  ofproto-dpif-xlate: Simplify invocation of process_special().
  ofproto-dpif-xlate: Eliminate 'is_icmp' from xlate_actions().
  ofproto-dpif-xlate: Move declaration of 'orig_flow' near its first
    use.
  ofproto-dpif-xlate: Simplify 'sample_actions_len' calculation.
  tunnel: Break tnl_xlate_init() into two separate functions.
  ofproto-dpif-xlate: Factor wildcard processing out of xlate_actions().
  ofproto-dpif-xlate: Clean up sFlow and IPFIX sampling code.
  ofproto-dpif-xlate: Set up 'base_flow' when we initialize 'ctx'.
  ofproto-dpif-xlate: Move 'mirrors' from xlate_out to xlate_ctx.
  ofproto-dpif-xlate: Remove multiple members from struct xlate_out.
  ofproto-dpif-xlate: Move 'nf_output_iface' from xlate_out to
    xlate_ctx.
  ofproto-dpif-xlate: Move initialization of 'in_port' closer to first
    use.
  ofproto-dpif-xlate: Drop packets received from mirror output ports
    earlier.
  ofproto-dpif-xlate: Rewrite mirroring to better fit flow translation.
  ofproto-dpif-rid: Factor recirculation state out as new structure.
  ofp-actions: Add action "debug_recirc" for testing recirculation.
  ofproto-dpif-xlate: Add recirculation information to "ofproto/trace".
  ofproto-dpif-xlate: Fix mirroring interaction with recirculation.

 lib/dummy.c                   |    1 +
 lib/dummy.h                   |    1 +
 lib/list.h                    |    7 +-
 lib/ofp-actions.c             |   61 +++
 lib/ofp-actions.h             |    6 +
 lib/ofpbuf.h                  |   21 +-
 ofproto/ofproto-dpif-rid.c    |  164 +++----
 ofproto/ofproto-dpif-rid.h    |   45 +-
 ofproto/ofproto-dpif-upcall.c |   80 ++--
 ofproto/ofproto-dpif-xlate.c  | 1056 ++++++++++++++++++++---------------------
 ofproto/ofproto-dpif-xlate.h  |   41 +-
 ofproto/ofproto-dpif.c        |   21 +-
 ofproto/tunnel.c              |   85 ++--
 ofproto/tunnel.h              |    3 +-
 tests/ofproto-dpif.at         |   42 +-
 vswitchd/vswitch.xml          |   26 +
 16 files changed, 857 insertions(+), 803 deletions(-)

-- 
2.1.3




More information about the dev mailing list