summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext
diff options
context:
space:
mode:
authorNithin Raju <nithin@vmware.com>2014-10-06 13:07:22 -0700
committerBen Pfaff <blp@nicira.com>2014-10-06 15:38:23 -0700
commitd952b66885200627b70b24acde8fe81a7a31c7c1 (patch)
tree1449ea27caba16e100d55a0eb9c1e65916384584 /datapath-windows/ovsext
parent2b144cbb05f8af1836f11804b30e5d01e28d7394 (diff)
downloadopenvswitch-d952b66885200627b70b24acde8fe81a7a31c7c1.tar.gz
datapath-windows: Some fixes in vport get code
In this patch, we make some fixes in the vport get code as well as elevating some utility functions from static to non-static. Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext')
-rw-r--r--datapath-windows/ovsext/Datapath.c17
-rw-r--r--datapath-windows/ovsext/Datapath.h9
2 files changed, 21 insertions, 5 deletions
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index b873b38f0..071007af3 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -1261,7 +1261,7 @@ OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx)
static VOID
BuildMsgOut(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut, UINT16 type,
- UINT32 length, UINT16 flags)
+ UINT32 length, UINT16 flags)
{
msgOut->nlMsg.nlmsgType = type;
msgOut->nlMsg.nlmsgFlags = flags;
@@ -1270,18 +1270,23 @@ BuildMsgOut(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut, UINT16 type,
msgOut->nlMsg.nlmsgLen = length;
msgOut->genlMsg.cmd = msgIn->genlMsg.cmd;
- msgOut->genlMsg.version = nlDatapathFamilyOps.version;
+ msgOut->genlMsg.version = msgIn->genlMsg.version;
msgOut->genlMsg.reserved = 0;
}
-static VOID
+/*
+ * XXX: should move out these functions to a Netlink.c or to a OvsMessage.c
+ * or even make them inlined functions in Datapath.h. Can be done after the
+ * first sprint once we have more code to refactor.
+ */
+VOID
BuildReplyMsgFromMsgIn(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut, UINT16 flags)
{
BuildMsgOut(msgIn, msgOut, msgIn->nlMsg.nlmsgType, sizeof(OVS_MESSAGE),
flags);
}
-static VOID
+VOID
BuildErrorMsg(POVS_MESSAGE msgIn, POVS_MESSAGE_ERROR msgOut, UINT errorCode)
{
BuildMsgOut(msgIn, (POVS_MESSAGE)msgOut, NLMSG_ERROR,
@@ -1538,6 +1543,7 @@ OvsGetVport(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
}
OvsReleaseCtrlLock();
+ NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0);
if (vportAttrs[OVS_VPORT_ATTR_NAME] != NULL) {
vport = OvsFindVportByOvsName(gOvsSwitchContext,
NlAttrGet(vportAttrs[OVS_VPORT_ATTR_NAME]),
@@ -1547,15 +1553,16 @@ OvsGetVport(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
NlAttrGetU32(vportAttrs[OVS_VPORT_ATTR_PORT_NO]));
} else {
nlError = NL_ERROR_INVAL;
+ NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
goto Cleanup;
}
if (!vport) {
nlError = NL_ERROR_NODEV;
+ NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
goto Cleanup;
}
- NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0);
status = OvsCreateMsgFromVport(vport, msgIn, usrParamsCtx->outputBuffer,
usrParamsCtx->outputLength,
gOvsSwitchContext->dpNo);
diff --git a/datapath-windows/ovsext/Datapath.h b/datapath-windows/ovsext/Datapath.h
index e3bb638b0..b9c741775 100644
--- a/datapath-windows/ovsext/Datapath.h
+++ b/datapath-windows/ovsext/Datapath.h
@@ -92,6 +92,15 @@ POVS_OPEN_INSTANCE OvsGetOpenInstance(PFILE_OBJECT fileObject,
NTSTATUS OvsCompleteIrpRequest(PIRP irp, ULONG_PTR infoPtr, NTSTATUS status);
+VOID OvsAcquireCtrlLock();
+VOID OvsReleaseCtrlLock();
+
+/* XXX: Move this to netlink.[ch] eventually. */
+VOID BuildReplyMsgFromMsgIn(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut,
+ UINT16 flags);
+VOID BuildErrorMsg(POVS_MESSAGE msgIn, POVS_MESSAGE_ERROR msgOut,
+ UINT errorCode);
+
/*
* Utility structure and functions to collect in one place all the parameters
* passed during a call from userspace.