summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/BufferMgmt.c
diff options
context:
space:
mode:
authorAnand Kumar <kumaranand@vmware.com>2018-11-09 11:08:33 -0800
committerAlin Gabriel Serdean <aserdean@ovn.org>2018-12-21 15:58:20 +0200
commit202b81379287b16364b33ea8049de8f9b1e46cac (patch)
tree741ceb90730b2c09342ec8150096a394436333b7 /datapath-windows/ovsext/BufferMgmt.c
parentb559c8bddd25e17868159a0a36e43703a3c0b4be (diff)
downloadopenvswitch-202b81379287b16364b33ea8049de8f9b1e46cac.tar.gz
datapath-windows: Use layers info to extract IP header in IpFragment
- Rely on layers l3Offset field to get offset of IP header. - Aslo fix passing 'newNbl' to IP fragment which is not required. - Fixed including a header file twice. Signed-off-by: Anand Kumar <kumaranand@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@ovn.org> Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/BufferMgmt.c')
-rw-r--r--datapath-windows/ovsext/BufferMgmt.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/datapath-windows/ovsext/BufferMgmt.c b/datapath-windows/ovsext/BufferMgmt.c
index da5c04a93..47d872df2 100644
--- a/datapath-windows/ovsext/BufferMgmt.c
+++ b/datapath-windows/ovsext/BufferMgmt.c
@@ -1101,9 +1101,9 @@ nblcopy_error:
NDIS_STATUS
GetIpHeaderInfo(PNET_BUFFER_LIST curNbl,
+ const POVS_PACKET_HDR_INFO hdrInfo,
UINT32 *hdrSize)
{
- CHAR *ethBuf[sizeof(EthHdr)];
EthHdr *eth;
IPHdr *ipHdr;
PNET_BUFFER curNb;
@@ -1111,16 +1111,14 @@ GetIpHeaderInfo(PNET_BUFFER_LIST curNbl,
curNb = NET_BUFFER_LIST_FIRST_NB(curNbl);
ASSERT(NET_BUFFER_NEXT_NB(curNb) == NULL);
- eth = (EthHdr *)NdisGetDataBuffer(curNb, ETH_HEADER_LENGTH,
- (PVOID)&ethBuf, 1, 0);
+ eth = (EthHdr *)NdisGetDataBuffer(curNb,
+ hdrInfo->l4Offset,
+ NULL, 1, 0);
if (eth == NULL) {
return NDIS_STATUS_INVALID_PACKET;
}
- ipHdr = (IPHdr *)((PCHAR)eth + ETH_HEADER_LENGTH);
- if (ipHdr == NULL) {
- return NDIS_STATUS_INVALID_PACKET;
- }
- *hdrSize = (UINT32)(ETH_HEADER_LENGTH + (ipHdr->ihl * 4));
+ ipHdr = (IPHdr *)((PCHAR)eth + hdrInfo->l3Offset);
+ *hdrSize = (UINT32)(hdrInfo->l3Offset + (ipHdr->ihl * 4));
return NDIS_STATUS_SUCCESS;
}
@@ -1380,7 +1378,7 @@ OvsFragmentNBL(PVOID ovsContext,
/* Figure out the header size */
if (isIpFragment) {
- status = GetIpHeaderInfo(nbl, &hdrSize);
+ status = GetIpHeaderInfo(nbl, hdrInfo, &hdrSize);
} else {
status = GetSegmentHeaderInfo(nbl, hdrInfo, &hdrSize, &seqNumber);
}