Skip to content

Commit

Permalink
datapath-windows: Update OvsGetExtInfoIoctl() to the new vport add wo…
Browse files Browse the repository at this point in the history
…rkflow

I applied the patches for the new vport add workflow that is out for
review, and found that some of the existing code in OvsGetExtInfoIoctl()
needs to be updated. In this patch, we add a CPP called
USE_NEW_VPORT_ADD_WORKFLOW and add the fixes under
USE_NEW_VPORT_ADD_WORKFLOW == 1. The current value is set to 0, since
the vport add code is not checked in yet.

Sending out this patch to unblock the vport add code when it gets checked
in. There are other fixes also required, but they are being addressed as
part of the review comments for vport-add.

Signed-off-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
  • Loading branch information
nithinrajub authored and blp committed Oct 9, 2014
1 parent df4879c commit d8cecf5
Showing 1 changed file with 24 additions and 9 deletions.
33 changes: 24 additions & 9 deletions datapath-windows/ovsext/Vport.c
Expand Up @@ -1286,6 +1286,11 @@ OvsConvertIfCountedStrToAnsiStr(PIF_COUNTED_STRING wStr,
}


/*
* XXX: Get rid of USE_NEW_VPORT_ADD_WORKFLOW while checking in the code for
* new vport add workflow, or set USE_NEW_VPORT_ADD_WORKFLOW to 1.
*/
#define USE_NEW_VPORT_ADD_WORKFLOW 0
NTSTATUS
OvsGetExtInfoIoctl(POVS_VPORT_GET vportGet,
POVS_VPORT_EXT_INFO extInfo)
Expand All @@ -1294,17 +1299,19 @@ OvsGetExtInfoIoctl(POVS_VPORT_GET vportGet,
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);
#if USE_NEW_VPORT_ADD_WORKFLOW == 0
vport = OvsFindVportByOvsName(gOvsSwitchContext, vportGet->name,
(UINT32)len);
#else
vport = OvsFindVportByHvName(gOvsSwitchContext, vportGet->name);
#endif
} else {
vport = OvsFindVportByPortNo(gOvsSwitchContext, vportGet->portNo);
}
Expand Down Expand Up @@ -1347,32 +1354,40 @@ OvsGetExtInfoIoctl(POVS_VPORT_GET vportGet,
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;
}

#if USE_NEW_VPORT_ADD_WORKFLOW == 0
RtlCopyMemory(extInfo->name, vport->ovsName, vport->ovsNameLen + 1);
#endif
NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
NdisReleaseSpinLock(gOvsCtrlLock);
if (doConvert) {
status = OvsConvertIfCountedStrToAnsiStr(&vmName,
#if USE_NEW_VPORT_ADD_WORKFLOW == 1
status = OvsConvertIfCountedStrToAnsiStr(&vport->portFriendlyName,
extInfo->name,
OVS_MAX_PORT_NAME_LENGTH);
if (status != STATUS_SUCCESS) {
OVS_LOG_INFO("Fail to convert NIC name.");
extInfo->vmUUID[0] = 0;
}
#endif

status = OvsConvertIfCountedStrToAnsiStr(&vport->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,
status = OvsConvertIfCountedStrToAnsiStr(&vport->nicName,
extInfo->vifUUID,
OVS_MAX_VIF_UUID_LEN);
if (status != STATUS_SUCCESS) {
OVS_LOG_INFO("Fail to convert nic name");
OVS_LOG_INFO("Fail to convert nic UUID");
extInfo->vifUUID[0] = 0;
}
/*
Expand Down

0 comments on commit d8cecf5

Please sign in to comment.