Applied, thanks everyone.
On Wed, Sep 23, 2015 at 05:57:51PM +0000, Alin Serdean wrote: > Acked-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com> > > > -----Mesaj original----- > > De la: dev [mailto:dev-boun...@openvswitch.org] În numele Nithin Raju > > Trimis: Wednesday, September 23, 2015 7:16 PM > > Către: dev@openvswitch.org > > Subiect: [ovs-dev] [PATCH 3/4 v2] datapath-windows: return netlink error for > > read operation > > > > The kernel datapath returns a NL error message upon any errors during read > > operations, and returns STATUS_SUCCESS as the return code. We reply on > > the input NL request to get the family ID, and the PID. However, when the > > request is of type OVS_CTRL_CMD_EVENT_NOTIFY and > > OVS_CTRL_CMD_READ_NOTIFY, there's no input buffer associated with the > > request. So, we use a temporary input buffer to be able to call the Netlink > > APIs for constructing the output NL error message. > > > > Signed-off-by: Nithin Raju <nit...@vmware.com> > > Acked-by: Sairam Venugopal <vsai...@vmware.com> > > --- > > v2: addressed ALin's review comments > > --- > > datapath-windows/ovsext/Datapath.c | 16 +++++++++++++++- > > 1 file changed, 15 insertions(+), 1 deletion(-) > > > > diff --git a/datapath-windows/ovsext/Datapath.c b/datapath- > > windows/ovsext/Datapath.c > > index 1e16604..b3dbd71 100644 > > --- a/datapath-windows/ovsext/Datapath.c > > +++ b/datapath-windows/ovsext/Datapath.c > > @@ -1020,10 +1020,24 @@ > > InvokeNetlinkCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, > > if (status != STATUS_SUCCESS && status != STATUS_PENDING) { > > if (usrParamsCtx->devOp != OVS_WRITE_DEV_OP && *replyLen == 0) { > > NL_ERROR nlError = NlMapStatusToNlErr(status); > > - POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx- > > >inputBuffer; > > + OVS_MESSAGE msgInTmp = { 0 }; > > + POVS_MESSAGE msgIn = NULL; > > POVS_MESSAGE_ERROR msgError = (POVS_MESSAGE_ERROR) > > usrParamsCtx->outputBuffer; > > > > + if (usrParamsCtx->ovsMsg->genlMsg.cmd == > > OVS_CTRL_CMD_EVENT_NOTIFY || > > + usrParamsCtx->ovsMsg->genlMsg.cmd == > > OVS_CTRL_CMD_READ_NOTIFY) { > > + /* There's no input buffer associated with such requests. > > */ > > + NL_BUFFER nlBuffer; > > + msgIn = &msgInTmp; > > + NlBufInit(&nlBuffer, (PCHAR)msgIn, sizeof *msgIn); > > + NlFillNlHdr(&nlBuffer, nlFamilyOps->id, 0, 0, > > + usrParamsCtx->ovsInstance->pid); > > + } else { > > + msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer; > > + } > > + > > + ASSERT(msgIn); > > ASSERT(msgError); > > NlBuildErrorMsg(msgIn, msgError, nlError); > > *replyLen = msgError->nlMsg.nlmsgLen; > > -- > > 1.8.5.6 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev