On Fri, May 12, 2017 at 11:07:43AM +0000, Zoltán Balogh wrote:
> From: Jan Scheurich <[email protected]>
>
> The very long function compose_output_action__() has been re-factored to make
> the different cases for output to patch-port, native tunnel port, kernel
> tunnel
> port, recirculation, or termination of a native tunnel at output to LOCAL port
> clearer. Larger, self-contained blocks have been split out into separate
> functions.
>
> Signed-off-by: Jan Scheurich <[email protected]>
> Co-authored-by: Zoltan Balogh <[email protected]>
>
> Conflicts:
> ofproto/ofproto-dpif-xlate.c
I'm happy with this, it's a nice refactoring, although one wonders
whether it can be taken even farther.
I folded in the following incremental and applied this to master.
--8<--------------------------cut here-------------------------->8--
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index 59ef77bf998a..f71a9db0a6b3 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -3303,11 +3303,9 @@ check_output_prerequisites(struct xlate_ctx *ctx,
return true;
}
-static inline bool
-terminate_native_tunnel(struct xlate_ctx *ctx,
- ofp_port_t ofp_port,
- struct flow *flow,
- struct flow_wildcards *wc,
+static bool
+terminate_native_tunnel(struct xlate_ctx *ctx, ofp_port_t ofp_port,
+ struct flow *flow, struct flow_wildcards *wc,
odp_port_t *tnl_port)
{
*tnl_port = ODPP_NONE;
@@ -3319,7 +3317,7 @@ terminate_native_tunnel(struct xlate_ctx *ctx,
*tnl_port = tnl_port_map_lookup(flow, wc);
}
- return (*tnl_port != ODPP_NONE);
+ return *tnl_port != ODPP_NONE;
}
static void
@@ -3535,12 +3533,11 @@ compose_output_action__(struct xlate_ctx *ctx,
ofp_port_t ofp_port,
}
if (out_port != ODPP_NONE) {
-
/* Commit accumulated flow updates before output. */
xlate_commit_actions(ctx);
if (xr) {
- /* Recirculate the packet */
+ /* Recirculate the packet. */
struct ovs_action_hash *act_hash;
/* Hash action. */
@@ -3553,7 +3550,6 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t
ofp_port,
/* Recirc action. */
nl_msg_put_u32(ctx->odp_actions, OVS_ACTION_ATTR_RECIRC,
xr->recirc_id);
-
} else if (is_native_tunnel) {
/* Output to native tunnel port. */
build_tunnel_send(ctx, xport, flow, odp_port);
@@ -3562,8 +3558,7 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t
ofp_port,
} else if (terminate_native_tunnel(ctx, ofp_port, flow, wc,
&odp_tnl_port)) {
/* Intercept packet to be received on native tunnel port. */
- nl_msg_put_odp_port(ctx->odp_actions,
- OVS_ACTION_ATTR_TUNNEL_POP,
+ nl_msg_put_odp_port(ctx->odp_actions, OVS_ACTION_ATTR_TUNNEL_POP,
odp_tnl_port);
} else {
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev