diff options
author | Nithin Raju <nithin@vmware.com> | 2014-10-06 13:07:22 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2014-10-06 15:38:23 -0700 |
commit | d952b66885200627b70b24acde8fe81a7a31c7c1 (patch) | |
tree | 1449ea27caba16e100d55a0eb9c1e65916384584 /datapath-windows/ovsext/Datapath.c | |
parent | 2b144cbb05f8af1836f11804b30e5d01e28d7394 (diff) | |
download | openvswitch-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/Datapath.c')
-rw-r--r-- | datapath-windows/ovsext/Datapath.c | 17 |
1 files changed, 12 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); |