[ovs-dev] [PATCH 2/7] datapath-windows: add WCHAR version of OvsFindVportByHvName()
Ankur Sharma
ankursharma at vmware.com
Tue Nov 18 01:38:53 UTC 2014
Minor comments inline.
Acked-by: Ankur Sharma <ankursharma at vmware.com>
________________________________________
From: dev <dev-bounces at openvswitch.org> on behalf of Nithin Raju <nithin at vmware.com>
Sent: Tuesday, November 11, 2014 7:04 PM
To: dev at openvswitch.org
Subject: [ovs-dev] [PATCH 2/7] 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 at vmware.com>
---
datapath-windows/ovsext/Datapath.c | 2 +-
datapath-windows/ovsext/Vport.c | 40 +++++++++++++++++++++++------------
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 1b504a2..aaf8caf 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -1812,7 +1812,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 ff105b7..6d02a0d 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);
[ANKUR]: formatting should be fixed.
/*
* Functions implemented in relaton to NDIS port manipulation.
@@ -503,24 +505,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) {
@@ -548,6 +539,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)
@@ -1202,7 +1214,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 b4e4fca..73face6 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(
+ struct _OVS_SWITCH_CONTEXT *switchContext, NDIS_SWITCH_PORT_ID portId,
+ NDIS_SWITCH_NIC_INDEX index);
[ANKUR]: formatting should be fixed.
NDIS_STATUS OvsAddConfiguredSwitchPorts(struct _OVS_SWITCH_CONTEXT *switchContext);
NDIS_STATUS OvsInitConfiguredSwitchNics(struct _OVS_SWITCH_CONTEXT *switchContext);
--
1.7.4.1
_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailman_listinfo_dev&d=AAIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=RDZsrBxhAiOewDSD-jiF-W03FqHevF2o7haW6eQzmtA&m=421PR_q8Gwml39Avyn_PrivfBhITy74aqDYUfbMpNdA&s=SPRZnyngc1ngSUnpM-RCbj_FNM4Xj40T-NnvK9YfyPg&e=
More information about the dev
mailing list