[ovs-dev] [PATCH 01/10] datapath-windows: Remove the old IOCTL vport functions.

Alin Serdean aserdean at cloudbasesolutions.com
Thu Oct 9 00:21:05 UTC 2014


The old IOCTL vport functions (using the non-netlink device) are no
longer needed. They should be removed.

Signed-off-by: Samuel Ghinet <sghinet at cloudbasesolutions.com>
Co-authored-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
---
 datapath-windows/ovsext/Vport.c | 399 ----------------------------------------
 datapath-windows/ovsext/Vport.h |  11 --
 2 files changed, 410 deletions(-)

diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c
index 86b8b2d..4a565bc 100644
--- a/datapath-windows/ovsext/Vport.c
+++ b/datapath-windows/ovsext/Vport.c
@@ -68,8 +68,6 @@ static VOID OvsRemoveAndDeleteVport(POVS_SWITCH_CONTEXT switchContext,
                 POVS_VPORT_ENTRY vport);
 static __inline VOID OvsWaitActivate(POVS_SWITCH_CONTEXT switchContext,
                                      ULONG sleepMicroSec);
-static NTSTATUS OvsGetExtInfoIoctl(POVS_VPORT_GET vportGet,
-                                   POVS_VPORT_EXT_INFO extInfo);
 static NTSTATUS CreateNetlinkMesgForNetdev(POVS_VPORT_EXT_INFO info,
                                            POVS_MESSAGE msgIn,
                                            PVOID outBuffer,
@@ -948,129 +946,6 @@ OvsClearAllSwitchVports(POVS_SWITCH_CONTEXT switchContext)
 }
 
 NTSTATUS
