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