summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Vport.c
diff options
context:
space:
mode:
authorNithin Raju <nithin@vmware.com>2014-11-18 17:42:43 -0800
committerGurucharan Shetty <gshetty@nicira.com>2014-11-20 07:10:53 -0800
commit70e562509a4df0a46012999845cb0b96b676e602 (patch)
tree908d32303b47fad2095d1a805535f8145893fd05 /datapath-windows/ovsext/Vport.c
parent2ba811323416042edac6792845bdd35256fc53c7 (diff)
downloadopenvswitch-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>
Diffstat (limited to 'datapath-windows/ovsext/Vport.c')
-rw-r--r--datapath-windows/ovsext/Vport.c40
1 files changed, 26 insertions, 14 deletions
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'. */