-OvsDumpVportIoctl(PVOID inputBuffer,
-                  UINT32 inputLength,
-                  PVOID outputBuffer,
-                  UINT32 outputLength,
-                  UINT32 *replyLen)
-{
-    UINT32 numVports, count;
-    UINT32 dpNo, i;
-    UINT32 *outPtr;
-    POVS_VPORT_ENTRY vport;
-    LOCK_STATE_EX lockState;
-
-    if (inputLength < sizeof (UINT32)) {
-        return STATUS_INVALID_PARAMETER;
-    }
-    dpNo = *(UINT32 *)inputBuffer;
-
-    NdisAcquireSpinLock(gOvsCtrlLock);
-    if (gOvsSwitchContext == NULL ||
-        gOvsSwitchContext->dpNo != dpNo) {
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        return STATUS_INVALID_PARAMETER;
-    }
-    /*
-     * We should hold SwitchContext RW lock
-     */
-
-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState,
-                          NDIS_RWL_AT_DISPATCH_LEVEL);
-    numVports = outputLength/sizeof (UINT32);
-    numVports = MIN(gOvsSwitchContext->numVports, numVports);
-    outPtr = (UINT32 *)outputBuffer;
-    for (i = 0, count = 0;
-         i < OVS_MAX_VPORT_ARRAY_SIZE && count < numVports; i++) {
-        vport = (POVS_VPORT_ENTRY)gOvsSwitchContext->vportArray[i];
-        if (OVS_IS_VPORT_ENTRY_NULL(gOvsSwitchContext, i)) {
-            continue;
-        }
-        if (vport->ovsState == OVS_STATE_CONNECTED ||
-            vport->ovsState == OVS_STATE_NIC_CREATED) {
-            *outPtr = vport->portNo;
-            outPtr++;
-            count++;
-        }
-    }
-    NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-    NdisReleaseSpinLock(gOvsCtrlLock);
-    *replyLen = count * sizeof (UINT32);
-    return STATUS_SUCCESS;
-}
-
-
-NTSTATUS
-OvsGetVportIoctl(PVOID inputBuffer,
-                 UINT32 inputLength,
-                 PVOID outputBuffer,
-                 UINT32 outputLength,
-                 UINT32 *replyLen)
-{
-    UINT32 dpNo;
-    POVS_VPORT_GET get;
-    POVS_VPORT_INFO info;
-    POVS_VPORT_ENTRY vport;
-    size_t len;
-    LOCK_STATE_EX lockState;
-
-    if (inputLength < sizeof (OVS_VPORT_GET) ||
-        outputLength < sizeof (OVS_VPORT_INFO)) {
-        return STATUS_INVALID_PARAMETER;
-    }
-    get = (POVS_VPORT_GET)inputBuffer;
-    dpNo = get->dpNo;
-    info = (POVS_VPORT_INFO)outputBuffer;
-    RtlZeroMemory(info, sizeof (POVS_VPORT_INFO));
-
-    NdisAcquireSpinLock(gOvsCtrlLock);
-    if (gOvsSwitchContext == NULL ||
-        gOvsSwitchContext->dpNo != dpNo) {
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState,
-                          NDIS_RWL_AT_DISPATCH_LEVEL);
-    if (get->portNo == 0) {
-        StringCbLengthA(get->name, OVS_MAX_PORT_NAME_LENGTH - 1, &len);
-        vport = OvsFindVportByOvsName(gOvsSwitchContext, get->name, (UINT32)len);
-    } else {
-        vport = OvsFindVportByPortNo(gOvsSwitchContext, get->portNo);
-    }
-    if (vport == NULL || (vport->ovsState != OVS_STATE_CONNECTED &&
-                          vport->ovsState != OVS_STATE_NIC_CREATED)) {
-        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        /*
-         * XXX Change to NO DEVICE
-         */
-        return STATUS_DEVICE_DOES_NOT_EXIST;
-    }
-    info->dpNo = dpNo;
-    info->portNo = vport->portNo;
-    info->type = vport->ovsType;
-    RtlCopyMemory(info->macAddress, vport->permMacAddress,
-                  sizeof (vport->permMacAddress));
-    RtlCopyMemory(info->name, vport->ovsName, vport->ovsNameLen + 1);
-
-    info->rxPackets = vport->stats.rxPackets;
-    info->rxBytes = vport->stats.rxBytes;
-    info->txPackets = vport->stats.txPackets;
-    info->txBytes = vport->stats.txBytes;
-    info->rxErrors = vport->errStats.rxErrors;
-    info->txErrors = vport->errStats.txErrors;
-    info->rxDropped = vport->errStats.rxDropped;
-    info->txDropped = vport->errStats.txDropped;
-
-    NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-    NdisReleaseSpinLock(gOvsCtrlLock);
-    *replyLen = sizeof (OVS_VPORT_INFO);
-    return STATUS_SUCCESS;
-}
-
-
-NTSTATUS
 OvsInitTunnelVport(POVS_VPORT_ENTRY vport,
                    POVS_VPORT_ADD_REQUEST addReq)
 {
@@ -1099,159 +974,6 @@ OvsInitTunnelVport(POVS_VPORT_ENTRY vport,
 }
 
 NTSTATUS
-OvsAddVportIoctl(PVOID inputBuffer,
-                 UINT32 inputLength,
-                 PVOID outputBuffer,
-                 UINT32 outputLength,
-                 UINT32 *replyLen)
-{
-    NTSTATUS status = STATUS_SUCCESS;
-    POVS_VPORT_INFO vportInfo;
-    POVS_VPORT_ADD_REQUEST addReq;
-    POVS_VPORT_ENTRY vport;
-    LOCK_STATE_EX lockState;
-    UINT32 index;
-    UINT32 portNo;
-
-    OVS_LOG_TRACE("Enter: inputLength: %u, outputLength: %u",
-                  inputLength, outputLength);
-    if (inputLength < sizeof (OVS_VPORT_ADD_REQUEST) ||
-        outputLength < sizeof (OVS_VPORT_INFO)) {
-        status = STATUS_INVALID_PARAMETER;
-        goto vport_add_done;
-    }
-    addReq = (POVS_VPORT_ADD_REQUEST)inputBuffer;
-    addReq->name[OVS_MAX_PORT_NAME_LENGTH - 1] = 0;
-
-    switch (addReq->type) {
-    case OVS_VPORT_TYPE_GRE:
-        index = OVS_GRE_VPORT_INDEX;
-        break;
-    case OVS_VPORT_TYPE_GRE64:
-        index = OVS_GRE64_VPORT_INDEX;
-        break;
-    case OVS_VPORT_TYPE_VXLAN:
-        index = OVS_VXLAN_VPORT_INDEX;
-        break;
-    default:
-        status = STATUS_NOT_SUPPORTED;
-        goto vport_add_done;
-    }
-
-    vport = (POVS_VPORT_ENTRY)OvsAllocateVport();
-    if (vport == NULL) {
-        status = STATUS_INSUFFICIENT_RESOURCES;
-        goto vport_add_done;
-    }
-
-    NdisAcquireSpinLock(gOvsCtrlLock);
-    if (gOvsSwitchContext == NULL ||
-        gOvsSwitchContext->dpNo != addReq->dpNo) {
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        status = STATUS_INVALID_PARAMETER;
-        OvsFreeMemory(vport);
-        goto vport_add_done;
-    }
-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState,
-                          NDIS_RWL_AT_DISPATCH_LEVEL);
-    if (!OVS_IS_VPORT_ENTRY_NULL(gOvsSwitchContext, index)) {
-        status = STATUS_DEVICE_BUSY;
-        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        OvsFreeMemory(vport);
-        goto vport_add_done;
-    }
-
-    status = OvsInitTunnelVport(vport, addReq);
-    if (status != STATUS_SUCCESS) {
-        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        OvsFreeMemory(vport);
-        goto vport_add_done;
-    }
-
-    status = OvsInitVportCommon(gOvsSwitchContext, vport);
-    ASSERT(status == NDIS_STATUS_SUCCESS);
-
-    vport->ovsState = OVS_STATE_CONNECTED;
-    vport->nicState = NdisSwitchNicStateConnected;
-
-    vportInfo = (POVS_VPORT_INFO)outputBuffer;
-
-    RtlZeroMemory(vportInfo, sizeof (POVS_VPORT_INFO));
-    vportInfo->dpNo = gOvsSwitchContext->dpNo;
-    vportInfo->portNo = vport->portNo;
-    vportInfo->type = vport->ovsType;
-    RtlCopyMemory(vportInfo->name, vport->ovsName, vport->ovsNameLen + 1);
-    portNo = vport->portNo;
-
-    NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-    NdisReleaseSpinLock(gOvsCtrlLock);
-    OvsPostEvent(portNo, OVS_EVENT_CONNECT | OVS_EVENT_LINK_UP);
-    *replyLen = sizeof (OVS_VPORT_INFO);
-    status = STATUS_SUCCESS;
-vport_add_done:
-    OVS_LOG_TRACE("Exit: byteReturned: %u, status: %x",
-                  *replyLen, status);
-    return status;
-}
-
-NTSTATUS
-OvsDelVportIoctl(PVOID inputBuffer,
-                 UINT32 inputLength,
-                 UINT32 *replyLen)
-{
-    NTSTATUS status = STATUS_SUCCESS;
-    POVS_VPORT_DELETE_REQUEST delReq;
-    LOCK_STATE_EX lockState;
-    POVS_VPORT_ENTRY vport;
-    size_t len;
-    UINT32 portNo = 0;
-
-    OVS_LOG_TRACE("Enter: inputLength: %u", inputLength);
-
-    if (inputLength < sizeof (OVS_VPORT_DELETE_REQUEST)) {
-        status = STATUS_INVALID_PARAMETER;
-        goto vport_del_done;
-    }
-    delReq = (POVS_VPORT_DELETE_REQUEST)inputBuffer;
-
-    NdisAcquireSpinLock(gOvsCtrlLock);
-    if (gOvsSwitchContext == NULL ||
-        gOvsSwitchContext->dpNo != delReq->dpNo) {
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        status = STATUS_INVALID_PARAMETER;
-        goto vport_del_done;
-    }
-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState,
-                          NDIS_RWL_AT_DISPATCH_LEVEL);
-    if (delReq->portNo == 0) {
-        StringCbLengthA(delReq->name, OVS_MAX_PORT_NAME_LENGTH - 1, &len);
-        vport = OvsFindVportByOvsName(gOvsSwitchContext, delReq->name,
-                                      (UINT32)len);
-    } else {
-        vport = OvsFindVportByPortNo(gOvsSwitchContext, delReq->portNo);
-    }
-    if (vport) {
-        OVS_LOG_INFO("delete vport: %s, portNo: %x", vport->ovsName,
-                     vport->portNo);
-        portNo = vport->portNo;
-        OvsRemoveAndDeleteVport(gOvsSwitchContext, vport);
-    } else {
-        status = STATUS_DEVICE_DOES_NOT_EXIST;
-    }
-    NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-    NdisReleaseSpinLock(gOvsCtrlLock);
-    if (vport) {
-        OvsPostEvent(portNo, OVS_EVENT_DISCONNECT | OVS_EVENT_LINK_DOWN);
-    }
-vport_del_done:
-    OVS_LOG_TRACE("Exit: byteReturned: %u, status: %x",
-                  *replyLen, status);
-    return status;
-}
-
-NTSTATUS
 OvsConvertIfCountedStrToAnsiStr(PIF_COUNTED_STRING wStr,
                                 CHAR *str,
                                 UINT16 maxStrLen)
