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