[ovs-dev] [PATCH 6/7 v3] datapath-windows: Change return type of OvsInitVxlanTunnel()

Nithin Raju nithin at vmware.com
Wed Nov 19 01:42:47 UTC 2014


OvsInitVxlanTunnel() need not return a NL_ERROR. In this patch, we
change it to NTSTATUS, and also update the mapping function that maps a
NTSTATUS to NL_ERROR.

Signed-off-by: Nithin Raju <nithin at vmware.com>
Acked-by: Ankur Sharma <ankursharma at vmware.com>
---
 datapath-windows/ovsext/Datapath.c             |    3 ++-
 datapath-windows/ovsext/Netlink/NetlinkError.h |    8 +++++++-
 datapath-windows/ovsext/Vxlan.c                |    6 +++---
 datapath-windows/ovsext/Vxlan.h                |    2 +-
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index 2cc149c..46c34eb 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -1802,7 +1802,8 @@ OvsNewVportCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
         vportAllocated = TRUE;
 
         if (OvsIsTunnelVportType(portType)) {
-            nlError = OvsInitTunnelVport(vport, portType, VXLAN_UDP_PORT);
+            status = OvsInitTunnelVport(vport, portType, VXLAN_UDP_PORT);
+            nlError = NlMapStatusToNlErr(status);
         } else {
             OvsInitBridgeInternalVport(vport);
         }
diff --git a/datapath-windows/ovsext/Netlink/NetlinkError.h b/datapath-windows/ovsext/Netlink/NetlinkError.h
index 827fa8c..53c935f 100644
--- a/datapath-windows/ovsext/Netlink/NetlinkError.h
+++ b/datapath-windows/ovsext/Netlink/NetlinkError.h
@@ -202,13 +202,19 @@ typedef enum _NL_ERROR_
 static __inline
 NlMapStatusToNlErr(NTSTATUS status)
 {
-    NL_ERROR ret = NL_ERROR_SUCCESS;
+    NL_ERROR ret = NL_ERROR_INVAL;
 
     switch (status)
     {
     case STATUS_NOT_SUPPORTED:
       ret = NL_ERROR_NOTSUPP;
       break;
+    case STATUS_INSUFFICIENT_RESOURCES:
+      ret = NL_ERROR_NOMEM;
+      break;
+    case STATUS_SUCCESS:
+      ret = NL_ERROR_SUCCESS;
+      break;
     default:
       break;
     }
diff --git a/datapath-windows/ovsext/Vxlan.c b/datapath-windows/ovsext/Vxlan.c
index 0a68c9c..1ce5af2 100644
--- a/datapath-windows/ovsext/Vxlan.c
+++ b/datapath-windows/ovsext/Vxlan.c
@@ -53,7 +53,7 @@ extern POVS_SWITCH_CONTEXT gOvsSwitchContext;
  * udpDestPort: the vxlan is set as payload to a udp frame. If the destination
  * port of an udp frame is udpDestPort, we understand it to be vxlan.
  */
-NL_ERROR
+NTSTATUS
 OvsInitVxlanTunnel(POVS_VPORT_ENTRY vport,
                    UINT16 udpDestPort)
 {
@@ -61,7 +61,7 @@ OvsInitVxlanTunnel(POVS_VPORT_ENTRY vport,
 
     vxlanPort = OvsAllocateMemory(sizeof (*vxlanPort));
     if (vxlanPort == NULL) {
-        return NL_ERROR_NOMEM;
+        return STATUS_INSUFFICIENT_RESOURCES;
     }
 
     RtlZeroMemory(vxlanPort, sizeof(*vxlanPort));
@@ -74,7 +74,7 @@ OvsInitVxlanTunnel(POVS_VPORT_ENTRY vport,
     ASSERT(vxlanPort->dstPort == VXLAN_UDP_PORT);
     vport->priv = (PVOID)vxlanPort;
 
-    return NL_ERROR_SUCCESS;
+    return STATUS_SUCCESS;
 }
 
 
diff --git a/datapath-windows/ovsext/Vxlan.h b/datapath-windows/ovsext/Vxlan.h
index dab5d9b..d84796d 100644
--- a/datapath-windows/ovsext/Vxlan.h
+++ b/datapath-windows/ovsext/Vxlan.h
@@ -47,7 +47,7 @@ typedef struct VXLANHdr {
     UINT32   reserved2:8;
 } VXLANHdr;
 
-NL_ERROR OvsInitVxlanTunnel(POVS_VPORT_ENTRY vport,
+NTSTATUS OvsInitVxlanTunnel(POVS_VPORT_ENTRY vport,
                             UINT16 udpDestPort);
 
 VOID OvsCleanupVxlanTunnel(POVS_VPORT_ENTRY vport);
-- 
1.7.4.1




More information about the dev mailing list