@@ -1285,106 +1007,6 @@ OvsConvertIfCountedStrToAnsiStr(PIF_COUNTED_STRING wStr,
     return STATUS_SUCCESS;
 }
 
-
-NTSTATUS
-OvsGetExtInfoIoctl(POVS_VPORT_GET vportGet,
-                   POVS_VPORT_EXT_INFO extInfo)
-{
-    POVS_VPORT_ENTRY vport;
-    size_t len;
-    LOCK_STATE_EX lockState;
-    NTSTATUS status = STATUS_SUCCESS;
-    NDIS_SWITCH_NIC_NAME nicName;
-    NDIS_VM_NAME vmName;
-    BOOLEAN doConvert = FALSE;
-
-    RtlZeroMemory(extInfo, sizeof (POVS_VPORT_EXT_INFO));
-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState,
-                          NDIS_RWL_AT_DISPATCH_LEVEL);
-    if (vportGet->portNo == 0) {
-        StringCbLengthA(vportGet->name, OVS_MAX_PORT_NAME_LENGTH - 1, &len);
-        vport = OvsFindVportByOvsName(gOvsSwitchContext, vportGet->name,
-                                      (UINT32)len);
-    } else {
-        vport = OvsFindVportByPortNo(gOvsSwitchContext, vportGet->portNo);
-    }
-    if (vport == NULL || (vport->ovsState != OVS_STATE_CONNECTED &&
-                          vport->ovsState != OVS_STATE_NIC_CREATED)) {
-        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-        NdisReleaseSpinLock(gOvsCtrlLock);
-        if (vportGet->portNo) {
-            OVS_LOG_WARN("vport %u does not exist any more", vportGet->portNo);
-        } else {
-            OVS_LOG_WARN("vport %s does not exist any more", vportGet->name);
-        }
-        status = STATUS_DEVICE_DOES_NOT_EXIST;
-        goto ext_info_done;
-    }
-    extInfo->dpNo = vportGet->dpNo;
-    extInfo->portNo = vport->portNo;
-    RtlCopyMemory(extInfo->macAddress, vport->currMacAddress,
-                  sizeof (vport->currMacAddress));
-    RtlCopyMemory(extInfo->permMACAddress, vport->permMacAddress,
-                  sizeof (vport->permMacAddress));
-    if (vport->ovsType == OVS_VPORT_TYPE_NETDEV) {
-        RtlCopyMemory(extInfo->vmMACAddress, vport->vmMacAddress,
-                      sizeof (vport->vmMacAddress));
-    }
-    extInfo->nicIndex = vport->nicIndex;
-    extInfo->portId = vport->portId;
-    extInfo->type = vport->ovsType;
-    extInfo->mtu = vport->mtu;
-    /*
-     * TO be revisit XXX
-     */
-    if (vport->ovsState == OVS_STATE_NIC_CREATED) {
-       extInfo->status = OVS_EVENT_CONNECT | OVS_EVENT_LINK_DOWN;
-    } else if (vport->ovsState == OVS_STATE_CONNECTED) {
-       extInfo->status = OVS_EVENT_CONNECT | OVS_EVENT_LINK_UP;
-    } else {
-       extInfo->status = OVS_EVENT_DISCONNECT;
-    }
-    if (extInfo->type == OVS_VPORT_TYPE_NETDEV &&
-        (vport->ovsState == OVS_STATE_NIC_CREATED  ||
-         vport->ovsState == OVS_STATE_CONNECTED)) {
-        RtlCopyMemory(&vmName, &vport->vmName, sizeof (NDIS_VM_NAME));
-        RtlCopyMemory(&nicName, &vport->nicName, sizeof
-                      (NDIS_SWITCH_NIC_NAME));
-        doConvert = TRUE;
-    } else {
-        extInfo->vmUUID[0] = 0;
-        extInfo->vifUUID[0] = 0;
-    }
-
-    RtlCopyMemory(extInfo->name, vport->ovsName, vport->ovsNameLen + 1);
-    NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-    NdisReleaseSpinLock(gOvsCtrlLock);
-    if (doConvert) {
-        status = OvsConvertIfCountedStrToAnsiStr(&vmName,
-                                                 extInfo->vmUUID,
-                                                 OVS_MAX_VM_UUID_LEN);
-        if (status != STATUS_SUCCESS) {
-            OVS_LOG_INFO("Fail to convert VM name.");
-            extInfo->vmUUID[0] = 0;
-        }
-
-        status = OvsConvertIfCountedStrToAnsiStr(&nicName,
-                                                 extInfo->vifUUID,
-                                                 OVS_MAX_VIF_UUID_LEN);
-        if (status != STATUS_SUCCESS) {
-            OVS_LOG_INFO("Fail to convert nic name");
-            extInfo->vifUUID[0] = 0;
-        }
-        /*
-         * for now ignore status
-         */
-        status = STATUS_SUCCESS;
-    }
-
-ext_info_done:
-    return status;
-}
-
 /*
  * --------------------------------------------------------------------------
  *  Command Handler for 'OVS_WIN_NETDEV_CMD_GET'.
@@ -1397,10 +1019,8 @@ OvsGetNetdevCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
     NTSTATUS status = STATUS_SUCCESS;
     POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
     POVS_MESSAGE msgOut = (POVS_MESSAGE)usrParamsCtx->outputBuffer;
-    NL_ERROR nlError = NL_ERROR_SUCCESS;
     OVS_VPORT_GET vportGet;
     OVS_VPORT_EXT_INFO info;
-    LOCK_STATE_EX lockState;
 
     static const NL_POLICY ovsNetdevPolicy[] = {
         [OVS_WIN_NETDEV_ATTR_NAME] = { .type = NL_A_STRING,
@@ -1434,16 +1054,6 @@ OvsGetNetdevCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
     RtlCopyMemory(&vportGet.name, NlAttrGet(netdevAttrs[OVS_VPORT_ATTR_NAME]),
                   NlAttrGetSize(netdevAttrs[OVS_VPORT_ATTR_NAME]));
 
-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0);
-    status = OvsGetExtInfoIoctl(&vportGet, &info);
-    if (status == STATUS_DEVICE_DOES_NOT_EXIST) {
-        nlError = NL_ERROR_NODEV;
-        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-        OvsReleaseCtrlLock();
-        goto cleanup;
-    }
-    NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
-
     status = CreateNetlinkMesgForNetdev(&info, msgIn,
                  usrParamsCtx->outputBuffer, usrParamsCtx->outputLength,
                  gOvsSwitchContext->dpNo);
@@ -1452,15 +1062,6 @@ OvsGetNetdevCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
     }
     OvsReleaseCtrlLock();
 
-cleanup:
-    if (nlError != NL_ERROR_SUCCESS) {
-        POVS_MESSAGE_ERROR msgError = (POVS_MESSAGE_ERROR)
-            usrParamsCtx->outputBuffer;
-
-        BuildErrorMsg(msgIn, msgError, nlError);
-        *replyLen = msgError->nlMsg.nlmsgLen;
-    }
-
     return STATUS_SUCCESS;
 }
 
diff --git a/datapath-windows/ovsext/Vport.h b/datapath-windows/ovsext/Vport.h
index 0439de8..7bad546 100644
--- a/datapath-windows/ovsext/Vport.h
+++ b/datapath-windows/ovsext/Vport.h
@@ -117,17 +117,6 @@ NDIS_STATUS OvsInitConfiguredSwitchNics(struct _OVS_SWITCH_CONTEXT *switchContex
 
 VOID OvsClearAllSwitchVports(struct _OVS_SWITCH_CONTEXT *switchContext);
 
-NTSTATUS OvsDumpVportIoctl(PVOID inputBuffer, UINT32 inputLength,
-                           PVOID outputBuffer, UINT32 outputLength,
-                           UINT32 *replyLen);
-NTSTATUS OvsGetVportIoctl(PVOID inputBuffer, UINT32 inputLength,
-                          PVOID outputBuffer, UINT32 outputLength,
-                          UINT32 *replyLen);
-NTSTATUS OvsAddVportIoctl(PVOID inputBuffer, UINT32 inputLength,
-                          PVOID outputBuffer, UINT32 outputLength,
-                          UINT32 *replyLen);
-NTSTATUS OvsDelVportIoctl(PVOID inputBuffer, UINT32 inputLength,
-                          UINT32 *replyLen);
 NDIS_STATUS OvsCreateNic(POVS_SWITCH_CONTEXT switchContext,
                          PNDIS_SWITCH_NIC_PARAMETERS nicParam);
 NDIS_STATUS OvsCreatePort(POVS_SWITCH_CONTEXT switchContext,
-- 
1.9.4.msysgit.1



More information about the dev mailing list