[ovs-dev] [PATCH v1 10/10] datapath-windows/Flow.c: DEL_FLOWS command handler.
Alin Serdean
aserdean at cloudbasesolutions.com
Thu Sep 25 01:52:10 UTC 2014
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-bounces at openvswitch.org] În numele Ankur Sharma
Trimis: Wednesday, September 24, 2014 10:16 AM
Către: dev at 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 at openvswitch.org
http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list