diff options
-rw-r--r-- | datapath-windows/ovsext/Datapath.c | 3 | ||||
-rw-r--r-- | datapath-windows/ovsext/Netlink/NetlinkError.h | 8 | ||||
-rw-r--r-- | datapath-windows/ovsext/Vxlan.c | 6 | ||||
-rw-r--r-- | 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 2cc149c54..46c34ebc6 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 827fa8cc6..53c935ff2 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 0a68c9cd2..1ce5af249 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 dab5d9ba5..d84796daa 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); |