diff options
author | Nithin Raju <nithin@vmware.com> | 2014-11-18 17:42:43 -0800 |
---|---|---|
committer | Gurucharan Shetty <gshetty@nicira.com> | 2014-11-20 07:10:53 -0800 |
commit | 70e562509a4df0a46012999845cb0b96b676e602 (patch) | |
tree | 908d32303b47fad2095d1a805535f8145893fd05 | |
parent | 2ba811323416042edac6792845bdd35256fc53c7 (diff) | |
download | openvswitch-70e562509a4df0a46012999845cb0b96b676e602.tar.gz |
datapath-windows: add WCHAR version of OvsFindVportByHvName()
In this patch, we rename the existing OvsFindVportByHvName() to
OvsFindVportByHvNameA() to indicate that the input string is an ASCII
string. We also define a OvsFindVportByHvNameW() that takes as input a
WCHAR string.
This will be used later in HvCreatPort() to check for ports with
duplicate names.
Signed-off-by: Nithin Raju <nithin@vmware.com>
Acked-by: Ankur Sharma <ankursharma@vmware.com>
Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
-rw-r--r-- | datapath-windows/ovsext/Datapath.c | 2 | ||||
-rw-r--r-- | datapath-windows/ovsext/Vport.c | 40 | ||||
-rw-r--r-- | datapath-windows/ovsext/Vport.h | 16 |
3 files changed, 34 insertions, 24 deletions
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c index 6de011cac..ca83b1e97 100644 --- a/datapath-windows/ovsext/Datapath.c +++ b/datapath-windows/ovsext/Datapath.c @@ -1787,7 +1787,7 @@ OvsNewVportCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, vport = gOvsSwitchContext->internalVport; } else if (portType == OVS_VPORT_TYPE_NETDEV) { /* External ports can also be looked up like VIF ports. */ - vport = OvsFindVportByHvName(gOvsSwitchContext, portName); + vport = OvsFindVportByHvNameA(gOvsSwitchContext, portName); } else { ASSERT(OvsIsTunnelVportType(portType) || (portType == OVS_VPORT_TYPE_INTERNAL && isBridgeInternal)); diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c index 33aa95e1e..5c9795d2c 100644 --- a/datapath-windows/ovsext/Vport.c +++ b/datapath-windows/ovsext/Vport.c @@ -65,6 +65,8 @@ static NTSTATUS CreateNetlinkMesgForNetdev(POVS_VPORT_EXT_INFO info, PVOID outBuffer, UINT32 outBufLen, int dpIfIndex); +static POVS_VPORT_ENTRY OvsFindVportByHvNameW(POVS_SWITCH_CONTEXT switchContext, + PWSTR wsName, SIZE_T wstrSize); /* * Functions implemented in relaton to NDIS port manipulation. @@ -560,24 +562,13 @@ OvsFindVportByOvsName(POVS_SWITCH_CONTEXT switchContext, /* OvsFindVportByHvName: "name" is assumed to be null-terminated */ POVS_VPORT_ENTRY -OvsFindVportByHvName(POVS_SWITCH_CONTEXT switchContext, - PSTR name) +OvsFindVportByHvNameW(POVS_SWITCH_CONTEXT switchContext, + PWSTR wsName, SIZE_T wstrSize) { POVS_VPORT_ENTRY vport = NULL; PLIST_ENTRY head, link; - /* 'portFriendlyName' is not NUL-terminated. */ - SIZE_T length = strlen(name); - SIZE_T wstrSize = length * sizeof(WCHAR); UINT i; - PWSTR wsName = OvsAllocateMemory(wstrSize); - if (!wsName) { - return NULL; - } - for (i = 0; i < length; i++) { - wsName[i] = name[i]; - } - for (i = 0; i < OVS_MAX_VPORT_ARRAY_SIZE; i++) { head = &(switchContext->portIdHashArray[i]); LIST_FORALL(head, link) { @@ -605,6 +596,27 @@ Cleanup: } POVS_VPORT_ENTRY +OvsFindVportByHvNameA(POVS_SWITCH_CONTEXT switchContext, + PSTR name) +{ + POVS_VPORT_ENTRY vport = NULL; + /* 'portFriendlyName' is not NUL-terminated. */ + SIZE_T length = strlen(name); + SIZE_T wstrSize = length * sizeof(WCHAR); + UINT i; + + PWSTR wsName = OvsAllocateMemory(wstrSize); + if (!wsName) { + return NULL; + } + for (i = 0; i < length; i++) { + wsName[i] = name[i]; + } + vport = OvsFindVportByHvNameW(switchContext, wsName, wstrSize); + OvsFreeMemory(wsName); + return vport; +} +POVS_VPORT_ENTRY OvsFindVportByPortIdAndNicIndex(POVS_SWITCH_CONTEXT switchContext, NDIS_SWITCH_PORT_ID portId, NDIS_SWITCH_NIC_INDEX index) @@ -1259,7 +1271,7 @@ OvsGetExtInfoIoctl(POVS_VPORT_GET vportGet, NDIS_RWL_AT_DISPATCH_LEVEL); if (vportGet->portNo == 0) { StringCbLengthA(vportGet->name, OVS_MAX_PORT_NAME_LENGTH - 1, &len); - vport = OvsFindVportByHvName(gOvsSwitchContext, vportGet->name); + vport = OvsFindVportByHvNameA(gOvsSwitchContext, vportGet->name); if (vport != NULL) { /* If the port is not a Hyper-V port and it has been added earlier, * we'll find it in 'ovsPortNameHashArray'. */ diff --git a/datapath-windows/ovsext/Vport.h b/datapath-windows/ovsext/Vport.h index ec7c21c07..e266caa58 100644 --- a/datapath-windows/ovsext/Vport.h +++ b/datapath-windows/ovsext/Vport.h @@ -139,15 +139,13 @@ OvsFindVportByPortNo(struct _OVS_SWITCH_CONTEXT *switchContext, UINT32 portNo); /* "name" is null-terminated */ -POVS_VPORT_ENTRY -OvsFindVportByOvsName(POVS_SWITCH_CONTEXT switchContext, - PSTR name); -POVS_VPORT_ENTRY -OvsFindVportByHvName(POVS_SWITCH_CONTEXT switchContext, PSTR name); -POVS_VPORT_ENTRY -OvsFindVportByPortIdAndNicIndex(struct _OVS_SWITCH_CONTEXT *switchContext, - NDIS_SWITCH_PORT_ID portId, - NDIS_SWITCH_NIC_INDEX index); +POVS_VPORT_ENTRY OvsFindVportByOvsName(POVS_SWITCH_CONTEXT switchContext, + PSTR name); +POVS_VPORT_ENTRY OvsFindVportByHvNameA(POVS_SWITCH_CONTEXT switchContext, + PSTR name); +POVS_VPORT_ENTRY OvsFindVportByPortIdAndNicIndex(POVS_SWITCH_CONTEXT switchContext, + NDIS_SWITCH_PORT_ID portId, + NDIS_SWITCH_NIC_INDEX index); NDIS_STATUS OvsAddConfiguredSwitchPorts(struct _OVS_SWITCH_CONTEXT *switchContext); NDIS_STATUS OvsInitConfiguredSwitchNics(struct _OVS_SWITCH_CONTEXT *switchContext); |