Besides some alignment issues, looks god.

Acked-by: Paul Boca <pb...@cloudbasesolutions.com>  

> -----Original Message-----
> From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Sairam
> Venugopal
> Sent: Thursday, July 14, 2016 2:39 AM
> To: dev@openvswitch.org
> Subject: [ovs-dev] [PATCH 8/9] datapath-windows: Update
> OvsReadEventCmdHandler in Datapath.c to support different events
> 
> OvsReadEventCmdHandler must now reflect the right event being read. If the
> event is a Conntrack related event, then convert the entry to netlink
> format and send it to userspace. If it's Vport event, retain the existing
> workflow.
> 
> Signed-off-by: Sairam Venugopal <vsai...@vmware.com>
> ---
>  datapath-windows/ovsext/Datapath.c | 59
> +++++++++++++++++++++++++++++---------
>  1 file changed, 45 insertions(+), 14 deletions(-)
> 
> diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-
> windows/ovsext/Datapath.c
> index a5a0b35..fff788a 100644
> --- a/datapath-windows/ovsext/Datapath.c
> +++ b/datapath-windows/ovsext/Datapath.c
> @@ -1674,7 +1674,6 @@
> OvsReadEventCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
>  #endif
>      NL_BUFFER nlBuf;
>      NTSTATUS status;
> -    OVS_VPORT_EVENT_ENTRY eventEntry;
> 
>      ASSERT(usrParamsCtx->devOp == OVS_READ_DEV_OP);
> 
> @@ -1687,21 +1686,53 @@
> OvsReadEventCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
>      /* Output buffer has been validated while validating read dev op. */
>      ASSERT(msgOut != NULL && usrParamsCtx->outputLength >= sizeof
> *msgOut);
> 
> -    NlBufInit(&nlBuf, usrParamsCtx->outputBuffer, usrParamsCtx-
> >outputLength);
> +    if (instance->protocol == NETLINK_NETFILTER) {
> +        if (!instance->mcastMask) {
> +            status = STATUS_SUCCESS;
> +            *replyLen = 0;
> +            goto cleanup;
> +        }
> 
> -    /* remove an event entry from the event queue */
> -    status = OvsRemoveVportEventEntry(usrParamsCtx->ovsInstance,
> -                                      &eventEntry);
> -    if (status != STATUS_SUCCESS) {
> -        /* If there were not elements, read should return no data. */
> -        status = STATUS_SUCCESS;
> -        *replyLen = 0;
> -        goto cleanup;
> -    }
> +        OVS_CT_EVENT_ENTRY ctEventEntry;
> +        status = OvsRemoveCtEventEntry(usrParamsCtx->ovsInstance,
> &ctEventEntry);
[Paul Boca] This exceeds the 80 columns limit

> 
> -    status = OvsPortFillInfo(usrParamsCtx, &eventEntry, &nlBuf);
> -    if (status == NDIS_STATUS_SUCCESS) {
> -        *replyLen = NlBufSize(&nlBuf);
> +        if (status != STATUS_SUCCESS) {
> +            /* If there were not elements, read should return no data. */
> +            status = STATUS_SUCCESS;
> +            *replyLen = 0;
> +            goto cleanup;
> +        }
> +
> +        status = OvsCreateNlMsgFromCtEntry(&ctEventEntry.entry,
> +                                           usrParamsCtx->outputBuffer,
> +                                           usrParamsCtx->outputLength,
> +                                           ctEventEntry.type,
> +                                           0,
> +                                           usrParamsCtx->ovsInstance->pid,
> +                                           NFNETLINK_V0,
> +                                           0);
> +        if (status == NDIS_STATUS_SUCCESS) {
> +            *replyLen = msgOut->nlMsg.nlmsgLen;
> +        }
> +    } else if (instance->protocol == NETLINK_GENERIC) {
> +        NlBufInit(&nlBuf, usrParamsCtx->outputBuffer, usrParamsCtx-
> >outputLength);
[Paul Boca] Same

> +
> +        OVS_VPORT_EVENT_ENTRY eventEntry;
> +        /* remove vport event entry from the vport event queue */
> +        status = OvsRemoveVportEventEntry(usrParamsCtx->ovsInstance,
> &eventEntry);
[Paul Boca] This exceeds the 80 columns limit also

> +        if (status != STATUS_SUCCESS) {
> +            /* If there were not elements, read should return no data. */
> +            status = STATUS_SUCCESS;
> +            *replyLen = 0;
> +            goto cleanup;
> +        }
> +
> +        status = OvsPortFillInfo(usrParamsCtx, &eventEntry, &nlBuf);
> +        if (status == NDIS_STATUS_SUCCESS) {
> +            *replyLen = NlBufSize(&nlBuf);
> +        }
> +    } else {
> +        status = STATUS_INVALID_PARAMETER;
>      }
> 
>  cleanup:
> --
> 2.9.0.windows.1
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to