Acked-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
> -----Original Message----- > From: ovs-dev-boun...@openvswitch.org [mailto:ovs-dev- > boun...@openvswitch.org] On Behalf Of Sairam Venugopal > Sent: Saturday, December 17, 2016 12:28 AM > To: d...@openvswitch.org > Subject: [ovs-dev] [PATCH v3 1/4] datapath-windows: Conntrack - Fix > OvsGetTcpPayloadLength() > > Move the OvsGetTcpPayloadLength() to common header. Update the code > to check for null references and the correct size of the TCP header. > > Signed-off-by: Sairam Venugopal <vsai...@vmware.com> > --- > datapath-windows/ovsext/Conntrack-tcp.c | 15 --------------- > datapath-windows/ovsext/Conntrack.h | 22 ++++++++++++++++++++++ > 2 files changed, 22 insertions(+), 15 deletions(-) > > diff --git a/datapath-windows/ovsext/Conntrack-tcp.c b/datapath- > windows/ovsext/Conntrack-tcp.c > index 1c46bb0..f533b93 100644 > --- a/datapath-windows/ovsext/Conntrack-tcp.c > +++ b/datapath-windows/ovsext/Conntrack-tcp.c > @@ -184,21 +184,6 @@ OvsTcpGetWscale(const TCPHdr *tcp) > return wscale; > } > > -static __inline uint32_t > -OvsGetTcpPayloadLength(PNET_BUFFER_LIST nbl) -{ > - IPHdr *ipHdr; > - char *ipBuf[sizeof(IPHdr)]; > - PNET_BUFFER curNb; > - curNb = NET_BUFFER_LIST_FIRST_NB(nbl); > - ipHdr = NdisGetDataBuffer(curNb, sizeof *ipHdr, (PVOID) &ipBuf, > - 1 /*no align*/, 0); > - TCPHdr *tcp = (TCPHdr *)((PCHAR)ipHdr + ipHdr->ihl * 4); > - return (UINT16)ntohs(ipHdr->tot_len) > - - (ipHdr->ihl * 4) > - - (sizeof * tcp); > -} > - > static __inline struct conn_tcp* > OvsCastConntrackEntryToTcpEntry(OVS_CT_ENTRY* conn) { diff --git > a/datapath-windows/ovsext/Conntrack.h b/datapath- > windows/ovsext/Conntrack.h > index 270e2dd..733596d 100644 > --- a/datapath-windows/ovsext/Conntrack.h > +++ b/datapath-windows/ovsext/Conntrack.h > @@ -109,6 +109,28 @@ OvsConntrackUpdateExpiration(OVS_CT_ENTRY > *ctEntry, > ctEntry->expiration = now + interval; } > > +static __inline UINT32 > +OvsGetTcpPayloadLength(PNET_BUFFER_LIST nbl) { > + IPHdr *ipHdr; > + char *ipBuf[sizeof(IPHdr)]; > + PNET_BUFFER curNb; > + curNb = NET_BUFFER_LIST_FIRST_NB(nbl); > + UINT32 hdrLen = sizeof(EthHdr); > + NdisAdvanceNetBufferDataStart(curNb, hdrLen, FALSE, NULL); > + ipHdr = NdisGetDataBuffer(curNb, sizeof *ipHdr, (PVOID) &ipBuf, > + 1 /*no align*/, 0); > + if (ipHdr == NULL) { > + NdisRetreatNetBufferDataStart(curNb, hdrLen, 0, NULL); > + return 0; > + } > + > + TCPHdr *tcp = (TCPHdr *)((PCHAR)ipHdr + ipHdr->ihl * 4); > + NdisRetreatNetBufferDataStart(curNb, hdrLen, 0, NULL); > + > + return (ntohs(ipHdr->tot_len) - (ipHdr->ihl * 4) - > +(TCP_HDR_LEN(tcp))); } > + > VOID OvsCleanupConntrack(VOID); > NTSTATUS OvsInitConntrack(POVS_SWITCH_CONTEXT context); > > -- > 2.9.0.windows.1 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev