[ovs-dev] [PATCH 2/9] ofproto-dpif-xlate: Fix revalidation in execute_controller_action().

Daniele Di Proietto diproiettod at vmware.com
Thu Dec 10 02:27:35 UTC 2015


If there's no actual packet (e.g. during revalidation),
execute_controller_action() exits right away, without calling
xlate_commit_actions().

xlate_commit_actions() might have an influence on slow_path reason
(which is included in the generated ODP actions), meaning that the
revalidation will not generate the same actions than the original
translation.

Fix the problem my making execute_controller_action() call
xlate_commit_actions() even without a packet.

Signed-off-by: Daniele Di Proietto <diproiettod at vmware.com>
---
 ofproto/ofproto-dpif-xlate.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index cf184e4..dab64b9 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -3572,14 +3572,13 @@ execute_controller_action(struct xlate_ctx *ctx, int len,
     struct dp_packet *packet;
 
     ctx->xout->slow |= SLOW_CONTROLLER;
+    xlate_commit_actions(ctx);
     if (!ctx->xin->packet) {
         return;
     }
 
     packet = dp_packet_clone(ctx->xin->packet);
 
-    xlate_commit_actions(ctx);
-
     odp_execute_actions(NULL, &packet, 1, false,
                         ctx->odp_actions->data, ctx->odp_actions->size, NULL);
 
-- 
2.1.4




More information about the dev mailing list