The payload calculation in OvsGetTcpHeader is wrong:
`ntohs(ipHdr->tot_len) - expr` instead of `ntohs((ipHdr->tot_len) - expr)`.

We already have a macro for that calculation defined in NetProto.h so use it.

Signed-off-by: Alin Gabriel Serdean <[email protected]>
---
 datapath-windows/ovsext/Conntrack.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/datapath-windows/ovsext/Conntrack.h 
b/datapath-windows/ovsext/Conntrack.h
index d4152b33a..044fb436c 100644
--- a/datapath-windows/ovsext/Conntrack.h
+++ b/datapath-windows/ovsext/Conntrack.h
@@ -175,8 +175,7 @@ OvsGetTcpHeader(PNET_BUFFER_LIST nbl,
     tcp = (TCPHdr *)((PCHAR)ipHdr + ipHdr->ihl * 4);
     if (tcp->doff * 4 >= sizeof *tcp) {
         NdisMoveMemory(dest, tcp, sizeof(TCPHdr));
-        *tcpPayloadLen = ntohs((ipHdr->tot_len) - (ipHdr->ihl * 4) -
-                               (TCP_HDR_LEN(tcp)));
+        *tcpPayloadLen = TCP_DATA_LENGTH(ipHdr, tcp);
         return storage;
     }
 
-- 
2.16.1.windows.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to