1*fcf3ce44SJohn Forte /****************************************************************************** 2*fcf3ce44SJohn Forte * 3*fcf3ce44SJohn Forte * Description 4*fcf3ce44SJohn Forte * mpapi.h - general header file for Multipath Management API Version 1.0 5*fcf3ce44SJohn Forte * client 6*fcf3ce44SJohn Forte * 7*fcf3ce44SJohn Forte * License: 8*fcf3ce44SJohn Forte * The contents of this file are subject to the SNIA Public License 9*fcf3ce44SJohn Forte * Version 1.1 (the "License"); you may not use this file except in 10*fcf3ce44SJohn Forte * compliance with the License. You may obtain a copy of the License at 11*fcf3ce44SJohn Forte * 12*fcf3ce44SJohn Forte * http://mp-mgmt-api.sourceforge.net 13*fcf3ce44SJohn Forte * 14*fcf3ce44SJohn Forte * Software distributed under the License is distributed on an "AS IS" 15*fcf3ce44SJohn Forte * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 16*fcf3ce44SJohn Forte * the License for the specific language governing rights and limitations 17*fcf3ce44SJohn Forte * under the License. 18*fcf3ce44SJohn Forte * 19*fcf3ce44SJohn Forte * The Original Code is SNIA iSCSI Management API and Multipath Management API 20*fcf3ce44SJohn Forte * general header file 21*fcf3ce44SJohn Forte * 22*fcf3ce44SJohn Forte * The Initial Developer of the Original Code is: 23*fcf3ce44SJohn Forte * Benjamin F. Kuo Troika Networks, Inc. (benk@troikanetworks.com) 24*fcf3ce44SJohn Forte * David Dillard VERITAS Software(david.dillard@veritas.com) 25*fcf3ce44SJohn Forte * Jeff Ding Adaptec, Inc. (jding@corp.adaptec.com) 26*fcf3ce44SJohn Forte * Dave Wysochanski Network Appliance, Inc. (davidw@netapp.com) 27*fcf3ce44SJohn Forte * Hyon Kim Sun Microsystems(hyon.kim@sun.com) 28*fcf3ce44SJohn Forte * 29*fcf3ce44SJohn Forte * Contributor(s): 30*fcf3ce44SJohn Forte * Paul von Behren Sun Microsystems(paul.vonbehren@sun.com) 31*fcf3ce44SJohn Forte * 32*fcf3ce44SJohn Forte ****************************************************************************** 33*fcf3ce44SJohn Forte * 34*fcf3ce44SJohn Forte * Changes: 35*fcf3ce44SJohn Forte * 1/15/2005 Implemented SNIA MP API specification 1.0 36*fcf3ce44SJohn Forte * 10/11/2005 37*fcf3ce44SJohn Forte * - Added the license location in the header comment. 38*fcf3ce44SJohn Forte * - Added an implementation note in constants and macros 39*fcf3ce44SJohn Forte * declarations section. 40*fcf3ce44SJohn Forte * - Fixed field name value in struct _MP_PROPRIETARY_PROPERTY. 41*fcf3ce44SJohn Forte * - Fixed typo in logicalUnitGroupID in 42*fcf3ce44SJohn Forte * _MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES 43*fcf3ce44SJohn Forte * - Fixed typo in desiredState in struct _MP_TPG_STATE_PAIR. 44*fcf3ce44SJohn Forte * - Fixed typo in API name MP_GetTargetPortGroupProperties. 45*fcf3ce44SJohn Forte * - Clarified description of MP_STATUS_INVALID_PARAMETER error 46*fcf3ce44SJohn Forte * in MP_GetObjectType(). 47*fcf3ce44SJohn Forte * - Fixed typo in API name 48*fcf3ce44SJohn Forte * MP_GetProprietaryLoadBalanceProperties(). 49*fcf3ce44SJohn Forte * 3/6/2006 50*fcf3ce44SJohn Forte * - mpapi.h header file is updated for 51*fcf3ce44SJohn Forte * MP_LOAD_BALANCE_TYPE change in the spec. 52*fcf3ce44SJohn Forte *****************************************************************************/ 53*fcf3ce44SJohn Forte 54*fcf3ce44SJohn Forte #ifdef __cplusplus 55*fcf3ce44SJohn Forte extern "C" { 56*fcf3ce44SJohn Forte #endif 57*fcf3ce44SJohn Forte 58*fcf3ce44SJohn Forte 59*fcf3ce44SJohn Forte #ifndef MPAPI_H 60*fcf3ce44SJohn Forte #define MPAPI_H 61*fcf3ce44SJohn Forte 62*fcf3ce44SJohn Forte #include <time.h> 63*fcf3ce44SJohn Forte #include <wchar.h> 64*fcf3ce44SJohn Forte #include <string.h> 65*fcf3ce44SJohn Forte #include <stdlib.h> 66*fcf3ce44SJohn Forte 67*fcf3ce44SJohn Forte 68*fcf3ce44SJohn Forte /* Library version string */ 69*fcf3ce44SJohn Forte #define MP_LIBVERSION 1 70*fcf3ce44SJohn Forte 71*fcf3ce44SJohn Forte /** 72*fcf3ce44SJohn Forte ******************************************************************************* 73*fcf3ce44SJohn Forte * 74*fcf3ce44SJohn Forte * Generic MP Constant Definitions 75*fcf3ce44SJohn Forte * 76*fcf3ce44SJohn Forte ******************************************************************************* 77*fcf3ce44SJohn Forte */ 78*fcf3ce44SJohn Forte #define RL_LIBRARY_SEQNUM 0 79*fcf3ce44SJohn Forte 80*fcf3ce44SJohn Forte /** 81*fcf3ce44SJohn Forte * Value which can be assigned to an MP_BOOL and or an MP_XBOOL. 82*fcf3ce44SJohn Forte */ 83*fcf3ce44SJohn Forte #define MP_TRUE 1 84*fcf3ce44SJohn Forte 85*fcf3ce44SJohn Forte /** 86*fcf3ce44SJohn Forte * Value which can be assigned to an MP_BOOL and or an MP_XBOOL. 87*fcf3ce44SJohn Forte */ 88*fcf3ce44SJohn Forte #define MP_FALSE 0 89*fcf3ce44SJohn Forte 90*fcf3ce44SJohn Forte /** 91*fcf3ce44SJohn Forte * Value which can be assigned to an MP_XBOOL. 92*fcf3ce44SJohn Forte */ 93*fcf3ce44SJohn Forte #define MP_UNKNOWN 0xFFFFFFFF 94*fcf3ce44SJohn Forte 95*fcf3ce44SJohn Forte #define MP_MAX_NUM_PLUGINS 64 96*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_MATCH 1 97*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_ANY 2 98*fcf3ce44SJohn Forte #define MAX_NAME_SIZE 256 99*fcf3ce44SJohn Forte #define MAX_LINE_SIZE 515 100*fcf3ce44SJohn Forte 101*fcf3ce44SJohn Forte 102*fcf3ce44SJohn Forte /** 103*fcf3ce44SJohn Forte ****************************************************************************** 104*fcf3ce44SJohn Forte * 105*fcf3ce44SJohn Forte * Base MP API Type Definitions 106*fcf3ce44SJohn Forte * 107*fcf3ce44SJohn Forte ****************************************************************************** 108*fcf3ce44SJohn Forte */ 109*fcf3ce44SJohn Forte 110*fcf3ce44SJohn Forte typedef unsigned char MP_UINT8; /* unsigned 8 bits */ 111*fcf3ce44SJohn Forte typedef char MP_INT8; /* signed 8 bits */ 112*fcf3ce44SJohn Forte typedef unsigned short MP_UINT16; /* unsigned 16 bits */ 113*fcf3ce44SJohn Forte typedef short MP_INT16; /* signed 16 bits */ 114*fcf3ce44SJohn Forte typedef unsigned int MP_UINT32; /* unsigned 32 bits */ 115*fcf3ce44SJohn Forte typedef int MP_INT32; /* signed 32 bits */ 116*fcf3ce44SJohn Forte typedef void* MP_PVOID; /* pointer to void */ 117*fcf3ce44SJohn Forte typedef MP_UINT32 MP_VOID32; /* opaque 32 bits */ 118*fcf3ce44SJohn Forte typedef long long MP_INT64; /* signed 64 bits */ 119*fcf3ce44SJohn Forte typedef unsigned long long MP_UINT64; /* unsigned 64 bits */ 120*fcf3ce44SJohn Forte 121*fcf3ce44SJohn Forte /** 122*fcf3ce44SJohn Forte * A character. 123*fcf3ce44SJohn Forte */ 124*fcf3ce44SJohn Forte typedef char MP_CHAR; 125*fcf3ce44SJohn Forte 126*fcf3ce44SJohn Forte /** 127*fcf3ce44SJohn Forte * A wide character. 128*fcf3ce44SJohn Forte */ 129*fcf3ce44SJohn Forte typedef wchar_t MP_WCHAR; 130*fcf3ce44SJohn Forte 131*fcf3ce44SJohn Forte /** 132*fcf3ce44SJohn Forte * An unsigned character. 133*fcf3ce44SJohn Forte */ 134*fcf3ce44SJohn Forte typedef unsigned char MP_BYTE; 135*fcf3ce44SJohn Forte 136*fcf3ce44SJohn Forte /** 137*fcf3ce44SJohn Forte * A boolean. 138*fcf3ce44SJohn Forte */ 139*fcf3ce44SJohn Forte typedef MP_UINT32 MP_BOOL; 140*fcf3ce44SJohn Forte 141*fcf3ce44SJohn Forte /** 142*fcf3ce44SJohn Forte * An extended boolean: can have the values @ref MP_TRUE, @ref MP_FALSE, and 143*fcf3ce44SJohn Forte * @ref MP_UNKNOWN. 144*fcf3ce44SJohn Forte */ 145*fcf3ce44SJohn Forte typedef MP_UINT32 MP_XBOOL; 146*fcf3ce44SJohn Forte 147*fcf3ce44SJohn Forte /** 148*fcf3ce44SJohn Forte ****************************************************************************** 149*fcf3ce44SJohn Forte * 150*fcf3ce44SJohn Forte * Constants and macros declarations related to MP_STATUS 151*fcf3ce44SJohn Forte * Implementation Notes: This library does validation for OID argument and 152*fcf3ce44SJohn Forte * returns the following errors. 153*fcf3ce44SJohn Forte * 154*fcf3ce44SJohn Forte * 1. MP_STATUS_INVALID_OBJECT_TYPE when input OID type is not 155*fcf3ce44SJohn Forte * one of legitimate types defined SNIA Multipath Management 156*fcf3ce44SJohn Forte * Spec. 157*fcf3ce44SJohn Forte * 2. MP_STATUS_INVALID_PARAMETER when input OID type is 158*fcf3ce44SJohn Forte * legitimate but not a proper type for API. 159*fcf3ce44SJohn Forte * 3. MP_STATUS_OBJECT_NOT_FOUND when the ownerId of input OID is 160*fcf3ce44SJohn Forte * not found or no object instance with matching 161*fcf3ce44SJohn Forte * sequenceNumber is found. 162*fcf3ce44SJohn Forte * The ownerId is validated by the common library and the 163*fcf3ce44SJohn Forte * sequence number is validated by the plugin library. 164*fcf3ce44SJohn Forte * 165*fcf3ce44SJohn Forte ****************************************************************************** 166*fcf3ce44SJohn Forte */ 167*fcf3ce44SJohn Forte typedef enum { 168*fcf3ce44SJohn Forte MP_STATUS_SUCCESS = 0, 169*fcf3ce44SJohn Forte MP_STATUS_INVALID_PARAMETER = 1, 170*fcf3ce44SJohn Forte MP_STATUS_UNKNOWN_FN = 2, 171*fcf3ce44SJohn Forte MP_STATUS_FAILED = 3, 172*fcf3ce44SJohn Forte MP_STATUS_INSUFFICIENT_MEMORY = 4, 173*fcf3ce44SJohn Forte MP_STATUS_INVALID_OBJECT_TYPE = 5, 174*fcf3ce44SJohn Forte MP_STATUS_OBJECT_NOT_FOUND = 6, 175*fcf3ce44SJohn Forte MP_STATUS_UNSUPPORTED = 7, 176*fcf3ce44SJohn Forte MP_STATUS_FN_REPLACED = 8, 177*fcf3ce44SJohn Forte MP_STATUS_ACCESS_STATE_INVALID = 9, 178*fcf3ce44SJohn Forte MP_STATUS_INVALID_WEIGHT = 10, 179*fcf3ce44SJohn Forte MP_STATUS_PATH_NONOPERATIONAL = 11, 180*fcf3ce44SJohn Forte MP_STATUS_TRY_AGAIN = 12, 181*fcf3ce44SJohn Forte MP_STATUS_NOT_PERMITTED = 13 182*fcf3ce44SJohn Forte 183*fcf3ce44SJohn Forte } MP_STATUS; 184*fcf3ce44SJohn Forte 185*fcf3ce44SJohn Forte /** 186*fcf3ce44SJohn Forte ****************************************************************************** 187*fcf3ce44SJohn Forte * 188*fcf3ce44SJohn Forte * Declaration of the MP_PATH_STATE constants 189*fcf3ce44SJohn Forte * 190*fcf3ce44SJohn Forte ****************************************************************************** 191*fcf3ce44SJohn Forte */ 192*fcf3ce44SJohn Forte #define MP_PATH_STATE_OKAY 0 193*fcf3ce44SJohn Forte #define MP_PATH_STATE_PATH_ERR 1 194*fcf3ce44SJohn Forte #define MP_PATH_STATE_LU_ERR 2 195*fcf3ce44SJohn Forte #define MP_PATH_STATE_RESERVED 3 196*fcf3ce44SJohn Forte #define MP_PATH_STATE_REMOVED 4 197*fcf3ce44SJohn Forte #define MP_PATH_STATE_TRANSITIONING 5 198*fcf3ce44SJohn Forte #define MP_PATH_STATE_OPERATIONAL_CLOSED 6 199*fcf3ce44SJohn Forte #define MP_PATH_STATE_INVALID_CLOSED 7 200*fcf3ce44SJohn Forte #define MP_PATH_STATE_OFFLINE_CLOSED 8 201*fcf3ce44SJohn Forte #define MP_PATH_STATE_UNKNOWN 9 202*fcf3ce44SJohn Forte 203*fcf3ce44SJohn Forte typedef MP_UINT32 MP_PATH_STATE; 204*fcf3ce44SJohn Forte 205*fcf3ce44SJohn Forte /** 206*fcf3ce44SJohn Forte ******************************************************************************* 207*fcf3ce44SJohn Forte * 208*fcf3ce44SJohn Forte * Declaration of the MP_OBJECT_TYPE constants 209*fcf3ce44SJohn Forte * 210*fcf3ce44SJohn Forte ******************************************************************************* 211*fcf3ce44SJohn Forte */ 212*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_UNKNOWN 0 213*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_PLUGIN 1 214*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_INITIATOR_PORT 2 215*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_TARGET_PORT 3 216*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_MULTIPATH_LU 4 217*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_PATH_LU 5 218*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_DEVICE_PRODUCT 6 219*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_TARGET_PORT_GROUP 7 220*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_PROPRIETARY_LOAD_BALANCE 8 221*fcf3ce44SJohn Forte 222*fcf3ce44SJohn Forte /* set to the highest constant of object type. */ 223*fcf3ce44SJohn Forte #define MP_OBJECT_TYPE_MAX 8 224*fcf3ce44SJohn Forte 225*fcf3ce44SJohn Forte typedef MP_UINT32 MP_OBJECT_TYPE; 226*fcf3ce44SJohn Forte 227*fcf3ce44SJohn Forte /** 228*fcf3ce44SJohn Forte ******************************************************************************* 229*fcf3ce44SJohn Forte * 230*fcf3ce44SJohn Forte * Declaration of the MP_PORT_TRANSPORT_TYPE 231*fcf3ce44SJohn Forte * 232*fcf3ce44SJohn Forte ******************************************************************************* 233*fcf3ce44SJohn Forte */ 234*fcf3ce44SJohn Forte #define MP_PORT_TRANSPORT_TYPE_UNKNOWN 0 235*fcf3ce44SJohn Forte #define MP_PORT_TRANSPORT_TYPE_MPNODE 1 236*fcf3ce44SJohn Forte #define MP_PORT_TRANSPORT_TYPE_FC 2 237*fcf3ce44SJohn Forte #define MP_PORT_TRANSPORT_TYPE_SPI 3 238*fcf3ce44SJohn Forte #define MP_PORT_TRANSPORT_TYPE_ISCSI 4 239*fcf3ce44SJohn Forte #define MP_PORT_TRANSPORT_TYPE_IFB 5 240*fcf3ce44SJohn Forte 241*fcf3ce44SJohn Forte typedef MP_UINT32 MP_PORT_TRANSPORT_TYPE; 242*fcf3ce44SJohn Forte 243*fcf3ce44SJohn Forte /** 244*fcf3ce44SJohn Forte ******************************************************************************* 245*fcf3ce44SJohn Forte * 246*fcf3ce44SJohn Forte * Declaration of the MP_ACCESS_STATE_TYPE constants 247*fcf3ce44SJohn Forte * 248*fcf3ce44SJohn Forte ******************************************************************************* 249*fcf3ce44SJohn Forte */ 250*fcf3ce44SJohn Forte #define MP_ACCESS_STATE_ACTIVE_OPTIMIZED (0x0) 251*fcf3ce44SJohn Forte #define MP_ACCESS_STATE_ACTIVE_NONOPTIMIZED (0x1) 252*fcf3ce44SJohn Forte #define MP_ACCESS_STATE_STANDBY (0x2) 253*fcf3ce44SJohn Forte #define MP_ACCESS_STATE_UNAVAILABLE (0x3) 254*fcf3ce44SJohn Forte #define MP_ACCESS_STATE_TRANSITIONING (0xF) 255*fcf3ce44SJohn Forte #define MP_ACCESS_STATE_ACTIVE (0x10) 256*fcf3ce44SJohn Forte 257*fcf3ce44SJohn Forte typedef MP_UINT32 MP_ACCESS_STATE_TYPE; 258*fcf3ce44SJohn Forte 259*fcf3ce44SJohn Forte /** 260*fcf3ce44SJohn Forte ******************************************************************************* 261*fcf3ce44SJohn Forte * 262*fcf3ce44SJohn Forte * Declaration of the MP_LOAD_BALANCE_TYPE constants 263*fcf3ce44SJohn Forte * 264*fcf3ce44SJohn Forte ******************************************************************************* 265*fcf3ce44SJohn Forte */ 266*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_UNKNOWN (1<<0) 267*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_ROUNDROBIN (1<<1) 268*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_LEASTBLOCKS (1<<2) 269*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_LEASTIO (1<<3) 270*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_DEVICE_PRODUCT (1<<4) 271*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_LBA_REGION (1<<5) 272*fcf3ce44SJohn Forte #define MP_LOAD_BALANCE_TYPE_FAILOVER_ONLY (1<<6) 273*fcf3ce44SJohn Forte /** 274*fcf3ce44SJohn Forte * Proprietary load balance type should start from 0x10000(1<<16) or greater. 275*fcf3ce44SJohn Forte * It is exposed through API MP_GetProprietaryLoadBalanceProperties if exists. 276*fcf3ce44SJohn Forte */ 277*fcf3ce44SJohn Forte 278*fcf3ce44SJohn Forte typedef MP_UINT32 MP_LOAD_BALANCE_TYPE; 279*fcf3ce44SJohn Forte 280*fcf3ce44SJohn Forte typedef struct mpPluginInfo { 281*fcf3ce44SJohn Forte MP_WCHAR pluginName[MAX_NAME_SIZE]; 282*fcf3ce44SJohn Forte MP_CHAR pluginPath[MAX_NAME_SIZE]; 283*fcf3ce44SJohn Forte void* hdlPlugin; 284*fcf3ce44SJohn Forte MP_UINT32 ownerId; 285*fcf3ce44SJohn Forte } MPPLUGININFO_T; 286*fcf3ce44SJohn Forte 287*fcf3ce44SJohn Forte 288*fcf3ce44SJohn Forte /** 289*fcf3ce44SJohn Forte ******************************************************************************* 290*fcf3ce44SJohn Forte * 291*fcf3ce44SJohn Forte * Declaration of the MP_PROPRIETARY_PROPERTY 292*fcf3ce44SJohn Forte * 293*fcf3ce44SJohn Forte ******************************************************************************* 294*fcf3ce44SJohn Forte */ 295*fcf3ce44SJohn Forte typedef struct _MP_PROPRIETARY_PROPERTY 296*fcf3ce44SJohn Forte { 297*fcf3ce44SJohn Forte MP_WCHAR name[16]; 298*fcf3ce44SJohn Forte MP_WCHAR value[48]; 299*fcf3ce44SJohn Forte 300*fcf3ce44SJohn Forte } MP_PROPRIETARY_PROPERTY; 301*fcf3ce44SJohn Forte 302*fcf3ce44SJohn Forte /** 303*fcf3ce44SJohn Forte ******************************************************************************* 304*fcf3ce44SJohn Forte * 305*fcf3ce44SJohn Forte * Declaration of the MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES 306*fcf3ce44SJohn Forte * 307*fcf3ce44SJohn Forte ******************************************************************************* 308*fcf3ce44SJohn Forte */ 309*fcf3ce44SJohn Forte typedef struct _MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES 310*fcf3ce44SJohn Forte { 311*fcf3ce44SJohn Forte MP_LOAD_BALANCE_TYPE typeIndex; 312*fcf3ce44SJohn Forte MP_WCHAR name[256]; 313*fcf3ce44SJohn Forte MP_WCHAR vendorName[256]; 314*fcf3ce44SJohn Forte MP_UINT32 proprietaryPropertyCount; 315*fcf3ce44SJohn Forte MP_PROPRIETARY_PROPERTY proprietaryProperties[8]; 316*fcf3ce44SJohn Forte 317*fcf3ce44SJohn Forte } MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES; 318*fcf3ce44SJohn Forte 319*fcf3ce44SJohn Forte /** 320*fcf3ce44SJohn Forte ******************************************************************************* 321*fcf3ce44SJohn Forte * 322*fcf3ce44SJohn Forte * Declaration of the MP_UINT32 MP_LOGICAL_UNIT_NAME_TYPE constants 323*fcf3ce44SJohn Forte * 324*fcf3ce44SJohn Forte ******************************************************************************* 325*fcf3ce44SJohn Forte */ 326*fcf3ce44SJohn Forte #define MP_LU_NAME_TYPE_UNKNOWN 0 327*fcf3ce44SJohn Forte #define MP_LU_NAME_TYPE_VPD83_TYPE1 1 328*fcf3ce44SJohn Forte #define MP_LU_NAME_TYPE_VPD83_TYPE2 2 329*fcf3ce44SJohn Forte #define MP_LU_NAME_TYPE_VPD83_TYPE3 3 330*fcf3ce44SJohn Forte #define MP_LU_NAME_TYPE_DEVICE_SPECIFIC 4 331*fcf3ce44SJohn Forte 332*fcf3ce44SJohn Forte typedef MP_UINT32 MP_LOGICAL_UNIT_NAME_TYPE; 333*fcf3ce44SJohn Forte 334*fcf3ce44SJohn Forte /** 335*fcf3ce44SJohn Forte ******************************************************************************* 336*fcf3ce44SJohn Forte * 337*fcf3ce44SJohn Forte * Declaration of the MP_UINT32 MP_AUTOFAILBACK_SUPPORT constants 338*fcf3ce44SJohn Forte * 339*fcf3ce44SJohn Forte ******************************************************************************* 340*fcf3ce44SJohn Forte */ 341*fcf3ce44SJohn Forte #define MP_AUTOFAILBACK_SUPPORT_NONE 0 342*fcf3ce44SJohn Forte #define MP_AUTOFAILBACK_SUPPORT_PLUGIN 1 343*fcf3ce44SJohn Forte #define MP_AUTOFAILBACK_SUPPORT_MPLU 2 344*fcf3ce44SJohn Forte #define MP_AUTOFAILBACK_SUPPORT_PLUGINANDMPLU 3 345*fcf3ce44SJohn Forte 346*fcf3ce44SJohn Forte typedef MP_UINT32 MP_AUTOFAILBACK_SUPPORT; 347*fcf3ce44SJohn Forte 348*fcf3ce44SJohn Forte /** 349*fcf3ce44SJohn Forte ******************************************************************************* 350*fcf3ce44SJohn Forte * 351*fcf3ce44SJohn Forte * Declaration of the MP_UINT32 MP_AUTOPROBING_SUPPORT constants 352*fcf3ce44SJohn Forte * 353*fcf3ce44SJohn Forte ******************************************************************************* 354*fcf3ce44SJohn Forte */ 355*fcf3ce44SJohn Forte #define MP_AUTOPROBING_SUPPORT_NONE 0 356*fcf3ce44SJohn Forte #define MP_AUTOPROBING_SUPPORT_PLUGIN 1 357*fcf3ce44SJohn Forte #define MP_AUTORPOBING_SUPPORT_MPLU 2 358*fcf3ce44SJohn Forte #define MP_AUTORPOBING_SUPPORT_PLUGINANDMPLU 3 359*fcf3ce44SJohn Forte 360*fcf3ce44SJohn Forte typedef MP_UINT32 MP_AUTOPROBING_SUPPORT; 361*fcf3ce44SJohn Forte 362*fcf3ce44SJohn Forte /** 363*fcf3ce44SJohn Forte ******************************************************************************* 364*fcf3ce44SJohn Forte * 365*fcf3ce44SJohn Forte * Declaration of the MP_OID structure 366*fcf3ce44SJohn Forte * 367*fcf3ce44SJohn Forte * This structure should be treated as opaque by clients of the API. 368*fcf3ce44SJohn Forte * Appropriate APIs should be used to extract information from the structure. 369*fcf3ce44SJohn Forte * 370*fcf3ce44SJohn Forte * Also ZERO_OID is defined for APIs that may handle multiple plugin OIDs. 371*fcf3ce44SJohn Forte * 372*fcf3ce44SJohn Forte ******************************************************************************* 373*fcf3ce44SJohn Forte */ 374*fcf3ce44SJohn Forte typedef struct _MP_OID 375*fcf3ce44SJohn Forte { 376*fcf3ce44SJohn Forte /** 377*fcf3ce44SJohn Forte * The type of the object. When an object ID is supplied as a parameter 378*fcf3ce44SJohn Forte * to an API the library uses this value to insure that the supplied 379*fcf3ce44SJohn Forte * object ID's type is appropriate for the API. 380*fcf3ce44SJohn Forte */ 381*fcf3ce44SJohn Forte MP_OBJECT_TYPE objectType; 382*fcf3ce44SJohn Forte 383*fcf3ce44SJohn Forte /** 384*fcf3ce44SJohn Forte * A value determined by the library which it uses to uniquely identify the 385*fcf3ce44SJohn Forte * owner of an object. The owner of an object is either the library itself 386*fcf3ce44SJohn Forte * or a plugin. When an object ID is supplied as a parameter to an API the 387*fcf3ce44SJohn Forte * library uses this value to determine if it should handle the call itself 388*fcf3ce44SJohn Forte * or direct the call to one or more plugins. 389*fcf3ce44SJohn Forte */ 390*fcf3ce44SJohn Forte MP_UINT32 ownerId; 391*fcf3ce44SJohn Forte 392*fcf3ce44SJohn Forte /** 393*fcf3ce44SJohn Forte * A value determined by a plugin which a plugin uses, perhaps in 394*fcf3ce44SJohn Forte * combination with the object type, to uniquely identify one of its 395*fcf3ce44SJohn Forte * objects. 396*fcf3ce44SJohn Forte */ 397*fcf3ce44SJohn Forte MP_UINT64 objectSequenceNumber; 398*fcf3ce44SJohn Forte 399*fcf3ce44SJohn Forte } MP_OID; 400*fcf3ce44SJohn Forte 401*fcf3ce44SJohn Forte #define ZERO_OID ((const MP_OID){MP_OBJECT_TYPE_UNKNOWN,0,0}) 402*fcf3ce44SJohn Forte 403*fcf3ce44SJohn Forte /** 404*fcf3ce44SJohn Forte ******************************************************************************* 405*fcf3ce44SJohn Forte * 406*fcf3ce44SJohn Forte * Declaration of the MP_OID_LIST structure 407*fcf3ce44SJohn Forte * 408*fcf3ce44SJohn Forte * This structure is used by a number of APIs to return lists of objects. Any 409*fcf3ce44SJohn Forte * instance of this structure returned by an API must be freed by a client 410*fcf3ce44SJohn Forte * using the MP_FreeOidList API. Although oids is declared to be an 411*fcf3ce44SJohn Forte * array of one 412*fcf3ce44SJohn Forte * @ref MP_OID structure it can in fact contain any number of 413*fcf3ce44SJohn Forte * @ref MP_OID structures. The oidCount indicates the number of @ref MP_OID 414*fcf3ce44SJohn Forte * structures in the oids array. 415*fcf3ce44SJohn Forte * 416*fcf3ce44SJohn Forte * @note The @a oids array is a variable length array, despite its declaration 417*fcf3ce44SJohn Forte * below it can be of any length. 418*fcf3ce44SJohn Forte * 419*fcf3ce44SJohn Forte ******************************************************************************* 420*fcf3ce44SJohn Forte */ 421*fcf3ce44SJohn Forte typedef struct _MP_OID_LIST 422*fcf3ce44SJohn Forte { 423*fcf3ce44SJohn Forte /** 424*fcf3ce44SJohn Forte * The number of object IDs in the @a oids array. 425*fcf3ce44SJohn Forte */ 426*fcf3ce44SJohn Forte MP_UINT32 oidCount; 427*fcf3ce44SJohn Forte 428*fcf3ce44SJohn Forte /** 429*fcf3ce44SJohn Forte * A variable length array of zero or more object IDs. There are 430*fcf3ce44SJohn Forte * 'oidCount' object IDs in this array. 431*fcf3ce44SJohn Forte */ 432*fcf3ce44SJohn Forte MP_OID oids[1]; 433*fcf3ce44SJohn Forte 434*fcf3ce44SJohn Forte } MP_OID_LIST; 435*fcf3ce44SJohn Forte 436*fcf3ce44SJohn Forte /** 437*fcf3ce44SJohn Forte ******************************************************************************* 438*fcf3ce44SJohn Forte * 439*fcf3ce44SJohn Forte * Declaration of the MP_LIBRARY_PROPERTIES structure 440*fcf3ce44SJohn Forte * 441*fcf3ce44SJohn Forte * This structure is returned by the MP_GetLibraryProperties() API. 442*fcf3ce44SJohn Forte * 443*fcf3ce44SJohn Forte ******************************************************************************* 444*fcf3ce44SJohn Forte */ 445*fcf3ce44SJohn Forte typedef struct _MP_LIBRARY_PROPERTIES 446*fcf3ce44SJohn Forte { 447*fcf3ce44SJohn Forte /** 448*fcf3ce44SJohn Forte * The version of the Multipath Management API implemented by the library. 449*fcf3ce44SJohn Forte */ 450*fcf3ce44SJohn Forte MP_UINT32 supportedMpVersion; 451*fcf3ce44SJohn Forte 452*fcf3ce44SJohn Forte /** 453*fcf3ce44SJohn Forte * A null terminated ASCII string containing the name of the vendor that 454*fcf3ce44SJohn Forte * created the binary version of the library. 455*fcf3ce44SJohn Forte */ 456*fcf3ce44SJohn Forte MP_WCHAR vendor[256]; 457*fcf3ce44SJohn Forte 458*fcf3ce44SJohn Forte /** 459*fcf3ce44SJohn Forte * A null terminated ASCII string containing the implementation version 460*fcf3ce44SJohn Forte * of the library from the vendor specified in the 'vendor' field. 461*fcf3ce44SJohn Forte */ 462*fcf3ce44SJohn Forte MP_WCHAR implementationVersion[256]; 463*fcf3ce44SJohn Forte 464*fcf3ce44SJohn Forte /** 465*fcf3ce44SJohn Forte * A null terminated ASCII string ideally containing the path and file 466*fcf3ce44SJohn Forte * name of the library that is being used by the currently executing 467*fcf3ce44SJohn Forte * process can be found. If the path cannot be determined then it is 468*fcf3ce44SJohn Forte * acceptable to fill this field with only the name (and extension if 469*fcf3ce44SJohn Forte * applicable) of the file of the library. If this cannot be determined 470*fcf3ce44SJohn Forte * then this field should be an empty string. 471*fcf3ce44SJohn Forte */ 472*fcf3ce44SJohn Forte MP_CHAR fileName[256]; 473*fcf3ce44SJohn Forte 474*fcf3ce44SJohn Forte /** 475*fcf3ce44SJohn Forte * The time and date that the library that is executing was built. 476*fcf3ce44SJohn Forte */ 477*fcf3ce44SJohn Forte MP_WCHAR buildTime[256]; 478*fcf3ce44SJohn Forte 479*fcf3ce44SJohn Forte } MP_LIBRARY_PROPERTIES; 480*fcf3ce44SJohn Forte 481*fcf3ce44SJohn Forte /** 482*fcf3ce44SJohn Forte ******************************************************************************* 483*fcf3ce44SJohn Forte * 484*fcf3ce44SJohn Forte * Declaration of the MP_PLUGIN_PROPERTIES structure 485*fcf3ce44SJohn Forte * 486*fcf3ce44SJohn Forte * This structure is returned by the MP_GetPluginProperties() API. 487*fcf3ce44SJohn Forte * 488*fcf3ce44SJohn Forte ******************************************************************************* 489*fcf3ce44SJohn Forte */ 490*fcf3ce44SJohn Forte typedef struct _MP_PLUGIN_PROPERTIES 491*fcf3ce44SJohn Forte { 492*fcf3ce44SJohn Forte /** 493*fcf3ce44SJohn Forte * The version of the Multipath Management API implemented by a plugin. 494*fcf3ce44SJohn Forte */ 495*fcf3ce44SJohn Forte MP_UINT32 supportedMpVersion; 496*fcf3ce44SJohn Forte 497*fcf3ce44SJohn Forte /** 498*fcf3ce44SJohn Forte * A null terminated Unicode string containing the name of the vendor that 499*fcf3ce44SJohn Forte * created the binary version of the plugin. 500*fcf3ce44SJohn Forte */ 501*fcf3ce44SJohn Forte MP_WCHAR vendor[256]; 502*fcf3ce44SJohn Forte 503*fcf3ce44SJohn Forte /** 504*fcf3ce44SJohn Forte * A null terminated Unicode string containing the implementation version 505*fcf3ce44SJohn Forte * of the plugin from the vendor specified in vendor. 506*fcf3ce44SJohn Forte */ 507*fcf3ce44SJohn Forte MP_WCHAR implementationVersion[256]; 508*fcf3ce44SJohn Forte 509*fcf3ce44SJohn Forte /** 510*fcf3ce44SJohn Forte * A null terminated ASCII string ideally containing the path and file 511*fcf3ce44SJohn Forte * name of the plugin that is filling in this structure. 512*fcf3ce44SJohn Forte */ 513*fcf3ce44SJohn Forte MP_CHAR fileName[256]; 514*fcf3ce44SJohn Forte 515*fcf3ce44SJohn Forte /** 516*fcf3ce44SJohn Forte * The time and date that the plugin that is executing was built. 517*fcf3ce44SJohn Forte */ 518*fcf3ce44SJohn Forte MP_WCHAR buildTime[256]; 519*fcf3ce44SJohn Forte 520*fcf3ce44SJohn Forte /** 521*fcf3ce44SJohn Forte * A null terminated Unicode string containing the name of the multipath 522*fcf3ce44SJohn Forte * driver vendor associated with this plugin. 523*fcf3ce44SJohn Forte */ 524*fcf3ce44SJohn Forte MP_WCHAR driverVendor[256]; 525*fcf3ce44SJohn Forte 526*fcf3ce44SJohn Forte /** 527*fcf3ce44SJohn Forte * A null terminated Unicode string ideally containing the path and file 528*fcf3ce44SJohn Forte * name of the plugin that is filling in this structure. 529*fcf3ce44SJohn Forte */ 530*fcf3ce44SJohn Forte MP_CHAR driverName[256]; 531*fcf3ce44SJohn Forte 532*fcf3ce44SJohn Forte /** 533*fcf3ce44SJohn Forte * A null terminated Unicode string containing the version number of 534*fcf3ce44SJohn Forte * the multipath driver. 535*fcf3ce44SJohn Forte */ 536*fcf3ce44SJohn Forte MP_WCHAR driverVersion[256]; 537*fcf3ce44SJohn Forte 538*fcf3ce44SJohn Forte /** 539*fcf3ce44SJohn Forte * A set of flags representing the load balance types 540*fcf3ce44SJohn Forte * (MP_LOAD_BALANCE_TYPES) supported by the plugin/driver as a plugin-wide 541*fcf3ce44SJohn Forte * property. 542*fcf3ce44SJohn Forte */ 543*fcf3ce44SJohn Forte MP_UINT32 supportedLoadBalanceTypes; 544*fcf3ce44SJohn Forte 545*fcf3ce44SJohn Forte /** 546*fcf3ce44SJohn Forte * boolean indicating whether the implementation supports activating target 547*fcf3ce44SJohn Forte * port groups. 548*fcf3ce44SJohn Forte */ 549*fcf3ce44SJohn Forte MP_BOOL canSetTPGAccess; 550*fcf3ce44SJohn Forte 551*fcf3ce44SJohn Forte /** 552*fcf3ce44SJohn Forte * A Boolean indicating whether the implementations supports overriding 553*fcf3ce44SJohn Forte * paths. Setting this to true indicates MP_SetOverridePath and 554*fcf3ce44SJohn Forte * MP_CancelOverridePath are supported. 555*fcf3ce44SJohn Forte */ 556*fcf3ce44SJohn Forte MP_BOOL canOverridePaths; 557*fcf3ce44SJohn Forte 558*fcf3ce44SJohn Forte /** 559*fcf3ce44SJohn Forte * A boolean indicating whether the implementation exposes (or leaves 560*fcf3ce44SJohn Forte * exposed) device files for the individual paths encapsulated by the 561*fcf3ce44SJohn Forte * multipath device file. This is typically true for MP drivers that sit 562*fcf3ce44SJohn Forte * near the top of the driver stack.. 563*fcf3ce44SJohn Forte */ 564*fcf3ce44SJohn Forte MP_BOOL exposesPathDeviceFiles; 565*fcf3ce44SJohn Forte 566*fcf3ce44SJohn Forte /** 567*fcf3ce44SJohn Forte * A string representing the primary file names the driver uses for 568*fcf3ce44SJohn Forte * multipath logical units. 569*fcf3ce44SJohn Forte */ 570*fcf3ce44SJohn Forte MP_CHAR deviceFileNamespace[256]; 571*fcf3ce44SJohn Forte 572*fcf3ce44SJohn Forte /** 573*fcf3ce44SJohn Forte * A boolean indicating whether the driver limits multipath capabilities 574*fcf3ce44SJohn Forte * to certain device types. If true, then the driver only provides multipath 575*fcf3ce44SJohn Forte * support to devices exposed through MP_DEVICE_PRODUCT_PROPERTIES 576*fcf3ce44SJohn Forte * instances. If false, then the driver supports any device that provides 577*fcf3ce44SJohn Forte * standard SCSI logical unit identifiers. 578*fcf3ce44SJohn Forte */ 579*fcf3ce44SJohn Forte MP_BOOL onlySupportsSpecifiedProducts; 580*fcf3ce44SJohn Forte 581*fcf3ce44SJohn Forte /** 582*fcf3ce44SJohn Forte * Describes the range of administer settable path weights supported by the 583*fcf3ce44SJohn Forte * driver. A driver with no path preference capabilities should set 584*fcf3ce44SJohn Forte * this property to zero. A driver with the ability to enable/disable 585*fcf3ce44SJohn Forte * paths should set this property to 1. Drivers with more weight settings 586*fcf3ce44SJohn Forte * can set the property appropriately. 587*fcf3ce44SJohn Forte */ 588*fcf3ce44SJohn Forte MP_UINT32 maximumWeight; 589*fcf3ce44SJohn Forte 590*fcf3ce44SJohn Forte /** 591*fcf3ce44SJohn Forte * The autofailback support indicates whether the implementation supports 592*fcf3ce44SJohn Forte * auto-failback (to reenable paths that revert to a good state) at the 593*fcf3ce44SJohn Forte * plugin level, the multipath logical unit level, both levels or whether 594*fcf3ce44SJohn Forte * auto-failback is unsupported. 595*fcf3ce44SJohn Forte */ 596*fcf3ce44SJohn Forte MP_AUTOFAILBACK_SUPPORT autoFailbackSupport; 597*fcf3ce44SJohn Forte 598*fcf3ce44SJohn Forte /** 599*fcf3ce44SJohn Forte * A Boolean indicating whether plugin-wide autofailback is currently 600*fcf3ce44SJohn Forte * enabled. This parameter is undefined if autoFailbackSupport is 601*fcf3ce44SJohn Forte * MP_AUTOFAILBACK_SUPPORT_NONE or MP_AUTOFAILBACK_SUPPORT_MPLU. 602*fcf3ce44SJohn Forte */ 603*fcf3ce44SJohn Forte MP_BOOL pluginAutoFailbackEnabled; 604*fcf3ce44SJohn Forte 605*fcf3ce44SJohn Forte /** 606*fcf3ce44SJohn Forte * The maximum plugin-wide polling rate (in seconds) for auto-failback 607*fcf3ce44SJohn Forte * supported by the driver. A value of zero indicates the driver/plugin 608*fcf3ce44SJohn Forte * does not support polling. Undefined if autoFailbackSupport is 609*fcf3ce44SJohn Forte * MP_AUTOFAILBACK_SUPPORT_NONE or MP_AUTOFAILBACK_SUPPORT_MPLU. If the 610*fcf3ce44SJohn Forte * plugin/driver supports auto-failback without polling or does not provide 611*fcf3ce44SJohn Forte * a way to set the polling rate, then this must be set to zero (0). 612*fcf3ce44SJohn Forte * This value is set by the plugin and cannot be modified by users. 613*fcf3ce44SJohn Forte */ 614*fcf3ce44SJohn Forte MP_UINT32 failbackPollingRateMax; 615*fcf3ce44SJohn Forte 616*fcf3ce44SJohn Forte /** 617*fcf3ce44SJohn Forte * The current plugin-wide auto-failback polling rate (in seconds). 618*fcf3ce44SJohn Forte * Undefined if autofailbackSupport is MP_AUTOFAILBACK_SUPPORT_NONE or 619*fcf3ce44SJohn Forte * MP_AUTOFAILBACK_SUPPORT_MPLU. Cannot be more that plooingRateMax. 620*fcf3ce44SJohn Forte */ 621*fcf3ce44SJohn Forte MP_UINT32 currentFailbackPollingRate; 622*fcf3ce44SJohn Forte 623*fcf3ce44SJohn Forte /** 624*fcf3ce44SJohn Forte * An enumerated type indicating whether the implementation supports 625*fcf3ce44SJohn Forte * auto-probing at the plugin level, the multipath logical unit level, both 626*fcf3ce44SJohn Forte * levels or whether auto-probing is unsupported. 627*fcf3ce44SJohn Forte */ 628*fcf3ce44SJohn Forte MP_AUTOPROBING_SUPPORT autoProbingSupport; 629*fcf3ce44SJohn Forte 630*fcf3ce44SJohn Forte /** 631*fcf3ce44SJohn Forte * A boolean indicating that plugin-wide auto-probing is enabled. This 632*fcf3ce44SJohn Forte * property is undefined if autoProbingSupport is 633*fcf3ce44SJohn Forte * MP_AUTOPROBING_SUPPORT_NONE or MP_AUTOPROBING_SUPPORT_MPLU. 634*fcf3ce44SJohn Forte */ 635*fcf3ce44SJohn Forte MP_BOOL pluginAutoProbingEnabled; 636*fcf3ce44SJohn Forte 637*fcf3ce44SJohn Forte /** 638*fcf3ce44SJohn Forte * The maximum plugin-wide polling rate (in seconds) for auto-probing 639*fcf3ce44SJohn Forte * supported by the driver. Undefined if autoProbingSupport is 640*fcf3ce44SJohn Forte * MP_AUTOPROBING_SUPPORT_NONE or MP_AUTOPROBING_SUPPORT_MPLU. If the 641*fcf3ce44SJohn Forte * plugin/driver supports auto-probing without polling or does not provide a 642*fcf3ce44SJohn Forte * way to set the probing polling rate, then this must be set to zero (0). 643*fcf3ce44SJohn Forte * This value is set by the plugin and cannot be modified by users. 644*fcf3ce44SJohn Forte */ 645*fcf3ce44SJohn Forte MP_UINT32 probingPollingRateMax; 646*fcf3ce44SJohn Forte 647*fcf3ce44SJohn Forte /** 648*fcf3ce44SJohn Forte * The current plugin-wide auto-probing polling rate (in seconds). 649*fcf3ce44SJohn Forte * Undefined if autoProbingSupport is MP_AUTOPROBING_SUPPORT_NONE or 650*fcf3ce44SJohn Forte * MP_AUTOPROBING_SUPPORT_MPLU. Cannot be more that probingPollingRateMax. 651*fcf3ce44SJohn Forte */ 652*fcf3ce44SJohn Forte MP_UINT32 currentProbingPollingRate; 653*fcf3ce44SJohn Forte 654*fcf3ce44SJohn Forte /** 655*fcf3ce44SJohn Forte * The load balance type that will be used by the driver for devices 656*fcf3ce44SJohn Forte * (without a corresponding MP_DEVICE_PRODUCT_PROPERTIES instance) unless 657*fcf3ce44SJohn Forte * overridden by the administrator. Any logical unit with vendor, product, 658*fcf3ce44SJohn Forte * and revision properties matching a MP_DEVICE_PRODUCT_PROPERTIES instance 659*fcf3ce44SJohn Forte * will default to a device-specific load balance type. 660*fcf3ce44SJohn Forte */ 661*fcf3ce44SJohn Forte MP_LOAD_BALANCE_TYPE defaultloadBalanceType; 662*fcf3ce44SJohn Forte 663*fcf3ce44SJohn Forte /** 664*fcf3ce44SJohn Forte * The count of proprietary properties (less that or equal to eight) 665*fcf3ce44SJohn Forte * supported. 666*fcf3ce44SJohn Forte */ 667*fcf3ce44SJohn Forte MP_UINT32 proprietaryPropertyCount; 668*fcf3ce44SJohn Forte 669*fcf3ce44SJohn Forte /** 670*fcf3ce44SJohn Forte * A list of proprietary property name/value pairs. 671*fcf3ce44SJohn Forte */ 672*fcf3ce44SJohn Forte MP_PROPRIETARY_PROPERTY proprietaryProperties[8]; 673*fcf3ce44SJohn Forte 674*fcf3ce44SJohn Forte } MP_PLUGIN_PROPERTIES; 675*fcf3ce44SJohn Forte 676*fcf3ce44SJohn Forte /** 677*fcf3ce44SJohn Forte ******************************************************************************* 678*fcf3ce44SJohn Forte * 679*fcf3ce44SJohn Forte * Declaration of the MP_DEVICE_PRODUCT_PROPERTIES structure. 680*fcf3ce44SJohn Forte * 681*fcf3ce44SJohn Forte * This structure is returned by the MP_GetDeviceProductProperties() API. 682*fcf3ce44SJohn Forte * 683*fcf3ce44SJohn Forte ******************************************************************************* 684*fcf3ce44SJohn Forte */ 685*fcf3ce44SJohn Forte typedef struct _MP_DEVICE_PRODUCT_PROPERTIES 686*fcf3ce44SJohn Forte { 687*fcf3ce44SJohn Forte MP_CHAR vendor[8]; 688*fcf3ce44SJohn Forte MP_CHAR product[16]; 689*fcf3ce44SJohn Forte MP_CHAR revision[4]; 690*fcf3ce44SJohn Forte MP_UINT32 supportedLoadBalanceTypes; 691*fcf3ce44SJohn Forte 692*fcf3ce44SJohn Forte } MP_DEVICE_PRODUCT_PROPERTIES; 693*fcf3ce44SJohn Forte 694*fcf3ce44SJohn Forte /** 695*fcf3ce44SJohn Forte ******************************************************************************* 696*fcf3ce44SJohn Forte * 697*fcf3ce44SJohn Forte * Declaration of the MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES structure. 698*fcf3ce44SJohn Forte * 699*fcf3ce44SJohn Forte * This structure is returned by the MP_GetMPLogicalUnitProperties() API. 700*fcf3ce44SJohn Forte * 701*fcf3ce44SJohn Forte ******************************************************************************* 702*fcf3ce44SJohn Forte */ 703*fcf3ce44SJohn Forte typedef struct _MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES 704*fcf3ce44SJohn Forte { 705*fcf3ce44SJohn Forte MP_CHAR vendor[8]; 706*fcf3ce44SJohn Forte MP_CHAR product[16]; 707*fcf3ce44SJohn Forte MP_CHAR revision[4]; 708*fcf3ce44SJohn Forte MP_CHAR name[256]; 709*fcf3ce44SJohn Forte MP_LOGICAL_UNIT_NAME_TYPE nameType; 710*fcf3ce44SJohn Forte MP_CHAR deviceFileName[256]; 711*fcf3ce44SJohn Forte MP_BOOL asymmetric; 712*fcf3ce44SJohn Forte MP_OID overridePath; 713*fcf3ce44SJohn Forte MP_LOAD_BALANCE_TYPE currentLoadBalanceType; 714*fcf3ce44SJohn Forte MP_UINT32 logicalUnitGroupID; 715*fcf3ce44SJohn Forte MP_XBOOL autoFailbackEnabled; 716*fcf3ce44SJohn Forte MP_UINT32 failbackPollingRateMax; 717*fcf3ce44SJohn Forte MP_UINT32 currentFailbackPollingRate; 718*fcf3ce44SJohn Forte MP_XBOOL autoProbingEnabled; 719*fcf3ce44SJohn Forte MP_UINT32 probingPollingRateMax; 720*fcf3ce44SJohn Forte MP_UINT32 currentProbingPollingRate; 721*fcf3ce44SJohn Forte MP_UINT32 proprietaryPropertyCount; 722*fcf3ce44SJohn Forte MP_PROPRIETARY_PROPERTY proprietaryProperties[8]; 723*fcf3ce44SJohn Forte 724*fcf3ce44SJohn Forte } MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES; 725*fcf3ce44SJohn Forte 726*fcf3ce44SJohn Forte /** 727*fcf3ce44SJohn Forte ******************************************************************************* 728*fcf3ce44SJohn Forte * 729*fcf3ce44SJohn Forte * Declaration of the MP_PATH_LOGICAL_UNIT_PROPERTIES structure. 730*fcf3ce44SJohn Forte * 731*fcf3ce44SJohn Forte * This structure is returned by the MP_GetPathLogicalUnitProperties() API. 732*fcf3ce44SJohn Forte * 733*fcf3ce44SJohn Forte ******************************************************************************* 734*fcf3ce44SJohn Forte */ 735*fcf3ce44SJohn Forte typedef struct _MP_PATH_LOGICAL_UNIT_PROPERTIES 736*fcf3ce44SJohn Forte { 737*fcf3ce44SJohn Forte MP_UINT32 weight; 738*fcf3ce44SJohn Forte MP_PATH_STATE pathState; 739*fcf3ce44SJohn Forte MP_BOOL disabled; 740*fcf3ce44SJohn Forte MP_OID initiatorPortOid; 741*fcf3ce44SJohn Forte MP_OID targetPortOid; 742*fcf3ce44SJohn Forte MP_OID logicalUnitOid; 743*fcf3ce44SJohn Forte MP_UINT64 logicalUnitNumber; 744*fcf3ce44SJohn Forte MP_CHAR deviceFileName[256]; 745*fcf3ce44SJohn Forte MP_UINT32 busNumber; 746*fcf3ce44SJohn Forte MP_UINT32 portNumber; 747*fcf3ce44SJohn Forte 748*fcf3ce44SJohn Forte } MP_PATH_LOGICAL_UNIT_PROPERTIES; 749*fcf3ce44SJohn Forte 750*fcf3ce44SJohn Forte /** 751*fcf3ce44SJohn Forte ******************************************************************************* 752*fcf3ce44SJohn Forte * 753*fcf3ce44SJohn Forte * Declaration of the MP_INITIATOR_PORT_PROPERTIES structure. 754*fcf3ce44SJohn Forte * 755*fcf3ce44SJohn Forte * This structure is returned by the MP_GetInitiatorPortProperties() API. 756*fcf3ce44SJohn Forte * 757*fcf3ce44SJohn Forte ******************************************************************************* 758*fcf3ce44SJohn Forte */ 759*fcf3ce44SJohn Forte typedef struct _MP_INITIATOR_PORT_PROPERTIES 760*fcf3ce44SJohn Forte { 761*fcf3ce44SJohn Forte MP_CHAR portID[256]; 762*fcf3ce44SJohn Forte MP_PORT_TRANSPORT_TYPE portType; 763*fcf3ce44SJohn Forte MP_CHAR osDeviceFile[256]; 764*fcf3ce44SJohn Forte MP_WCHAR osFriendlyName[256]; 765*fcf3ce44SJohn Forte 766*fcf3ce44SJohn Forte } MP_INITIATOR_PORT_PROPERTIES; 767*fcf3ce44SJohn Forte 768*fcf3ce44SJohn Forte /** 769*fcf3ce44SJohn Forte ******************************************************************************* 770*fcf3ce44SJohn Forte * 771*fcf3ce44SJohn Forte * Declaration of the MP_TARGET_PORT_PROPERTIES structure. 772*fcf3ce44SJohn Forte * 773*fcf3ce44SJohn Forte * This structure is returned by the MP_GetTargetPortProperties() API. 774*fcf3ce44SJohn Forte * 775*fcf3ce44SJohn Forte ******************************************************************************* 776*fcf3ce44SJohn Forte */ 777*fcf3ce44SJohn Forte typedef struct _MP_TARGET_PORT_PROPERTIES 778*fcf3ce44SJohn Forte { 779*fcf3ce44SJohn Forte MP_CHAR portID[256]; 780*fcf3ce44SJohn Forte MP_UINT32 relativePortID; 781*fcf3ce44SJohn Forte 782*fcf3ce44SJohn Forte } MP_TARGET_PORT_PROPERTIES; 783*fcf3ce44SJohn Forte 784*fcf3ce44SJohn Forte /** 785*fcf3ce44SJohn Forte ******************************************************************************* 786*fcf3ce44SJohn Forte * 787*fcf3ce44SJohn Forte * Declaration of the MP_TARGET_PORT_GROUP_PROPERTIES structure. 788*fcf3ce44SJohn Forte * 789*fcf3ce44SJohn Forte * This structure is returned by the MP_GetTargetPortGroupProperties() API. 790*fcf3ce44SJohn Forte * 791*fcf3ce44SJohn Forte ******************************************************************************* 792*fcf3ce44SJohn Forte */ 793*fcf3ce44SJohn Forte typedef struct _MP_TARGET_PORT_GROUP_PROPERTIES 794*fcf3ce44SJohn Forte { 795*fcf3ce44SJohn Forte MP_ACCESS_STATE_TYPE accessState; 796*fcf3ce44SJohn Forte MP_BOOL explicitFailover; 797*fcf3ce44SJohn Forte MP_BOOL supportsLuAssignment; 798*fcf3ce44SJohn Forte MP_BOOL preferredLuPath; 799*fcf3ce44SJohn Forte MP_UINT32 tpgID; 800*fcf3ce44SJohn Forte 801*fcf3ce44SJohn Forte } MP_TARGET_PORT_GROUP_PROPERTIES; 802*fcf3ce44SJohn Forte 803*fcf3ce44SJohn Forte /** 804*fcf3ce44SJohn Forte ******************************************************************************* 805*fcf3ce44SJohn Forte * 806*fcf3ce44SJohn Forte * Declaration of the MP_TPG_STATE_PAIR structure. 807*fcf3ce44SJohn Forte * 808*fcf3ce44SJohn Forte * This structure is used as an argument for the MP_SetTPGAcess() API. 809*fcf3ce44SJohn Forte * 810*fcf3ce44SJohn Forte ******************************************************************************* 811*fcf3ce44SJohn Forte */ 812*fcf3ce44SJohn Forte typedef struct _MP_TPG_STATE_PAIR 813*fcf3ce44SJohn Forte { 814*fcf3ce44SJohn Forte MP_OID tpgOid; 815*fcf3ce44SJohn Forte MP_ACCESS_STATE_TYPE desiredState; 816*fcf3ce44SJohn Forte 817*fcf3ce44SJohn Forte } MP_TPG_STATE_PAIR; 818*fcf3ce44SJohn Forte 819*fcf3ce44SJohn Forte /** 820*fcf3ce44SJohn Forte ******************************************************************************* 821*fcf3ce44SJohn Forte * 822*fcf3ce44SJohn Forte * Declaration of call back function type for event support 823*fcf3ce44SJohn Forte * 824*fcf3ce44SJohn Forte ******************************************************************************* 825*fcf3ce44SJohn Forte */ 826*fcf3ce44SJohn Forte typedef void (* MP_OBJECT_PROPERTY_FN) ( 827*fcf3ce44SJohn Forte MP_OID_LIST *pOidList, void *pCallerData 828*fcf3ce44SJohn Forte ); 829*fcf3ce44SJohn Forte 830*fcf3ce44SJohn Forte typedef void (* MP_OBJECT_VISIBILITY_FN) ( 831*fcf3ce44SJohn Forte MP_BOOL becomingVisible, MP_OID_LIST *pOidList, void *pCallerData 832*fcf3ce44SJohn Forte ); 833*fcf3ce44SJohn Forte 834*fcf3ce44SJohn Forte void InitLibrary(); 835*fcf3ce44SJohn Forte void ExitLibrary(); 836*fcf3ce44SJohn Forte 837*fcf3ce44SJohn Forte /** 838*fcf3ce44SJohn Forte ****************************************************************************** 839*fcf3ce44SJohn Forte * 840*fcf3ce44SJohn Forte * The APIs for property and object related discovery. 841*fcf3ce44SJohn Forte * 842*fcf3ce44SJohn Forte * - MP_GetLibraryProperties 843*fcf3ce44SJohn Forte * - MP_GetPluginOidList 844*fcf3ce44SJohn Forte * - MP_GetPluginProperties 845*fcf3ce44SJohn Forte * - MP_GetAssociatedPluginOid 846*fcf3ce44SJohn Forte * - MP_GetObjectType 847*fcf3ce44SJohn Forte * - MP_GetDeviceProductOidList 848*fcf3ce44SJohn Forte * - MP_GetDeviceProductProperties 849*fcf3ce44SJohn Forte * - MP_GetInitiatorPortOidList 850*fcf3ce44SJohn Forte * - MP_GetInitiatorPortProperties 851*fcf3ce44SJohn Forte * - MP_GetMultipathLus 852*fcf3ce44SJohn Forte * - MP_GetMPLogicalUnitProperties 853*fcf3ce44SJohn Forte * - MP_GetAssociatedPathOidList 854*fcf3ce44SJohn Forte * - MP_GetPathLogicalUnitProperties 855*fcf3ce44SJohn Forte * - MP_GetAssociatedTPGOidList 856*fcf3ce44SJohn Forte * - MP_GetTargetPortGroupProperties 857*fcf3ce44SJohn Forte * - MP_GetMPLuOidListFromTPG 858*fcf3ce44SJohn Forte * - MP_GetProprietaryLoadBalanceOidList 859*fcf3ce44SJohn Forte * - MP_GetProprietaryLoadBalanceProperties 860*fcf3ce44SJohn Forte * - MP_GetTargetPortOidList 861*fcf3ce44SJohn Forte * - MP_GetTargetPortProperties 862*fcf3ce44SJohn Forte * 863*fcf3ce44SJohn Forte ****************************************************************************** 864*fcf3ce44SJohn Forte */ 865*fcf3ce44SJohn Forte 866*fcf3ce44SJohn Forte /** 867*fcf3ce44SJohn Forte ******************************************************************************* 868*fcf3ce44SJohn Forte * 869*fcf3ce44SJohn Forte * Gets the properties of the MP API library that is being used. 870*fcf3ce44SJohn Forte * 871*fcf3ce44SJohn Forte * @param pProps 872*fcf3ce44SJohn Forte * A pointer to an MP_LIBRARY_PROPERTIES structure allocated by 873*fcf3ce44SJohn Forte * the caller. On successful return this structure will contain the 874*fcf3ce44SJohn Forte * properties of the MP API library. 875*fcf3ce44SJohn Forte * 876*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 877*fcf3ce44SJohn Forte * an error occurred. 878*fcf3ce44SJohn Forte * 879*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 880*fcf3ce44SJohn Forte * Returned if the library properties were successfully returned. 881*fcf3ce44SJohn Forte * 882*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 883*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding the 884*fcf3ce44SJohn Forte * library properties is found to be invalid. 885*fcf3ce44SJohn Forte * 886*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 887*fcf3ce44SJohn Forte * Returned when the implementation does not support the API. 888*fcf3ce44SJohn Forte * 889*fcf3ce44SJohn Forte ****************************************************************************** 890*fcf3ce44SJohn Forte */ 891*fcf3ce44SJohn Forte MP_STATUS MP_GetLibraryProperties( 892*fcf3ce44SJohn Forte MP_LIBRARY_PROPERTIES *pProps 893*fcf3ce44SJohn Forte ); 894*fcf3ce44SJohn Forte 895*fcf3ce44SJohn Forte /** 896*fcf3ce44SJohn Forte ****************************************************************************** 897*fcf3ce44SJohn Forte * 898*fcf3ce44SJohn Forte * Gets a list of the object IDs of all currently loaded plugins. 899*fcf3ce44SJohn Forte * 900*fcf3ce44SJohn Forte * @param ppList 901*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST. On successful 902*fcf3ce44SJohn Forte * return this will contain a pointer to an @ref MP_OID_LIST 903*fcf3ce44SJohn Forte * which contains the object IDs of all of the plugins currently 904*fcf3ce44SJohn Forte * loaded by the library. 905*fcf3ce44SJohn Forte * 906*fcf3ce44SJohn Forte * @return MP_STATUS indicating if the operation was successful or 907*fcf3ce44SJohn Forte * if an error occurred. 908*fcf3ce44SJohn Forte * 909*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 910*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. This is 911*fcf3ce44SJohn Forte * most likely to happen if an uninitialized object ID is passed to 912*fcf3ce44SJohn Forte * the API. 913*fcf3ce44SJohn Forte * 914*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 915*fcf3ce44SJohn Forte * Returned if ppList is NULL or specifies a memory area to which data 916*fcf3ce44SJohn Forte * cannot be written. MP_STATUS_SUCCESS Returned when the operation is 917*fcf3ce44SJohn Forte * successful. 918*fcf3ce44SJohn Forte * 919*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 920*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs* 921*fcf3ce44SJohn Forte * 922*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 923*fcf3ce44SJohn Forte * Returned if the plugin ID list was successfully returned. 924*fcf3ce44SJohn Forte * 925*fcf3ce44SJohn Forte ****************************************************************************** 926*fcf3ce44SJohn Forte */ 927*fcf3ce44SJohn Forte MP_STATUS MP_GetPluginOidList( 928*fcf3ce44SJohn Forte MP_OID_LIST **ppList 929*fcf3ce44SJohn Forte ); 930*fcf3ce44SJohn Forte 931*fcf3ce44SJohn Forte /** 932*fcf3ce44SJohn Forte ******************************************************************************* 933*fcf3ce44SJohn Forte * 934*fcf3ce44SJohn Forte * Gets the properties of the specified vendor plugin. 935*fcf3ce44SJohn Forte * 936*fcf3ce44SJohn Forte * @param oid 937*fcf3ce44SJohn Forte * The ID of the plugin whose properties are being retrieved. 938*fcf3ce44SJohn Forte * 939*fcf3ce44SJohn Forte * @param pProps 940*fcf3ce44SJohn Forte * A pointer to an @ref MP_PLUGIN_PROPERTIES structure allocated by 941*fcf3ce44SJohn Forte * the caller. On successful return this will contain the properties 942*fcf3ce44SJohn Forte * of the plugin specified by pluginOid. 943*fcf3ce44SJohn Forte * 944*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if an 945*fcf3ce44SJohn Forte * error occurred. 946*fcf3ce44SJohn Forte * 947*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 948*fcf3ce44SJohn Forte * Returned if the plugin properties were successfully returned. 949*fcf3ce44SJohn Forte * 950*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 951*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 952*fcf3ce44SJohn Forte * 953*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 954*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 955*fcf3ce44SJohn Forte * the system. 956*fcf3ce44SJohn Forte * 957*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 958*fcf3ce44SJohn Forte * Returned if 'pProps' is NULL or specifies a memory area to 959*fcf3ce44SJohn Forte * which data cannot be written. 960*fcf3ce44SJohn Forte * 961*fcf3ce44SJohn Forte ******************************************************************************* 962*fcf3ce44SJohn Forte */ 963*fcf3ce44SJohn Forte MP_STATUS MP_GetPluginProperties( 964*fcf3ce44SJohn Forte MP_OID oid, 965*fcf3ce44SJohn Forte MP_PLUGIN_PROPERTIES *pProps 966*fcf3ce44SJohn Forte ); 967*fcf3ce44SJohn Forte 968*fcf3ce44SJohn Forte 969*fcf3ce44SJohn Forte /** 970*fcf3ce44SJohn Forte ******************************************************************************* 971*fcf3ce44SJohn Forte * 972*fcf3ce44SJohn Forte * Gets the object ID for the plugin associated with the specified object ID. 973*fcf3ce44SJohn Forte * 974*fcf3ce44SJohn Forte * @param oid 975*fcf3ce44SJohn Forte * The object ID of an object that has been received from a previous 976*fcf3ce44SJohn Forte * library call. 977*fcf3ce44SJohn Forte * 978*fcf3ce44SJohn Forte * @param pPluginOid 979*fcf3ce44SJohn Forte * A pointer to an MP_OID structure allocated by the caller. On 980*fcf3ce44SJohn Forte * successful return this will contain the object ID of the plugin 981*fcf3ce44SJohn Forte * associated with the object specified by @a objectId. 982*fcf3ce44SJohn Forte * 983*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 984*fcf3ce44SJohn Forte * an error occurred. 985*fcf3ce44SJohn Forte * 986*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 987*fcf3ce44SJohn Forte * Returned if the associated plugin ID was successfully returned. 988*fcf3ce44SJohn Forte * 989*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 990*fcf3ce44SJohn Forte * Returned if oid does not specify a plugin that is currently known to 991*fcf3ce44SJohn Forte * the system. 992*fcf3ce44SJohn Forte * 993*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 994*fcf3ce44SJohn Forte * Returned if 'oid' specifies an object not owned by a plugin or 995*fcf3ce44SJohn Forte * if pPluginOid is NULL or specifies a memory area to which data 996*fcf3ce44SJohn Forte * cannot be written. 997*fcf3ce44SJohn Forte * 998*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 999*fcf3ce44SJohn Forte * Returned if 'oid' specifies an object with an invalid type. 1000*fcf3ce44SJohn Forte * 1001*fcf3ce44SJohn Forte ******************************************************************************* 1002*fcf3ce44SJohn Forte */ 1003*fcf3ce44SJohn Forte MP_STATUS MP_GetAssociatedPluginOid( 1004*fcf3ce44SJohn Forte MP_OID oid, 1005*fcf3ce44SJohn Forte MP_OID *pPluginOid 1006*fcf3ce44SJohn Forte ); 1007*fcf3ce44SJohn Forte 1008*fcf3ce44SJohn Forte 1009*fcf3ce44SJohn Forte /** 1010*fcf3ce44SJohn Forte ******************************************************************************* 1011*fcf3ce44SJohn Forte * 1012*fcf3ce44SJohn Forte * Gets the object type of an initialized object ID. 1013*fcf3ce44SJohn Forte * 1014*fcf3ce44SJohn Forte * @param oid 1015*fcf3ce44SJohn Forte * The object ID of an object that has been received from a previous 1016*fcf3ce44SJohn Forte * library call. 1017*fcf3ce44SJohn Forte * 1018*fcf3ce44SJohn Forte * @param pObjectType 1019*fcf3ce44SJohn Forte * A pointer to an MP_OBJECT_TYPE variable allocated by the caller. 1020*fcf3ce44SJohn Forte * On successful return this will contain the object type of oid. 1021*fcf3ce44SJohn Forte * 1022*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or 1023*fcf3ce44SJohn Forte * if an error occurred. 1024*fcf3ce44SJohn Forte * 1025*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1026*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1027*fcf3ce44SJohn Forte * the system. 1028*fcf3ce44SJohn Forte * 1029*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1030*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1031*fcf3ce44SJohn Forte * 1032*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1033*fcf3ce44SJohn Forte * Returned when the operation is successful. 1034*fcf3ce44SJohn Forte * 1035*fcf3ce44SJohn Forte ******************************************************************************* 1036*fcf3ce44SJohn Forte */ 1037*fcf3ce44SJohn Forte MP_STATUS MP_GetObjectType( 1038*fcf3ce44SJohn Forte MP_OID oid, 1039*fcf3ce44SJohn Forte MP_OBJECT_TYPE *pObjectType 1040*fcf3ce44SJohn Forte ); 1041*fcf3ce44SJohn Forte 1042*fcf3ce44SJohn Forte 1043*fcf3ce44SJohn Forte /** 1044*fcf3ce44SJohn Forte ******************************************************************************* 1045*fcf3ce44SJohn Forte * 1046*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the device product properties 1047*fcf3ce44SJohn Forte * associated with this plugin. 1048*fcf3ce44SJohn Forte * 1049*fcf3ce44SJohn Forte * @param oid 1050*fcf3ce44SJohn Forte * The object ID of plugin. 1051*fcf3ce44SJohn Forte * 1052*fcf3ce44SJohn Forte * @param ppList 1053*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1054*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1055*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the device 1056*fcf3ce44SJohn Forte * product descriptors associated with the specified plugin. 1057*fcf3ce44SJohn Forte * 1058*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1059*fcf3ce44SJohn Forte * an error occurred. 1060*fcf3ce44SJohn Forte * 1061*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1062*fcf3ce44SJohn Forte * Returned when the operation is successful. 1063*fcf3ce44SJohn Forte * 1064*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1065*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1066*fcf3ce44SJohn Forte * the device product list is found to be invalid. 1067*fcf3ce44SJohn Forte * 1068*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1069*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1070*fcf3ce44SJohn Forte * 1071*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1072*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1073*fcf3ce44SJohn Forte * 1074*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1075*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1076*fcf3ce44SJohn Forte * 1077*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1078*fcf3ce44SJohn Forte * Returned when the API is not supported. 1079*fcf3ce44SJohn Forte * 1080*fcf3ce44SJohn Forte ******************************************************************************* 1081*fcf3ce44SJohn Forte */ 1082*fcf3ce44SJohn Forte MP_STATUS MP_GetDeviceProductOidList( 1083*fcf3ce44SJohn Forte MP_OID oid, 1084*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1085*fcf3ce44SJohn Forte ); 1086*fcf3ce44SJohn Forte 1087*fcf3ce44SJohn Forte /** 1088*fcf3ce44SJohn Forte ******************************************************************************* 1089*fcf3ce44SJohn Forte * 1090*fcf3ce44SJohn Forte * Gets the device product properties of the specified plugin oid. 1091*fcf3ce44SJohn Forte * 1092*fcf3ce44SJohn Forte * @param oid 1093*fcf3ce44SJohn Forte * The object ID of the plugin. 1094*fcf3ce44SJohn Forte * 1095*fcf3ce44SJohn Forte * @param ppProps 1096*fcf3ce44SJohn Forte * A pointer to an MP_DEVICE_PRODUCT_PROPERTIES structure 1097*fcf3ce44SJohn Forte * allocated by the caller. On successful return it will contain 1098*fcf3ce44SJohn Forte * a pointer to an MP_DEVICE_PRODUCT_PROPERTIES structure allocated 1099*fcf3ce44SJohn Forte * by the library. 1100*fcf3ce44SJohn Forte * 1101*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1102*fcf3ce44SJohn Forte * an error occurred. 1103*fcf3ce44SJohn Forte * 1104*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1105*fcf3ce44SJohn Forte * Returned when the operation is successful. 1106*fcf3ce44SJohn Forte * 1107*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1108*fcf3ce44SJohn Forte * Returned if ppProps pointer passed as placeholder for holding 1109*fcf3ce44SJohn Forte * the device product properties is found to be invalid. 1110*fcf3ce44SJohn Forte * 1111*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1112*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1113*fcf3ce44SJohn Forte * 1114*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1115*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1116*fcf3ce44SJohn Forte * 1117*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1118*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1119*fcf3ce44SJohn Forte * 1120*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1121*fcf3ce44SJohn Forte * Returned when the API is not supported. 1122*fcf3ce44SJohn Forte * 1123*fcf3ce44SJohn Forte ******************************************************************************* 1124*fcf3ce44SJohn Forte */ 1125*fcf3ce44SJohn Forte MP_STATUS MP_GetDeviceProductProperties( 1126*fcf3ce44SJohn Forte MP_OID oid, 1127*fcf3ce44SJohn Forte MP_DEVICE_PRODUCT_PROPERTIES *pProps 1128*fcf3ce44SJohn Forte ); 1129*fcf3ce44SJohn Forte 1130*fcf3ce44SJohn Forte /** 1131*fcf3ce44SJohn Forte ******************************************************************************* 1132*fcf3ce44SJohn Forte * 1133*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the initiator ports associated 1134*fcf3ce44SJohn Forte * with this plugin. 1135*fcf3ce44SJohn Forte * 1136*fcf3ce44SJohn Forte * @param oid 1137*fcf3ce44SJohn Forte * The object ID of plugin. 1138*fcf3ce44SJohn Forte * 1139*fcf3ce44SJohn Forte * @param ppList 1140*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1141*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1142*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the initiator 1143*fcf3ce44SJohn Forte * ports associated with the specified plugin. 1144*fcf3ce44SJohn Forte * 1145*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1146*fcf3ce44SJohn Forte * an error occurred. 1147*fcf3ce44SJohn Forte * 1148*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1149*fcf3ce44SJohn Forte * Returned when the operation is successful. 1150*fcf3ce44SJohn Forte * 1151*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1152*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1153*fcf3ce44SJohn Forte * the initiator port list is found to be invalid. 1154*fcf3ce44SJohn Forte * 1155*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1156*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1157*fcf3ce44SJohn Forte * 1158*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1159*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1160*fcf3ce44SJohn Forte * 1161*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1162*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1163*fcf3ce44SJohn Forte * 1164*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1165*fcf3ce44SJohn Forte * Returned when the API is not supported. 1166*fcf3ce44SJohn Forte * 1167*fcf3ce44SJohn Forte ******************************************************************************* 1168*fcf3ce44SJohn Forte */ 1169*fcf3ce44SJohn Forte MP_STATUS MP_GetInitiatorPortOidList( 1170*fcf3ce44SJohn Forte MP_OID oid, 1171*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1172*fcf3ce44SJohn Forte ); 1173*fcf3ce44SJohn Forte 1174*fcf3ce44SJohn Forte /** 1175*fcf3ce44SJohn Forte ******************************************************************************* 1176*fcf3ce44SJohn Forte * 1177*fcf3ce44SJohn Forte * Gets the properties of the specified initiator port. 1178*fcf3ce44SJohn Forte * 1179*fcf3ce44SJohn Forte * @param oid 1180*fcf3ce44SJohn Forte * The object ID of the initiator port. 1181*fcf3ce44SJohn Forte * 1182*fcf3ce44SJohn Forte * @param pProps 1183*fcf3ce44SJohn Forte * A pointer to an MP_INITIATOR_PORT_PROPERTIES structure 1184*fcf3ce44SJohn Forte * allocated by the caller. On successful return, this structure 1185*fcf3ce44SJohn Forte * will contain the properties of the port specified by oid. 1186*fcf3ce44SJohn Forte * 1187*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1188*fcf3ce44SJohn Forte * an error occurred. 1189*fcf3ce44SJohn Forte * 1190*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1191*fcf3ce44SJohn Forte * Returned when the operation is successful. 1192*fcf3ce44SJohn Forte * 1193*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1194*fcf3ce44SJohn Forte * Returned if pProps is NULL or specifies a memory area to 1195*fcf3ce44SJohn Forte * which data cannot be written. 1196*fcf3ce44SJohn Forte * 1197*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1198*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1199*fcf3ce44SJohn Forte * 1200*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1201*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1202*fcf3ce44SJohn Forte * the system. 1203*fcf3ce44SJohn Forte * 1204*fcf3ce44SJohn Forte ******************************************************************************* 1205*fcf3ce44SJohn Forte */ 1206*fcf3ce44SJohn Forte MP_STATUS MP_GetInitiatorPortProperties( 1207*fcf3ce44SJohn Forte MP_OID oid, 1208*fcf3ce44SJohn Forte MP_INITIATOR_PORT_PROPERTIES *pProps 1209*fcf3ce44SJohn Forte ); 1210*fcf3ce44SJohn Forte 1211*fcf3ce44SJohn Forte /** 1212*fcf3ce44SJohn Forte ******************************************************************************* 1213*fcf3ce44SJohn Forte * 1214*fcf3ce44SJohn Forte * Gets a list of multipath logical units associated to a plugin. 1215*fcf3ce44SJohn Forte * 1216*fcf3ce44SJohn Forte * @param oid 1217*fcf3ce44SJohn Forte * The object ID of plugin. 1218*fcf3ce44SJohn Forte * 1219*fcf3ce44SJohn Forte * @param ppList 1220*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1221*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1222*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the multipath 1223*fcf3ce44SJohn Forte * logical units associated with the specified plugin. 1224*fcf3ce44SJohn Forte * 1225*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1226*fcf3ce44SJohn Forte * an error occurred. 1227*fcf3ce44SJohn Forte * 1228*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1229*fcf3ce44SJohn Forte * Returned when the operation is successful. 1230*fcf3ce44SJohn Forte * 1231*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1232*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1233*fcf3ce44SJohn Forte * the multipath logical unit list is found to be invalid. 1234*fcf3ce44SJohn Forte * 1235*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1236*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1237*fcf3ce44SJohn Forte * 1238*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1239*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1240*fcf3ce44SJohn Forte * 1241*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1242*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1243*fcf3ce44SJohn Forte * 1244*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1245*fcf3ce44SJohn Forte * Returned when the API is not supported. 1246*fcf3ce44SJohn Forte * 1247*fcf3ce44SJohn Forte ******************************************************************************* 1248*fcf3ce44SJohn Forte */ 1249*fcf3ce44SJohn Forte MP_STATUS MP_GetMultipathLus( 1250*fcf3ce44SJohn Forte MP_OID oid, 1251*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1252*fcf3ce44SJohn Forte ); 1253*fcf3ce44SJohn Forte 1254*fcf3ce44SJohn Forte /** 1255*fcf3ce44SJohn Forte ******************************************************************************* 1256*fcf3ce44SJohn Forte * 1257*fcf3ce44SJohn Forte * Gets the properties of the specified logical unit. 1258*fcf3ce44SJohn Forte * 1259*fcf3ce44SJohn Forte * @param oid 1260*fcf3ce44SJohn Forte * The object ID of the multipath logical unit. 1261*fcf3ce44SJohn Forte * 1262*fcf3ce44SJohn Forte * @param pProps 1263*fcf3ce44SJohn Forte * A pointer to an MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES structure 1264*fcf3ce44SJohn Forte * allocated by the caller. On successful return, this structure 1265*fcf3ce44SJohn Forte * will contain the properties of the port specified by oid. 1266*fcf3ce44SJohn Forte * 1267*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1268*fcf3ce44SJohn Forte * an error occurred. 1269*fcf3ce44SJohn Forte * 1270*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1271*fcf3ce44SJohn Forte * Returned when the operation is successful. 1272*fcf3ce44SJohn Forte * 1273*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1274*fcf3ce44SJohn Forte * Returned if pProps is NULL or specifies a memory area to 1275*fcf3ce44SJohn Forte * which data cannot be written. 1276*fcf3ce44SJohn Forte * 1277*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1278*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1279*fcf3ce44SJohn Forte * 1280*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1281*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1282*fcf3ce44SJohn Forte * the system. 1283*fcf3ce44SJohn Forte * 1284*fcf3ce44SJohn Forte ******************************************************************************* 1285*fcf3ce44SJohn Forte */ 1286*fcf3ce44SJohn Forte MP_STATUS MP_GetMPLogicalUnitProperties( 1287*fcf3ce44SJohn Forte MP_OID oid, 1288*fcf3ce44SJohn Forte MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES *pProps 1289*fcf3ce44SJohn Forte ); 1290*fcf3ce44SJohn Forte 1291*fcf3ce44SJohn Forte /** 1292*fcf3ce44SJohn Forte ******************************************************************************* 1293*fcf3ce44SJohn Forte * 1294*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the path logical units associated 1295*fcf3ce44SJohn Forte * with the specified multipath logical unit, initiator port, or target port. 1296*fcf3ce44SJohn Forte * 1297*fcf3ce44SJohn Forte * @param oid 1298*fcf3ce44SJohn Forte * The object ID of multipath logical unit, initiator port, or 1299*fcf3ce44SJohn Forte * target port. 1300*fcf3ce44SJohn Forte * 1301*fcf3ce44SJohn Forte * @param ppList 1302*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1303*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1304*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the mp path 1305*fcf3ce44SJohn Forte * logical units associated with the specified OID. 1306*fcf3ce44SJohn Forte * 1307*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1308*fcf3ce44SJohn Forte * an error occurred. 1309*fcf3ce44SJohn Forte * 1310*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1311*fcf3ce44SJohn Forte * Returned when the operation is successful. 1312*fcf3ce44SJohn Forte * 1313*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1314*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1315*fcf3ce44SJohn Forte * the device product list is found to be invalid. 1316*fcf3ce44SJohn Forte * 1317*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1318*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1319*fcf3ce44SJohn Forte * 1320*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1321*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1322*fcf3ce44SJohn Forte * 1323*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1324*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1325*fcf3ce44SJohn Forte * 1326*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1327*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1328*fcf3ce44SJohn Forte * the system. 1329*fcf3ce44SJohn Forte * 1330*fcf3ce44SJohn Forte ******************************************************************************* 1331*fcf3ce44SJohn Forte */ 1332*fcf3ce44SJohn Forte MP_STATUS MP_GetAssociatedPathOidList( 1333*fcf3ce44SJohn Forte MP_OID oid, 1334*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1335*fcf3ce44SJohn Forte ); 1336*fcf3ce44SJohn Forte 1337*fcf3ce44SJohn Forte /** 1338*fcf3ce44SJohn Forte ******************************************************************************* 1339*fcf3ce44SJohn Forte * 1340*fcf3ce44SJohn Forte * Gets the properties of the specified path logical unit. 1341*fcf3ce44SJohn Forte * 1342*fcf3ce44SJohn Forte * @param oid 1343*fcf3ce44SJohn Forte * The object ID of the path logical unit. 1344*fcf3ce44SJohn Forte * 1345*fcf3ce44SJohn Forte * @param pProps 1346*fcf3ce44SJohn Forte * A pointer to an MP_PATH_LOGICAL_UNIT_PROPERTIES structure 1347*fcf3ce44SJohn Forte * allocated by the caller. On successful return, this structure 1348*fcf3ce44SJohn Forte * will contain the properties of the port specified by oid. 1349*fcf3ce44SJohn Forte * 1350*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1351*fcf3ce44SJohn Forte * an error occurred. 1352*fcf3ce44SJohn Forte * 1353*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1354*fcf3ce44SJohn Forte * Returned when the operation is successful. 1355*fcf3ce44SJohn Forte * 1356*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1357*fcf3ce44SJohn Forte * Returned if pProps is NULL or specifies a memory area to 1358*fcf3ce44SJohn Forte * which data cannot be written. 1359*fcf3ce44SJohn Forte * 1360*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1361*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1362*fcf3ce44SJohn Forte * 1363*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1364*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1365*fcf3ce44SJohn Forte * the system. 1366*fcf3ce44SJohn Forte * 1367*fcf3ce44SJohn Forte ******************************************************************************* 1368*fcf3ce44SJohn Forte */ 1369*fcf3ce44SJohn Forte MP_STATUS MP_GetPathLogicalUnitProperties( 1370*fcf3ce44SJohn Forte MP_OID oid, 1371*fcf3ce44SJohn Forte MP_PATH_LOGICAL_UNIT_PROPERTIES *pProps 1372*fcf3ce44SJohn Forte ); 1373*fcf3ce44SJohn Forte 1374*fcf3ce44SJohn Forte /** 1375*fcf3ce44SJohn Forte ******************************************************************************* 1376*fcf3ce44SJohn Forte * 1377*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the target port group associated 1378*fcf3ce44SJohn Forte * with the specified multipath logical unit. 1379*fcf3ce44SJohn Forte * 1380*fcf3ce44SJohn Forte * @param oid 1381*fcf3ce44SJohn Forte * The object ID of the multiple logical unit. 1382*fcf3ce44SJohn Forte * 1383*fcf3ce44SJohn Forte * @param ppList 1384*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1385*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1386*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the target 1387*fcf3ce44SJohn Forte * port group associated with the specified multipath logical unit. 1388*fcf3ce44SJohn Forte * 1389*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1390*fcf3ce44SJohn Forte * an error occurred. 1391*fcf3ce44SJohn Forte * 1392*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1393*fcf3ce44SJohn Forte * Returned when the operation is successful. 1394*fcf3ce44SJohn Forte * 1395*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1396*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1397*fcf3ce44SJohn Forte * the target port group list is found to be invalid. 1398*fcf3ce44SJohn Forte * 1399*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1400*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1401*fcf3ce44SJohn Forte * 1402*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1403*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1404*fcf3ce44SJohn Forte * 1405*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1406*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1407*fcf3ce44SJohn Forte * 1408*fcf3ce44SJohn Forte * 1409*fcf3ce44SJohn Forte ******************************************************************************* 1410*fcf3ce44SJohn Forte */ 1411*fcf3ce44SJohn Forte MP_STATUS MP_GetAssociatedTPGOidList( 1412*fcf3ce44SJohn Forte MP_OID oid, 1413*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1414*fcf3ce44SJohn Forte ); 1415*fcf3ce44SJohn Forte 1416*fcf3ce44SJohn Forte /** 1417*fcf3ce44SJohn Forte ******************************************************************************* 1418*fcf3ce44SJohn Forte * 1419*fcf3ce44SJohn Forte * Gets the properties of the specified target port group. 1420*fcf3ce44SJohn Forte * 1421*fcf3ce44SJohn Forte * @param oid 1422*fcf3ce44SJohn Forte * The object ID of the target port group. 1423*fcf3ce44SJohn Forte * 1424*fcf3ce44SJohn Forte * @param pProps 1425*fcf3ce44SJohn Forte * A pointer to an MP_TARGET_PORT_GROUP_PROPERTIES structure 1426*fcf3ce44SJohn Forte * allocated by the caller. On successful return, this structure 1427*fcf3ce44SJohn Forte * will contain the properties of the port specified by oid. 1428*fcf3ce44SJohn Forte * 1429*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1430*fcf3ce44SJohn Forte * an error occurred. 1431*fcf3ce44SJohn Forte * 1432*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1433*fcf3ce44SJohn Forte * Returned when the operation is successful. 1434*fcf3ce44SJohn Forte * 1435*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1436*fcf3ce44SJohn Forte * Returned if pProps is NULL or specifies a memory area to 1437*fcf3ce44SJohn Forte * which data cannot be written. 1438*fcf3ce44SJohn Forte * 1439*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1440*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1441*fcf3ce44SJohn Forte * 1442*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1443*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1444*fcf3ce44SJohn Forte * the system. 1445*fcf3ce44SJohn Forte * 1446*fcf3ce44SJohn Forte ******************************************************************************* 1447*fcf3ce44SJohn Forte */ 1448*fcf3ce44SJohn Forte MP_STATUS MP_GetTargetPortGroupProperties( 1449*fcf3ce44SJohn Forte MP_OID oid, 1450*fcf3ce44SJohn Forte MP_TARGET_PORT_GROUP_PROPERTIES *pProps 1451*fcf3ce44SJohn Forte ); 1452*fcf3ce44SJohn Forte 1453*fcf3ce44SJohn Forte /** 1454*fcf3ce44SJohn Forte ******************************************************************************* 1455*fcf3ce44SJohn Forte * 1456*fcf3ce44SJohn Forte * Gets a list of multipath logical units associated with the specific target 1457*fcf3ce44SJohn Forte * port group. 1458*fcf3ce44SJohn Forte * 1459*fcf3ce44SJohn Forte * @param oid 1460*fcf3ce44SJohn Forte * The object ID of the target port group. 1461*fcf3ce44SJohn Forte * 1462*fcf3ce44SJohn Forte * @param ppList 1463*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1464*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1465*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the multipath 1466*fcf3ce44SJohn Forte * logical units associated with the specified target port group. 1467*fcf3ce44SJohn Forte * 1468*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1469*fcf3ce44SJohn Forte * an error occurred. 1470*fcf3ce44SJohn Forte * 1471*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1472*fcf3ce44SJohn Forte * Returned when the operation is successful. 1473*fcf3ce44SJohn Forte * 1474*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1475*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1476*fcf3ce44SJohn Forte * the multipath logical unit list is found to be invalid. 1477*fcf3ce44SJohn Forte * 1478*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1479*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1480*fcf3ce44SJohn Forte * 1481*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1482*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1483*fcf3ce44SJohn Forte * 1484*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1485*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1486*fcf3ce44SJohn Forte * 1487*fcf3ce44SJohn Forte ******************************************************************************* 1488*fcf3ce44SJohn Forte */ 1489*fcf3ce44SJohn Forte MP_STATUS MP_GetMPLuOidListFromTPG( 1490*fcf3ce44SJohn Forte MP_OID oid, 1491*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1492*fcf3ce44SJohn Forte ); 1493*fcf3ce44SJohn Forte 1494*fcf3ce44SJohn Forte /** 1495*fcf3ce44SJohn Forte ******************************************************************************* 1496*fcf3ce44SJohn Forte * 1497*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the proprietary load balance 1498*fcf3ce44SJohn Forte * algorithms associated with this plugin. 1499*fcf3ce44SJohn Forte * 1500*fcf3ce44SJohn Forte * @param oid 1501*fcf3ce44SJohn Forte * The object ID of the plugin. 1502*fcf3ce44SJohn Forte * 1503*fcf3ce44SJohn Forte * @param ppList 1504*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1505*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1506*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the proprietary 1507*fcf3ce44SJohn Forte * load balance algorithms associated with the specified plugin. 1508*fcf3ce44SJohn Forte * 1509*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1510*fcf3ce44SJohn Forte * an error occurred. 1511*fcf3ce44SJohn Forte * 1512*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1513*fcf3ce44SJohn Forte * Returned when the operation is successful. 1514*fcf3ce44SJohn Forte * 1515*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1516*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1517*fcf3ce44SJohn Forte * the proprietary load balance oid list is found to be invalid. 1518*fcf3ce44SJohn Forte * 1519*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1520*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1521*fcf3ce44SJohn Forte * 1522*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1523*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1524*fcf3ce44SJohn Forte * 1525*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1526*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1527*fcf3ce44SJohn Forte * 1528*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1529*fcf3ce44SJohn Forte * Returned when the API is not supported. 1530*fcf3ce44SJohn Forte * 1531*fcf3ce44SJohn Forte ******************************************************************************* 1532*fcf3ce44SJohn Forte */ 1533*fcf3ce44SJohn Forte MP_STATUS MP_GetProprietaryLoadBalanceOidList( 1534*fcf3ce44SJohn Forte MP_OID oid, 1535*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1536*fcf3ce44SJohn Forte ); 1537*fcf3ce44SJohn Forte 1538*fcf3ce44SJohn Forte /** 1539*fcf3ce44SJohn Forte ******************************************************************************* 1540*fcf3ce44SJohn Forte * 1541*fcf3ce44SJohn Forte * Gets the properties of the specified load balance properties structure. 1542*fcf3ce44SJohn Forte * 1543*fcf3ce44SJohn Forte * @param oid 1544*fcf3ce44SJohn Forte * The object ID of the proprietary load balance structure. 1545*fcf3ce44SJohn Forte * 1546*fcf3ce44SJohn Forte * @param pProps 1547*fcf3ce44SJohn Forte * A pointer to an MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES structure 1548*fcf3ce44SJohn Forte * allocated by the caller. On successful return, this structure 1549*fcf3ce44SJohn Forte * will contain the properties of the port specified by oid. 1550*fcf3ce44SJohn Forte * 1551*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1552*fcf3ce44SJohn Forte * an error occurred. 1553*fcf3ce44SJohn Forte * 1554*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1555*fcf3ce44SJohn Forte * Returned when the operation is successful. 1556*fcf3ce44SJohn Forte * 1557*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1558*fcf3ce44SJohn Forte * Returned if pProps is NULL or specifies a memory area to 1559*fcf3ce44SJohn Forte * which data cannot be written. 1560*fcf3ce44SJohn Forte * 1561*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1562*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1563*fcf3ce44SJohn Forte * 1564*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1565*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1566*fcf3ce44SJohn Forte * the system. 1567*fcf3ce44SJohn Forte * 1568*fcf3ce44SJohn Forte ******************************************************************************* 1569*fcf3ce44SJohn Forte */ 1570*fcf3ce44SJohn Forte MP_STATUS MP_GetProprietaryLoadBalanceProperties( 1571*fcf3ce44SJohn Forte MP_OID oid, 1572*fcf3ce44SJohn Forte MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES *pProps 1573*fcf3ce44SJohn Forte ); 1574*fcf3ce44SJohn Forte 1575*fcf3ce44SJohn Forte /** 1576*fcf3ce44SJohn Forte ******************************************************************************* 1577*fcf3ce44SJohn Forte * 1578*fcf3ce44SJohn Forte * Gets a list of the object IDs of the target ports in the specified target 1579*fcf3ce44SJohn Forte * port group. 1580*fcf3ce44SJohn Forte * 1581*fcf3ce44SJohn Forte * @param oid 1582*fcf3ce44SJohn Forte * The object ID of the target port group. 1583*fcf3ce44SJohn Forte * 1584*fcf3ce44SJohn Forte * @param ppList 1585*fcf3ce44SJohn Forte * A pointer to a pointer to an MP_OID_LIST structure. 1586*fcf3ce44SJohn Forte * On a successful return, this will contain a pointer to 1587*fcf3ce44SJohn Forte * an MP_OID_LIST that contains the object IDs of all the target ports 1588*fcf3ce44SJohn Forte * associated with the specified target port group. 1589*fcf3ce44SJohn Forte * 1590*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1591*fcf3ce44SJohn Forte * an error occurred. 1592*fcf3ce44SJohn Forte * 1593*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1594*fcf3ce44SJohn Forte * Returned when the operation is successful. 1595*fcf3ce44SJohn Forte * 1596*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1597*fcf3ce44SJohn Forte * Returned if ppList pointer passed as placeholder for holding 1598*fcf3ce44SJohn Forte * the multipath logical unit list is found to be invalid. 1599*fcf3ce44SJohn Forte * 1600*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1601*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1602*fcf3ce44SJohn Forte * 1603*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1604*fcf3ce44SJohn Forte * Returned when the plugin for the specified oid is not found. 1605*fcf3ce44SJohn Forte * 1606*fcf3ce44SJohn Forte * @retval MP_STATUS_INSUFFICIENT_MEMORY 1607*fcf3ce44SJohn Forte * Returned when memory allocation failure occurs 1608*fcf3ce44SJohn Forte * 1609*fcf3ce44SJohn Forte ******************************************************************************* 1610*fcf3ce44SJohn Forte */ 1611*fcf3ce44SJohn Forte MP_STATUS MP_GetTargetPortOidList( 1612*fcf3ce44SJohn Forte MP_OID oid, 1613*fcf3ce44SJohn Forte MP_OID_LIST **ppList 1614*fcf3ce44SJohn Forte ); 1615*fcf3ce44SJohn Forte 1616*fcf3ce44SJohn Forte /** 1617*fcf3ce44SJohn Forte ******************************************************************************* 1618*fcf3ce44SJohn Forte * 1619*fcf3ce44SJohn Forte * Gets the properties of the specified target port. 1620*fcf3ce44SJohn Forte * 1621*fcf3ce44SJohn Forte * @param oid 1622*fcf3ce44SJohn Forte * The object ID of the target port. 1623*fcf3ce44SJohn Forte * 1624*fcf3ce44SJohn Forte * @param pProps 1625*fcf3ce44SJohn Forte * A pointer to an MP_TARGET_PORT_PROPERTIES structure 1626*fcf3ce44SJohn Forte * allocated by the caller. On successful return, this structure 1627*fcf3ce44SJohn Forte * will contain the properties of the port specified by oid. 1628*fcf3ce44SJohn Forte * 1629*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1630*fcf3ce44SJohn Forte * an error occurred. 1631*fcf3ce44SJohn Forte * 1632*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1633*fcf3ce44SJohn Forte * Returned when the operation is successful. 1634*fcf3ce44SJohn Forte * 1635*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1636*fcf3ce44SJohn Forte * Returned if pProps is NULL or specifies a memory area to 1637*fcf3ce44SJohn Forte * which data cannot be written. 1638*fcf3ce44SJohn Forte * 1639*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1640*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1641*fcf3ce44SJohn Forte * 1642*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1643*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1644*fcf3ce44SJohn Forte * the system. 1645*fcf3ce44SJohn Forte * 1646*fcf3ce44SJohn Forte ******************************************************************************* 1647*fcf3ce44SJohn Forte */ 1648*fcf3ce44SJohn Forte MP_STATUS MP_GetTargetPortProperties( 1649*fcf3ce44SJohn Forte MP_OID oid, 1650*fcf3ce44SJohn Forte MP_TARGET_PORT_PROPERTIES *pProps 1651*fcf3ce44SJohn Forte ); 1652*fcf3ce44SJohn Forte 1653*fcf3ce44SJohn Forte /** 1654*fcf3ce44SJohn Forte ****************************************************************************** 1655*fcf3ce44SJohn Forte * 1656*fcf3ce44SJohn Forte * The APIs for path management. 1657*fcf3ce44SJohn Forte * 1658*fcf3ce44SJohn Forte * - MP_AssignLogicalUnitToTPG 1659*fcf3ce44SJohn Forte * - MP_SetOverridePath 1660*fcf3ce44SJohn Forte * - MP_CancelOverridePath 1661*fcf3ce44SJohn Forte * - MP_EnableAutoFailback 1662*fcf3ce44SJohn Forte * - MP_DisableAutoFailback 1663*fcf3ce44SJohn Forte * - MP_EnableAutoProbing 1664*fcf3ce44SJohn Forte * - MP_DisableAutoProbing 1665*fcf3ce44SJohn Forte * - MP_EnablePath 1666*fcf3ce44SJohn Forte * - MP_DisablePath 1667*fcf3ce44SJohn Forte * - MP_SetLogicalUnitLoadBalanceType 1668*fcf3ce44SJohn Forte * - MP_SetPluginLoadBalanceType 1669*fcf3ce44SJohn Forte * - MP_SetPathWeight 1670*fcf3ce44SJohn Forte * - MP_SetFailbackPollingRates 1671*fcf3ce44SJohn Forte * - MP_SetProbingPollingRates 1672*fcf3ce44SJohn Forte * - MP_SetProprietaryProperties 1673*fcf3ce44SJohn Forte * - MP_SetTPGAccess 1674*fcf3ce44SJohn Forte * 1675*fcf3ce44SJohn Forte ****************************************************************************** 1676*fcf3ce44SJohn Forte */ 1677*fcf3ce44SJohn Forte 1678*fcf3ce44SJohn Forte /** 1679*fcf3ce44SJohn Forte ******************************************************************************* 1680*fcf3ce44SJohn Forte * 1681*fcf3ce44SJohn Forte * Assign a multipath logical unit to a target port group. 1682*fcf3ce44SJohn Forte * 1683*fcf3ce44SJohn Forte * @param tpgOid 1684*fcf3ce44SJohn Forte * An MP_TARGET_PORT_GROUP oid. The target port group currently in 1685*fcf3ce44SJohn Forte * active access state that the administrator would like the LU 1686*fcf3ce44SJohn Forte * assigned to. 1687*fcf3ce44SJohn Forte * 1688*fcf3ce44SJohn Forte * @param luOid 1689*fcf3ce44SJohn Forte * An MP_MULTIPATH_LOGICAL_UNIT oid. 1690*fcf3ce44SJohn Forte * 1691*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1692*fcf3ce44SJohn Forte * an error occurred. 1693*fcf3ce44SJohn Forte * 1694*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1695*fcf3ce44SJohn Forte * Returned when the operation is successful. 1696*fcf3ce44SJohn Forte * 1697*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1698*fcf3ce44SJohn Forte * Returned when luOid is not associated with tpgOid. 1699*fcf3ce44SJohn Forte * 1700*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1701*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1702*fcf3ce44SJohn Forte * 1703*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1704*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1705*fcf3ce44SJohn Forte * the system. 1706*fcf3ce44SJohn Forte * 1707*fcf3ce44SJohn Forte ******************************************************************************* 1708*fcf3ce44SJohn Forte */ 1709*fcf3ce44SJohn Forte MP_STATUS MP_AssignLogicalUnitToTPG( 1710*fcf3ce44SJohn Forte MP_OID tpgOid, 1711*fcf3ce44SJohn Forte MP_OID luOid 1712*fcf3ce44SJohn Forte ); 1713*fcf3ce44SJohn Forte 1714*fcf3ce44SJohn Forte /** 1715*fcf3ce44SJohn Forte ******************************************************************************* 1716*fcf3ce44SJohn Forte * 1717*fcf3ce44SJohn Forte * Manually override the path for a logical unit. The path exclusively used to 1718*fcf3ce44SJohn Forte * access the logical unit until cleared. 1719*fcf3ce44SJohn Forte * 1720*fcf3ce44SJohn Forte * @param logicalUnitOid 1721*fcf3ce44SJohn Forte * The object ID of the multipath logical unit. 1722*fcf3ce44SJohn Forte * 1723*fcf3ce44SJohn Forte * @param pathOid 1724*fcf3ce44SJohn Forte * The object ID of the path logical unit. 1725*fcf3ce44SJohn Forte * 1726*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1727*fcf3ce44SJohn Forte * an error occurred. 1728*fcf3ce44SJohn Forte * 1729*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1730*fcf3ce44SJohn Forte * Returned when the operation is successful. 1731*fcf3ce44SJohn Forte * 1732*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1733*fcf3ce44SJohn Forte * Returned if the oid of the object is not valid 1734*fcf3ce44SJohn Forte * 1735*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1736*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 1737*fcf3ce44SJohn Forte * 1738*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1739*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1740*fcf3ce44SJohn Forte * 1741*fcf3ce44SJohn Forte * @retval MP_STATUS_PATH_NONOPERATIONAL 1742*fcf3ce44SJohn Forte * Returned when the driver cannot communicate through selected path. 1743*fcf3ce44SJohn Forte * 1744*fcf3ce44SJohn Forte ******************************************************************************* 1745*fcf3ce44SJohn Forte */ 1746*fcf3ce44SJohn Forte MP_STATUS MP_SetOverridePath( 1747*fcf3ce44SJohn Forte MP_OID logicalUnitOid, 1748*fcf3ce44SJohn Forte MP_OID pathOid 1749*fcf3ce44SJohn Forte ); 1750*fcf3ce44SJohn Forte 1751*fcf3ce44SJohn Forte /** 1752*fcf3ce44SJohn Forte ******************************************************************************* 1753*fcf3ce44SJohn Forte * 1754*fcf3ce44SJohn Forte * Cancel a path override and re-enable load balancing. 1755*fcf3ce44SJohn Forte * 1756*fcf3ce44SJohn Forte * @param luOid 1757*fcf3ce44SJohn Forte * An MP_MULTIPATH_LOGICAL_UNIT oid. 1758*fcf3ce44SJohn Forte * 1759*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1760*fcf3ce44SJohn Forte * an error occurred. 1761*fcf3ce44SJohn Forte * 1762*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1763*fcf3ce44SJohn Forte * Returned when the operation is successful. 1764*fcf3ce44SJohn Forte * 1765*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1766*fcf3ce44SJohn Forte * Returned if MP_MULTIPATH_LOGICAL_UNIT with the luOid is not found. 1767*fcf3ce44SJohn Forte * 1768*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1769*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1770*fcf3ce44SJohn Forte * 1771*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 1772*fcf3ce44SJohn Forte * Returned if oid has an owner that is not currently known to 1773*fcf3ce44SJohn Forte * the system. 1774*fcf3ce44SJohn Forte * 1775*fcf3ce44SJohn Forte ******************************************************************************* 1776*fcf3ce44SJohn Forte */ 1777*fcf3ce44SJohn Forte MP_STATUS MP_CancelOverridePath( 1778*fcf3ce44SJohn Forte MP_OID logicalUnitOid 1779*fcf3ce44SJohn Forte ); 1780*fcf3ce44SJohn Forte 1781*fcf3ce44SJohn Forte /** 1782*fcf3ce44SJohn Forte ******************************************************************************* 1783*fcf3ce44SJohn Forte * 1784*fcf3ce44SJohn Forte * Enables Auto-failback. 1785*fcf3ce44SJohn Forte * 1786*fcf3ce44SJohn Forte * @param oid 1787*fcf3ce44SJohn Forte * The oid of the plugin or the multipath logical unit. 1788*fcf3ce44SJohn Forte * 1789*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1790*fcf3ce44SJohn Forte * an error occurred. 1791*fcf3ce44SJohn Forte * 1792*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1793*fcf3ce44SJohn Forte * Returned when the operation is successful. 1794*fcf3ce44SJohn Forte * 1795*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1796*fcf3ce44SJohn Forte * Returned if oid is NULL or specifies a memory area that is not 1797*fcf3ce44SJohn Forte * a valid plugin oid. 1798*fcf3ce44SJohn Forte * 1799*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1800*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1801*fcf3ce44SJohn Forte * 1802*fcf3ce44SJohn Forte ******************************************************************************* 1803*fcf3ce44SJohn Forte */ 1804*fcf3ce44SJohn Forte MP_STATUS MP_EnableAutoFailback( 1805*fcf3ce44SJohn Forte MP_OID oid 1806*fcf3ce44SJohn Forte ); 1807*fcf3ce44SJohn Forte 1808*fcf3ce44SJohn Forte /** 1809*fcf3ce44SJohn Forte ******************************************************************************* 1810*fcf3ce44SJohn Forte * 1811*fcf3ce44SJohn Forte * Disables Auto-failback. 1812*fcf3ce44SJohn Forte * 1813*fcf3ce44SJohn Forte * @param oid 1814*fcf3ce44SJohn Forte * The oid of the plugin or the multipath logical unit.. 1815*fcf3ce44SJohn Forte * 1816*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1817*fcf3ce44SJohn Forte * an error occurred. 1818*fcf3ce44SJohn Forte * 1819*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1820*fcf3ce44SJohn Forte * Returned when the operation is successful. 1821*fcf3ce44SJohn Forte * 1822*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1823*fcf3ce44SJohn Forte * Returned if oid is NULL or specifies a memory area that is not 1824*fcf3ce44SJohn Forte * a valid plugin oid. 1825*fcf3ce44SJohn Forte * 1826*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1827*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1828*fcf3ce44SJohn Forte * 1829*fcf3ce44SJohn Forte ******************************************************************************* 1830*fcf3ce44SJohn Forte */ 1831*fcf3ce44SJohn Forte MP_STATUS MP_DisableAutoFailback( 1832*fcf3ce44SJohn Forte MP_OID oid 1833*fcf3ce44SJohn Forte ); 1834*fcf3ce44SJohn Forte 1835*fcf3ce44SJohn Forte /** 1836*fcf3ce44SJohn Forte ******************************************************************************* 1837*fcf3ce44SJohn Forte * 1838*fcf3ce44SJohn Forte * Enables Auto-probing. 1839*fcf3ce44SJohn Forte * 1840*fcf3ce44SJohn Forte * @param oid 1841*fcf3ce44SJohn Forte * The oid of the plugin or the multipath logical unit. 1842*fcf3ce44SJohn Forte * 1843*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1844*fcf3ce44SJohn Forte * an error occurred. 1845*fcf3ce44SJohn Forte * 1846*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1847*fcf3ce44SJohn Forte * Returned when the operation is successful. 1848*fcf3ce44SJohn Forte * 1849*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1850*fcf3ce44SJohn Forte * Returned if oid is NULL or specifies a memory area that is not 1851*fcf3ce44SJohn Forte * a valid plugin oid. 1852*fcf3ce44SJohn Forte * 1853*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1854*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1855*fcf3ce44SJohn Forte * 1856*fcf3ce44SJohn Forte ******************************************************************************* 1857*fcf3ce44SJohn Forte */ 1858*fcf3ce44SJohn Forte MP_STATUS MP_EnableAutoProbing( 1859*fcf3ce44SJohn Forte MP_OID oid 1860*fcf3ce44SJohn Forte ); 1861*fcf3ce44SJohn Forte 1862*fcf3ce44SJohn Forte /** 1863*fcf3ce44SJohn Forte ******************************************************************************* 1864*fcf3ce44SJohn Forte * 1865*fcf3ce44SJohn Forte * Disables Auto-probing. 1866*fcf3ce44SJohn Forte * 1867*fcf3ce44SJohn Forte * @param oid 1868*fcf3ce44SJohn Forte * The oid of the plugin or the multipath logical unit. 1869*fcf3ce44SJohn Forte * 1870*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1871*fcf3ce44SJohn Forte * an error occurred. 1872*fcf3ce44SJohn Forte * 1873*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1874*fcf3ce44SJohn Forte * Returned when the operation is successful. 1875*fcf3ce44SJohn Forte * 1876*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1877*fcf3ce44SJohn Forte * Returned if oid is NULL or specifies a memory area that is not 1878*fcf3ce44SJohn Forte * a valid plugin oid. 1879*fcf3ce44SJohn Forte * 1880*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1881*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1882*fcf3ce44SJohn Forte * 1883*fcf3ce44SJohn Forte ******************************************************************************* 1884*fcf3ce44SJohn Forte */ 1885*fcf3ce44SJohn Forte MP_STATUS MP_DisableAutoProbing( 1886*fcf3ce44SJohn Forte MP_OID oid 1887*fcf3ce44SJohn Forte ); 1888*fcf3ce44SJohn Forte 1889*fcf3ce44SJohn Forte /** 1890*fcf3ce44SJohn Forte ******************************************************************************* 1891*fcf3ce44SJohn Forte * 1892*fcf3ce44SJohn Forte * Enables a path. This API may cause failover in a logical unit with 1893*fcf3ce44SJohn Forte * asymmetric access. 1894*fcf3ce44SJohn Forte * 1895*fcf3ce44SJohn Forte * @param oid 1896*fcf3ce44SJohn Forte * The oid of the path. 1897*fcf3ce44SJohn Forte * 1898*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1899*fcf3ce44SJohn Forte * an error occurred. 1900*fcf3ce44SJohn Forte * 1901*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1902*fcf3ce44SJohn Forte * Returned when the operation is successful. 1903*fcf3ce44SJohn Forte * 1904*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1905*fcf3ce44SJohn Forte * Returned if oid is NULL or specifies a memory area that is not 1906*fcf3ce44SJohn Forte * a valid path oid. 1907*fcf3ce44SJohn Forte * 1908*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1909*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1910*fcf3ce44SJohn Forte * 1911*fcf3ce44SJohn Forte ******************************************************************************* 1912*fcf3ce44SJohn Forte */ 1913*fcf3ce44SJohn Forte MP_STATUS MP_EnablePath( 1914*fcf3ce44SJohn Forte MP_OID oid 1915*fcf3ce44SJohn Forte ); 1916*fcf3ce44SJohn Forte 1917*fcf3ce44SJohn Forte /** 1918*fcf3ce44SJohn Forte ******************************************************************************* 1919*fcf3ce44SJohn Forte * 1920*fcf3ce44SJohn Forte * Disables a path. This API may cause failover in a logical unit with 1921*fcf3ce44SJohn Forte * asymmetric access. This API may cause a logical unit to become unavailable. 1922*fcf3ce44SJohn Forte * 1923*fcf3ce44SJohn Forte * @param oid 1924*fcf3ce44SJohn Forte * The oid of the path. 1925*fcf3ce44SJohn Forte * 1926*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1927*fcf3ce44SJohn Forte * an error occurred. 1928*fcf3ce44SJohn Forte * 1929*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1930*fcf3ce44SJohn Forte * Returned when the operation is successful. 1931*fcf3ce44SJohn Forte * 1932*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1933*fcf3ce44SJohn Forte * Returned if oid is NULL or specifies a memory area that is not 1934*fcf3ce44SJohn Forte * a valid path oid. 1935*fcf3ce44SJohn Forte * 1936*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1937*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1938*fcf3ce44SJohn Forte * 1939*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 1940*fcf3ce44SJohn Forte * Returned when the API is not supported. 1941*fcf3ce44SJohn Forte * 1942*fcf3ce44SJohn Forte * @retval MP_STATUS_TRY_AGAIN 1943*fcf3ce44SJohn Forte * Returned when path cannot be disabled at this time. 1944*fcf3ce44SJohn Forte * 1945*fcf3ce44SJohn Forte * @retval MP_STATUS_NOT_PERMITTED 1946*fcf3ce44SJohn Forte * Returned when disabling thsi path would cause the login unit to 1947*fcf3ce44SJohn Forte * become unavailable. 1948*fcf3ce44SJohn Forte * 1949*fcf3ce44SJohn Forte ******************************************************************************* 1950*fcf3ce44SJohn Forte */ 1951*fcf3ce44SJohn Forte MP_STATUS MP_DisablePath( 1952*fcf3ce44SJohn Forte MP_OID oid 1953*fcf3ce44SJohn Forte ); 1954*fcf3ce44SJohn Forte 1955*fcf3ce44SJohn Forte /** 1956*fcf3ce44SJohn Forte ******************************************************************************* 1957*fcf3ce44SJohn Forte * 1958*fcf3ce44SJohn Forte * Set the multipath logical unit s load balancing policy. 1959*fcf3ce44SJohn Forte * 1960*fcf3ce44SJohn Forte * @param logicalUnitoid 1961*fcf3ce44SJohn Forte * The object ID of the multipath logical unit. 1962*fcf3ce44SJohn Forte * 1963*fcf3ce44SJohn Forte * @param loadBanlance 1964*fcf3ce44SJohn Forte * The desired load balance policy for the specified logical unit. 1965*fcf3ce44SJohn Forte * 1966*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 1967*fcf3ce44SJohn Forte * an error occurred. 1968*fcf3ce44SJohn Forte * 1969*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 1970*fcf3ce44SJohn Forte * Returned when the operation is successful. 1971*fcf3ce44SJohn Forte * 1972*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 1973*fcf3ce44SJohn Forte * Returned if no MP_MULTIPATH_LOGICAL_UNIT associated with 1974*fcf3ce44SJohn Forte * @ref ligicalUnitrOid is found or invalid MP_LOAD_BALANCE_TYPE is 1975*fcf3ce44SJohn Forte * specified. 1976*fcf3ce44SJohn Forte * 1977*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 1978*fcf3ce44SJohn Forte * Returned when the specified loadBalance type cannot be handled 1979*fcf3ce44SJohn Forte * by the plugin. 1980*fcf3ce44SJohn Forte * 1981*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 1982*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 1983*fcf3ce44SJohn Forte * 1984*fcf3ce44SJohn Forte ******************************************************************************* 1985*fcf3ce44SJohn Forte */ 1986*fcf3ce44SJohn Forte MP_STATUS MP_SetLogicalUnitLoadBalanceType( 1987*fcf3ce44SJohn Forte MP_OID logicalUnitOid, 1988*fcf3ce44SJohn Forte MP_LOAD_BALANCE_TYPE loadBalance 1989*fcf3ce44SJohn Forte ); 1990*fcf3ce44SJohn Forte 1991*fcf3ce44SJohn Forte /** 1992*fcf3ce44SJohn Forte ******************************************************************************* 1993*fcf3ce44SJohn Forte * 1994*fcf3ce44SJohn Forte * Set the weight to be assigned to a particular path. 1995*fcf3ce44SJohn Forte * 1996*fcf3ce44SJohn Forte * @param pathOid 1997*fcf3ce44SJohn Forte * The object ID of the path logical unit. 1998*fcf3ce44SJohn Forte * 1999*fcf3ce44SJohn Forte * @param weight 2000*fcf3ce44SJohn Forte * weight that will be assigned to the path logical unit. 2001*fcf3ce44SJohn Forte * 2002*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2003*fcf3ce44SJohn Forte * an error occurred. 2004*fcf3ce44SJohn Forte * 2005*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2006*fcf3ce44SJohn Forte * Returned when the operation is successful. 2007*fcf3ce44SJohn Forte * 2008*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 2009*fcf3ce44SJohn Forte * Returned when the MP Path specified by the PathOid could not be 2010*fcf3ce44SJohn Forte * found. 2011*fcf3ce44SJohn Forte * 2012*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 2013*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 2014*fcf3ce44SJohn Forte * 2015*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2016*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 2017*fcf3ce44SJohn Forte * 2018*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2019*fcf3ce44SJohn Forte * Returned when the operation failed. 2020*fcf3ce44SJohn Forte * 2021*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_WEIGHT 2022*fcf3ce44SJohn Forte * Returned when the weight parameter is greater than the plugin's 2023*fcf3ce44SJohn Forte * maxWeight property. 2024*fcf3ce44SJohn Forte * 2025*fcf3ce44SJohn Forte ******************************************************************************* 2026*fcf3ce44SJohn Forte */ 2027*fcf3ce44SJohn Forte MP_STATUS MP_SetPathWeight( 2028*fcf3ce44SJohn Forte MP_OID pathOid, 2029*fcf3ce44SJohn Forte MP_UINT32 weight 2030*fcf3ce44SJohn Forte ); 2031*fcf3ce44SJohn Forte 2032*fcf3ce44SJohn Forte /** 2033*fcf3ce44SJohn Forte ******************************************************************************* 2034*fcf3ce44SJohn Forte * 2035*fcf3ce44SJohn Forte * Set the default load balance policy for the plugin. 2036*fcf3ce44SJohn Forte * 2037*fcf3ce44SJohn Forte * @param oid 2038*fcf3ce44SJohn Forte * The object ID of the plugin 2039*fcf3ce44SJohn Forte * 2040*fcf3ce44SJohn Forte * @param loadBalance 2041*fcf3ce44SJohn Forte * The desired default load balance policy for the specified plugin. 2042*fcf3ce44SJohn Forte * 2043*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2044*fcf3ce44SJohn Forte * an error occurred. 2045*fcf3ce44SJohn Forte * 2046*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2047*fcf3ce44SJohn Forte * Returned when the operation is successful. 2048*fcf3ce44SJohn Forte * 2049*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 2050*fcf3ce44SJohn Forte * Returned when the the plugin specified by @ref oid could not be 2051*fcf3ce44SJohn Forte * found. 2052*fcf3ce44SJohn Forte * 2053*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2054*fcf3ce44SJohn Forte * Returned if the oid of the object is not valid. 2055*fcf3ce44SJohn Forte * 2056*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 2057*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 2058*fcf3ce44SJohn Forte * 2059*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2060*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 2061*fcf3ce44SJohn Forte * 2062*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2063*fcf3ce44SJohn Forte * Returned when the specified loadBalance type cannot be handled 2064*fcf3ce44SJohn Forte * by the plugin. 2065*fcf3ce44SJohn Forte * 2066*fcf3ce44SJohn Forte ******************************************************************************* 2067*fcf3ce44SJohn Forte */ 2068*fcf3ce44SJohn Forte MP_STATUS MP_SetPluginLoadBalanceType( 2069*fcf3ce44SJohn Forte MP_OID oid, 2070*fcf3ce44SJohn Forte MP_LOAD_BALANCE_TYPE loadBalance 2071*fcf3ce44SJohn Forte ); 2072*fcf3ce44SJohn Forte 2073*fcf3ce44SJohn Forte /** 2074*fcf3ce44SJohn Forte ******************************************************************************* 2075*fcf3ce44SJohn Forte * 2076*fcf3ce44SJohn Forte * Set the failback polling rates. Setting both rates to zero disables polling. 2077*fcf3ce44SJohn Forte * 2078*fcf3ce44SJohn Forte * @param pluginOid 2079*fcf3ce44SJohn Forte * The object ID of either the plugin or a multipath logical unit. 2080*fcf3ce44SJohn Forte * 2081*fcf3ce44SJohn Forte * @param pollingRate 2082*fcf3ce44SJohn Forte * The value to be set in MP_PLUGIN_PROPERTIES current pollingRate or 2083*fcf3ce44SJohn Forte * MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES pollingRate. 2084*fcf3ce44SJohn Forte * 2085*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2086*fcf3ce44SJohn Forte * an error occurred. 2087*fcf3ce44SJohn Forte * 2088*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2089*fcf3ce44SJohn Forte * Returned when the operation is successful. 2090*fcf3ce44SJohn Forte * 2091*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 2092*fcf3ce44SJohn Forte * Returned when the the plugin specified by @ref oid could not be 2093*fcf3ce44SJohn Forte * found. 2094*fcf3ce44SJohn Forte * 2095*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2096*fcf3ce44SJohn Forte * Returned if one of the polling values is outside the range 2097*fcf3ce44SJohn Forte * supported by the driver. 2098*fcf3ce44SJohn Forte * 2099*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 2100*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 2101*fcf3ce44SJohn Forte * 2102*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2103*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 2104*fcf3ce44SJohn Forte * 2105*fcf3ce44SJohn Forte ******************************************************************************* 2106*fcf3ce44SJohn Forte */ 2107*fcf3ce44SJohn Forte MP_STATUS MP_SetFailbackPollingRate( 2108*fcf3ce44SJohn Forte MP_OID oid, 2109*fcf3ce44SJohn Forte MP_UINT32 pollingRate 2110*fcf3ce44SJohn Forte ); 2111*fcf3ce44SJohn Forte 2112*fcf3ce44SJohn Forte /** 2113*fcf3ce44SJohn Forte ******************************************************************************* 2114*fcf3ce44SJohn Forte * 2115*fcf3ce44SJohn Forte * Set the probing polling rates. Setting both rates to zero disables polling. 2116*fcf3ce44SJohn Forte * 2117*fcf3ce44SJohn Forte * @param pluginOid 2118*fcf3ce44SJohn Forte * The object ID of either the plugin or a multipath logical unit. 2119*fcf3ce44SJohn Forte * 2120*fcf3ce44SJohn Forte * @param pollingRate 2121*fcf3ce44SJohn Forte * The value to be set in MP_PLUGIN_PROPERTIES current pollingRate or 2122*fcf3ce44SJohn Forte * MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES pollingRate. 2123*fcf3ce44SJohn Forte * 2124*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2125*fcf3ce44SJohn Forte * an error occurred. 2126*fcf3ce44SJohn Forte * 2127*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2128*fcf3ce44SJohn Forte * Returned when the operation is successful. 2129*fcf3ce44SJohn Forte * 2130*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 2131*fcf3ce44SJohn Forte * Returned when the the plugin specified by @ref oid could not be 2132*fcf3ce44SJohn Forte * found. 2133*fcf3ce44SJohn Forte * 2134*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2135*fcf3ce44SJohn Forte * Returned if one of the polling values is outside the range 2136*fcf3ce44SJohn Forte * supported by the driver. 2137*fcf3ce44SJohn Forte * 2138*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 2139*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 2140*fcf3ce44SJohn Forte * 2141*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2142*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 2143*fcf3ce44SJohn Forte * 2144*fcf3ce44SJohn Forte ******************************************************************************* 2145*fcf3ce44SJohn Forte */ 2146*fcf3ce44SJohn Forte MP_STATUS MP_SetProbingPollingRate( 2147*fcf3ce44SJohn Forte MP_OID oid, 2148*fcf3ce44SJohn Forte MP_UINT32 pollingRate 2149*fcf3ce44SJohn Forte ); 2150*fcf3ce44SJohn Forte 2151*fcf3ce44SJohn Forte /** 2152*fcf3ce44SJohn Forte ******************************************************************************* 2153*fcf3ce44SJohn Forte * 2154*fcf3ce44SJohn Forte * Set proprietary properties in supported object instances. 2155*fcf3ce44SJohn Forte * 2156*fcf3ce44SJohn Forte * @param pluginOid 2157*fcf3ce44SJohn Forte * The object ID of MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES, 2158*fcf3ce44SJohn Forte * MP_PLUGIN_PROPERTIES or MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES. 2159*fcf3ce44SJohn Forte * 2160*fcf3ce44SJohn Forte * @param count 2161*fcf3ce44SJohn Forte * The number of valid items in pPropertyList. 2162*fcf3ce44SJohn Forte * 2163*fcf3ce44SJohn Forte * @param pPropertyList 2164*fcf3ce44SJohn Forte * A pointer to an array of property name/value pairs. This array must 2165*fcf3ce44SJohn Forte * contain the same number of elements as count. 2166*fcf3ce44SJohn Forte * 2167*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2168*fcf3ce44SJohn Forte * an error occurred. 2169*fcf3ce44SJohn Forte * 2170*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2171*fcf3ce44SJohn Forte * Returned when the operation is successful. 2172*fcf3ce44SJohn Forte * 2173*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 2174*fcf3ce44SJohn Forte * Returned when the the plugin specified by @ref oid could not be 2175*fcf3ce44SJohn Forte * found. 2176*fcf3ce44SJohn Forte * 2177*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2178*fcf3ce44SJohn Forte * Returned if one of the polling values is outside the range 2179*fcf3ce44SJohn Forte * supported by the driver. 2180*fcf3ce44SJohn Forte * 2181*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 2182*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 2183*fcf3ce44SJohn Forte * 2184*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2185*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 2186*fcf3ce44SJohn Forte * 2187*fcf3ce44SJohn Forte ******************************************************************************* 2188*fcf3ce44SJohn Forte */ 2189*fcf3ce44SJohn Forte MP_STATUS MP_SetProprietaryProperties( 2190*fcf3ce44SJohn Forte MP_OID oid, 2191*fcf3ce44SJohn Forte MP_UINT32 count, 2192*fcf3ce44SJohn Forte MP_PROPRIETARY_PROPERTY *pPropertyList 2193*fcf3ce44SJohn Forte ); 2194*fcf3ce44SJohn Forte 2195*fcf3ce44SJohn Forte /** 2196*fcf3ce44SJohn Forte ******************************************************************************* 2197*fcf3ce44SJohn Forte * 2198*fcf3ce44SJohn Forte * Set the access state for a list of target port groups. This allows 2199*fcf3ce44SJohn Forte * a client to force a failover or failback to a desired set of target port 2200*fcf3ce44SJohn Forte * groups. 2201*fcf3ce44SJohn Forte * 2202*fcf3ce44SJohn Forte * @param luOid 2203*fcf3ce44SJohn Forte * The object ID of the logical unit where the command is sent. 2204*fcf3ce44SJohn Forte * 2205*fcf3ce44SJohn Forte * @param count 2206*fcf3ce44SJohn Forte * The number of valid items in the pTpgStateList. 2207*fcf3ce44SJohn Forte * 2208*fcf3ce44SJohn Forte * @param pTpgStateList 2209*fcf3ce44SJohn Forte * A pointer to an array of TPG/access-state values. This array must 2210*fcf3ce44SJohn Forte * contain the same number of elements as @ref count. 2211*fcf3ce44SJohn Forte * 2212*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2213*fcf3ce44SJohn Forte * an error occurred. 2214*fcf3ce44SJohn Forte * 2215*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2216*fcf3ce44SJohn Forte * Returned when the operation is successful. 2217*fcf3ce44SJohn Forte * 2218*fcf3ce44SJohn Forte * @retval MP_STATUS_OBJECT_NOT_FOUND 2219*fcf3ce44SJohn Forte * Returned when the MP_MULTIPATH_LOGICAL_UNIT associated with @ref 2220*fcf3ce44SJohn Forte * oid could not be found. 2221*fcf3ce44SJohn Forte * 2222*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2223*fcf3ce44SJohn Forte * Returned if pTpgStateList is null or if one of the TPGs referenced 2224*fcf3ce44SJohn Forte * in the list is not associated with the specified MP logical unit. 2225*fcf3ce44SJohn Forte * 2226*fcf3ce44SJohn Forte * @retval MP_STATUS_UNSUPPORTED 2227*fcf3ce44SJohn Forte * Returned when the implementation does not support the API 2228*fcf3ce44SJohn Forte * 2229*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2230*fcf3ce44SJohn Forte * Returned if oid does not specify any valid object type. 2231*fcf3ce44SJohn Forte * 2232*fcf3ce44SJohn Forte * @retval MP_STATUS_ACCESS_STATE_INVALID 2233*fcf3ce44SJohn Forte * Returned if the target device returns a status indicating the caller 2234*fcf3ce44SJohn Forte * is attempting to establish an illegal combination of access states. 2235*fcf3ce44SJohn Forte * 2236*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2237*fcf3ce44SJohn Forte * Returned if the underlying interface failed the commend for some 2238*fcf3ce44SJohn Forte * reason other than MP_STATUS_ACCESS_STATE_INVALID 2239*fcf3ce44SJohn Forte * 2240*fcf3ce44SJohn Forte ******************************************************************************* 2241*fcf3ce44SJohn Forte */ 2242*fcf3ce44SJohn Forte MP_STATUS MP_SetTPGAccess( 2243*fcf3ce44SJohn Forte MP_OID luOid, 2244*fcf3ce44SJohn Forte MP_UINT32 count, 2245*fcf3ce44SJohn Forte MP_TPG_STATE_PAIR *pTpgStateList 2246*fcf3ce44SJohn Forte ); 2247*fcf3ce44SJohn Forte 2248*fcf3ce44SJohn Forte /** 2249*fcf3ce44SJohn Forte ****************************************************************************** 2250*fcf3ce44SJohn Forte * 2251*fcf3ce44SJohn Forte * The APIs that are associated with event support. 2252*fcf3ce44SJohn Forte * 2253*fcf3ce44SJohn Forte * - MP_RegisterForObjectPropertyChanges 2254*fcf3ce44SJohn Forte * - MP_DeregisterForObjectPropertyChanges 2255*fcf3ce44SJohn Forte * - MP_RegisterForObjectVisibilityChanges 2256*fcf3ce44SJohn Forte * - MP_DeregisterForObjectVisibilityChanges 2257*fcf3ce44SJohn Forte * 2258*fcf3ce44SJohn Forte ****************************************************************************** 2259*fcf3ce44SJohn Forte */ 2260*fcf3ce44SJohn Forte 2261*fcf3ce44SJohn Forte /** 2262*fcf3ce44SJohn Forte ******************************************************************************* 2263*fcf3ce44SJohn Forte * 2264*fcf3ce44SJohn Forte * Registers a client function that is to be called 2265*fcf3ce44SJohn Forte * whenever the property of an an object changes. 2266*fcf3ce44SJohn Forte * 2267*fcf3ce44SJohn Forte * @param pClientFn, 2268*fcf3ce44SJohn Forte * A pointer to an MP_OBJECT_PROPERTY_FN function defined by the 2269*fcf3ce44SJohn Forte * client. On successful return this function will be called to 2270*fcf3ce44SJohn Forte * inform the client of objects that have had one or more properties 2271*fcf3ce44SJohn Forte * change. 2272*fcf3ce44SJohn Forte * 2273*fcf3ce44SJohn Forte * @param objectType 2274*fcf3ce44SJohn Forte * The type of object the client wishes to deregister for 2275*fcf3ce44SJohn Forte * property change callbacks. If null, then all objects types are 2276*fcf3ce44SJohn Forte * deregistered. 2277*fcf3ce44SJohn Forte * 2278*fcf3ce44SJohn Forte * @param pCallerData 2279*fcf3ce44SJohn Forte * A pointer that is passed to the callback routine with each event. 2280*fcf3ce44SJohn Forte * This may be used by the caller to correlate the event to source of 2281*fcf3ce44SJohn Forte * the registration. 2282*fcf3ce44SJohn Forte * 2283*fcf3ce44SJohn Forte * @param pluginOid 2284*fcf3ce44SJohn Forte * A plugin oid that the client wishes to deregister for property change. 2285*fcf3ce44SJohn Forte * 2286*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2287*fcf3ce44SJohn Forte * an error occurred. 2288*fcf3ce44SJohn Forte * 2289*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2290*fcf3ce44SJohn Forte * Returned when the operation is successful. 2291*fcf3ce44SJohn Forte * 2292*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2293*fcf3ce44SJohn Forte * Returned if pClientFn is NULL or specifies a memory area 2294*fcf3ce44SJohn Forte * that is not executable. 2295*fcf3ce44SJohn Forte * 2296*fcf3ce44SJohn Forte * @retval MP_STATUS_FN_REPLACED 2297*fcf3ce44SJohn Forte * Returned when an existing client function is replaced with the one 2298*fcf3ce44SJohn Forte * specified in pClientFn. 2299*fcf3ce44SJohn Forte * 2300*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2301*fcf3ce44SJohn Forte * Returned if objectType does not specify any valid object type. 2302*fcf3ce44SJohn Forte * 2303*fcf3ce44SJohn Forte ******************************************************************************* 2304*fcf3ce44SJohn Forte */ 2305*fcf3ce44SJohn Forte MP_STATUS MP_RegisterForObjectPropertyChanges( 2306*fcf3ce44SJohn Forte MP_OBJECT_PROPERTY_FN pClientFn, 2307*fcf3ce44SJohn Forte MP_OBJECT_TYPE objectType, 2308*fcf3ce44SJohn Forte void *pCallerData, 2309*fcf3ce44SJohn Forte MP_OID pluginOid 2310*fcf3ce44SJohn Forte ); 2311*fcf3ce44SJohn Forte 2312*fcf3ce44SJohn Forte /** 2313*fcf3ce44SJohn Forte ******************************************************************************* 2314*fcf3ce44SJohn Forte * 2315*fcf3ce44SJohn Forte * Deregisters a previously registered client function that is to be invoked 2316*fcf3ce44SJohn Forte * whenever an object's property changes. 2317*fcf3ce44SJohn Forte * 2318*fcf3ce44SJohn Forte * @param pClientFn, 2319*fcf3ce44SJohn Forte * A pointer to an MP_OBJECT_PROPERTY_FN function defined by the 2320*fcf3ce44SJohn Forte * client that was previously registered using 2321*fcf3ce44SJohn Forte * the MP_RegisterForObjectPropertyChanges API. On successful return 2322*fcf3ce44SJohn Forte * this function will no longer be called to inform the client of 2323*fcf3ce44SJohn Forte * object property changes. 2324*fcf3ce44SJohn Forte * 2325*fcf3ce44SJohn Forte * @param objectType 2326*fcf3ce44SJohn Forte * The type of object the client wishes to deregister for 2327*fcf3ce44SJohn Forte * property change callbacks. If null, then all objects types are 2328*fcf3ce44SJohn Forte * deregistered. 2329*fcf3ce44SJohn Forte * 2330*fcf3ce44SJohn Forte * @param pluginOid 2331*fcf3ce44SJohn Forte * A plugin oid that the client wishes to deregister for property change. 2332*fcf3ce44SJohn Forte * 2333*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2334*fcf3ce44SJohn Forte * an error occurred. 2335*fcf3ce44SJohn Forte * 2336*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2337*fcf3ce44SJohn Forte * Returned when the operation is successful. 2338*fcf3ce44SJohn Forte * 2339*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2340*fcf3ce44SJohn Forte * Returned if pClientFn is NULL or specifies a memory area 2341*fcf3ce44SJohn Forte * that is not executable. 2342*fcf3ce44SJohn Forte * 2343*fcf3ce44SJohn Forte * @retval MP_STATUS_UNKNOWN_FN 2344*fcf3ce44SJohn Forte * Returned if pClientFn is not the same as the previously registered 2345*fcf3ce44SJohn Forte * function. 2346*fcf3ce44SJohn Forte * 2347*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2348*fcf3ce44SJohn Forte * Returned if objectType does not specify any valid object type. 2349*fcf3ce44SJohn Forte * 2350*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2351*fcf3ce44SJohn Forte * Returned if pClientFn deregistration is not possible at this time. 2352*fcf3ce44SJohn Forte * 2353*fcf3ce44SJohn Forte ******************************************************************************* 2354*fcf3ce44SJohn Forte */ 2355*fcf3ce44SJohn Forte MP_STATUS MP_DeregisterForObjectPropertyChanges( 2356*fcf3ce44SJohn Forte MP_OBJECT_PROPERTY_FN pClientFn, 2357*fcf3ce44SJohn Forte MP_OBJECT_TYPE objectType, 2358*fcf3ce44SJohn Forte MP_OID pluginOid 2359*fcf3ce44SJohn Forte ); 2360*fcf3ce44SJohn Forte 2361*fcf3ce44SJohn Forte /** 2362*fcf3ce44SJohn Forte ******************************************************************************* 2363*fcf3ce44SJohn Forte * 2364*fcf3ce44SJohn Forte * Registers a client function that is to be called 2365*fcf3ce44SJohn Forte * whenever a high level object appears or disappears. 2366*fcf3ce44SJohn Forte * 2367*fcf3ce44SJohn Forte * @param pClientFn, 2368*fcf3ce44SJohn Forte * A pointer to an MP_OBJECT_VISIBILITY_FN function defined by the 2369*fcf3ce44SJohn Forte * client. On successful return this function will be called to 2370*fcf3ce44SJohn Forte * inform the client of objects whose visibility has changed. 2371*fcf3ce44SJohn Forte * 2372*fcf3ce44SJohn Forte * @param objectType 2373*fcf3ce44SJohn Forte * The type of object the client wishes to deregister for 2374*fcf3ce44SJohn Forte * property change callbacks. If null, then all objects types are 2375*fcf3ce44SJohn Forte * deregistered. 2376*fcf3ce44SJohn Forte * 2377*fcf3ce44SJohn Forte * @param pCallerData 2378*fcf3ce44SJohn Forte * A pointer that is passed to the callback routine with each event. 2379*fcf3ce44SJohn Forte * This may be used by the caller to correlate the event to source of 2380*fcf3ce44SJohn Forte * the registration. 2381*fcf3ce44SJohn Forte * 2382*fcf3ce44SJohn Forte * @param pluginOid 2383*fcf3ce44SJohn Forte * A plugin oid that the client wishes to deregister for property change. 2384*fcf3ce44SJohn Forte * 2385*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2386*fcf3ce44SJohn Forte * an error occurred. 2387*fcf3ce44SJohn Forte * 2388*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2389*fcf3ce44SJohn Forte * Returned when the operation is successful. 2390*fcf3ce44SJohn Forte * 2391*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2392*fcf3ce44SJohn Forte * Returned if pClientFn is NULL or specifies a memory area 2393*fcf3ce44SJohn Forte * that is not executable. 2394*fcf3ce44SJohn Forte * 2395*fcf3ce44SJohn Forte * @retval MP_STATUS_FN_REPLACED 2396*fcf3ce44SJohn Forte * Returned when an existing client function is replaced with the one 2397*fcf3ce44SJohn Forte * specified in pClientFn. 2398*fcf3ce44SJohn Forte * 2399*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2400*fcf3ce44SJohn Forte * Returned if objectType does not specify any valid object type. 2401*fcf3ce44SJohn Forte * 2402*fcf3ce44SJohn Forte ******************************************************************************* 2403*fcf3ce44SJohn Forte */ 2404*fcf3ce44SJohn Forte MP_STATUS MP_RegisterForObjectVisibilityChanges( 2405*fcf3ce44SJohn Forte MP_OBJECT_VISIBILITY_FN pClientFn, 2406*fcf3ce44SJohn Forte MP_OBJECT_TYPE objectType, 2407*fcf3ce44SJohn Forte void *pCallerData, 2408*fcf3ce44SJohn Forte MP_OID pluginOid 2409*fcf3ce44SJohn Forte ); 2410*fcf3ce44SJohn Forte 2411*fcf3ce44SJohn Forte /** 2412*fcf3ce44SJohn Forte ******************************************************************************* 2413*fcf3ce44SJohn Forte * 2414*fcf3ce44SJohn Forte * Deregisters a previously registered client function that is to be invoked 2415*fcf3ce44SJohn Forte * whenever a high level object appears or disappears. 2416*fcf3ce44SJohn Forte * 2417*fcf3ce44SJohn Forte * @param pClientFn, 2418*fcf3ce44SJohn Forte * A pointer to an MP_OBJECT_VISIBILITY_FN function defined by the 2419*fcf3ce44SJohn Forte * client that was previously registered using 2420*fcf3ce44SJohn Forte * the MP_RegisterForObjectVisibilityChanges API. On successful return 2421*fcf3ce44SJohn Forte * this function will no longer be called to inform the client of 2422*fcf3ce44SJohn Forte * object property changes. 2423*fcf3ce44SJohn Forte * 2424*fcf3ce44SJohn Forte * @param objectType 2425*fcf3ce44SJohn Forte * The type of object the client wishes to deregister for visibility 2426*fcf3ce44SJohn Forte * change callbacks. If null, then all objects types are 2427*fcf3ce44SJohn Forte * deregistered. 2428*fcf3ce44SJohn Forte * 2429*fcf3ce44SJohn Forte * @param pluginOid 2430*fcf3ce44SJohn Forte * A plugin oid that the client wishes to deregister for property change. 2431*fcf3ce44SJohn Forte * 2432*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2433*fcf3ce44SJohn Forte * an error occurred. 2434*fcf3ce44SJohn Forte * 2435*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2436*fcf3ce44SJohn Forte * Returned when the operation is successful. 2437*fcf3ce44SJohn Forte * 2438*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2439*fcf3ce44SJohn Forte * Returned if pClientFn is NULL or specifies a memory area 2440*fcf3ce44SJohn Forte * that is not executable. 2441*fcf3ce44SJohn Forte * 2442*fcf3ce44SJohn Forte * @retval MP_STATUS_UNKNOWN_FN 2443*fcf3ce44SJohn Forte * Returned if pClientFn is not the same as the previously registered 2444*fcf3ce44SJohn Forte * function. 2445*fcf3ce44SJohn Forte * 2446*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_OBJECT_TYPE 2447*fcf3ce44SJohn Forte * Returned if objectType does not specify any valid object type. 2448*fcf3ce44SJohn Forte * 2449*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2450*fcf3ce44SJohn Forte * Returned if pClientFn deregistration is not possible at this time. 2451*fcf3ce44SJohn Forte * 2452*fcf3ce44SJohn Forte ******************************************************************************* 2453*fcf3ce44SJohn Forte */ 2454*fcf3ce44SJohn Forte MP_STATUS MP_DeregisterForObjectVisibilityChanges( 2455*fcf3ce44SJohn Forte MP_OBJECT_VISIBILITY_FN pClientFn, 2456*fcf3ce44SJohn Forte MP_OBJECT_TYPE objectType, 2457*fcf3ce44SJohn Forte MP_OID pluginOid 2458*fcf3ce44SJohn Forte ); 2459*fcf3ce44SJohn Forte 2460*fcf3ce44SJohn Forte /** 2461*fcf3ce44SJohn Forte ****************************************************************************** 2462*fcf3ce44SJohn Forte * 2463*fcf3ce44SJohn Forte * The utility APIs 2464*fcf3ce44SJohn Forte * 2465*fcf3ce44SJohn Forte * - MP_CompareOIDs 2466*fcf3ce44SJohn Forte * - MP_FreeOidList 2467*fcf3ce44SJohn Forte * - MP_RegisterPlugin 2468*fcf3ce44SJohn Forte * - MP_DeregisterPlugin 2469*fcf3ce44SJohn Forte * 2470*fcf3ce44SJohn Forte ****************************************************************************** 2471*fcf3ce44SJohn Forte */ 2472*fcf3ce44SJohn Forte 2473*fcf3ce44SJohn Forte /** 2474*fcf3ce44SJohn Forte ******************************************************************************* 2475*fcf3ce44SJohn Forte * 2476*fcf3ce44SJohn Forte * Compare two Oids for equality to see whether they refer to the same object. 2477*fcf3ce44SJohn Forte * 2478*fcf3ce44SJohn Forte * @param oid1 2479*fcf3ce44SJohn Forte * Oid to compare. 2480*fcf3ce44SJohn Forte * 2481*fcf3ce44SJohn Forte * @param oid2 2482*fcf3ce44SJohn Forte * Oid to compare. 2483*fcf3ce44SJohn Forte * 2484*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2485*fcf3ce44SJohn Forte * an error occurred. 2486*fcf3ce44SJohn Forte * 2487*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2488*fcf3ce44SJohn Forte * Returned when the two Oids do refer to the same object. 2489*fcf3ce44SJohn Forte * 2490*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2491*fcf3ce44SJohn Forte * Returned if the Oids don't compare. 2492*fcf3ce44SJohn Forte * 2493*fcf3ce44SJohn Forte ******************************************************************************* 2494*fcf3ce44SJohn Forte */ 2495*fcf3ce44SJohn Forte MP_STATUS MP_CompareOIDs( 2496*fcf3ce44SJohn Forte MP_OID oid1, 2497*fcf3ce44SJohn Forte MP_OID oid2 2498*fcf3ce44SJohn Forte ); 2499*fcf3ce44SJohn Forte 2500*fcf3ce44SJohn Forte /** 2501*fcf3ce44SJohn Forte ******************************************************************************* 2502*fcf3ce44SJohn Forte * 2503*fcf3ce44SJohn Forte * Frees memory returned by an MP API. 2504*fcf3ce44SJohn Forte * 2505*fcf3ce44SJohn Forte * @param pMemory 2506*fcf3ce44SJohn Forte * A pointer to the memory returned by an MP API. On successful 2507*fcf3ce44SJohn Forte return, the allocated memory is freed. 2508*fcf3ce44SJohn Forte * 2509*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2510*fcf3ce44SJohn Forte * an error occurred. 2511*fcf3ce44SJohn Forte * 2512*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2513*fcf3ce44SJohn Forte * Returned when pPluginId is deregistered successfully. 2514*fcf3ce44SJohn Forte * 2515*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2516*fcf3ce44SJohn Forte * Returned if pMemory is NULL or specifies a memory area to which 2517*fcf3ce44SJohn Forte * data cannot be written. 2518*fcf3ce44SJohn Forte * 2519*fcf3ce44SJohn Forte ******************************************************************************* 2520*fcf3ce44SJohn Forte */ 2521*fcf3ce44SJohn Forte MP_STATUS MP_FreeOidList( 2522*fcf3ce44SJohn Forte MP_OID_LIST *pOidList 2523*fcf3ce44SJohn Forte ); 2524*fcf3ce44SJohn Forte 2525*fcf3ce44SJohn Forte /** 2526*fcf3ce44SJohn Forte ******************************************************************************* 2527*fcf3ce44SJohn Forte * 2528*fcf3ce44SJohn Forte * Registers a plugin with common library. The implementation of this routine 2529*fcf3ce44SJohn Forte * is based on configuration file /etc/mpapi.conf that contains a list of 2530*fcf3ce44SJohn Forte * plugin libraries. 2531*fcf3ce44SJohn Forte * 2532*fcf3ce44SJohn Forte * @param pPluginId 2533*fcf3ce44SJohn Forte * A pointer to the key name shall be the reversed domain name of 2534*fcf3ce44SJohn Forte * the vendor followed by followed by the vendor specific name for 2535*fcf3ce44SJohn Forte * the plugin that uniquely identifies the plugin. 2536*fcf3ce44SJohn Forte * 2537*fcf3ce44SJohn Forte * @param pFileName 2538*fcf3ce44SJohn Forte * The full path to the plugin library. 2539*fcf3ce44SJohn Forte * 2540*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2541*fcf3ce44SJohn Forte * an error occurred. 2542*fcf3ce44SJohn Forte * 2543*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2544*fcf3ce44SJohn Forte * Returned when pPluginId is deregistered successfully. 2545*fcf3ce44SJohn Forte * 2546*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2547*fcf3ce44SJohn Forte * Returned if pPluginId is NULL or specifies a memory area that 2548*fcf3ce44SJohn Forte * is not executable. 2549*fcf3ce44SJohn Forte * 2550*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2551*fcf3ce44SJohn Forte * Returned if pClientFn deregistration is not possible at this time. 2552*fcf3ce44SJohn Forte * 2553*fcf3ce44SJohn Forte ******************************************************************************* 2554*fcf3ce44SJohn Forte */ 2555*fcf3ce44SJohn Forte MP_STATUS MP_RegisterPlugin( 2556*fcf3ce44SJohn Forte MP_WCHAR *pPluginId, 2557*fcf3ce44SJohn Forte MP_CHAR *pFileName 2558*fcf3ce44SJohn Forte ); 2559*fcf3ce44SJohn Forte 2560*fcf3ce44SJohn Forte /** 2561*fcf3ce44SJohn Forte ******************************************************************************* 2562*fcf3ce44SJohn Forte * 2563*fcf3ce44SJohn Forte * Deregisters a plugin from the common library. 2564*fcf3ce44SJohn Forte * 2565*fcf3ce44SJohn Forte * @param pPluginId 2566*fcf3ce44SJohn Forte * A pointer to a Plugin ID previously registered using 2567*fcf3ce44SJohn Forte * the MP_RegisterPlugin API.. 2568*fcf3ce44SJohn Forte * 2569*fcf3ce44SJohn Forte * @return An MP_STATUS indicating if the operation was successful or if 2570*fcf3ce44SJohn Forte * an error occurred. 2571*fcf3ce44SJohn Forte * 2572*fcf3ce44SJohn Forte * @retval MP_STATUS_SUCCESS 2573*fcf3ce44SJohn Forte * Returned when pPluginId is deregistered successfully. 2574*fcf3ce44SJohn Forte * 2575*fcf3ce44SJohn Forte * @retval MP_STATUS_INVALID_PARAMETER 2576*fcf3ce44SJohn Forte * Returned if pPluginId is NULL or specifies a memory area that 2577*fcf3ce44SJohn Forte * is not executable. 2578*fcf3ce44SJohn Forte * 2579*fcf3ce44SJohn Forte * @retval MP_STATUS_FAILED 2580*fcf3ce44SJohn Forte * Returned if pClientFn deregistration is not possible at this time. 2581*fcf3ce44SJohn Forte * 2582*fcf3ce44SJohn Forte ******************************************************************************* 2583*fcf3ce44SJohn Forte */ 2584*fcf3ce44SJohn Forte MP_STATUS MP_DeregisterPlugin( 2585*fcf3ce44SJohn Forte MP_WCHAR *pPluginId 2586*fcf3ce44SJohn Forte ); 2587*fcf3ce44SJohn Forte 2588*fcf3ce44SJohn Forte #endif 2589*fcf3ce44SJohn Forte 2590*fcf3ce44SJohn Forte #ifdef __cplusplus 2591*fcf3ce44SJohn Forte }; 2592*fcf3ce44SJohn Forte #endif 2593*fcf3ce44SJohn Forte 2594