[ovs-dev] [PATCH v3 2/5] datapath-windows: Added the API for getting unused space in nlbuf.

Ankur Sharma ankursharma at vmware.com
Fri Oct 3 22:53:42 UTC 2014


Also, the boundary check in NlBufAt was a little weird.
Fixed the same.

Signed-off-by: Ankur Sharma <ankursharma at vmware.com>
Acked-by: Nithin Raju <nithin at vmware.com>
---
 datapath-windows/ovsext/Datapath.c           |  3 +--
 datapath-windows/ovsext/Netlink/NetlinkBuf.c |  4 +++-
 datapath-windows/ovsext/Netlink/NetlinkBuf.h | 14 ++++++++++++++
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index 44cdfc9..2d2468e 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -925,8 +925,7 @@ OvsDpFillInfo(POVS_SWITCH_CONTEXT ovsSwitchContext,
     OVS_DATAPATH *datapath = &ovsSwitchContext->datapath;
     PNL_MSG_HDR nlMsg;
 
-    /* XXX: Add API for nlBuf->bufRemLen. */
-    ASSERT(NlBufAt(nlBuf, 0, 0) != 0 && nlBuf->bufRemLen >= sizeof *msgIn);
+    ASSERT(NlBufAt(nlBuf, 0, 0) != 0 && NlBufRemLen(nlBuf) >= sizeof *msgIn);
 
     msgOutTmp.nlMsg.nlmsgType = OVS_WIN_NL_DATAPATH_FAMILY_ID;
     msgOutTmp.nlMsg.nlmsgFlags = 0;  /* XXX: ? */
diff --git a/datapath-windows/ovsext/Netlink/NetlinkBuf.c b/datapath-windows/ovsext/Netlink/NetlinkBuf.c
index 918bddd..0177e88 100644
--- a/datapath-windows/ovsext/Netlink/NetlinkBuf.c
+++ b/datapath-windows/ovsext/Netlink/NetlinkBuf.c
@@ -277,7 +277,8 @@ done:
  *
  *    Returns pointer to buffer at input offset.
  *    bufLen is used to verify that expected data length
- *    is within valid boundaries.
+ *    is within valid boundaries. Here by boundaries we mean
+ *    within head and tail.
  * --------------------------------------------------------------------------
  */
 PCHAR
@@ -291,6 +292,7 @@ NlBufAt(PNL_BUFFER nlBuf, UINT32 offset, UINT32 bufLen)
         goto done;
     }
 
+    /* Check if requested buffer is within head and tail */
     if ((offset + bufLen) > NL_BUF_USED_SPACE(nlBuf)) {
         goto done;
     }
diff --git a/datapath-windows/ovsext/Netlink/NetlinkBuf.h b/datapath-windows/ovsext/Netlink/NetlinkBuf.h
index b8f2aa0..c52b9cc 100644
--- a/datapath-windows/ovsext/Netlink/NetlinkBuf.h
+++ b/datapath-windows/ovsext/Netlink/NetlinkBuf.h
@@ -52,4 +52,18 @@ NlBufSize(PNL_BUFFER nlBuf)
     return (nlBuf->bufLen - nlBuf->bufRemLen);
 }
 
+/*
+ * --------------------------------------------------------------------------
+ * NlBufRemLen --
+ *
+ *    Returns the unused size of buffer.
+ * --------------------------------------------------------------------------
+ */
+static __inline UINT32
+NlBufRemLen(PNL_BUFFER nlBuf)
+{
+    ASSERT(nlBuf);
+    return (nlBuf->bufRemLen);
+}
+
 #endif /* __NETLINK_BUF_H_ */
-- 
1.9.1




More information about the dev mailing list