[ovs-dev] [PATCH v3 3/5] datapath-windows: Flow Dump handler

Alin Serdean aserdean at cloudbasesolutions.com
Mon Oct 6 12:01:48 UTC 2014


Acked-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>


-----Mesaj original-----
De la: dev [mailto:dev-bounces at openvswitch.org] În numele Ankur Sharma
Trimis: Saturday, October 4, 2014 1:54 AM
Către: dev at openvswitch.org
Subiect: [ovs-dev] [PATCH v3 3/5] datapath-windows: Flow Dump handler

In this patch we have added basic changes for handler registeration for FLOW_GET command.

Signed-off-by: Ankur Sharma <ankursharma at vmware.com>
Acked-by: Nithin Raju <nithin at vmware.com>
---
 datapath-windows/include/OvsPub.h  |  2 +-  datapath-windows/ovsext/Datapath.c | 27 ++++++++++-----------------  datapath-windows/ovsext/Datapath.h | 14 ++++++++++++--
 datapath-windows/ovsext/Flow.c     | 19 +++++++++++++++++++
 datapath-windows/ovsext/Flow.h     |  2 ++
 5 files changed, 44 insertions(+), 20 deletions(-)

diff --git a/datapath-windows/include/OvsPub.h b/datapath-windows/include/OvsPub.h
index a8516b6..e94dacf 100644
--- a/datapath-windows/include/OvsPub.h
+++ b/datapath-windows/include/OvsPub.h
@@ -349,7 +349,7 @@ typedef struct OvsFlowInfo {
     OvsFlowKey key;
     struct OvsFlowStats stats;
     uint32_t actionsLen;
-    NL_ATTR actions[0];
+    PNL_ATTR actions;
 } OvsFlowInfo;
 
 enum GetFlags {
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index 2d2468e..e2d89a6 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -85,16 +85,6 @@ typedef struct _NETLINK_FAMILY {
     UINT16 opsCount;
 } NETLINK_FAMILY, *PNETLINK_FAMILY;
 
-/*
- * Device operations to tag netlink commands with. This is a bitmask since it is
- * possible that a particular command can be invoked via different device
- * operations.
- */
-#define OVS_READ_DEV_OP          (1 << 0)
-#define OVS_WRITE_DEV_OP         (1 << 1)
-#define OVS_TRANSACTION_DEV_OP   (1 << 2)
-#define OVS_READ_EVENT_DEV_OP    (1 << 3)
-
 /* Handlers for the various netlink commands. */  static NetlinkCmdHandler OvsGetPidCmdHandler,
                          OvsGetDpCmdHandler, @@ -157,7 +147,7 @@ NETLINK_CMD nlDatapathFamilyCmdOps[] = {
       .handler         = OvsGetDpCmdHandler,
       .supportedDevOp  = OVS_WRITE_DEV_OP | OVS_READ_DEV_OP |
                          OVS_TRANSACTION_DEV_OP,
-       .validateDpIndex = FALSE
+      .validateDpIndex = FALSE
     },
     { .cmd             = OVS_DP_CMD_SET,
       .handler         = OvsSetDpCmdHandler,
@@ -214,7 +204,7 @@ NETLINK_CMD nlFlowFamilyCmdOps[] = {
       .supportedDevOp   = OVS_TRANSACTION_DEV_OP,
       .validateDpIndex  = TRUE
     },
-    { .cmd              = OVS_FLOW_CMD_SET, 
+    { .cmd              = OVS_FLOW_CMD_SET,
       .handler          = OvsFlowNlCmdHandler,
       .supportedDevOp   = OVS_TRANSACTION_DEV_OP,
       .validateDpIndex  = TRUE
@@ -223,7 +213,13 @@ NETLINK_CMD nlFlowFamilyCmdOps[] = {
       .handler          = OvsFlowNlCmdHandler,
       .supportedDevOp   = OVS_TRANSACTION_DEV_OP,
       .validateDpIndex  = TRUE
-    }
+    },
+    { .cmd              = OVS_FLOW_CMD_GET,
+      .handler          = OvsFlowNlGetCmdHandler,
+      .supportedDevOp   = OVS_TRANSACTION_DEV_OP |
+                          OVS_WRITE_DEV_OP | OVS_READ_DEV_OP,
+      .validateDpIndex  = TRUE
+    },
 };
 
 NETLINK_FAMILY nlFLowFamilyOps = {
@@ -246,8 +242,6 @@ static NTSTATUS ValidateNetlinkCmd(UINT32 devOp,  static NTSTATUS InvokeNetlinkCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
                                         NETLINK_FAMILY *nlFamilyOps,
                                         UINT32 *replyLen); -static NTSTATUS OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx);
-
 
 /* Handles to the device object for communication with userspace. */  NDIS_HANDLE gOvsDeviceHandle; @@ -985,7 +979,6 @@ OvsPendEventCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
     return status;
 }
 
-
 /*
  * --------------------------------------------------------------------------
  *  Handler for the subscription for the event queue @@ -1216,7 +1209,7 @@ cleanup:
 }
 
 
-static NTSTATUS
+NTSTATUS
 OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx)  {
     POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
diff --git a/datapath-windows/ovsext/Datapath.h b/datapath-windows/ovsext/Datapath.h
index 689e0ae..e3bb638 100644
--- a/datapath-windows/ovsext/Datapath.h
+++ b/datapath-windows/ovsext/Datapath.h
@@ -36,12 +36,21 @@ typedef struct _OVS_MESSAGE_ERROR {
     NL_MSG_ERR errorMsg;
 } OVS_MESSAGE_ERROR, *POVS_MESSAGE_ERROR;
 
+/*
+ * Device operations to tag netlink commands with. This is a bitmask 
+since it
+ * is possible that a particular command can be invoked via different 
+device
+ * operations.
+ */
+#define OVS_READ_DEV_OP          (1 << 0)
+#define OVS_WRITE_DEV_OP         (1 << 1)
+#define OVS_TRANSACTION_DEV_OP   (1 << 2)
+#define OVS_READ_EVENT_DEV_OP    (1 << 3)
+
 typedef struct _OVS_DEVICE_EXTENSION {
     INT numberOpenInstance;
     INT pidCount;
 } OVS_DEVICE_EXTENSION, *POVS_DEVICE_EXTENSION;
 
-
 /*
  * Private context for each handle on the device.
  */
@@ -83,7 +92,6 @@ POVS_OPEN_INSTANCE OvsGetOpenInstance(PFILE_OBJECT fileObject,
 
 NTSTATUS OvsCompleteIrpRequest(PIRP irp, ULONG_PTR infoPtr, NTSTATUS status);
 
-
 /*
  * Utility structure and functions to collect in one place all the parameters
  * passed during a call from userspace.
@@ -151,6 +159,8 @@ FreeUserDumpState(POVS_OPEN_INSTANCE instance)
     }
 }
 
+NTSTATUS OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx);
+
 #endif /* __DATAPATH_H_ */
 
 #endif /* OVS_USE_NL_INTERFACE */
diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index 5cab6e1..d1c318c 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -307,6 +307,25 @@ done:
 
 /*
  *----------------------------------------------------------------------------
+ *  OvsFlowNlGetCmdHandler --
+ *    Handler for OVS_FLOW_CMD_GET/DUMP commands.
+ 
+*----------------------------------------------------------------------
+------
+ */
+NTSTATUS
+OvsFlowNlGetCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
+                       UINT32 *replyLen) {
+    NTSTATUS rc = STATUS_SUCCESS;
+    *replyLen = 0;
+
+    UNREFERENCED_PARAMETER(usrParamsCtx);
+    UNREFERENCED_PARAMETER(replyLen);
+
+    return rc;
+}
+
+/*
+ 
+*----------------------------------------------------------------------
+------
  *  _MapNlToFlowPut --
  *    Maps input netlink message to OvsFlowPut.
  *----------------------------------------------------------------------------
diff --git a/datapath-windows/ovsext/Flow.h b/datapath-windows/ovsext/Flow.h index 79cb791..7835b8c 100644
--- a/datapath-windows/ovsext/Flow.h
+++ b/datapath-windows/ovsext/Flow.h
@@ -72,6 +72,8 @@ NTSTATUS OvsFlushFlowIoctl(UINT32 dpNo);
 
 NTSTATUS OvsFlowNlCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
                              UINT32 *replyLen);
+NTSTATUS OvsFlowNlGetCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
+                                UINT32 *replyLen);
 
 /* Flags for tunneling */
 #define OVS_TNL_F_DONT_FRAGMENT         (1 << 0)
--
1.9.1

_______________________________________________
dev mailing list
dev at openvswitch.org
http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list