diff options
author | Nithin Raju <nithin@vmware.com> | 2014-10-18 11:39:37 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2014-10-21 11:45:36 -0700 |
commit | befa5b43fa1005c8895f09f14c49e8ad34e32af6 (patch) | |
tree | 1a0935a7f022003ba00f8a1ebe080cf79e40db44 /datapath-windows | |
parent | 59e37200fbc8a271ac734e17584b9c0bc9863efe (diff) | |
download | openvswitch-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')
-rw-r--r-- | datapath-windows/ovsext/User.c | 12 |
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); |