[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