[ovs-dev] [PATCH v2 2/2] datapath-windows: Transactional error fix for flow dump.

Ankur Sharma ankursharma at vmware.com
Tue Oct 14 17:16:01 UTC 2014


My changes for trasacation error handling for not needed for dump commands.
Fixed the same.

Signed-off-by: Ankur Sharma <ankursharma at vmware.com>
---
 datapath-windows/ovsext/Flow.c | 50 +++++++++++-------------------------------
 1 file changed, 13 insertions(+), 37 deletions(-)

diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c
index f6e7bdb..3254223 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -381,48 +381,24 @@ OvsFlowNlGetCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
     NTSTATUS rc = STATUS_SUCCESS;
     NL_ERROR nlError = NL_ERROR_SUCCESS;
     POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
-    POVS_MESSAGE msgOut = (POVS_MESSAGE)usrParamsCtx->outputBuffer;
-    PNL_MSG_HDR nlMsgHdr = &(msgIn->nlMsg);
-    PGENL_MSG_HDR genlMsgHdr = &(msgIn->genlMsg);
-    POVS_HDR ovsHdr = &(msgIn->ovsHdr);
-
-    NL_BUFFER nlBuf;
-
-    if (!(usrParamsCtx->outputBuffer)) {
-        /* No output buffer */
-        rc = STATUS_INVALID_BUFFER_SIZE;
-        goto done;
-    }
 
     if (usrParamsCtx->devOp == OVS_TRANSACTION_DEV_OP) {
         rc = _FlowNlGetCmdHandler(usrParamsCtx, replyLen);
-    } else {
-        rc = _FlowNlDumpCmdHandler(usrParamsCtx, replyLen);
-    }
 
-    if ((nlError != NL_ERROR_SUCCESS) &&
-        (usrParamsCtx->outputBuffer)) {
-        POVS_MESSAGE_ERROR msgError = (POVS_MESSAGE_ERROR)
-                                       usrParamsCtx->outputBuffer;
-        BuildErrorMsg(msgIn, msgError, nlError);
-        *replyLen = msgError->nlMsg.nlmsgLen;
-        rc = STATUS_SUCCESS;
-        goto done;
-    }
-
-    if (rc == STATUS_SUCCESS) {
-        NlBufInit(&nlBuf, usrParamsCtx->outputBuffer,
-                  usrParamsCtx->outputLength);
-
-        /* Prepare nl Msg headers */
-        rc = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
-                          nlMsgHdr->nlmsgSeq, nlMsgHdr->nlmsgPid,
-                          genlMsgHdr->cmd, OVS_FLOW_VERSION,
-                          ovsHdr->dp_ifindex);
-
-        if (rc == STATUS_SUCCESS) {
-            *replyLen = msgOut->nlMsg.nlmsgLen;
+        /* No trasanctional errors as of now.
+         * If we have something then we need to convert rc to
+         * nlError. */
+        if ((nlError != NL_ERROR_SUCCESS) &&
+            (usrParamsCtx->outputBuffer)) {
+            POVS_MESSAGE_ERROR msgError = (POVS_MESSAGE_ERROR)
+                                           usrParamsCtx->outputBuffer;
+            BuildErrorMsg(msgIn, msgError, nlError);
+            *replyLen = msgError->nlMsg.nlmsgLen;
+            rc = STATUS_SUCCESS;
+            goto done;
         }
+    } else {
+        rc = _FlowNlDumpCmdHandler(usrParamsCtx, replyLen);
     }
 
 done:
-- 
1.9.1




More information about the dev mailing list