struct flow old_base_flow = ctx->base_flow;
size_t old_size = ctx->xout->odp_actions->size;
mirror_mask_t old_mirrors = ctx->xout->mirrors;
+
xlate_table_action(ctx, flow->in_port.ofp_port, table_id,
true, true);
ctx->xout->mirrors = old_mirrors;
ofpbuf_uninit(&ctx->stack);
ctx->stack = old_stack;
+ /* The fact that the peer bridge exits (for any reason) does not mean
+ * that the original bridge should exit. Specifically, if the peer
+ * bridge recirculates (which typically modifies the packet), the
+ * original bridge must continue processing with the original, not the
+ * recirculated packet! */
+ ctx->exit = false;
+
if (ctx->xin->resubmit_stats) {
netdev_vport_inc_tx(xport->netdev, ctx->xin->resubmit_stats);
netdev_vport_inc_rx(peer->netdev, ctx->xin->resubmit_stats);