summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/User.c
diff options
context:
space:
mode:
authorNithin Raju <nithin@vmware.com>2014-10-18 11:39:37 -0700
committerBen Pfaff <blp@nicira.com>2014-10-21 11:45:36 -0700
commitbefa5b43fa1005c8895f09f14c49e8ad34e32af6 (patch)
tree1a0935a7f022003ba00f8a1ebe080cf79e40db44 /datapath-windows/ovsext/User.c
parent59e37200fbc8a271ac734e17584b9c0bc9863efe (diff)
downloadopenvswitch-befa5b43fa1005c8895f09f14c49e8ad34e32af6.tar.gz
datapath-windows: Fixes in packet created for userspace
A couple of miscellaneous fixes in code that creates a packet for userspace as well as when we copy the packet to memory specified by userspace. Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/User.c')
-rw-r--r--datapath-windows/ovsext/User.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/datapath-windows/ovsext/User.c b/datapath-windows/ovsext/User.c
index a4c736b27..329b964b0 100644
--- a/datapath-windows/ovsext/User.c
+++ b/datapath-windows/ovsext/User.c
@@ -205,7 +205,7 @@ OvsReadDpIoctl(PFILE_OBJECT fileObject,
*ptr = sum;
ovsUserStats.l4Csum++;
} else {
- RtlCopyMemory(outputBuffer, &elem->packet, len);
+ RtlCopyMemory(outputBuffer, &elem->packet.data, len);
}
*replyLen = len;
@@ -892,14 +892,14 @@ OvsCreateQueueNlPacket(PVOID userData,
UINT32 pid;
UINT32 nlMsgSize;
NL_BUFFER nlBuf;
+ PNL_MSG_HDR nlMsg;
/* XXX pass vport in the stack rather than portNo */
POVS_VPORT_ENTRY vport =
OvsFindVportByPortNo(gOvsSwitchContext, inPort);
if (vport == NULL){
- /* Should never happen as dispatch lock is held */
- ASSERT(vport);
+ /* No vport is not fatal. */
return NULL;
}
@@ -1028,6 +1028,12 @@ OvsCreateQueueNlPacket(PVOID userData,
elem->hdrInfo.l4Offset += VLAN_TAG_SIZE;
ovsUserStats.vlanInsert++;
}
+
+ nlMsg = (PNL_MSG_HDR)NlBufAt(&nlBuf, 0, 0);
+ nlMsg->nlmsgLen = NlBufSize(&nlBuf);
+ /* 'totalLen' should be size of valid data. */
+ elem->packet.totalLen = nlMsg->nlmsgLen;
+
return elem;
fail:
OvsFreeMemory(elem);