xref: /titanic_50/usr/src/lib/mpapi/libmpapi/common/mpapi.h (revision fcf3ce441efd61da9bb2884968af01cb7c1452cc)
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