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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev