diff options
author | Ben Pfaff <blp@nicira.com> | 2015-07-24 09:35:58 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2015-07-31 15:14:29 -0700 |
commit | 2031ef971435436037b77b379651c84b376e12a0 (patch) | |
tree | c9ba60cbeeca27ed6a11530dcf2c798a5f091272 /ofproto | |
parent | 939ba4d35f1b9bc0ad944bc6fd5bc13838be7364 (diff) | |
download | openvswitch-2031ef971435436037b77b379651c84b376e12a0.tar.gz |
ofproto-dpif-xlate: Move 'nf_output_iface' from xlate_out to xlate_ctx.
This member is used internally during translation but none of the callers
used as an output of translation.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
Diffstat (limited to 'ofproto')
-rw-r--r-- | ofproto/ofproto-dpif-xlate.c | 35 | ||||
-rw-r--r-- | ofproto/ofproto-dpif-xlate.h | 1 |
2 files changed, 18 insertions, 18 deletions
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index ac7ded719..2c9092d1f 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -205,6 +205,7 @@ struct xlate_ctx { uint32_t orig_skb_priority; /* Priority when packet arrived. */ uint32_t sflow_n_outputs; /* Number of output ports. */ odp_port_t sflow_odp_port; /* Output port for composing sFlow action. */ + ofp_port_t nf_output_iface; /* Output interface index for NetFlow. */ bool exit; /* No further actions should be processed. */ mirror_mask_t mirrors; /* Bitmap of associated mirrors. */ @@ -2245,7 +2246,7 @@ xlate_normal_flood(struct xlate_ctx *ctx, struct xbundle *in_xbundle, output_normal(ctx, xbundle, vlan); } } - ctx->xout->nf_output_iface = NF_OUT_FLOOD; + ctx->nf_output_iface = NF_OUT_FLOOD; } static void @@ -3040,7 +3041,7 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, ctx->sflow_odp_port = odp_port; ctx->sflow_n_outputs++; - ctx->xout->nf_output_iface = ofp_port; + ctx->nf_output_iface = ofp_port; } out: @@ -3427,7 +3428,7 @@ flood_packets(struct xlate_ctx *ctx, bool all) } } - ctx->xout->nf_output_iface = NF_OUT_FLOOD; + ctx->nf_output_iface = NF_OUT_FLOOD; } static void @@ -3667,9 +3668,9 @@ static void xlate_output_action(struct xlate_ctx *ctx, ofp_port_t port, uint16_t max_len, bool may_packet_in) { - ofp_port_t prev_nf_output_iface = ctx->xout->nf_output_iface; + ofp_port_t prev_nf_output_iface = ctx->nf_output_iface; - ctx->xout->nf_output_iface = NF_OUT_DROP; + ctx->nf_output_iface = NF_OUT_DROP; switch (port) { case OFPP_IN_PORT: @@ -3708,12 +3709,12 @@ xlate_output_action(struct xlate_ctx *ctx, } if (prev_nf_output_iface == NF_OUT_FLOOD) { - ctx->xout->nf_output_iface = NF_OUT_FLOOD; - } else if (ctx->xout->nf_output_iface == NF_OUT_DROP) { - ctx->xout->nf_output_iface = prev_nf_output_iface; + ctx->nf_output_iface = NF_OUT_FLOOD; + } else if (ctx->nf_output_iface == NF_OUT_DROP) { + ctx->nf_output_iface = prev_nf_output_iface; } else if (prev_nf_output_iface != NF_OUT_DROP && - ctx->xout->nf_output_iface != NF_OUT_FLOOD) { - ctx->xout->nf_output_iface = NF_OUT_MULTI; + ctx->nf_output_iface != NF_OUT_FLOOD) { + ctx->nf_output_iface = NF_OUT_MULTI; } } @@ -3763,10 +3764,10 @@ xlate_enqueue_action(struct xlate_ctx *ctx, ctx->xin->flow.skb_priority = flow_priority; /* Update NetFlow output port. */ - if (ctx->xout->nf_output_iface == NF_OUT_DROP) { - ctx->xout->nf_output_iface = ofp_port; - } else if (ctx->xout->nf_output_iface != NF_OUT_FLOOD) { - ctx->xout->nf_output_iface = NF_OUT_MULTI; + if (ctx->nf_output_iface == NF_OUT_DROP) { + ctx->nf_output_iface = ofp_port; + } else if (ctx->nf_output_iface != NF_OUT_FLOOD) { + ctx->nf_output_iface = NF_OUT_MULTI; } } @@ -4715,7 +4716,6 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) *xout = (struct xlate_out) { .slow = 0, .fail_open = false, - .nf_output_iface = NF_OUT_DROP, .n_recircs = 0, }; @@ -4753,6 +4753,7 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) .orig_skb_priority = flow->skb_priority, .sflow_n_outputs = 0, .sflow_odp_port = 0, + .nf_output_iface = NF_OUT_DROP, .exit = false, .mirrors = 0, @@ -5027,7 +5028,7 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) if (!xin->recirc && xbridge->netflow && !(xout->slow & SLOW_CONTROLLER)) { if (ctx.xin->resubmit_stats) { netflow_flow_update(xbridge->netflow, flow, - xout->nf_output_iface, + ctx.nf_output_iface, ctx.xin->resubmit_stats); } if (ctx.xin->xcache) { @@ -5036,7 +5037,7 @@ xlate_actions(struct xlate_in *xin, struct xlate_out *xout) entry = xlate_cache_add_entry(ctx.xin->xcache, XC_NETFLOW); entry->u.nf.netflow = netflow_ref(xbridge->netflow); entry->u.nf.flow = xmemdup(flow, sizeof *flow); - entry->u.nf.iface = xout->nf_output_iface; + entry->u.nf.iface = ctx.nf_output_iface; } } diff --git a/ofproto/ofproto-dpif-xlate.h b/ofproto/ofproto-dpif-xlate.h index 6dd990a32..91b913bf6 100644 --- a/ofproto/ofproto-dpif-xlate.h +++ b/ofproto/ofproto-dpif-xlate.h @@ -40,7 +40,6 @@ struct xlate_cache; struct xlate_out { enum slow_path_reason slow; /* 0 if fast path may be used. */ bool fail_open; /* Initial rule is fail open? */ - ofp_port_t nf_output_iface; /* Output interface index for NetFlow. */ /* Recirculation IDs on which references are held. */ unsigned n_recircs; |