aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNithin Raju <nithin@vmware.com>2014-12-08 09:43:13 -0800
committerBen Pfaff <blp@nicira.com>2014-12-11 16:43:52 -0800
commit1ad44ad455e4f2f96eb98d8b3faf06f3e358c214 (patch)
tree20a654a087513ec6c4e46809920aa2c5d0879c03
parent5fc8ea2d6f0e604cad53e48164d64f0edcf43204 (diff)
datapath-windows: return bool from NlFillOvs[Msg/Hdr]
Per review comment, in this patch, we update the return values of NlFillOvsMsg() and NlFillOvsHdr() from NTSTATUS to BOOLEAN to make them consistent with the Nl* functions. Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Eitan Eliahu <eliahue@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--datapath-windows/ovsext/Flow.c31
-rw-r--r--datapath-windows/ovsext/Netlink/Netlink.c8
-rw-r--r--datapath-windows/ovsext/Netlink/Netlink.h12
-rw-r--r--datapath-windows/ovsext/User.c12
-rw-r--r--datapath-windows/ovsext/Vport.c30
5 files changed, 53 insertions, 40 deletions
diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c
index f50bb39ea..93f37a0ac 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -247,6 +247,7 @@ OvsFlowNlCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
UINT32 *replyLen)
{
NTSTATUS rc = STATUS_SUCCESS;
+ BOOLEAN ok;
POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
POVS_MESSAGE msgOut = (POVS_MESSAGE)usrParamsCtx->outputBuffer;
PNL_MSG_HDR nlMsgHdr = &(msgIn->nlMsg);
@@ -258,7 +259,6 @@ OvsFlowNlCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
OvsFlowStats stats;
struct ovs_flow_stats replyStats;
NL_ERROR nlError = NL_ERROR_SUCCESS;
-
NL_BUFFER nlBuf;
RtlZeroMemory(&mappedFlow, sizeof(OvsFlowPut));
@@ -294,13 +294,14 @@ OvsFlowNlCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
usrParamsCtx->outputLength);
/* Prepare nl Msg headers */
- rc = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
+ ok = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
nlMsgHdr->nlmsgSeq, nlMsgHdr->nlmsgPid,
genlMsgHdr->cmd, OVS_FLOW_VERSION,
ovsHdr->dp_ifindex);
-
- if (rc == STATUS_SUCCESS) {
+ if (ok) {
*replyLen = msgOut->nlMsg.nlmsgLen;
+ } else {
+ rc = STATUS_INVALID_BUFFER_SIZE;
}
}
@@ -330,13 +331,15 @@ OvsFlowNlCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
usrParamsCtx->outputLength);
/* Prepare nl Msg headers */
- rc = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
+ ok = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
nlMsgHdr->nlmsgSeq, nlMsgHdr->nlmsgPid,
genlMsgHdr->cmd, OVS_FLOW_VERSION,
ovsHdr->dp_ifindex);
-
- if (rc != STATUS_SUCCESS) {
+ if (!ok) {
+ rc = STATUS_INVALID_BUFFER_SIZE;
goto done;
+ } else {
+ rc = STATUS_SUCCESS;
}
/* Append OVS_FLOW_ATTR_STATS attribute */
@@ -586,15 +589,20 @@ _FlowNlDumpCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
/* Done with Dump, send NLMSG_DONE */
if (!(dumpOutput.n)) {
+ BOOLEAN ok;
+
OVS_LOG_INFO("Dump Done");
nlMsgOutHdr = (PNL_MSG_HDR)(NlBufAt(&nlBuf, NlBufSize(&nlBuf), 0));
- rc = NlFillNlHdr(&nlBuf, NLMSG_DONE, NLM_F_MULTI,
+ ok = NlFillNlHdr(&nlBuf, NLMSG_DONE, NLM_F_MULTI,
nlMsgHdr->nlmsgSeq, nlMsgHdr->nlmsgPid);
- if (rc != STATUS_SUCCESS) {
+ if (!ok) {
+ rc = STATUS_INVALID_BUFFER_SIZE;
OVS_LOG_ERROR("Unable to prepare DUMP_DONE reply.");
break;
+ } else {
+ rc = STATUS_SUCCESS;
}
NlMsgAlignSize(nlMsgOutHdr);
@@ -603,17 +611,18 @@ _FlowNlDumpCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
FreeUserDumpState(instance);
break;
} else {
+ BOOLEAN ok;
hdrOffset = NlBufSize(&nlBuf);
nlMsgOutHdr = (PNL_MSG_HDR)(NlBufAt(&nlBuf, hdrOffset, 0));
/* Netlink header */
- rc = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, NLM_F_MULTI,
+ ok = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, NLM_F_MULTI,
nlMsgHdr->nlmsgSeq, nlMsgHdr->nlmsgPid,
genlMsgHdr->cmd, genlMsgHdr->version,
ovsHdr->dp_ifindex);
- if (rc != STATUS_SUCCESS) {
+ if (!ok) {
/* Reset rc to success so that we can
* send already added messages to user space. */
rc = STATUS_SUCCESS;
diff --git a/datapath-windows/ovsext/Netlink/Netlink.c b/datapath-windows/ovsext/Netlink/Netlink.c
index 0d48d081d..589e3a1f3 100644
--- a/datapath-windows/ovsext/Netlink/Netlink.c
+++ b/datapath-windows/ovsext/Netlink/Netlink.c
@@ -39,7 +39,7 @@
* Attributes should be added by caller.
* ---------------------------------------------------------------------------
*/
-NTSTATUS
+BOOLEAN
NlFillOvsMsg(PNL_BUFFER nlBuf, UINT16 nlmsgType,
UINT16 nlmsgFlags, UINT32 nlmsgSeq,
UINT32 nlmsgPid, UINT8 genlCmd,
@@ -68,7 +68,7 @@ NlFillOvsMsg(PNL_BUFFER nlBuf, UINT16 nlmsgType,
writeOk = NlMsgPutTail(nlBuf, (PCHAR)(&msgOut),
sizeof (struct _OVS_MESSAGE));
- return writeOk ? STATUS_SUCCESS : STATUS_INVALID_BUFFER_SIZE;
+ return writeOk;
}
/*
@@ -77,7 +77,7 @@ NlFillOvsMsg(PNL_BUFFER nlBuf, UINT16 nlmsgType,
* input NlBuf.
* ---------------------------------------------------------------------------
*/
-NTSTATUS
+BOOLEAN
NlFillNlHdr(PNL_BUFFER nlBuf, UINT16 nlmsgType,
UINT16 nlmsgFlags, UINT32 nlmsgSeq,
UINT32 nlmsgPid)
@@ -99,7 +99,7 @@ NlFillNlHdr(PNL_BUFFER nlBuf, UINT16 nlmsgType,
writeOk = NlMsgPutTail(nlBuf, (PCHAR)(&msgOut),
sizeof(struct _NL_MSG_HDR));
- return writeOk ? STATUS_SUCCESS : STATUS_INVALID_BUFFER_SIZE;
+ return writeOk;
}
/*
diff --git a/datapath-windows/ovsext/Netlink/Netlink.h b/datapath-windows/ovsext/Netlink/Netlink.h
index a7a53e005..36ffee9bb 100644
--- a/datapath-windows/ovsext/Netlink/Netlink.h
+++ b/datapath-windows/ovsext/Netlink/Netlink.h
@@ -86,13 +86,13 @@ typedef struct _NL_POLICY
#define NL_ATTR_GET_AS(NLA, TYPE) \
(*(TYPE*) NlAttrGetUnspec(nla, sizeof(TYPE)))
-NTSTATUS NlFillOvsMsg(PNL_BUFFER nlBuf,
- UINT16 nlmsgType, UINT16 nlmsgFlags,
- UINT32 nlmsgSeq, UINT32 nlmsgPid,
- UINT8 genlCmd, UINT8 genlVer, UINT32 dpNo);
-NTSTATUS NlFillNlHdr(PNL_BUFFER nlBuf,
+BOOLEAN NlFillOvsMsg(PNL_BUFFER nlBuf,
UINT16 nlmsgType, UINT16 nlmsgFlags,
- UINT32 nlmsgSeq, UINT32 nlmsgPid);
+ UINT32 nlmsgSeq, UINT32 nlmsgPid,
+ UINT8 genlCmd, UINT8 genlVer, UINT32 dpNo);
+BOOLEAN NlFillNlHdr(PNL_BUFFER nlBuf,
+ UINT16 nlmsgType, UINT16 nlmsgFlags,
+ UINT32 nlmsgSeq, UINT32 nlmsgPid);
VOID NlBuildErrorMsg(POVS_MESSAGE msgIn, POVS_MESSAGE_ERROR msgOut,
UINT errorCode);
diff --git a/datapath-windows/ovsext/User.c b/datapath-windows/ovsext/User.c
index 70091cbe6..d8a657e32 100644
--- a/datapath-windows/ovsext/User.c
+++ b/datapath-windows/ovsext/User.c
@@ -375,17 +375,21 @@ OvsNlExecuteCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
/* Default reply that we want to send */
if (status == STATUS_SUCCESS) {
+ BOOLEAN ok;
+
NlBufInit(&nlBuf, usrParamsCtx->outputBuffer,
usrParamsCtx->outputLength);
/* Prepare nl Msg headers */
- status = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
+ ok = NlFillOvsMsg(&nlBuf, nlMsgHdr->nlmsgType, 0,
nlMsgHdr->nlmsgSeq, nlMsgHdr->nlmsgPid,
genlMsgHdr->cmd, OVS_PACKET_VERSION,
ovsHdr->dp_ifindex);
- if (status == STATUS_SUCCESS) {
+ if (ok) {
*replyLen = msgOut->nlMsg.nlmsgLen;
+ } else {
+ status = STATUS_INVALID_BUFFER_SIZE;
}
} else {
/* Map NTSTATUS to NL_ERROR */
@@ -1088,9 +1092,9 @@ OvsCreateQueueNlPacket(PVOID userData,
* Since we are pre allocating memory for the NL buffer
* the attribute settings should not fail
*/
- if (NlFillOvsMsg(&nlBuf, OVS_WIN_NL_PACKET_FAMILY_ID, 0,
+ if (!NlFillOvsMsg(&nlBuf, OVS_WIN_NL_PACKET_FAMILY_ID, 0,
0, pid, (UINT8)cmd, OVS_PACKET_VERSION,
- gOvsSwitchContext->dpNo) != STATUS_SUCCESS) {
+ gOvsSwitchContext->dpNo)) {
goto fail;
}
diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c
index 2efb363a9..c9dfaeaf6 100644
--- a/datapath-windows/ovsext/Vport.c
+++ b/datapath-windows/ovsext/Vport.c
@@ -1566,37 +1566,37 @@ CreateNetlinkMesgForNetdev(POVS_VPORT_EXT_INFO info,
ok = NlFillOvsMsg(&nlBuffer, msgIn->nlMsg.nlmsgType, NLM_F_MULTI,
msgIn->nlMsg.nlmsgSeq, msgIn->nlMsg.nlmsgPid,
msgIn->genlMsg.cmd, msgIn->genlMsg.version,
- dpIfIndex) == STATUS_SUCCESS ? TRUE : FALSE;
+ dpIfIndex);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailU32(&nlBuffer, OVS_WIN_NETDEV_ATTR_PORT_NO,
info->portNo);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailU32(&nlBuffer, OVS_WIN_NETDEV_ATTR_TYPE, info->type);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailString(&nlBuffer, OVS_WIN_NETDEV_ATTR_NAME,
info->name);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailUnspec(&nlBuffer, OVS_WIN_NETDEV_ATTR_MAC_ADDR,
(PCHAR)info->macAddress, sizeof (info->macAddress));
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailU32(&nlBuffer, OVS_WIN_NETDEV_ATTR_MTU, info->mtu);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
if (info->status != OVS_EVENT_CONNECT) {
@@ -1605,7 +1605,7 @@ CreateNetlinkMesgForNetdev(POVS_VPORT_EXT_INFO info,
ok = NlMsgPutTailU32(&nlBuffer, OVS_WIN_NETDEV_ATTR_IF_FLAGS,
netdevFlags);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
/*
@@ -1647,24 +1647,24 @@ OvsCreateMsgFromVport(POVS_VPORT_ENTRY vport,
ok = NlFillOvsMsg(&nlBuffer, msgIn->nlMsg.nlmsgType, NLM_F_MULTI,
msgIn->nlMsg.nlmsgSeq, msgIn->nlMsg.nlmsgPid,
msgIn->genlMsg.cmd, msgIn->genlMsg.version,
- dpIfIndex) == STATUS_SUCCESS ? TRUE : FALSE;
+ dpIfIndex);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailU32(&nlBuffer, OVS_VPORT_ATTR_PORT_NO, vport->portNo);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailU32(&nlBuffer, OVS_VPORT_ATTR_TYPE, vport->ovsType);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
ok = NlMsgPutTailString(&nlBuffer, OVS_VPORT_ATTR_NAME, vport->ovsName);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
/*
@@ -1677,7 +1677,7 @@ OvsCreateMsgFromVport(POVS_VPORT_ENTRY vport,
ok = NlMsgPutTailU32(&nlBuffer, OVS_VPORT_ATTR_UPCALL_PID,
vport->upcallPid);
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
/*stats*/
@@ -1694,7 +1694,7 @@ OvsCreateMsgFromVport(POVS_VPORT_ENTRY vport,
(PCHAR)&vportStats,
sizeof(OVS_VPORT_FULL_STATS));
if (!ok) {
- return STATUS_INSUFFICIENT_RESOURCES;
+ return STATUS_INVALID_BUFFER_SIZE;
}
/*