Message ID | 20161209200446.78864-2-vsairam@vmware.com |
---|---|
State | Superseded |
Delegated to: | Guru Shetty |
Headers | show |
Just a small alignment problem. Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> > -----Original Message----- > From: ovs-dev-bounces@openvswitch.org [mailto:ovs-dev- > bounces@openvswitch.org] On Behalf Of Sairam Venugopal > Sent: Friday, December 9, 2016 10:05 PM > To: dev@openvswitch.org > Subject: [ovs-dev] [PATCH v2 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 <vsairam@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 c7fcfa8..a60a198 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..428b12e 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, [Alin Serdean] Alignment issue > + 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 > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
diff --git a/datapath-windows/ovsext/Conntrack-tcp.c b/datapath-windows/ovsext/Conntrack-tcp.c index c7fcfa8..a60a198 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..428b12e 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);
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 <vsairam@vmware.com> --- datapath-windows/ovsext/Conntrack-tcp.c | 15 --------------- datapath-windows/ovsext/Conntrack.h | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 15 deletions(-)