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,
.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,
.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
.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 = {
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;
return status;
}
-
/*
* --------------------------------------------------------------------------
* Handler for the subscription for the event queue
}
-static NTSTATUS
+NTSTATUS
OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx)
{
POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
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.
*/
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.
}
}
+NTSTATUS OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx);
+
#endif /* __DATAPATH_H_ */
#endif /* OVS_USE_NL_INTERFACE */
return rc;
}
+/*
+ *----------------------------------------------------------------------------
+ * 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 --