1N/A/******************************************************************************
1N/A *
1N/A * Description
1N/A * mpapi-plugin.h - interfaces for the MP API Version 1.0 plugin library.
1N/A * A compliant plugin library should implement interfaces with name without Fn
1N/A * suffix from function definitions below.
1N/A *
1N/A * License:
1N/A * The contents of this file are subject to the SNIA Public License
1N/A * Version 1.1 (the "License"); you may not use this file except in
1N/A * compliance with the License. You may obtain a copy of the License at
1N/A *
1N/A * TBD
1N/A *
1N/A * Software distributed under the License is distributed on an "AS IS"
1N/A * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
1N/A * the License for the specific language governing rights and limitations
1N/A * under the License.
1N/A *
1N/A * The Original Code is iSCSI Management API and Multipath Management API
1N/A * plugin header file
1N/A *
1N/A * The Initial Developer of the Original Code is:
1N/A * Benjamin F. Kuo Troika Networks, Inc. (benk@troikanetworks.com)
1N/A * David Dillard VERITAS Software(david.dillard@veritas.com)
1N/A * Jeff Ding Adaptec, Inc. (jding@corp.adaptec.com)
1N/A * Hyon Kim Sun Microsystems(hyon.kim@sun.com)
1N/A *
1N/A * Contributor(s):
1N/A * Paul von Behren Sun Microsystems(paul.vonbehren@sun.com)
1N/A *
1N/A ******************************************************************************
1N/A *
1N/A * Changes:
1N/A * 1/15/2005 Implemented SNIA MP API specification 1.0
1N/A *****************************************************************************/
1N/A
1N/A#ifdef __cplusplus
1N/Aextern "C" {
1N/A#endif
1N/A
1N/A
1N/A#ifndef MPPLUGIN_H
1N/A#define MPPLUGIN_H
1N/A
1N/A/*
1N/A * MP API common library calls InitaizeFn as part of dynamically loading
1N/A * the plugins. For this version of implementation the common library
1N/A * passes the sequence number of the plugin oid through InitializeFn. The
1N/A * sequnece number will be used as the ownerId for the plugin generated OIDs.
1N/A */
1N/Atypedef MP_STATUS (* InitializeFn) (
1N/A MP_UINT32 pluginOwnerID
1N/A );
1N/A
1N/A/*
1N/A * MP API common library calls TerminateFn as part of dynamically unloading
1N/A * the plugins.
1N/A */
1N/Atypedef MP_STATUS (* TerminateFn) (void);
1N/A
1N/A/**
1N/A ******************************************************************************
1N/A *
1N/A * Function table for OID and properties discovery API
1N/A *
1N/A ******************************************************************************
1N/A */
1N/A
1N/Atypedef MP_STATUS (* MP_GetPluginPropertiesPluginFn)(
1N/A MP_PLUGIN_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetDeviceProductOidListPluginFn)(
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetDeviceProductPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_DEVICE_PRODUCT_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetInitiatorPortOidListPluginFn)(
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetInitiatorPortPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_INITIATOR_PORT_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetMultipathLusPluginFn)(
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetMultipathLusDevProdFn)(
1N/A MP_OID oid,
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetMPLogicalUnitPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetAssociatedPathOidListFn)(
1N/A MP_OID oid,
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetPathLogicalUnitPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_PATH_LOGICAL_UNIT_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetAssociatedTPGOidListFn)(
1N/A MP_OID oid,
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetTargetPortGroupPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_TARGET_PORT_GROUP_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetMPLuOidListFromTPGFn)(
1N/A MP_OID oid,
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetProprietaryLoadBalanceOidListPluginFn)(
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetProprietaryLoadBalancePropertiesFn)(
1N/A MP_OID oid,
1N/A MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES *pProps
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetTargetPortOidListFn)(
1N/A MP_OID oid,
1N/A MP_OID_LIST **ppList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_GetTargetPortPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_TARGET_PORT_PROPERTIES *pProps
1N/A);
1N/A
1N/A/**
1N/A ******************************************************************************
1N/A *
1N/A * Function table for path management API
1N/A *
1N/A ******************************************************************************
1N/A */
1N/A
1N/Atypedef MP_STATUS (* MP_AssignLogicalUnitToTPGFn)(
1N/A MP_OID tpgOid,
1N/A MP_OID luOid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetOverridePathFn)(
1N/A MP_OID logicalUnitOid,
1N/A MP_OID pathOid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_CancelOverridePathFn)(
1N/A MP_OID luOid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_EnableAutoFailbackPluginFn)(
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_EnableAutoFailbackLuFn)(
1N/A MP_OID oid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_EnableAutoProbingPluginFn)(
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_EnableAutoProbingLuFn)(
1N/A MP_OID oid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DisableAutoFailbackPluginFn)(
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DisableAutoFailbackLuFn)(
1N/A MP_OID oid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DisableAutoProbingPluginFn)(
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DisableAutoProbingLuFn)(
1N/A MP_OID oid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_EnablePathFn)(
1N/A MP_OID oid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DisablePathFn)(
1N/A MP_OID oid
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetLogicalUnitLoadBalanceTypeFn)(
1N/A MP_OID logicalUnitoid,
1N/A MP_LOAD_BALANCE_TYPE loadBalance
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetPathWeightFn)(
1N/A MP_OID pathOid,
1N/A MP_UINT32 weight
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetPluginLoadBalanceTypePluginFn)(
1N/A MP_LOAD_BALANCE_TYPE loadBalance
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetFailbackPollingRatePluginFn)(
1N/A MP_UINT32 pollingRate
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetFailbackPollingRateLuFn)(
1N/A MP_OID oid,
1N/A MP_UINT32 pollingRate
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetProbingPollingRatePluginFn)(
1N/A MP_UINT32 pollingRate
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetProbingPollingRateLuFn)(
1N/A MP_OID oid,
1N/A MP_UINT32 pollingRate
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetProprietaryPropertiesFn)(
1N/A MP_OID oid,
1N/A MP_UINT32 count,
1N/A MP_PROPRIETARY_PROPERTY *pPropertyList
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_SetTPGAccessFn)(
1N/A MP_OID luOid,
1N/A MP_UINT32 count,
1N/A MP_TPG_STATE_PAIR *pTpgStateList
1N/A);
1N/A
1N/A/**
1N/A ******************************************************************************
1N/A *
1N/A * Function table for event support API
1N/A *
1N/A ******************************************************************************
1N/A */
1N/A
1N/Atypedef MP_STATUS (* MP_RegisterForObjectPropertyChangesPluginFn)(
1N/A MP_OBJECT_PROPERTY_FN pClientFn,
1N/A MP_OBJECT_TYPE objectType,
1N/A void *pCallerData
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DeregisterForObjectPropertyChangesPluginFn)(
1N/A MP_OBJECT_PROPERTY_FN pClientFn,
1N/A MP_OBJECT_TYPE objectType
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_RegisterForObjectVisibilityChangesPluginFn)(
1N/A MP_OBJECT_VISIBILITY_FN pClientFn,
1N/A MP_OBJECT_TYPE objectType,
1N/A void *pCallerData
1N/A);
1N/A
1N/Atypedef MP_STATUS (* MP_DeregisterForObjectVisibilityChangesPluginFn)(
1N/A MP_OBJECT_VISIBILITY_FN pClientFn,
1N/A MP_OBJECT_TYPE objectType
1N/A);
1N/A
1N/Atypedef MP_STATUS (* Sun_MP_SendScsiCmdFn)(
1N/A MP_OID oid, struct uscsi_cmd *cmd
1N/A);
1N/A
1N/A#endif
1N/A
1N/A#ifdef __cplusplus
1N/A};
1N/A#endif
1N/A