Re: [ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler.
Oh, now I see, flow flush is handled :) Date: Wed, 24 Sep 2014 00:15:44 -0700 From: Ankur Sharma ankursha...@vmware.com To: dev@openvswitch.org Subject: [ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler. Message-ID: 1411542944-19374-10-git-send-email-ankursha...@vmware.com Added changes to handle DEL_FLOWS (FLUSH) scenario. --- datapath-windows/ovsext/Flow.c | 19 ++- datapath-windows/ovsext/Flow.h | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index b95f69b..0b4a7fa 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -209,7 +209,8 @@ static const NL_POLICY nlFlowActionPolicy[] = { /* * * OvsFlowNlNewCmdHandler -- - *Handler for OVS_FLOW_CMD_NEW command. + *Handler for OVS_FLOW_CMD_NEW/SET/DEL command. + *It also handles FLUSH case (DEL w/o any key in input) * */ NTSTATUS @@ -252,6 +253,13 @@ OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, goto done; } +/* FLOW_DEL command w/o any key input is a flush case. */ +if ((genlMsgHdr-cmd == OVS_FLOW_CMD_DEL) +(!(nlAttrs[OVS_FLOW_ATTR_KEY]))) { +rc = OvsFlushFlowIoctl(ovsHdr-dp_ifindex); +goto done; +} + if ((_OvsFlowMapNlToFlowPut(msgIn, nlAttrs[OVS_FLOW_ATTR_KEY], nlAttrs[OVS_FLOW_ATTR_ACTIONS], nlAttrs[OVS_FLOW_ATTR_CLEAR], mappedFlow)) @@ -1441,19 +1449,12 @@ unlock: } NTSTATUS -OvsFlushFlowIoctl(PVOID inputBuffer, - UINT32 inputLength) +OvsFlushFlowIoctl(UINT32 dpNo) { NTSTATUS status = STATUS_SUCCESS; OVS_DATAPATH *datapath = NULL; -UINT32 dpNo; LOCK_STATE_EX dpLockState; -if (inputLength != sizeof(UINT32) || inputBuffer == NULL) { -return STATUS_INFO_LENGTH_MISMATCH; -} - -dpNo = *(UINT32 *)inputBuffer; NdisAcquireSpinLock(gOvsCtrlLock); if (gOvsSwitchContext == NULL || gOvsSwitchContext-dpNo != dpNo) { diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index e62ba40..10ef62b 100644 --- a/datapath-windows/ovsext/Flow.h +++ b/datapath-windows/ovsext/Flow.h @@ -68,7 +68,7 @@ NTSTATUS OvsPutFlowIoctl(PVOID inputBuffer, UINT32 inputLength, NTSTATUS OvsGetFlowIoctl(PVOID inputBuffer, UINT32 inputLength, PVOID outputBuffer, UINT32 outputLength, UINT32 *replyLen); -NTSTATUS OvsFlushFlowIoctl(PVOID inputBuffer, UINT32 inputLength); +NTSTATUS OvsFlushFlowIoctl(UINT32 dpNo); NTSTATUS OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, UINT32 *replyLen); -- 1.9.1 ___ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev
[ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler.
Added changes to handle DEL_FLOWS (FLUSH) scenario. --- datapath-windows/ovsext/Flow.c | 19 ++- datapath-windows/ovsext/Flow.h | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index b95f69b..0b4a7fa 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -209,7 +209,8 @@ static const NL_POLICY nlFlowActionPolicy[] = { /* * * OvsFlowNlNewCmdHandler -- - *Handler for OVS_FLOW_CMD_NEW command. + *Handler for OVS_FLOW_CMD_NEW/SET/DEL command. + *It also handles FLUSH case (DEL w/o any key in input) * */ NTSTATUS @@ -252,6 +253,13 @@ OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, goto done; } +/* FLOW_DEL command w/o any key input is a flush case. */ +if ((genlMsgHdr-cmd == OVS_FLOW_CMD_DEL) +(!(nlAttrs[OVS_FLOW_ATTR_KEY]))) { +rc = OvsFlushFlowIoctl(ovsHdr-dp_ifindex); +goto done; +} + if ((_OvsFlowMapNlToFlowPut(msgIn, nlAttrs[OVS_FLOW_ATTR_KEY], nlAttrs[OVS_FLOW_ATTR_ACTIONS], nlAttrs[OVS_FLOW_ATTR_CLEAR], mappedFlow)) @@ -1441,19 +1449,12 @@ unlock: } NTSTATUS -OvsFlushFlowIoctl(PVOID inputBuffer, - UINT32 inputLength) +OvsFlushFlowIoctl(UINT32 dpNo) { NTSTATUS status = STATUS_SUCCESS; OVS_DATAPATH *datapath = NULL; -UINT32 dpNo; LOCK_STATE_EX dpLockState; -if (inputLength != sizeof(UINT32) || inputBuffer == NULL) { -return STATUS_INFO_LENGTH_MISMATCH; -} - -dpNo = *(UINT32 *)inputBuffer; NdisAcquireSpinLock(gOvsCtrlLock); if (gOvsSwitchContext == NULL || gOvsSwitchContext-dpNo != dpNo) { diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index e62ba40..10ef62b 100644 --- a/datapath-windows/ovsext/Flow.h +++ b/datapath-windows/ovsext/Flow.h @@ -68,7 +68,7 @@ NTSTATUS OvsPutFlowIoctl(PVOID inputBuffer, UINT32 inputLength, NTSTATUS OvsGetFlowIoctl(PVOID inputBuffer, UINT32 inputLength, PVOID outputBuffer, UINT32 outputLength, UINT32 *replyLen); -NTSTATUS OvsFlushFlowIoctl(PVOID inputBuffer, UINT32 inputLength); +NTSTATUS OvsFlushFlowIoctl(UINT32 dpNo); NTSTATUS OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, UINT32 *replyLen); -- 1.9.1 ___ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev
Re: [ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler.
Acked-by: Alin Gabriel Serdean aserd...@cloudbasesolutions.com -Mesaj original- De la: dev [mailto:dev-boun...@openvswitch.org] În numele Ankur Sharma Trimis: Wednesday, September 24, 2014 10:16 AM Către: dev@openvswitch.org Subiect: [ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler. Added changes to handle DEL_FLOWS (FLUSH) scenario. --- datapath-windows/ovsext/Flow.c | 19 ++- datapath-windows/ovsext/Flow.h | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index b95f69b..0b4a7fa 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -209,7 +209,8 @@ static const NL_POLICY nlFlowActionPolicy[] = { /* * * OvsFlowNlNewCmdHandler -- - *Handler for OVS_FLOW_CMD_NEW command. + *Handler for OVS_FLOW_CMD_NEW/SET/DEL command. + *It also handles FLUSH case (DEL w/o any key in input) * */ NTSTATUS @@ -252,6 +253,13 @@ OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, goto done; } +/* FLOW_DEL command w/o any key input is a flush case. */ +if ((genlMsgHdr-cmd == OVS_FLOW_CMD_DEL) +(!(nlAttrs[OVS_FLOW_ATTR_KEY]))) { +rc = OvsFlushFlowIoctl(ovsHdr-dp_ifindex); +goto done; +} + if ((_OvsFlowMapNlToFlowPut(msgIn, nlAttrs[OVS_FLOW_ATTR_KEY], nlAttrs[OVS_FLOW_ATTR_ACTIONS], nlAttrs[OVS_FLOW_ATTR_CLEAR], mappedFlow)) @@ -1441,19 +1449,12 @@ unlock: } NTSTATUS -OvsFlushFlowIoctl(PVOID inputBuffer, - UINT32 inputLength) +OvsFlushFlowIoctl(UINT32 dpNo) { NTSTATUS status = STATUS_SUCCESS; OVS_DATAPATH *datapath = NULL; -UINT32 dpNo; LOCK_STATE_EX dpLockState; -if (inputLength != sizeof(UINT32) || inputBuffer == NULL) { -return STATUS_INFO_LENGTH_MISMATCH; -} - -dpNo = *(UINT32 *)inputBuffer; NdisAcquireSpinLock(gOvsCtrlLock); if (gOvsSwitchContext == NULL || gOvsSwitchContext-dpNo != dpNo) { diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index e62ba40..10ef62b 100644 --- a/datapath-windows/ovsext/Flow.h +++ b/datapath-windows/ovsext/Flow.h @@ -68,7 +68,7 @@ NTSTATUS OvsPutFlowIoctl(PVOID inputBuffer, UINT32 inputLength, NTSTATUS OvsGetFlowIoctl(PVOID inputBuffer, UINT32 inputLength, PVOID outputBuffer, UINT32 outputLength, UINT32 *replyLen); -NTSTATUS OvsFlushFlowIoctl(PVOID inputBuffer, UINT32 inputLength); +NTSTATUS OvsFlushFlowIoctl(UINT32 dpNo); NTSTATUS OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, UINT32 *replyLen); -- 1.9.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
Re: [ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler.
Just forgot the following: $ git apply ovs-dev-v1-10-10-datapath-windows-Flow.c-DEL_FLOWS-command-handler..patch ovs-dev-v1-10-10-datapath-windows-Flow.c-DEL_FLOWS-command-handler..patch:20: trailing whitespace. if ((genlMsgHdr-cmd == OVS_FLOW_CMD_DEL) warning: 1 line adds whitespace errors. Alin. -Mesaj original- De la: dev [mailto:dev-boun...@openvswitch.org] În numele Ankur Sharma Trimis: Wednesday, September 24, 2014 10:16 AM Către: dev@openvswitch.org Subiect: [ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler. Added changes to handle DEL_FLOWS (FLUSH) scenario. --- datapath-windows/ovsext/Flow.c | 19 ++- datapath-windows/ovsext/Flow.h | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index b95f69b..0b4a7fa 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -209,7 +209,8 @@ static const NL_POLICY nlFlowActionPolicy[] = { /* * * OvsFlowNlNewCmdHandler -- - *Handler for OVS_FLOW_CMD_NEW command. + *Handler for OVS_FLOW_CMD_NEW/SET/DEL command. + *It also handles FLUSH case (DEL w/o any key in input) * */ NTSTATUS @@ -252,6 +253,13 @@ OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, goto done; } +/* FLOW_DEL command w/o any key input is a flush case. */ +if ((genlMsgHdr-cmd == OVS_FLOW_CMD_DEL) +(!(nlAttrs[OVS_FLOW_ATTR_KEY]))) { +rc = OvsFlushFlowIoctl(ovsHdr-dp_ifindex); +goto done; +} + if ((_OvsFlowMapNlToFlowPut(msgIn, nlAttrs[OVS_FLOW_ATTR_KEY], nlAttrs[OVS_FLOW_ATTR_ACTIONS], nlAttrs[OVS_FLOW_ATTR_CLEAR], mappedFlow)) @@ -1441,19 +1449,12 @@ unlock: } NTSTATUS -OvsFlushFlowIoctl(PVOID inputBuffer, - UINT32 inputLength) +OvsFlushFlowIoctl(UINT32 dpNo) { NTSTATUS status = STATUS_SUCCESS; OVS_DATAPATH *datapath = NULL; -UINT32 dpNo; LOCK_STATE_EX dpLockState; -if (inputLength != sizeof(UINT32) || inputBuffer == NULL) { -return STATUS_INFO_LENGTH_MISMATCH; -} - -dpNo = *(UINT32 *)inputBuffer; NdisAcquireSpinLock(gOvsCtrlLock); if (gOvsSwitchContext == NULL || gOvsSwitchContext-dpNo != dpNo) { diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index e62ba40..10ef62b 100644 --- a/datapath-windows/ovsext/Flow.h +++ b/datapath-windows/ovsext/Flow.h @@ -68,7 +68,7 @@ NTSTATUS OvsPutFlowIoctl(PVOID inputBuffer, UINT32 inputLength, NTSTATUS OvsGetFlowIoctl(PVOID inputBuffer, UINT32 inputLength, PVOID outputBuffer, UINT32 outputLength, UINT32 *replyLen); -NTSTATUS OvsFlushFlowIoctl(PVOID inputBuffer, UINT32 inputLength); +NTSTATUS OvsFlushFlowIoctl(UINT32 dpNo); NTSTATUS OvsFlowNlNewCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx, UINT32 *replyLen); -- 1.9.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