Skip to content

Commit

Permalink
ofproto-dpif-xlate: Improve recirc_unroll_actions() interface.
Browse files Browse the repository at this point in the history
This interface is still straightforward and easier for the client.

Signed-off-by: Ben Pfaff <[email protected]>
Acked-by: Jarno Rajahalme <[email protected]>
  • Loading branch information
blp committed Feb 19, 2016
1 parent 27aa879 commit c2b283b
Showing 1 changed file with 7 additions and 14 deletions.
21 changes: 7 additions & 14 deletions ofproto/ofproto-dpif-xlate.c
Original file line number Diff line number Diff line change
Expand Up @@ -4163,16 +4163,14 @@ recirc_put_unroll_xlate(struct xlate_ctx *ctx)
}


/* Copy remaining actions to the action_set to be executed after recirculation.
* UNROLL_XLATE action is inserted, if not already done so, before actions that
* may depend on the current table ID or flow cookie. */
/* Copy actions 'a' through 'end' to the action_set to be executed after
* recirculation. UNROLL_XLATE action is inserted, if not already done so,
* before actions that may depend on the current table ID or flow cookie. */
static void
recirc_unroll_actions(const struct ofpact *ofpacts, size_t ofpacts_len,
recirc_unroll_actions(const struct ofpact *a, const struct ofpact *end,
struct xlate_ctx *ctx)
{
const struct ofpact *a;

OFPACT_FOR_EACH (a, ofpacts, ofpacts_len) {
for (; a < end; a = ofpact_next(a)) {
switch (a->type) {
case OFPACT_OUTPUT_REG:
case OFPACT_GROUP:
Expand Down Expand Up @@ -4439,9 +4437,7 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len,
/* Check if need to store the remaining actions for later
* execution. */
if (exit_recirculates(ctx)) {
recirc_unroll_actions(a, OFPACT_ALIGN(ofpacts_len -
((uint8_t *)a -
(uint8_t *)ofpacts)),
recirc_unroll_actions(a, ofpact_end(ofpacts, ofpacts_len),
ctx);
}
break;
Expand Down Expand Up @@ -4817,10 +4813,7 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len,
/* Check if need to store this and the remaining actions for later
* execution. */
if (!ctx->error && ctx->exit && ctx_first_recirculation_action(ctx)) {
recirc_unroll_actions(a, OFPACT_ALIGN(ofpacts_len -
((uint8_t *)a -
(uint8_t *)ofpacts)),
ctx);
recirc_unroll_actions(a, ofpact_end(ofpacts, ofpacts_len), ctx);
break;
}
}
Expand Down

0 comments on commit c2b283b

Please sign in to comment.