xref: /titanic_52/usr/src/lib/libima/common/ima.h (revision fcf3ce441efd61da9bb2884968af01cb7c1452cc)
1*fcf3ce44SJohn Forte /*
2*fcf3ce44SJohn Forte  * CDDL HEADER START
3*fcf3ce44SJohn Forte  *
4*fcf3ce44SJohn Forte  * The contents of this file are subject to the terms of the
5*fcf3ce44SJohn Forte  * Common Development and Distribution License (the "License").
6*fcf3ce44SJohn Forte  * You may not use this file except in compliance with the License.
7*fcf3ce44SJohn Forte  *
8*fcf3ce44SJohn Forte  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*fcf3ce44SJohn Forte  * or http://www.opensolaris.org/os/licensing.
10*fcf3ce44SJohn Forte  * See the License for the specific language governing permissions
11*fcf3ce44SJohn Forte  * and limitations under the License.
12*fcf3ce44SJohn Forte  *
13*fcf3ce44SJohn Forte  * When distributing Covered Code, include this CDDL HEADER in each
14*fcf3ce44SJohn Forte  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*fcf3ce44SJohn Forte  * If applicable, add the following below this CDDL HEADER, with the
16*fcf3ce44SJohn Forte  * fields enclosed by brackets "[]" replaced with your own identifying
17*fcf3ce44SJohn Forte  * information: Portions Copyright [yyyy] [name of copyright owner]
18*fcf3ce44SJohn Forte  *
19*fcf3ce44SJohn Forte  * CDDL HEADER END
20*fcf3ce44SJohn Forte  */
21*fcf3ce44SJohn Forte /*
22*fcf3ce44SJohn Forte  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23*fcf3ce44SJohn Forte  * Use is subject to license terms.
24*fcf3ce44SJohn Forte  */
25*fcf3ce44SJohn Forte 
26*fcf3ce44SJohn Forte /******************************************************************************
27*fcf3ce44SJohn Forte  *
28*fcf3ce44SJohn Forte  * Description
29*fcf3ce44SJohn Forte  *  Ima.h - general header file for client
30*fcf3ce44SJohn Forte  *       and library developers
31*fcf3ce44SJohn Forte  *
32*fcf3ce44SJohn Forte  * License:
33*fcf3ce44SJohn Forte  *  The contents of this file are subject to the SNIA Public License
34*fcf3ce44SJohn Forte  *  Version 1.0 (the "License"); you may not use this file except in
35*fcf3ce44SJohn Forte  *  compliance with the License. You may obtain a copy of the License at
36*fcf3ce44SJohn Forte  *
37*fcf3ce44SJohn Forte  *  /http://www.snia.org/English/Resources/Code/OpenSource.html
38*fcf3ce44SJohn Forte  *
39*fcf3ce44SJohn Forte  *  Software distributed under the License is distributed on an "AS IS"
40*fcf3ce44SJohn Forte  *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
41*fcf3ce44SJohn Forte  *  the License for the specific language governing rights and limitations
42*fcf3ce44SJohn Forte  *  under the License.
43*fcf3ce44SJohn Forte  *
44*fcf3ce44SJohn Forte  * The Original Code is  SNIA HBA API and IMA general header file
45*fcf3ce44SJohn Forte  *
46*fcf3ce44SJohn Forte  * The Initial Developer of the Original Code is:
47*fcf3ce44SJohn Forte  *      Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
48*fcf3ce44SJohn Forte  *      David Dillard       VERITAS Software        david.dillard@veritas.com
49*fcf3ce44SJohn Forte  *
50*fcf3ce44SJohn Forte  * Contributor(s):
51*fcf3ce44SJohn Forte  *  Jeff Ding, Adaptec, Inc. (jding@corp.adaptec.com)
52*fcf3ce44SJohn Forte  *  Dave Wysochanski, Network Appliance, Inc. (davidw@netapp.com)
53*fcf3ce44SJohn Forte  *
54*fcf3ce44SJohn Forte  ******************************************************************************
55*fcf3ce44SJohn Forte  *
56*fcf3ce44SJohn Forte  *   Changes:
57*fcf3ce44SJohn Forte  *  09/24/2003 Initial Draft
58*fcf3ce44SJohn Forte  *  (for other changes... see the CVS logs)
59*fcf3ce44SJohn Forte  *  12/15/2003 corrected the defined parameter in IMA_SetPhbaIsnsDiscovery().
60*fcf3ce44SJohn Forte  *             lower case the computer name as iscsi name in
61*fcf3ce44SJohn Forte  *             IMA_GenerateNodeName().
62*fcf3ce44SJohn Forte  *  03/01/2004 Brought up to date with respect to IMA v1.0.1; made formatting
63*fcf3ce44SJohn Forte  *             changes - lines to 80 cols - for readability.
64*fcf3ce44SJohn Forte  *
65*fcf3ce44SJohn Forte  *  01/21/2005 Updated to support IMA 1.1.3.
66*fcf3ce44SJohn Forte  *****************************************************************************/
67*fcf3ce44SJohn Forte #ifdef __cplusplus
68*fcf3ce44SJohn Forte extern "C" {
69*fcf3ce44SJohn Forte #endif
70*fcf3ce44SJohn Forte 
71*fcf3ce44SJohn Forte #ifndef IMA_H
72*fcf3ce44SJohn Forte #define IMA_H
73*fcf3ce44SJohn Forte 
74*fcf3ce44SJohn Forte #include <time.h>
75*fcf3ce44SJohn Forte #include <wchar.h>
76*fcf3ce44SJohn Forte 
77*fcf3ce44SJohn Forte 
78*fcf3ce44SJohn Forte /* Library version string */
79*fcf3ce44SJohn Forte #define HBA_LIBVERSION 2
80*fcf3ce44SJohn Forte 
81*fcf3ce44SJohn Forte /* DLL imports for WIN32 operation */
82*fcf3ce44SJohn Forte #ifdef WIN32
83*fcf3ce44SJohn Forte #ifdef IMA_EXPORTS
84*fcf3ce44SJohn Forte #define IMA_API __declspec(dllexport)
85*fcf3ce44SJohn Forte #else
86*fcf3ce44SJohn Forte #define IMA_API __declspec(dllimport)
87*fcf3ce44SJohn Forte #endif
88*fcf3ce44SJohn Forte #else
89*fcf3ce44SJohn Forte #define IMA_API
90*fcf3ce44SJohn Forte #endif
91*fcf3ce44SJohn Forte 
92*fcf3ce44SJohn Forte /* OS specific definitions */
93*fcf3ce44SJohn Forte 
94*fcf3ce44SJohn Forte #ifdef WIN32
95*fcf3ce44SJohn Forte typedef unsigned char   IMA_UINT8;  // Unsigned  8 bits
96*fcf3ce44SJohn Forte typedef char            IMA_INT8;   // Signed    8 bits
97*fcf3ce44SJohn Forte typedef unsigned short  IMA_UINT16; // Unsigned 16 bits
98*fcf3ce44SJohn Forte typedef short           IMA_INT16;  // Signed   16 bits
99*fcf3ce44SJohn Forte typedef unsigned int    IMA_UINT32; // Unsigned 32 bits
100*fcf3ce44SJohn Forte typedef int             IMA_INT32;  // Signed   32 bits
101*fcf3ce44SJohn Forte typedef void*           IMA_PVOID;  // Pointer  to void
102*fcf3ce44SJohn Forte typedef IMA_UINT32      IMA_VOID32; // Opaque   32 bits
103*fcf3ce44SJohn Forte 
104*fcf3ce44SJohn Forte 
105*fcf3ce44SJohn Forte /* Don't confuse, _WIN32 with WIN32... OK, how do you accompish that */
106*fcf3ce44SJohn Forte #ifdef _WIN32
107*fcf3ce44SJohn Forte typedef __int64             IMA_INT64;
108*fcf3ce44SJohn Forte typedef unsigned __int64    IMA_UINT64;
109*fcf3ce44SJohn Forte #else
110*fcf3ce44SJohn Forte typedef struct {
111*fcf3ce44SJohn Forte     TN_UINT32   lo_val;
112*fcf3ce44SJohn Forte     TN_UINT32   hi_val;
113*fcf3ce44SJohn Forte } IMA_INT64;
114*fcf3ce44SJohn Forte 
115*fcf3ce44SJohn Forte typedef struct {
116*fcf3ce44SJohn Forte     TN_UINT32   lo_val;
117*fcf3ce44SJohn Forte     TN_UINT32   hi_val;
118*fcf3ce44SJohn Forte } IMA_UINT64;
119*fcf3ce44SJohn Forte #endif  /*  #ifdef _WIN32   */
120*fcf3ce44SJohn Forte 
121*fcf3ce44SJohn Forte 
122*fcf3ce44SJohn Forte #else
123*fcf3ce44SJohn Forte 
124*fcf3ce44SJohn Forte /* Note this section needs to be cleaned up for various Unix platforms */
125*fcf3ce44SJohn Forte typedef unsigned char   IMA_UINT8;  /* Unsigned  8 bits */
126*fcf3ce44SJohn Forte typedef char            IMA_INT8;   /* Signed    8 bits */
127*fcf3ce44SJohn Forte typedef unsigned short  IMA_UINT16; /* Unsigned 16 bits */
128*fcf3ce44SJohn Forte typedef short           IMA_INT16;  /* Signed   16 bits */
129*fcf3ce44SJohn Forte typedef unsigned int    IMA_UINT32; /* Unsigned 32 bits */
130*fcf3ce44SJohn Forte typedef int             IMA_INT32;  /* Signed   32 bits */
131*fcf3ce44SJohn Forte typedef void*           IMA_PVOID;  /* Pointer  to void */
132*fcf3ce44SJohn Forte typedef IMA_UINT32      IMA_VOID32; /* Opaque   32 bits */
133*fcf3ce44SJohn Forte typedef long long       IMA_INT64;
134*fcf3ce44SJohn Forte typedef long long       IMA_UINT64;
135*fcf3ce44SJohn Forte 
136*fcf3ce44SJohn Forte #endif  /*  #ifdef WIN32 */
137*fcf3ce44SJohn Forte 
138*fcf3ce44SJohn Forte 
139*fcf3ce44SJohn Forte 
140*fcf3ce44SJohn Forte /**
141*fcf3ce44SJohn Forte *******************************************************************************
142*fcf3ce44SJohn Forte *
143*fcf3ce44SJohn Forte * Generic IMA Constant Definitions
144*fcf3ce44SJohn Forte *
145*fcf3ce44SJohn Forte *******************************************************************************
146*fcf3ce44SJohn Forte */
147*fcf3ce44SJohn Forte #define RL_LIBRARY_SEQNUM           0
148*fcf3ce44SJohn Forte #define RL_SHARED_NODE_SEQNUM       0
149*fcf3ce44SJohn Forte 
150*fcf3ce44SJohn Forte /**
151*fcf3ce44SJohn Forte * Value which can be assigned to an IMA_BOOL and or an IMA_XBOOL.
152*fcf3ce44SJohn Forte */
153*fcf3ce44SJohn Forte #define IMA_TRUE        1
154*fcf3ce44SJohn Forte 
155*fcf3ce44SJohn Forte /**
156*fcf3ce44SJohn Forte * Value which can be assigned to an IMA_BOOL and or an IMA_XBOOL.
157*fcf3ce44SJohn Forte */
158*fcf3ce44SJohn Forte #define IMA_FALSE       0
159*fcf3ce44SJohn Forte 
160*fcf3ce44SJohn Forte /**
161*fcf3ce44SJohn Forte * Value which can be assigned to an IMA_XBOOL.
162*fcf3ce44SJohn Forte */
163*fcf3ce44SJohn Forte #define IMA_UNKNOWN     0xFFFFFFFF
164*fcf3ce44SJohn Forte 
165*fcf3ce44SJohn Forte 
166*fcf3ce44SJohn Forte 
167*fcf3ce44SJohn Forte /**
168*fcf3ce44SJohn Forte *******************************************************************************
169*fcf3ce44SJohn Forte *
170*fcf3ce44SJohn Forte * Base IMA Type Definitions
171*fcf3ce44SJohn Forte *
172*fcf3ce44SJohn Forte * @note Types that have a specific size must be defined ImaOsTypes.h which is
173*fcf3ce44SJohn Forte *       an OS specific include file which is included by this file.
174*fcf3ce44SJohn Forte *
175*fcf3ce44SJohn Forte *******************************************************************************
176*fcf3ce44SJohn Forte */
177*fcf3ce44SJohn Forte 
178*fcf3ce44SJohn Forte /**
179*fcf3ce44SJohn Forte * A character.
180*fcf3ce44SJohn Forte */
181*fcf3ce44SJohn Forte typedef char IMA_CHAR;
182*fcf3ce44SJohn Forte 
183*fcf3ce44SJohn Forte /**
184*fcf3ce44SJohn Forte * A wide character.
185*fcf3ce44SJohn Forte */
186*fcf3ce44SJohn Forte typedef wchar_t IMA_WCHAR;
187*fcf3ce44SJohn Forte 
188*fcf3ce44SJohn Forte /**
189*fcf3ce44SJohn Forte * An integer.  Spec states this is 32 bits on 32-bit systems, and 64-bit
190*fcf3ce44SJohn Forte * on 64-bit systems.
191*fcf3ce44SJohn Forte */
192*fcf3ce44SJohn Forte typedef unsigned long IMA_UINT;
193*fcf3ce44SJohn Forte 
194*fcf3ce44SJohn Forte /**
195*fcf3ce44SJohn Forte * A boolean.
196*fcf3ce44SJohn Forte */
197*fcf3ce44SJohn Forte typedef IMA_UINT32 IMA_BOOL;
198*fcf3ce44SJohn Forte 
199*fcf3ce44SJohn Forte /**
200*fcf3ce44SJohn Forte * An extended boolean: can have the values @ref IMA_TRUE, @ref IMA_FALSE, and
201*fcf3ce44SJohn Forte * @ref IMA_UNKNOWN.
202*fcf3ce44SJohn Forte */
203*fcf3ce44SJohn Forte typedef IMA_UINT32 IMA_XBOOL;
204*fcf3ce44SJohn Forte 
205*fcf3ce44SJohn Forte /**
206*fcf3ce44SJohn Forte * A date and time.
207*fcf3ce44SJohn Forte */
208*fcf3ce44SJohn Forte typedef struct tm IMA_DATETIME;
209*fcf3ce44SJohn Forte 
210*fcf3ce44SJohn Forte typedef unsigned char IMA_BYTE;
211*fcf3ce44SJohn Forte 
212*fcf3ce44SJohn Forte /**
213*fcf3ce44SJohn Forte *******************************************************************************
214*fcf3ce44SJohn Forte *
215*fcf3ce44SJohn Forte * Constants and macros declarations related to IMA_STATUS
216*fcf3ce44SJohn Forte *
217*fcf3ce44SJohn Forte *******************************************************************************
218*fcf3ce44SJohn Forte */
219*fcf3ce44SJohn Forte #ifdef SOLARIS
220*fcf3ce44SJohn Forte typedef IMA_UINT IMA_STATUS;
221*fcf3ce44SJohn Forte 
222*fcf3ce44SJohn Forte #define	IMA_STATUS_SUCCESS		0x00000000
223*fcf3ce44SJohn Forte #define	IMA_STATUS_ERROR		0x80000000
224*fcf3ce44SJohn Forte 
225*fcf3ce44SJohn Forte #define	IMA_SUCCESS(status) (((IMA_STATUS)(status) & \
226*fcf3ce44SJohn Forte 	    (IMA_STATUS)IMA_STATUS_ERROR) == 0 ? IMA_TRUE : IMA_FALSE)
227*fcf3ce44SJohn Forte #define	IMA_ERROR(status)   (((IMA_STATUS)(status) & \
228*fcf3ce44SJohn Forte 	    (IMA_STATUS)IMA_STATUS_ERROR) == 0x8000000 ? IMA_TRUE : IMA_FALSE)
229*fcf3ce44SJohn Forte 
230*fcf3ce44SJohn Forte #define	MAKE_IMA_STATUS(x)	((IMA_STATUS)(x))
231*fcf3ce44SJohn Forte #define	MAKE_IMA_ERROR(x)	((IMA_STATUS)(IMA_STATUS_ERROR | (x)))
232*fcf3ce44SJohn Forte #define	GET_SYSTEM_ERROR(x)	(((IMA_STATUS)(x) & 0x0000FFFF))
233*fcf3ce44SJohn Forte 
234*fcf3ce44SJohn Forte #define	IMA_STATUS_REBOOT_NECESSARY		MAKE_IMA_STATUS(0x01)
235*fcf3ce44SJohn Forte #define	IMA_STATUS_INCONSISTENT_NODE_PROPERTIES	MAKE_IMA_STATUS(0x02)
236*fcf3ce44SJohn Forte #define	IMA_STATUS_SCSI_STATUS_CONDITION_MET	MAKE_IMA_STATUS(0x100)
237*fcf3ce44SJohn Forte 
238*fcf3ce44SJohn Forte #define	IMA_ERROR_NOT_SUPPORTED			MAKE_IMA_ERROR(0x01)
239*fcf3ce44SJohn Forte #define	IMA_ERROR_INSUFFICIENT_MEMORY		MAKE_IMA_ERROR(0x02)
240*fcf3ce44SJohn Forte #define	IMA_ERROR_LAST_PRIMARY_DISCOVERY_METHOD	MAKE_IMA_ERROR(0x03)
241*fcf3ce44SJohn Forte #define	IMA_ERROR_UNEXPECTED_OS_ERROR		MAKE_IMA_ERROR(0x04)
242*fcf3ce44SJohn Forte #define	IMA_ERROR_SYNC_TIMEOUT			MAKE_IMA_ERROR(0x05)
243*fcf3ce44SJohn Forte #define	IMA_ERROR_LU_EXPOSED			MAKE_IMA_ERROR(0x06)
244*fcf3ce44SJohn Forte #define	IMA_ERROR_LU_NOT_EXPOSED		MAKE_IMA_ERROR(0x07)
245*fcf3ce44SJohn Forte #define	IMA_ERROR_LU_IN_USE			MAKE_IMA_ERROR(0x08)
246*fcf3ce44SJohn Forte #define	IMA_ERROR_TARGET_TIMEOUT		MAKE_IMA_ERROR(0x09)
247*fcf3ce44SJohn Forte #define	IMA_ERROR_LOGIN_REJECTED		MAKE_IMA_ERROR(0x0A)
248*fcf3ce44SJohn Forte #define	IMA_ERROR_STATS_COLLECTION_NOT_ENABLED	MAKE_IMA_ERROR(0x0B)
249*fcf3ce44SJohn Forte #define	IMA_ERROR_SCSI_STATUS_CHECK_CONDITION	MAKE_IMA_ERROR(0x100)
250*fcf3ce44SJohn Forte #define	IMA_ERROR_SCSI_STATUS_BUSY		MAKE_IMA_ERROR(0x101)
251*fcf3ce44SJohn Forte #define	IMA_ERROR_SCSI_STATUS_RESERVATION_CONFLICT  	MAKE_IMA_ERROR(0x102)
252*fcf3ce44SJohn Forte #define	IMA_ERROR_SCSI_STATUS_TASK_SET_FULL	MAKE_IMA_ERROR(0x103)
253*fcf3ce44SJohn Forte #define	IMA_ERROR_SCSI_STATUS_ACA_ACTIVE	MAKE_IMA_ERROR(0x104)
254*fcf3ce44SJohn Forte #define	IMA_ERROR_SCSI_STATUS_TASK_ABORTED	MAKE_IMA_ERROR(0x105)
255*fcf3ce44SJohn Forte #define	IMA_ERROR_INVALID_PARAMETER		MAKE_IMA_ERROR(0x40000000)
256*fcf3ce44SJohn Forte #define	IMA_ERROR_INVALID_OBJECT_TYPE		MAKE_IMA_ERROR(0x40000001)
257*fcf3ce44SJohn Forte #define	IMA_ERROR_INCORRECT_OBJECT_TYPE		MAKE_IMA_ERROR(0x40000002)
258*fcf3ce44SJohn Forte #define	IMA_ERROR_OBJECT_NOT_FOUND		MAKE_IMA_ERROR(0x40000003)
259*fcf3ce44SJohn Forte #define	IMA_ERROR_NAME_TOO_LONG			MAKE_IMA_ERROR(0x40000004)
260*fcf3ce44SJohn Forte #define	IMA_ERROR_UNKNOWN_ERROR			MAKE_IMA_ERROR(0x0fffffff)
261*fcf3ce44SJohn Forte 
262*fcf3ce44SJohn Forte #else
263*fcf3ce44SJohn Forte 
264*fcf3ce44SJohn Forte typedef enum {
265*fcf3ce44SJohn Forte     IMA_STATUS_SUCCESS                      = 0x00000000,
266*fcf3ce44SJohn Forte     IMA_STATUS_REBOOT_NECESSARY             = 0x00000001,
267*fcf3ce44SJohn Forte     IMA_STATUS_INCONSISTENT_NODE_PROPERTIES = 0x00000002,
268*fcf3ce44SJohn Forte     IMA_STATUS_SCSI_STATUS_CONDITION_MET    = 0x00000100,
269*fcf3ce44SJohn Forte 
270*fcf3ce44SJohn Forte     IMA_STATUS_ERROR                        = 0x80000000,
271*fcf3ce44SJohn Forte     IMA_ERROR_NOT_SUPPORTED                 = 0x80000001,
272*fcf3ce44SJohn Forte     IMA_ERROR_INSUFFICIENT_MEMORY           = 0x80000002,
273*fcf3ce44SJohn Forte     IMA_ERROR_LAST_PRIMARY_DISCOVERY_METHOD = 0x80000003,
274*fcf3ce44SJohn Forte     IMA_ERROR_UNEXPECTED_OS_ERROR           = 0x80000004,
275*fcf3ce44SJohn Forte     IMA_ERROR_SYNC_TIMEOUT                  = 0x80000005,
276*fcf3ce44SJohn Forte     IMA_ERROR_LU_EXPOSED                    = 0x80000006,
277*fcf3ce44SJohn Forte     IMA_ERROR_LU_NOT_EXPOSED                = 0x80000007,
278*fcf3ce44SJohn Forte     IMA_ERROR_LU_IN_USE                     = 0x80000008,
279*fcf3ce44SJohn Forte     IMA_ERROR_TARGET_TIMEOUT                = 0x80000009,
280*fcf3ce44SJohn Forte     IMA_ERROR_LOGIN_REJECTED                = 0x8000000A,
281*fcf3ce44SJohn Forte     IMA_ERROR_STATS_COLLECTION_NOT_ENABLED  = 0x8000000B,
282*fcf3ce44SJohn Forte     IMA_ERROR_SCSI_STATUS_CHECK_CONDITION      = 0x80000100,
283*fcf3ce44SJohn Forte     IMA_ERROR_SCSI_STATUS_BUSY                 = 0x80000101,
284*fcf3ce44SJohn Forte     IMA_ERROR_SCSI_STATUS_RESERVATION_CONFLICT = 0x80000102,
285*fcf3ce44SJohn Forte     IMA_ERROR_SCSI_STATUS_TASK_SET_FULL        = 0x80000103,
286*fcf3ce44SJohn Forte     IMA_ERROR_SCSI_STATUS_ACA_ACTIVE           = 0x80000104,
287*fcf3ce44SJohn Forte     IMA_ERROR_SCSI_STATUS_TASK_ABORTED         = 0x80000105,
288*fcf3ce44SJohn Forte     IMA_ERROR_INVALID_PARAMETER             = 0xC0000000,
289*fcf3ce44SJohn Forte     IMA_ERROR_INVALID_OBJECT_TYPE           = 0xC0000001,
290*fcf3ce44SJohn Forte     IMA_ERROR_INCORRECT_OBJECT_TYPE         = 0xC0000002,
291*fcf3ce44SJohn Forte     IMA_ERROR_OBJECT_NOT_FOUND              = 0xC0000003,
292*fcf3ce44SJohn Forte     IMA_ERROR_NAME_TOO_LONG                 = 0xC0000004,
293*fcf3ce44SJohn Forte     IMA_ERROR_UNKNOWN_ERROR                 = 0x8FFFFFFF
294*fcf3ce44SJohn Forte } IMA_STATUS;
295*fcf3ce44SJohn Forte 
296*fcf3ce44SJohn Forte /*
297*fcf3ce44SJohn Forte #define IMA_SUCCESS(status)     ( (IMA_UINT32)(status) & \
298*fcf3ce44SJohn Forte                                   (IMA_UINT32)IMA_STATUS_ERROR == 0 ? \
299*fcf3ce44SJohn Forte                                   IMA_TRUE : IMA_FALSE )
300*fcf3ce44SJohn Forte #define IMA_ERROR(status)       ( (IMA_UINT32)(status) & \
301*fcf3ce44SJohn Forte                                   (IMA_UINT32)IMA_STATUS_ERROR == 0x8000000 ? \
302*fcf3ce44SJohn Forte                                   IMA_TRUE : IMA_FALSE )
303*fcf3ce44SJohn Forte */
304*fcf3ce44SJohn Forte 
305*fcf3ce44SJohn Forte #define IMA_SUCCESS(status)							!((status) & IMA_STATUS_ERROR)
306*fcf3ce44SJohn Forte #define IMA_ERROR(status)							((status) & IMA_STATUS_ERROR)
307*fcf3ce44SJohn Forte 
308*fcf3ce44SJohn Forte #endif
309*fcf3ce44SJohn Forte 
310*fcf3ce44SJohn Forte /**
311*fcf3ce44SJohn Forte *******************************************************************************
312*fcf3ce44SJohn Forte *
313*fcf3ce44SJohn Forte * Declaration of the IMA_OBJECT_TYPE enumeration
314*fcf3ce44SJohn Forte *
315*fcf3ce44SJohn Forte *******************************************************************************
316*fcf3ce44SJohn Forte */
317*fcf3ce44SJohn Forte typedef enum
318*fcf3ce44SJohn Forte {
319*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_UNKNOWN =   0,
320*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_PLUGIN  =   1,
321*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_NODE    =   2,
322*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_LHBA    =   3,
323*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_PHBA    =   4,
324*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_NETWORK_PORTAL  =   5,
325*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_PORTAL_GROUP    =   6,
326*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_LNP =   7,
327*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_PNP =   8,
328*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_TARGET  =   9,
329*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_LU  =   10,
330*fcf3ce44SJohn Forte 	IMA_OBJECT_TYPE_DISCOVERY_ADDRESS = 11,
331*fcf3ce44SJohn Forte 	IMA_OBJECT_TYPE_STATIC_DISCOVERY_TARGET = 12,
332*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE_CONNECTION	=	13,
333*fcf3ce44SJohn Forte 	IMA_OBJECT_TYPE_SESSION	=	14
334*fcf3ce44SJohn Forte } IMA_OBJECT_TYPE;
335*fcf3ce44SJohn Forte 
336*fcf3ce44SJohn Forte typedef enum
337*fcf3ce44SJohn Forte {
338*fcf3ce44SJohn Forte     IMA_ISNS_DISCOVERY_METHOD_STATIC    =   0,
339*fcf3ce44SJohn Forte     IMA_ISNS_DISCOVERY_METHOD_DHCP  =   1,
340*fcf3ce44SJohn Forte     IMA_ISNS_DISCOVERY_METHOD_SLP   =   2
341*fcf3ce44SJohn Forte } IMA_ISNS_DISCOVERY_METHOD;
342*fcf3ce44SJohn Forte 
343*fcf3ce44SJohn Forte typedef enum
344*fcf3ce44SJohn Forte {
345*fcf3ce44SJohn Forte     IMA_DOWNLOAD_IMAGE_TYPE_FIRMWARE    =   0,
346*fcf3ce44SJohn Forte     IMA_DOWNLOAD_IMAGE_TYPE_OPTION_ROM  =   1,
347*fcf3ce44SJohn Forte     IMA_DOWNLOAD_IMAGE_TYPE_ALL =   2,
348*fcf3ce44SJohn Forte 	IMA_DOWNLOAD_IMAGE_TYPE_BOOTCODE = 3
349*fcf3ce44SJohn Forte } IMA_PHBA_DOWNLOAD_IMAGE_TYPE;
350*fcf3ce44SJohn Forte 
351*fcf3ce44SJohn Forte typedef enum
352*fcf3ce44SJohn Forte {
353*fcf3ce44SJohn Forte     IMA_PHBA_STATUS_WORKING =   0,
354*fcf3ce44SJohn Forte     IMA_PHBA_STATUS_FAILED  =   1
355*fcf3ce44SJohn Forte } IMA_PHBA_STATUS;
356*fcf3ce44SJohn Forte 
357*fcf3ce44SJohn Forte typedef enum
358*fcf3ce44SJohn Forte {
359*fcf3ce44SJohn Forte     IMA_NETWORK_PORT_STATUS_WORKING =   0,
360*fcf3ce44SJohn Forte     IMA_NETWORK_PORT_STATUS_DEGRADED    =   1,
361*fcf3ce44SJohn Forte     IMA_NETWORK_PORT_STATUS_CRITICAL    =   2,
362*fcf3ce44SJohn Forte     IMA_NETWORK_PORT_STATUS_FAILED  =   3,
363*fcf3ce44SJohn Forte     IMA_NETWORK_PORT_STATUS_DISCONNECTED    =   4
364*fcf3ce44SJohn Forte } IMA_NETWORK_PORT_STATUS;
365*fcf3ce44SJohn Forte 
366*fcf3ce44SJohn Forte typedef enum
367*fcf3ce44SJohn Forte {
368*fcf3ce44SJohn Forte     IMA_TARGET_DISCOVERY_METHOD_STATIC      =   1,
369*fcf3ce44SJohn Forte     IMA_TARGET_DISCOVERY_METHOD_SLP     =   2,
370*fcf3ce44SJohn Forte     IMA_TARGET_DISCOVERY_METHOD_ISNS        =   4,
371*fcf3ce44SJohn Forte     IMA_TARGET_DISCOVERY_METHOD_SENDTARGETS =   8
372*fcf3ce44SJohn Forte } IMA_TARGET_DISCOVERY_METHOD;
373*fcf3ce44SJohn Forte 
374*fcf3ce44SJohn Forte typedef enum
375*fcf3ce44SJohn Forte {
376*fcf3ce44SJohn Forte     IMA_AUTHMETHOD_NONE =   0,
377*fcf3ce44SJohn Forte     IMA_AUTHMETHOD_CHAP =   1,
378*fcf3ce44SJohn Forte     IMA_AUTHMETHOD_SRP  =   2,
379*fcf3ce44SJohn Forte     IMA_AUTHMETHOD_KRB5 =   3,
380*fcf3ce44SJohn Forte     IMA_AUTHMETHOD_SPKM1    =   4,
381*fcf3ce44SJohn Forte     IMA_AUTHMETHOD_SPKM2    =   5
382*fcf3ce44SJohn Forte } IMA_AUTHMETHOD;
383*fcf3ce44SJohn Forte 
384*fcf3ce44SJohn Forte typedef enum
385*fcf3ce44SJohn Forte {
386*fcf3ce44SJohn Forte 	IMA_COMMIT_TYPE_AUTO	= 0,
387*fcf3ce44SJohn Forte 	IMA_COMMIT_TYPE_ACTIVE,
388*fcf3ce44SJohn Forte 	IMA_COMMIT_TYPE_PERSISTENT,
389*fcf3ce44SJohn Forte 	IMA_COMMIT_TYPE_ACTIVE_AND_PERSISTENT,
390*fcf3ce44SJohn Forte 	IMA_COMMIT_TYPE_ALL_WITH_RESET
391*fcf3ce44SJohn Forte } IMA_COMMIT_LEVEL;
392*fcf3ce44SJohn Forte 
393*fcf3ce44SJohn Forte typedef enum
394*fcf3ce44SJohn Forte {
395*fcf3ce44SJohn Forte 	IMA_DIGEST_NONE		= 0,
396*fcf3ce44SJohn Forte 	IMA_DIGEST_CRC32C		= 1
397*fcf3ce44SJohn Forte } IMA_DIGEST_TYPE;
398*fcf3ce44SJohn Forte 
399*fcf3ce44SJohn Forte 
400*fcf3ce44SJohn Forte /**
401*fcf3ce44SJohn Forte *******************************************************************************
402*fcf3ce44SJohn Forte *
403*fcf3ce44SJohn Forte * Declaration of the IMA_OID structure
404*fcf3ce44SJohn Forte *
405*fcf3ce44SJohn Forte * This structure should be treated as opaque by clients of the API.
406*fcf3ce44SJohn Forte * Appropriate APIs should be used to extract information from the structure.
407*fcf3ce44SJohn Forte *
408*fcf3ce44SJohn Forte *******************************************************************************
409*fcf3ce44SJohn Forte */
410*fcf3ce44SJohn Forte typedef struct _IMA_OID
411*fcf3ce44SJohn Forte {
412*fcf3ce44SJohn Forte     /**
413*fcf3ce44SJohn Forte     * The type of the object.  When an object ID is supplied as a parameter
414*fcf3ce44SJohn Forte     * to an API the library uses this value to insure that the supplied
415*fcf3ce44SJohn Forte     * object's type is appropriate for the API.
416*fcf3ce44SJohn Forte     */
417*fcf3ce44SJohn Forte     IMA_OBJECT_TYPE objectType;
418*fcf3ce44SJohn Forte 
419*fcf3ce44SJohn Forte     /**
420*fcf3ce44SJohn Forte     * A value determined by the library which it uses to uniquely identify the
421*fcf3ce44SJohn Forte     * owner of an object.  The owner of an object is either the library itself
422*fcf3ce44SJohn Forte     * or a plugin.  When an object ID is supplied as a parameter to an API the
423*fcf3ce44SJohn Forte     * library uses this value to determine if it should handle the call itself
424*fcf3ce44SJohn Forte     * or direct the call to one or more plugins.
425*fcf3ce44SJohn Forte     */
426*fcf3ce44SJohn Forte     IMA_UINT32      ownerId;
427*fcf3ce44SJohn Forte 
428*fcf3ce44SJohn Forte     /**
429*fcf3ce44SJohn Forte     * A value determined by a plugin which a plugin uses, perhaps in
430*fcf3ce44SJohn Forte     * combination with the object type, to uniquely identify one of its
431*fcf3ce44SJohn Forte     * objects.
432*fcf3ce44SJohn Forte     */
433*fcf3ce44SJohn Forte     IMA_UINT64      objectSequenceNumber;
434*fcf3ce44SJohn Forte 
435*fcf3ce44SJohn Forte } IMA_OID;
436*fcf3ce44SJohn Forte 
437*fcf3ce44SJohn Forte 
438*fcf3ce44SJohn Forte 
439*fcf3ce44SJohn Forte /**
440*fcf3ce44SJohn Forte *******************************************************************************
441*fcf3ce44SJohn Forte *
442*fcf3ce44SJohn Forte * Declaration of the IMA_OID_LIST structure
443*fcf3ce44SJohn Forte *
444*fcf3ce44SJohn Forte * This structure is used by a number of APIs to return lists of objects.  Any
445*fcf3ce44SJohn Forte * instance of this structure returned by an API must be freed by a client
446*fcf3ce44SJohn Forte * using the IMA_FreeObjectIdList API.  Although oids is declared to be an
447*fcf3ce44SJohn Forte * array of one
448*fcf3ce44SJohn Forte * @ref IMA_OID structure it can in fact contain any number of
449*fcf3ce44SJohn Forte * @ref IMA_OID structures.
450*fcf3ce44SJohn Forte *
451*fcf3ce44SJohn Forte * @note The @a oids array is a variable length array, despite its declaration
452*fcf3ce44SJohn Forte *       below it can be of any length.
453*fcf3ce44SJohn Forte *
454*fcf3ce44SJohn Forte *******************************************************************************
455*fcf3ce44SJohn Forte */
456*fcf3ce44SJohn Forte typedef struct _IMA_OID_LIST
457*fcf3ce44SJohn Forte {
458*fcf3ce44SJohn Forte     /**
459*fcf3ce44SJohn Forte     * The number of object IDs in the @a oids array.
460*fcf3ce44SJohn Forte     */
461*fcf3ce44SJohn Forte     IMA_UINT        oidCount;
462*fcf3ce44SJohn Forte 
463*fcf3ce44SJohn Forte     /**
464*fcf3ce44SJohn Forte     * A variable length array of zero or more object IDs.  There are
465*fcf3ce44SJohn Forte     * 'oidCount' object IDs in this array.
466*fcf3ce44SJohn Forte     */
467*fcf3ce44SJohn Forte     IMA_OID         oids[1];
468*fcf3ce44SJohn Forte 
469*fcf3ce44SJohn Forte } IMA_OID_LIST;
470*fcf3ce44SJohn Forte 
471*fcf3ce44SJohn Forte #define IMA_HOST_NAME_LEN 256
472*fcf3ce44SJohn Forte typedef IMA_WCHAR IMA_HOST_NAME[IMA_HOST_NAME_LEN];
473*fcf3ce44SJohn Forte typedef IMA_BYTE IMA_MAC_ADDRESS[6];
474*fcf3ce44SJohn Forte 
475*fcf3ce44SJohn Forte /**
476*fcf3ce44SJohn Forte *******************************************************************************
477*fcf3ce44SJohn Forte *
478*fcf3ce44SJohn Forte * Declaration of the IMA_LIBRARY_PROPERTIES structure
479*fcf3ce44SJohn Forte *
480*fcf3ce44SJohn Forte *******************************************************************************
481*fcf3ce44SJohn Forte */
482*fcf3ce44SJohn Forte typedef struct _IMA_LIBRARY_PROPERTIES
483*fcf3ce44SJohn Forte {
484*fcf3ce44SJohn Forte     /**
485*fcf3ce44SJohn Forte     * The version of the iSCSI Management API implemented by the library.
486*fcf3ce44SJohn Forte     * The value returned by a library for the API as described in this
487*fcf3ce44SJohn Forte     * document is one.
488*fcf3ce44SJohn Forte     */
489*fcf3ce44SJohn Forte     IMA_UINT        supportedImaVersion;
490*fcf3ce44SJohn Forte 
491*fcf3ce44SJohn Forte     /**
492*fcf3ce44SJohn Forte     * A nul terminated ASCII string containing the name of the vendor that
493*fcf3ce44SJohn Forte     * created the binary version of the library.
494*fcf3ce44SJohn Forte     */
495*fcf3ce44SJohn Forte     IMA_WCHAR       vendor[256];
496*fcf3ce44SJohn Forte 
497*fcf3ce44SJohn Forte     /**
498*fcf3ce44SJohn Forte     * A nul terminated ASCII string containing the implementation version
499*fcf3ce44SJohn Forte     * of the library from the vendor specified in the 'vendor' field.
500*fcf3ce44SJohn Forte     */
501*fcf3ce44SJohn Forte     IMA_WCHAR       implementationVersion[256];
502*fcf3ce44SJohn Forte 
503*fcf3ce44SJohn Forte     /**
504*fcf3ce44SJohn Forte     * A nul terminated ASCII string ideally containing the path and file
505*fcf3ce44SJohn Forte     * name of the library that is being used by the currently executing
506*fcf3ce44SJohn Forte     * process can be found. If the path cannot be determined then it is
507*fcf3ce44SJohn Forte     * acceptable to fill this field with only the name (and extension if
508*fcf3ce44SJohn Forte     * applicable) of the file of the library.  If this cannot be determined
509*fcf3ce44SJohn Forte     * then this field should be an empty string.
510*fcf3ce44SJohn Forte     */
511*fcf3ce44SJohn Forte     IMA_WCHAR       fileName[256];
512*fcf3ce44SJohn Forte 
513*fcf3ce44SJohn Forte     /**
514*fcf3ce44SJohn Forte     * The time and date that the library that is executing was built.
515*fcf3ce44SJohn Forte     */
516*fcf3ce44SJohn Forte     IMA_DATETIME    buildTime;
517*fcf3ce44SJohn Forte 
518*fcf3ce44SJohn Forte     IMA_BYTE    reserved[64];
519*fcf3ce44SJohn Forte } IMA_LIBRARY_PROPERTIES;
520*fcf3ce44SJohn Forte 
521*fcf3ce44SJohn Forte 
522*fcf3ce44SJohn Forte 
523*fcf3ce44SJohn Forte /**
524*fcf3ce44SJohn Forte *******************************************************************************
525*fcf3ce44SJohn Forte *
526*fcf3ce44SJohn Forte * Declaration of the IMA_PLUGIN_PROPERTIES structure
527*fcf3ce44SJohn Forte *
528*fcf3ce44SJohn Forte *******************************************************************************
529*fcf3ce44SJohn Forte */
530*fcf3ce44SJohn Forte typedef struct _IMA_PLUGIN_PROPERTIES
531*fcf3ce44SJohn Forte {
532*fcf3ce44SJohn Forte         IMA_UINT        supportedImaVersion;
533*fcf3ce44SJohn Forte         IMA_WCHAR       vendor[256];
534*fcf3ce44SJohn Forte         IMA_WCHAR       implementationVersion[256];
535*fcf3ce44SJohn Forte         IMA_WCHAR       fileName[256];
536*fcf3ce44SJohn Forte         IMA_DATETIME    buildTime;
537*fcf3ce44SJohn Forte 
538*fcf3ce44SJohn Forte         IMA_BOOL        lhbasCanBeCreatedAndDestroyed;
539*fcf3ce44SJohn Forte 
540*fcf3ce44SJohn Forte         IMA_BYTE        reserved[64];
541*fcf3ce44SJohn Forte 
542*fcf3ce44SJohn Forte } IMA_PLUGIN_PROPERTIES;
543*fcf3ce44SJohn Forte 
544*fcf3ce44SJohn Forte 
545*fcf3ce44SJohn Forte typedef struct _IMA_IP_ADDRESS
546*fcf3ce44SJohn Forte {
547*fcf3ce44SJohn Forte         IMA_BOOL        ipv4Address;
548*fcf3ce44SJohn Forte         IMA_BYTE        ipAddress[16];
549*fcf3ce44SJohn Forte 
550*fcf3ce44SJohn Forte } IMA_IP_ADDRESS;
551*fcf3ce44SJohn Forte 
552*fcf3ce44SJohn Forte typedef struct _IMA_ADDRESS_KEY
553*fcf3ce44SJohn Forte {
554*fcf3ce44SJohn Forte         IMA_IP_ADDRESS  ipAddress;
555*fcf3ce44SJohn Forte         IMA_UINT16      portNumber;
556*fcf3ce44SJohn Forte 
557*fcf3ce44SJohn Forte } IMA_ADDRESS_KEY;
558*fcf3ce44SJohn Forte 
559*fcf3ce44SJohn Forte typedef struct _IMA_ADDRESS_KEYS
560*fcf3ce44SJohn Forte {
561*fcf3ce44SJohn Forte         IMA_UINT		addressKeyCount;
562*fcf3ce44SJohn Forte         IMA_ADDRESS_KEY addressKeys[1];
563*fcf3ce44SJohn Forte 
564*fcf3ce44SJohn Forte } IMA_ADDRESS_KEYS;
565*fcf3ce44SJohn Forte 
566*fcf3ce44SJohn Forte typedef struct _IMA_ADDRESS_KEY_PROPERTIES
567*fcf3ce44SJohn Forte {
568*fcf3ce44SJohn Forte         IMA_UINT        addressKeyCount;
569*fcf3ce44SJohn Forte         IMA_ADDRESS_KEY addressKeys[1];
570*fcf3ce44SJohn Forte 
571*fcf3ce44SJohn Forte } IMA_ADDRESS_KEY_PROPERTIES;
572*fcf3ce44SJohn Forte 
573*fcf3ce44SJohn Forte typedef struct _IMA_IP_PROPERTIES
574*fcf3ce44SJohn Forte {
575*fcf3ce44SJohn Forte         IMA_BOOL        ipConfigurationMethodSettable;
576*fcf3ce44SJohn Forte         IMA_BOOL        dhcpConfigurationEnabled;
577*fcf3ce44SJohn Forte 
578*fcf3ce44SJohn Forte         IMA_BOOL        subnetMaskSettable;
579*fcf3ce44SJohn Forte         IMA_BOOL        subnetMaskValid;
580*fcf3ce44SJohn Forte         IMA_IP_ADDRESS  subnetMask;
581*fcf3ce44SJohn Forte 
582*fcf3ce44SJohn Forte         IMA_BOOL        defaultGatewaySettable;
583*fcf3ce44SJohn Forte         IMA_BOOL        defaultGatewayValid;
584*fcf3ce44SJohn Forte         IMA_IP_ADDRESS  defaultGateway;
585*fcf3ce44SJohn Forte 
586*fcf3ce44SJohn Forte         IMA_BOOL        primaryDnsServerAddressSettable;
587*fcf3ce44SJohn Forte         IMA_BOOL        primaryDnsServerAddressValid;
588*fcf3ce44SJohn Forte         IMA_IP_ADDRESS  primaryDnsServerAddress;
589*fcf3ce44SJohn Forte 
590*fcf3ce44SJohn Forte         IMA_BOOL        alternateDnsServerAddressSettable;
591*fcf3ce44SJohn Forte         IMA_BOOL        alternateDnsServerAddressValid;
592*fcf3ce44SJohn Forte         IMA_IP_ADDRESS  alternateDnsServerAddress;
593*fcf3ce44SJohn Forte 
594*fcf3ce44SJohn Forte         IMA_BYTE        reserved[64];
595*fcf3ce44SJohn Forte 
596*fcf3ce44SJohn Forte } IMA_IP_PROPERTIES;
597*fcf3ce44SJohn Forte 
598*fcf3ce44SJohn Forte typedef struct _IMA_HOST_ID
599*fcf3ce44SJohn Forte {
600*fcf3ce44SJohn Forte 		IMA_BOOL hostnameInUse;
601*fcf3ce44SJohn Forte 		union {
602*fcf3ce44SJohn Forte 
603*fcf3ce44SJohn Forte 			IMA_HOST_NAME 	hostname;
604*fcf3ce44SJohn Forte 			IMA_IP_ADDRESS 	ipAddress;
605*fcf3ce44SJohn Forte 
606*fcf3ce44SJohn Forte 		} id;
607*fcf3ce44SJohn Forte 
608*fcf3ce44SJohn Forte } IMA_HOST_ID;
609*fcf3ce44SJohn Forte 
610*fcf3ce44SJohn Forte typedef struct _IMA_TARGET_ADDRESS
611*fcf3ce44SJohn Forte {
612*fcf3ce44SJohn Forte 		IMA_HOST_ID hostnameIpAddress;
613*fcf3ce44SJohn Forte 		IMA_UINT16 	portNumber;
614*fcf3ce44SJohn Forte 
615*fcf3ce44SJohn Forte } IMA_TARGET_ADDRESS;
616*fcf3ce44SJohn Forte 
617*fcf3ce44SJohn Forte /**
618*fcf3ce44SJohn Forte *******************************************************************************
619*fcf3ce44SJohn Forte *
620*fcf3ce44SJohn Forte * Declaration of the IMA_NODE_NAME type
621*fcf3ce44SJohn Forte *
622*fcf3ce44SJohn Forte *******************************************************************************
623*fcf3ce44SJohn Forte */
624*fcf3ce44SJohn Forte #define	IMA_NODE_NAME_LEN   224
625*fcf3ce44SJohn Forte typedef IMA_WCHAR IMA_NODE_NAME[IMA_NODE_NAME_LEN];
626*fcf3ce44SJohn Forte 
627*fcf3ce44SJohn Forte 
628*fcf3ce44SJohn Forte 
629*fcf3ce44SJohn Forte /**
630*fcf3ce44SJohn Forte *******************************************************************************
631*fcf3ce44SJohn Forte *
632*fcf3ce44SJohn Forte * Declaration of the IMA_NODE_ALIAS type
633*fcf3ce44SJohn Forte *
634*fcf3ce44SJohn Forte *******************************************************************************
635*fcf3ce44SJohn Forte */
636*fcf3ce44SJohn Forte #define	IMA_NODE_ALIAS_LEN	256
637*fcf3ce44SJohn Forte typedef IMA_WCHAR IMA_NODE_ALIAS[IMA_NODE_ALIAS_LEN];
638*fcf3ce44SJohn Forte 
639*fcf3ce44SJohn Forte 
640*fcf3ce44SJohn Forte 
641*fcf3ce44SJohn Forte /**
642*fcf3ce44SJohn Forte *******************************************************************************
643*fcf3ce44SJohn Forte *
644*fcf3ce44SJohn Forte * Declaration of the IMA_DOMAIN_NAME type
645*fcf3ce44SJohn Forte *
646*fcf3ce44SJohn Forte * A variable of this type may be formatted in any of the following four ways:
647*fcf3ce44SJohn Forte *       1.  An empty string, which indicates that no host or IP address is
648*fcf3ce44SJohn Forte *           specified
649*fcf3ce44SJohn Forte *       2.  A DNS host name
650*fcf3ce44SJohn Forte *       3.  A dotted-decimal IPv4 address
651*fcf3ce44SJohn Forte *       4.  A bracketed IPv6 address as specified in RFC 2732
652*fcf3ce44SJohn Forte *
653*fcf3ce44SJohn Forte * In all cases a domain name is terminated by a nul character.
654*fcf3ce44SJohn Forte * This type is used by several APIs: IMA_SetPhbaSnsDiscovery(),
655*fcf3ce44SJohn Forte * IMA_SetNetworkPortalIpAddress(), and indirectly by
656*fcf3ce44SJohn Forte * IMA_GetPhbaDiscoveryProperties().
657*fcf3ce44SJohn Forte *
658*fcf3ce44SJohn Forte *******************************************************************************
659*fcf3ce44SJohn Forte */
660*fcf3ce44SJohn Forte typedef wchar_t IMA_DOMAIN_NAME[256];
661*fcf3ce44SJohn Forte 
662*fcf3ce44SJohn Forte typedef struct _IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES
663*fcf3ce44SJohn Forte {
664*fcf3ce44SJohn Forte         IMA_PHBA_DOWNLOAD_IMAGE_TYPE    imageType;
665*fcf3ce44SJohn Forte         IMA_WCHAR               version[32];
666*fcf3ce44SJohn Forte         IMA_WCHAR               description[512];
667*fcf3ce44SJohn Forte         IMA_XBOOL               upgrade;
668*fcf3ce44SJohn Forte } IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES;
669*fcf3ce44SJohn Forte 
670*fcf3ce44SJohn Forte 
671*fcf3ce44SJohn Forte /**
672*fcf3ce44SJohn Forte *******************************************************************************
673*fcf3ce44SJohn Forte *
674*fcf3ce44SJohn Forte * Declaration of the IMA_NODE_PROPERTIES structure
675*fcf3ce44SJohn Forte *
676*fcf3ce44SJohn Forte * This structure is returned by the IMA_GetNodeProperties() API.
677*fcf3ce44SJohn Forte *
678*fcf3ce44SJohn Forte * NOTE: It is possible for both 'runningInInitiatorMode' and
679*fcf3ce44SJohn Forte *       'runningInTargetMode' to be set to @c IMA_TRUE.  This means that
680*fcf3ce44SJohn Forte *       the node is operating both as an initiator and as a target.
681*fcf3ce44SJohn Forte *
682*fcf3ce44SJohn Forte *******************************************************************************
683*fcf3ce44SJohn Forte */
684*fcf3ce44SJohn Forte typedef struct _IMA_NODE_PROPERTIES
685*fcf3ce44SJohn Forte {
686*fcf3ce44SJohn Forte     /**
687*fcf3ce44SJohn Forte     * A boolean indicating if the node is running as initiator or not.
688*fcf3ce44SJohn Forte     */
689*fcf3ce44SJohn Forte     IMA_BOOL        runningInInitiatorMode;
690*fcf3ce44SJohn Forte 
691*fcf3ce44SJohn Forte     /**
692*fcf3ce44SJohn Forte     * A boolean indicating if the node is running as a target or not.
693*fcf3ce44SJohn Forte     */
694*fcf3ce44SJohn Forte     IMA_BOOL        runningInTargetMode;
695*fcf3ce44SJohn Forte 
696*fcf3ce44SJohn Forte     /**
697*fcf3ce44SJohn Forte     * A boolean which indicates if the node's name is set or not.
698*fcf3ce44SJohn Forte     */
699*fcf3ce44SJohn Forte     IMA_BOOL        nameValid;
700*fcf3ce44SJohn Forte 
701*fcf3ce44SJohn Forte     /**
702*fcf3ce44SJohn Forte     * A nul terminated Unicode string which contains the name of the node.
703*fcf3ce44SJohn Forte     * The value in this field is only valid if 'nameValid' is set to
704*fcf3ce44SJohn Forte     * IMA_TRUE, in which case it will be Unicode NULL terminated.  If
705*fcf3ce44SJohn Forte     * 'nameValid' is set to IMA_FALSE then this field will contain an
706*fcf3ce44SJohn Forte     * empty string.
707*fcf3ce44SJohn Forte     */
708*fcf3ce44SJohn Forte     IMA_NODE_NAME   name;
709*fcf3ce44SJohn Forte 
710*fcf3ce44SJohn Forte     /**
711*fcf3ce44SJohn Forte     * A boolean which indicates if the node's alias is set or not.
712*fcf3ce44SJohn Forte     */
713*fcf3ce44SJohn Forte     IMA_BOOL        aliasValid;
714*fcf3ce44SJohn Forte 
715*fcf3ce44SJohn Forte     /**
716*fcf3ce44SJohn Forte     * A nul terminated Unicode string which contains the alias of the node.
717*fcf3ce44SJohn Forte     * This field is only valid if 'aliasValid' is set to IMA_TRUE, in which
718*fcf3ce44SJohn Forte     * case it will be Unicode NULL terminated.  If 'aliasValid' is set to
719*fcf3ce44SJohn Forte     * IMA_FALSE then this field will contain an empty string.
720*fcf3ce44SJohn Forte     */
721*fcf3ce44SJohn Forte     IMA_NODE_ALIAS  alias;
722*fcf3ce44SJohn Forte 
723*fcf3ce44SJohn Forte     /*
724*fcf3ce44SJohn Forte      * Boolean indicating if both the name and alias are settable using
725*fcf3ce44SJohn Forte      * IMA_SetNodeName() and IMA_SetNodeAlias().
726*fcf3ce44SJohn Forte      */
727*fcf3ce44SJohn Forte     IMA_BOOL    nameAndAliasSettable;
728*fcf3ce44SJohn Forte 
729*fcf3ce44SJohn Forte     IMA_BYTE    reserved[64];
730*fcf3ce44SJohn Forte 
731*fcf3ce44SJohn Forte } IMA_NODE_PROPERTIES;
732*fcf3ce44SJohn Forte 
733*fcf3ce44SJohn Forte 
734*fcf3ce44SJohn Forte 
735*fcf3ce44SJohn Forte /**
736*fcf3ce44SJohn Forte *******************************************************************************
737*fcf3ce44SJohn Forte *
738*fcf3ce44SJohn Forte * Declaration of the IMA_LHBA_PROPERTIES structure
739*fcf3ce44SJohn Forte *
740*fcf3ce44SJohn Forte * This structure is returned by the IMA_GetLhbaProperties()  API.
741*fcf3ce44SJohn Forte *
742*fcf3ce44SJohn Forte *******************************************************************************
743*fcf3ce44SJohn Forte */
744*fcf3ce44SJohn Forte typedef struct _IMA_LHBA_PROPERTIES
745*fcf3ce44SJohn Forte {
746*fcf3ce44SJohn Forte     IMA_WCHAR   osDeviceName[256];
747*fcf3ce44SJohn Forte     IMA_BOOL    luExposingSupported;
748*fcf3ce44SJohn Forte     IMA_BOOL    isDestroyable;
749*fcf3ce44SJohn Forte 
750*fcf3ce44SJohn Forte     IMA_BOOL    staleDataRemovable;
751*fcf3ce44SJohn Forte     IMA_UINT    staleDataSize;
752*fcf3ce44SJohn Forte 
753*fcf3ce44SJohn Forte     IMA_BOOL    initiatorAuthMethodsSettable;
754*fcf3ce44SJohn Forte     IMA_BOOL    targetAuthMethodsSettable;
755*fcf3ce44SJohn Forte 
756*fcf3ce44SJohn Forte     IMA_BYTE    reserved[128];
757*fcf3ce44SJohn Forte } IMA_LHBA_PROPERTIES;
758*fcf3ce44SJohn Forte 
759*fcf3ce44SJohn Forte 
760*fcf3ce44SJohn Forte 
761*fcf3ce44SJohn Forte /**
762*fcf3ce44SJohn Forte *******************************************************************************
763*fcf3ce44SJohn Forte *
764*fcf3ce44SJohn Forte * Declaration of the IMA_ULP_xxx constants
765*fcf3ce44SJohn Forte *
766*fcf3ce44SJohn Forte *******************************************************************************
767*fcf3ce44SJohn Forte */
768*fcf3ce44SJohn Forte #define IMA_ULP_TCP             0x01
769*fcf3ce44SJohn Forte #define IMA_ULP_SCTP            0x02
770*fcf3ce44SJohn Forte #define IMA_ULP_UDP             0x04
771*fcf3ce44SJohn Forte 
772*fcf3ce44SJohn Forte 
773*fcf3ce44SJohn Forte 
774*fcf3ce44SJohn Forte /**
775*fcf3ce44SJohn Forte *******************************************************************************
776*fcf3ce44SJohn Forte *
777*fcf3ce44SJohn Forte * Declaration of the IMA_MIN_MAX_VALUE structure
778*fcf3ce44SJohn Forte *
779*fcf3ce44SJohn Forte * Note: If the 'currentValueValid' field is IMA_FALSE then the value of
780*fcf3ce44SJohn Forte *       'settable' must also be set to IMA_FALSE.
781*fcf3ce44SJohn Forte *
782*fcf3ce44SJohn Forte * Note: The fields in this structure contain values which are defined by the
783*fcf3ce44SJohn Forte *       implementation and not by the iSCSI specification.  It is possible
784*fcf3ce44SJohn Forte *       that an implementation may be more or less restrictive in the values
785*fcf3ce44SJohn Forte *       that it can accept than the iSCSI specification allows.
786*fcf3ce44SJohn Forte *
787*fcf3ce44SJohn Forte * Note: An example of how to use 'incrementValue': Suppose that a structure is
788*fcf3ce44SJohn Forte *       obtained where 'currentValueValid' is IMA_TRUE, 'settable' is
789*fcf3ce44SJohn Forte *       IMA_TRUE, 'currentValue' is 50, 'defaultValue' is 50, 'minimumValue'
790*fcf3ce44SJohn Forte *       is 30, 'maximumValue' is 70 and 'incrementValue' is 10.  In this case,
791*fcf3ce44SJohn Forte *       the possible values that the property can be set to are 30, 40, 50,
792*fcf3ce44SJohn Forte *       60, and 70.  The new value must be the current value plus or minus
793*fcf3ce44SJohn Forte *       some multiple of 'incrementValue'.
794*fcf3ce44SJohn Forte *
795*fcf3ce44SJohn Forte *******************************************************************************
796*fcf3ce44SJohn Forte */
797*fcf3ce44SJohn Forte typedef struct _IMA_MIN_MAX_VALUE
798*fcf3ce44SJohn Forte {
799*fcf3ce44SJohn Forte     /**
800*fcf3ce44SJohn Forte     * A boolean indicating if the @a currentValue field contains a valid value.
801*fcf3ce44SJohn Forte     */
802*fcf3ce44SJohn Forte     IMA_BOOL        currentValueValid;
803*fcf3ce44SJohn Forte 
804*fcf3ce44SJohn Forte     /**
805*fcf3ce44SJohn Forte     * Indicates if the corresponding property is settable.  If this field
806*fcf3ce44SJohn Forte     * has the value IMA_TRUE then the 'defaultValue', 'minimumValue',
807*fcf3ce44SJohn Forte     * 'maximumValue', and 'incrementValue' fields shall contain valid
808*fcf3ce44SJohn Forte     * values.  If this field has the value IMA_FALSE then these fields
809*fcf3ce44SJohn Forte     * have undefined values.
810*fcf3ce44SJohn Forte     */
811*fcf3ce44SJohn Forte     IMA_BOOL        settable;
812*fcf3ce44SJohn Forte 
813*fcf3ce44SJohn Forte     /**
814*fcf3ce44SJohn Forte     * If currentValueValid has the value IMA_TRUE then this field contains
815*fcf3ce44SJohn Forte     * the current value of the associated property.  If 'currentValueValid' has
816*fcf3ce44SJohn Forte     * the value IMA_FALSE then the value of this field is undefined.
817*fcf3ce44SJohn Forte     */
818*fcf3ce44SJohn Forte     IMA_UINT32      currentValue;
819*fcf3ce44SJohn Forte 
820*fcf3ce44SJohn Forte     /**
821*fcf3ce44SJohn Forte     * If 'settable' has the value IMA_TRUE then this field contains the
822*fcf3ce44SJohn Forte     * implementation's default value of the associated property.  If 'settable'
823*fcf3ce44SJohn Forte     * has the value IMA_FALSE then the value of this field is undefined.
824*fcf3ce44SJohn Forte     */
825*fcf3ce44SJohn Forte     IMA_UINT32      defaultValue;
826*fcf3ce44SJohn Forte 
827*fcf3ce44SJohn Forte     /**
828*fcf3ce44SJohn Forte     * If 'settable' has the value IMA_TRUE then this field contains the
829*fcf3ce44SJohn Forte     * implementation's minimum value of the associated property.  If 'settable'
830*fcf3ce44SJohn Forte     * has the value IMA_FALSE then the value of this field is undefined.
831*fcf3ce44SJohn Forte     */
832*fcf3ce44SJohn Forte     IMA_UINT32      minimumValue;
833*fcf3ce44SJohn Forte 
834*fcf3ce44SJohn Forte     /**
835*fcf3ce44SJohn Forte     * If 'settable' has the value IMA_TRUE then this field contains the
836*fcf3ce44SJohn Forte     * implementation's maximum value of the associated property.  If 'settable'
837*fcf3ce44SJohn Forte     * has the value IMA_FALSE then the value of this field is undefined.
838*fcf3ce44SJohn Forte     */
839*fcf3ce44SJohn Forte     IMA_UINT32      maximumValue;
840*fcf3ce44SJohn Forte 
841*fcf3ce44SJohn Forte     /**
842*fcf3ce44SJohn Forte     * If 'settable' has the value IMA_TRUE then this field contains a value
843*fcf3ce44SJohn Forte     * which can be added to or subtracted from 'currentValue' to obtain other
844*fcf3ce44SJohn Forte     * possible values of the associated property. If 'settable' has the value
845*fcf3ce44SJohn Forte     * IMA_FALSE then the value of this field is undefined.
846*fcf3ce44SJohn Forte     */
847*fcf3ce44SJohn Forte     IMA_UINT32      incrementValue;
848*fcf3ce44SJohn Forte 
849*fcf3ce44SJohn Forte } IMA_MIN_MAX_VALUE;
850*fcf3ce44SJohn Forte 
851*fcf3ce44SJohn Forte typedef struct _IMA_BOOL_VALUE
852*fcf3ce44SJohn Forte {
853*fcf3ce44SJohn Forte     IMA_BOOL    currentValueValid;
854*fcf3ce44SJohn Forte     IMA_BOOL    settable;
855*fcf3ce44SJohn Forte     IMA_BOOL    currentValue;
856*fcf3ce44SJohn Forte     IMA_BOOL    defaultValue;
857*fcf3ce44SJohn Forte } IMA_BOOL_VALUE;
858*fcf3ce44SJohn Forte 
859*fcf3ce44SJohn Forte /**
860*fcf3ce44SJohn Forte *******************************************************************************
861*fcf3ce44SJohn Forte *
862*fcf3ce44SJohn Forte * Declaration of the IMA_PHBA_PROPERTIES structure
863*fcf3ce44SJohn Forte *
864*fcf3ce44SJohn Forte * This structure is returned by the IMA_GetPhbaProperties() API.
865*fcf3ce44SJohn Forte *
866*fcf3ce44SJohn Forte * Note: Both 'isInitiator' and 'isTarget' cannot be set to IMA_FALSE as this
867*fcf3ce44SJohn Forte *       would mean that the PHBA was not functioning as either an initiator or
868*fcf3ce44SJohn Forte *       target, which means that its not functioning at all.
869*fcf3ce44SJohn Forte *
870*fcf3ce44SJohn Forte *******************************************************************************
871*fcf3ce44SJohn Forte */
872*fcf3ce44SJohn Forte typedef struct _IMA_PHBA_PROPERTIES
873*fcf3ce44SJohn Forte {
874*fcf3ce44SJohn Forte     /**
875*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the name of the vendor
876*fcf3ce44SJohn Forte     * of a PHBA. If the first character in this field is nul then the
877*fcf3ce44SJohn Forte     * vendor is unknown.
878*fcf3ce44SJohn Forte     */
879*fcf3ce44SJohn Forte     IMA_WCHAR       vendor[64];
880*fcf3ce44SJohn Forte 
881*fcf3ce44SJohn Forte     /**
882*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the name of the model of
883*fcf3ce44SJohn Forte     * a PHBA. If the first character in this field is nul then the model is
884*fcf3ce44SJohn Forte     * unknown.
885*fcf3ce44SJohn Forte     */
886*fcf3ce44SJohn Forte     IMA_WCHAR       model[256];
887*fcf3ce44SJohn Forte 
888*fcf3ce44SJohn Forte     /**
889*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains a description of a PHBA.
890*fcf3ce44SJohn Forte     * This is a user friendly description of the PHBA.  If the first character
891*fcf3ce44SJohn Forte     * in this field is nul then there is no description.
892*fcf3ce44SJohn Forte     */
893*fcf3ce44SJohn Forte     IMA_WCHAR       description[256];
894*fcf3ce44SJohn Forte 
895*fcf3ce44SJohn Forte     /**
896*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the serial number of a
897*fcf3ce44SJohn Forte     * PHBA.  If the first character in this field is nul then the serial
898*fcf3ce44SJohn Forte     * number is unknown.
899*fcf3ce44SJohn Forte     */
900*fcf3ce44SJohn Forte     IMA_WCHAR       serialNumber[64];
901*fcf3ce44SJohn Forte 
902*fcf3ce44SJohn Forte     /**
903*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the hardware version of
904*fcf3ce44SJohn Forte     * a PHBA. If the first character in this field is nul then the hardware
905*fcf3ce44SJohn Forte     * version is unknown.
906*fcf3ce44SJohn Forte     */
907*fcf3ce44SJohn Forte     IMA_WCHAR       hardwareVersion[256];
908*fcf3ce44SJohn Forte 
909*fcf3ce44SJohn Forte     /**
910*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the ASIC version of a
911*fcf3ce44SJohn Forte     * PHBA.  If the first character in this field is nul then the ASIC
912*fcf3ce44SJohn Forte     * version is unknown or is not applicable.
913*fcf3ce44SJohn Forte     */
914*fcf3ce44SJohn Forte     IMA_WCHAR       asicVersion[256];
915*fcf3ce44SJohn Forte 
916*fcf3ce44SJohn Forte     /**
917*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the firmware version of
918*fcf3ce44SJohn Forte     * a PHBA.  If the first character in this field is nul then the firmware
919*fcf3ce44SJohn Forte     * version is unknown or is not applicable.
920*fcf3ce44SJohn Forte     */
921*fcf3ce44SJohn Forte     IMA_WCHAR       firmwareVersion[256];
922*fcf3ce44SJohn Forte 
923*fcf3ce44SJohn Forte     /**
924*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the option ROM version
925*fcf3ce44SJohn Forte     * of a PHBA. If the first character in this field is nul then the option
926*fcf3ce44SJohn Forte     * ROM version is unknown or is not applicable.
927*fcf3ce44SJohn Forte     */
928*fcf3ce44SJohn Forte     IMA_WCHAR       optionRomVersion[256];
929*fcf3ce44SJohn Forte 
930*fcf3ce44SJohn Forte     /**
931*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the name of the driver
932*fcf3ce44SJohn Forte     * controlling a PHBA.  If the first character in this field is nul then
933*fcf3ce44SJohn Forte     * the name of the driver is unknown.
934*fcf3ce44SJohn Forte     */
935*fcf3ce44SJohn Forte     IMA_WCHAR       driverName[256];
936*fcf3ce44SJohn Forte 
937*fcf3ce44SJohn Forte     /**
938*fcf3ce44SJohn Forte     * A nul terminated ASCII string which contains the version of the driver
939*fcf3ce44SJohn Forte     * specified in 'driverName'.  If the first character in this field is nul
940*fcf3ce44SJohn Forte     * then the version of the driver is unknown.
941*fcf3ce44SJohn Forte     *
942*fcf3ce44SJohn Forte     * This field can have a known value only if @a driverName has a known
943*fcf3ce44SJohn Forte     * value as well.
944*fcf3ce44SJohn Forte     */
945*fcf3ce44SJohn Forte     IMA_WCHAR       driverVersion[256];
946*fcf3ce44SJohn Forte 
947*fcf3ce44SJohn Forte     /**
948*fcf3ce44SJohn Forte     * A field containing flags which indicate what upper level protocols
949*fcf3ce44SJohn Forte     * are supported by a PHBA.  Examples of upper level protocols include:
950*fcf3ce44SJohn Forte     *
951*fcf3ce44SJohn Forte     *       - TCP, represented by IMA_ULP_TCP
952*fcf3ce44SJohn Forte     *       - SCTP, represented by IMA_ULP_SCTP
953*fcf3ce44SJohn Forte     *       - UDP, represented by IMA_ULP_UDP
954*fcf3ce44SJohn Forte     */
955*fcf3ce44SJohn Forte     IMA_UINT        supportedUlps;
956*fcf3ce44SJohn Forte 
957*fcf3ce44SJohn Forte     /**
958*fcf3ce44SJohn Forte     * A extended boolean which indicates if a PHBA supports executing SCSI
959*fcf3ce44SJohn Forte     * commands which cause bidirectional transfers.
960*fcf3ce44SJohn Forte     *
961*fcf3ce44SJohn Forte     * Note: The value of this field applies to the entire stack:
962*fcf3ce44SJohn Forte     * the hardware, ASIC, firmware, driver, etc.  All must support SCSI
963*fcf3ce44SJohn Forte     * commands which cause bidirectional transfers for this field to be
964*fcf3ce44SJohn Forte     * set to IMA_TRUE.
965*fcf3ce44SJohn Forte     */
966*fcf3ce44SJohn Forte     IMA_XBOOL       bidirectionalTransfersSupported;
967*fcf3ce44SJohn Forte 
968*fcf3ce44SJohn Forte     /**
969*fcf3ce44SJohn Forte     * The maximum length, in bytes, of a CDB that can be transferred by
970*fcf3ce44SJohn Forte     * this PHBA.  If this field has a value of zero that indicates that
971*fcf3ce44SJohn Forte     * this value is unknown.
972*fcf3ce44SJohn Forte     *
973*fcf3ce44SJohn Forte     * Note: The value of this field applies to the entire stack:
974*fcf3ce44SJohn Forte     * the hardware, ASIC, firmware, driver, etc.  All must support the
975*fcf3ce44SJohn Forte     * maximum CDB length returned in this field.
976*fcf3ce44SJohn Forte     */
977*fcf3ce44SJohn Forte     IMA_UINT        maximumCdbLength;
978*fcf3ce44SJohn Forte 
979*fcf3ce44SJohn Forte     /**
980*fcf3ce44SJohn Forte     * An extended boolean which indicates if a PHBA can also function as
981*fcf3ce44SJohn Forte     * a standard NIC concurrently with functioning as an iSCSI PHBA.
982*fcf3ce44SJohn Forte     */
983*fcf3ce44SJohn Forte     IMA_XBOOL       canBeNic;
984*fcf3ce44SJohn Forte 
985*fcf3ce44SJohn Forte     /**
986*fcf3ce44SJohn Forte     * A extended boolean which indicates if a PHBA is functioning as a
987*fcf3ce44SJohn Forte     * standard NIC concurrently with functioning as an iSCSI PHBA.
988*fcf3ce44SJohn Forte     */
989*fcf3ce44SJohn Forte     IMA_XBOOL       isNic;
990*fcf3ce44SJohn Forte 
991*fcf3ce44SJohn Forte     /**
992*fcf3ce44SJohn Forte     * An extended boolean indicating if the PHBA is functioning as an
993*fcf3ce44SJohn Forte     * initiator.
994*fcf3ce44SJohn Forte     */
995*fcf3ce44SJohn Forte     IMA_XBOOL       isInitiator;
996*fcf3ce44SJohn Forte 
997*fcf3ce44SJohn Forte     /**
998*fcf3ce44SJohn Forte     * An extended boolean indicating if the PHBA is functioning as a target.
999*fcf3ce44SJohn Forte     */
1000*fcf3ce44SJohn Forte     IMA_XBOOL       isTarget;
1001*fcf3ce44SJohn Forte 
1002*fcf3ce44SJohn Forte     /**
1003*fcf3ce44SJohn Forte     * An extended boolean indicating if the PHBA is using a TCP offload engine.
1004*fcf3ce44SJohn Forte     *
1005*fcf3ce44SJohn Forte     * Note: This value should only be set to @c IMA_TRUE if a TCP offload
1006*fcf3ce44SJohn Forte     * engine is present and is being used.  If it can be determined that a
1007*fcf3ce44SJohn Forte     * TCP offload engine is present, but it cannot be determined if that
1008*fcf3ce44SJohn Forte     * offload engine is being used then this value should be set to
1009*fcf3ce44SJohn Forte     * IMA_UNKNOWN.
1010*fcf3ce44SJohn Forte     */
1011*fcf3ce44SJohn Forte     IMA_XBOOL       usingTcpOffloadEngine;
1012*fcf3ce44SJohn Forte 
1013*fcf3ce44SJohn Forte     /**
1014*fcf3ce44SJohn Forte     * An extended boolean indicating if the PHBA is using a iSCSI offload
1015*fcf3ce44SJohn Forte     * engine.
1016*fcf3ce44SJohn Forte     *
1017*fcf3ce44SJohn Forte     * Note: This value should only be set to @c IMA_TRUE if a iSCSI offload
1018*fcf3ce44SJohn Forte     * engine is present and is being used.  If it can be determined that an
1019*fcf3ce44SJohn Forte     * iSCSI offload engine is present, but it cannot be determined if that
1020*fcf3ce44SJohn Forte     * offload engine is being used then this value should be set to
1021*fcf3ce44SJohn Forte     * IMA_UNKNOWN.
1022*fcf3ce44SJohn Forte     */
1023*fcf3ce44SJohn Forte     IMA_XBOOL       usingIscsiOffloadEngine;
1024*fcf3ce44SJohn Forte 
1025*fcf3ce44SJohn Forte     IMA_BYTE        reserved[128];
1026*fcf3ce44SJohn Forte 
1027*fcf3ce44SJohn Forte } IMA_PHBA_PROPERTIES;
1028*fcf3ce44SJohn Forte 
1029*fcf3ce44SJohn Forte /**
1030*fcf3ce44SJohn Forte *******************************************************************************
1031*fcf3ce44SJohn Forte *
1032*fcf3ce44SJohn Forte * Declaration of the IMA_DISCOVERY_PROPERTIES structure
1033*fcf3ce44SJohn Forte *
1034*fcf3ce44SJohn Forte *******************************************************************************
1035*fcf3ce44SJohn Forte */
1036*fcf3ce44SJohn Forte typedef struct _IMA_DISCOVERY_PROPERTIES
1037*fcf3ce44SJohn Forte {
1038*fcf3ce44SJohn Forte 		IMA_BOOL			iSnsDiscoverySettable;
1039*fcf3ce44SJohn Forte 		IMA_XBOOL			iSnsDiscoveryEnabled;
1040*fcf3ce44SJohn Forte 		IMA_ISNS_DISCOVERY_METHOD   	iSnsDiscoveryMethod;
1041*fcf3ce44SJohn Forte 		IMA_HOST_ID			iSnsHost;
1042*fcf3ce44SJohn Forte 
1043*fcf3ce44SJohn Forte 		IMA_BOOL    			slpDiscoverySettable;
1044*fcf3ce44SJohn Forte 		IMA_XBOOL   			slpDiscoveryEnabled;
1045*fcf3ce44SJohn Forte 
1046*fcf3ce44SJohn Forte 		IMA_BOOL    			staticDiscoverySettable;
1047*fcf3ce44SJohn Forte 		IMA_XBOOL   			staticDiscoveryEnabled;
1048*fcf3ce44SJohn Forte 
1049*fcf3ce44SJohn Forte 		IMA_BOOL    			sendTargetsDiscoverySettable;
1050*fcf3ce44SJohn Forte 		IMA_XBOOL   			sendTargetsDiscoveryEnabled;
1051*fcf3ce44SJohn Forte 
1052*fcf3ce44SJohn Forte 		IMA_BYTE    			reserved[128];
1053*fcf3ce44SJohn Forte } IMA_DISCOVERY_PROPERTIES;
1054*fcf3ce44SJohn Forte 
1055*fcf3ce44SJohn Forte 
1056*fcf3ce44SJohn Forte typedef struct _IMA_PHBA_DOWNLOAD_PROPERTIES
1057*fcf3ce44SJohn Forte {
1058*fcf3ce44SJohn Forte         IMA_BOOL        isPhbaDownloadFileSupported;
1059*fcf3ce44SJohn Forte         IMA_BOOL        optionRomDownloadSupported;
1060*fcf3ce44SJohn Forte         IMA_BOOL        firmwareDownloadSupported;
1061*fcf3ce44SJohn Forte 
1062*fcf3ce44SJohn Forte         IMA_BYTE        reserved[32];
1063*fcf3ce44SJohn Forte } IMA_PHBA_DOWNLOAD_PROPERTIES;
1064*fcf3ce44SJohn Forte 
1065*fcf3ce44SJohn Forte typedef struct _IMA_IPSEC_PROPERTIES
1066*fcf3ce44SJohn Forte {
1067*fcf3ce44SJohn Forte         IMA_BOOL        ipsecSupported;
1068*fcf3ce44SJohn Forte         IMA_BOOL        implementedInHardware;
1069*fcf3ce44SJohn Forte         IMA_BOOL        implementedInSoftware;
1070*fcf3ce44SJohn Forte 
1071*fcf3ce44SJohn Forte         IMA_BYTE        reserved[32];
1072*fcf3ce44SJohn Forte 
1073*fcf3ce44SJohn Forte } IMA_IPSEC_PROPERTIES;
1074*fcf3ce44SJohn Forte 
1075*fcf3ce44SJohn Forte typedef struct _IMA_LNP_PROPERTIES
1076*fcf3ce44SJohn Forte {
1077*fcf3ce44SJohn Forte         IMA_MAC_ADDRESS macAddress;
1078*fcf3ce44SJohn Forte         IMA_BOOL        macAddressSettable;
1079*fcf3ce44SJohn Forte         IMA_BYTE        reserved[32];
1080*fcf3ce44SJohn Forte 
1081*fcf3ce44SJohn Forte } IMA_LNP_PROPERTIES;
1082*fcf3ce44SJohn Forte 
1083*fcf3ce44SJohn Forte typedef struct _IMA_PNP_PROPERTIES
1084*fcf3ce44SJohn Forte {
1085*fcf3ce44SJohn Forte         IMA_OID         associatedPhbaOid;
1086*fcf3ce44SJohn Forte 
1087*fcf3ce44SJohn Forte         IMA_MAC_ADDRESS macAddress;
1088*fcf3ce44SJohn Forte         IMA_BOOL        macAddressSettable;
1089*fcf3ce44SJohn Forte 
1090*fcf3ce44SJohn Forte         IMA_UINT        maximumTransferRate;
1091*fcf3ce44SJohn Forte         IMA_UINT        currentTransferRate;
1092*fcf3ce44SJohn Forte 
1093*fcf3ce44SJohn Forte         IMA_UINT        maximumFrameSize;
1094*fcf3ce44SJohn Forte 
1095*fcf3ce44SJohn Forte         IMA_BYTE        reserved[64];
1096*fcf3ce44SJohn Forte } IMA_PNP_PROPERTIES;
1097*fcf3ce44SJohn Forte 
1098*fcf3ce44SJohn Forte typedef struct _IMA_PNP_STATISTICS
1099*fcf3ce44SJohn Forte {
1100*fcf3ce44SJohn Forte         IMA_UINT64      bytesSent;
1101*fcf3ce44SJohn Forte         IMA_UINT32      pdusSent;
1102*fcf3ce44SJohn Forte         IMA_UINT64      bytesReceived;
1103*fcf3ce44SJohn Forte         IMA_UINT32      pdusReceived;
1104*fcf3ce44SJohn Forte 
1105*fcf3ce44SJohn Forte } IMA_PNP_STATISTICS;
1106*fcf3ce44SJohn Forte 
1107*fcf3ce44SJohn Forte typedef struct _IMA_TARGET_PROPERTIES
1108*fcf3ce44SJohn Forte {
1109*fcf3ce44SJohn Forte         IMA_OID associatedNodeOid;
1110*fcf3ce44SJohn Forte         IMA_OID associatedLhbaOid;
1111*fcf3ce44SJohn Forte 
1112*fcf3ce44SJohn Forte         IMA_NODE_NAME   name;
1113*fcf3ce44SJohn Forte         IMA_NODE_ALIAS  alias;
1114*fcf3ce44SJohn Forte         IMA_UINT32      discoveryMethodFlags;
1115*fcf3ce44SJohn Forte 
1116*fcf3ce44SJohn Forte         IMA_BOOL        sendTargetsDiscoverySettable;
1117*fcf3ce44SJohn Forte         IMA_BOOL        sendTargetsDiscoveryEnabled;
1118*fcf3ce44SJohn Forte 
1119*fcf3ce44SJohn Forte         IMA_BYTE        reserved[128];
1120*fcf3ce44SJohn Forte 
1121*fcf3ce44SJohn Forte } IMA_TARGET_PROPERTIES;
1122*fcf3ce44SJohn Forte 
1123*fcf3ce44SJohn Forte typedef struct _IMA_CONNECTION_PROPERTIES
1124*fcf3ce44SJohn Forte {
1125*fcf3ce44SJohn Forte 	IMA_OID	associatedSessionOid;
1126*fcf3ce44SJohn Forte 	IMA_UINT16	connectionId;
1127*fcf3ce44SJohn Forte 	IMA_DIGEST_TYPE	dataDigest;
1128*fcf3ce44SJohn Forte 	IMA_DIGEST_TYPE	headerDigest;
1129*fcf3ce44SJohn Forte 	IMA_BOOL	ifMarker;
1130*fcf3ce44SJohn Forte 	IMA_UINT32	ifMarkInt;
1131*fcf3ce44SJohn Forte 	IMA_UINT32	maxRecvDataSegmentLength;
1132*fcf3ce44SJohn Forte 	IMA_UINT32	maxTransmitDataSegmentLength;
1133*fcf3ce44SJohn Forte 	IMA_BOOL	ofMarker;
1134*fcf3ce44SJohn Forte 	IMA_UINT32	ofMarkInt;
1135*fcf3ce44SJohn Forte } IMA_CONNECTION_PROPERTIES;
1136*fcf3ce44SJohn Forte 
1137*fcf3ce44SJohn Forte 
1138*fcf3ce44SJohn Forte typedef struct _IMA_SESSION_PROPERTIES
1139*fcf3ce44SJohn Forte {
1140*fcf3ce44SJohn Forte 	IMA_OID	associatedLhbaOid;
1141*fcf3ce44SJohn Forte 	IMA_AUTHMETHOD	authMethod;
1142*fcf3ce44SJohn Forte 	IMA_BOOL	dataPduInOrder;
1143*fcf3ce44SJohn Forte 	IMA_BOOL	dataSequenceInOrder;
1144*fcf3ce44SJohn Forte 	IMA_UINT16	defaultTime2Retain;
1145*fcf3ce44SJohn Forte 	IMA_UINT16	defaultTime2Wait;
1146*fcf3ce44SJohn Forte 	IMA_UINT16	errorRecoveryLevel;
1147*fcf3ce44SJohn Forte 	IMA_UINT32	firstBurstLength;
1148*fcf3ce44SJohn Forte 	IMA_BOOL	immediateData;
1149*fcf3ce44SJohn Forte 	IMA_BOOL	initialR2T;
1150*fcf3ce44SJohn Forte 	IMA_BYTE	isid[6];
1151*fcf3ce44SJohn Forte 	IMA_UINT32	maxBurstLength;
1152*fcf3ce44SJohn Forte 	IMA_UINT16	maxConnections;
1153*fcf3ce44SJohn Forte 	IMA_UINT16	maxOutstandingR2T;
1154*fcf3ce44SJohn Forte 	IMA_UINT16	targetPortalGroupTag;
1155*fcf3ce44SJohn Forte 	IMA_UINT16	tsih;
1156*fcf3ce44SJohn Forte } IMA_SESSION_PROPERTIES;
1157*fcf3ce44SJohn Forte 
1158*fcf3ce44SJohn Forte 
1159*fcf3ce44SJohn Forte typedef struct _IMA_TARGET_ERROR_STATISTICS
1160*fcf3ce44SJohn Forte {
1161*fcf3ce44SJohn Forte         IMA_BOOL        loginFailedCountValid;
1162*fcf3ce44SJohn Forte         IMA_UINT32      loginFailedCount;
1163*fcf3ce44SJohn Forte 
1164*fcf3ce44SJohn Forte         IMA_BOOL        sessionFailedCountValid;
1165*fcf3ce44SJohn Forte         IMA_UINT32      sessionFailedCount;
1166*fcf3ce44SJohn Forte 
1167*fcf3ce44SJohn Forte         IMA_BOOL        headerOrDigestSessionFailedCountValid;
1168*fcf3ce44SJohn Forte         IMA_UINT32      headerOrDigestSessionFailedCount;
1169*fcf3ce44SJohn Forte 
1170*fcf3ce44SJohn Forte         IMA_BOOL        timeLimitExceededSessionFailedCountValid;
1171*fcf3ce44SJohn Forte         IMA_UINT32      timeLimitExceededSessionFailedCount;
1172*fcf3ce44SJohn Forte 
1173*fcf3ce44SJohn Forte         IMA_BOOL        formatErrorSessionFailedCountValid;
1174*fcf3ce44SJohn Forte         IMA_UINT32      formatErrorSessionFailedCount;
1175*fcf3ce44SJohn Forte 
1176*fcf3ce44SJohn Forte         IMA_BOOL        closedConnectionDueToTimeoutCountValid;
1177*fcf3ce44SJohn Forte         IMA_UINT32      closedConnectionDueToTimeoutCount;
1178*fcf3ce44SJohn Forte 
1179*fcf3ce44SJohn Forte         IMA_BOOL        lastLoginFailureTimeValid;
1180*fcf3ce44SJohn Forte         IMA_DATETIME    lastLoginFailureTime;
1181*fcf3ce44SJohn Forte 
1182*fcf3ce44SJohn Forte         IMA_BYTE        reserved[64];
1183*fcf3ce44SJohn Forte 
1184*fcf3ce44SJohn Forte } IMA_TARGET_ERROR_STATISTICS;
1185*fcf3ce44SJohn Forte 
1186*fcf3ce44SJohn Forte typedef struct _IMA_LU_PROPERTIES
1187*fcf3ce44SJohn Forte {
1188*fcf3ce44SJohn Forte         IMA_OID         associatedTargetOid;
1189*fcf3ce44SJohn Forte         IMA_UINT64      targetLun;
1190*fcf3ce44SJohn Forte 
1191*fcf3ce44SJohn Forte         IMA_BOOL        exposedToOs;
1192*fcf3ce44SJohn Forte         IMA_DATETIME    timeExposedToOs;
1193*fcf3ce44SJohn Forte 
1194*fcf3ce44SJohn Forte         IMA_BOOL        osDeviceNameValid;
1195*fcf3ce44SJohn Forte         IMA_WCHAR       osDeviceName[64];
1196*fcf3ce44SJohn Forte 
1197*fcf3ce44SJohn Forte         IMA_BOOL        osParallelIdsValid;
1198*fcf3ce44SJohn Forte         IMA_UINT32      osBusNumber;
1199*fcf3ce44SJohn Forte         IMA_UINT32      osTargetId;
1200*fcf3ce44SJohn Forte         IMA_UINT32      osLun;
1201*fcf3ce44SJohn Forte 
1202*fcf3ce44SJohn Forte         IMA_BYTE        reserved[128];
1203*fcf3ce44SJohn Forte 
1204*fcf3ce44SJohn Forte } IMA_LU_PROPERTIES;
1205*fcf3ce44SJohn Forte 
1206*fcf3ce44SJohn Forte typedef struct _IMA_STATISTICS_PROPERTIES
1207*fcf3ce44SJohn Forte {
1208*fcf3ce44SJohn Forte         IMA_BOOL        statisticsCollectionSettable;
1209*fcf3ce44SJohn Forte         IMA_BOOL        statisticsCollectionEnabled;
1210*fcf3ce44SJohn Forte 
1211*fcf3ce44SJohn Forte } IMA_STATISTICS_PROPERTIES;
1212*fcf3ce44SJohn Forte 
1213*fcf3ce44SJohn Forte typedef struct _IMA_DEVICE_STATISTICS
1214*fcf3ce44SJohn Forte {
1215*fcf3ce44SJohn Forte         IMA_UINT64      scsiPayloadBytesSent;
1216*fcf3ce44SJohn Forte         IMA_UINT64      scsiPayloadBytesReceived;
1217*fcf3ce44SJohn Forte 
1218*fcf3ce44SJohn Forte         IMA_UINT64      iScsiPduBytesSent;
1219*fcf3ce44SJohn Forte         IMA_UINT64      iScsiPduBytesReceived;
1220*fcf3ce44SJohn Forte 
1221*fcf3ce44SJohn Forte         IMA_UINT64      iScsiPdusSent;
1222*fcf3ce44SJohn Forte         IMA_UINT64      iScsiPdusReceived;
1223*fcf3ce44SJohn Forte 
1224*fcf3ce44SJohn Forte         IMA_UINT64      millisecondsSpentSending;
1225*fcf3ce44SJohn Forte         IMA_UINT64      millisecondsSpentReceiving;
1226*fcf3ce44SJohn Forte 
1227*fcf3ce44SJohn Forte } IMA_DEVICE_STATISTICS;
1228*fcf3ce44SJohn Forte 
1229*fcf3ce44SJohn Forte typedef struct _IMA_NETWORK_PORTAL_PROPERTIES
1230*fcf3ce44SJohn Forte {
1231*fcf3ce44SJohn Forte         IMA_IP_ADDRESS  ipAddress;
1232*fcf3ce44SJohn Forte         IMA_OID         associatedLnp;
1233*fcf3ce44SJohn Forte 
1234*fcf3ce44SJohn Forte         IMA_BYTE        reserved[32];
1235*fcf3ce44SJohn Forte } IMA_NETWORK_PORTAL_PROPERTIES;
1236*fcf3ce44SJohn Forte 
1237*fcf3ce44SJohn Forte typedef void (* IMA_OBJECT_VISIBILITY_FN)(
1238*fcf3ce44SJohn Forte         IMA_BOOL        becomingVisible,
1239*fcf3ce44SJohn Forte         IMA_OID         oid
1240*fcf3ce44SJohn Forte );
1241*fcf3ce44SJohn Forte 
1242*fcf3ce44SJohn Forte typedef void (* IMA_OBJECT_PROPERTY_FN)(
1243*fcf3ce44SJohn Forte         IMA_OID         oid
1244*fcf3ce44SJohn Forte );
1245*fcf3ce44SJohn Forte 
1246*fcf3ce44SJohn Forte typedef struct _IMA_CHAP_INITIATOR_AUTHPARMS
1247*fcf3ce44SJohn Forte {
1248*fcf3ce44SJohn Forte 
1249*fcf3ce44SJohn Forte         IMA_UINT        retries;
1250*fcf3ce44SJohn Forte 
1251*fcf3ce44SJohn Forte         IMA_BYTE        name[512];
1252*fcf3ce44SJohn Forte         IMA_UINT        nameLength;
1253*fcf3ce44SJohn Forte 
1254*fcf3ce44SJohn Forte         IMA_UINT        minValueLength;
1255*fcf3ce44SJohn Forte         IMA_UINT        maxValueLength;
1256*fcf3ce44SJohn Forte 
1257*fcf3ce44SJohn Forte         IMA_BYTE        challengeSecret[256];
1258*fcf3ce44SJohn Forte         IMA_UINT        challengeSecretLength;
1259*fcf3ce44SJohn Forte 
1260*fcf3ce44SJohn Forte         IMA_BYTE        reserved[512];
1261*fcf3ce44SJohn Forte 
1262*fcf3ce44SJohn Forte } IMA_CHAP_INITIATOR_AUTHPARMS;
1263*fcf3ce44SJohn Forte 
1264*fcf3ce44SJohn Forte typedef struct _IMA_SRP_INITIATOR_AUTHPARMS
1265*fcf3ce44SJohn Forte {
1266*fcf3ce44SJohn Forte 
1267*fcf3ce44SJohn Forte         IMA_BYTE        userName[512];
1268*fcf3ce44SJohn Forte         IMA_UINT        userNameLength;
1269*fcf3ce44SJohn Forte 
1270*fcf3ce44SJohn Forte         IMA_BYTE        reserved[512];
1271*fcf3ce44SJohn Forte 
1272*fcf3ce44SJohn Forte } IMA_SRP_INITIATOR_AUTHPARMS;
1273*fcf3ce44SJohn Forte 
1274*fcf3ce44SJohn Forte typedef struct _IMA_KRB5_INITIATOR_AUTHPARMS
1275*fcf3ce44SJohn Forte {
1276*fcf3ce44SJohn Forte 
1277*fcf3ce44SJohn Forte         IMA_BYTE        clientKey[1024];
1278*fcf3ce44SJohn Forte         IMA_UINT        clientKeyLength;
1279*fcf3ce44SJohn Forte 
1280*fcf3ce44SJohn Forte         IMA_BYTE        reserved[2048];
1281*fcf3ce44SJohn Forte 
1282*fcf3ce44SJohn Forte } IMA_KRB5_INITIATOR_AUTHPARMS;
1283*fcf3ce44SJohn Forte 
1284*fcf3ce44SJohn Forte typedef struct _IMA_SPKM_INITIATOR_AUTHPARMS
1285*fcf3ce44SJohn Forte {
1286*fcf3ce44SJohn Forte 
1287*fcf3ce44SJohn Forte         IMA_BYTE        privateKey[4096];
1288*fcf3ce44SJohn Forte         IMA_UINT        privateKeyLength;
1289*fcf3ce44SJohn Forte 
1290*fcf3ce44SJohn Forte         IMA_BYTE        publicKey[4096];
1291*fcf3ce44SJohn Forte         IMA_UINT        publicKeyLength;
1292*fcf3ce44SJohn Forte 
1293*fcf3ce44SJohn Forte         IMA_BYTE        reserved[4096];
1294*fcf3ce44SJohn Forte 
1295*fcf3ce44SJohn Forte } IMA_SPKM_INITIATOR_AUTHPARMS;
1296*fcf3ce44SJohn Forte 
1297*fcf3ce44SJohn Forte typedef union _IMA_INITIATOR_AUTHPARMS
1298*fcf3ce44SJohn Forte {
1299*fcf3ce44SJohn Forte 
1300*fcf3ce44SJohn Forte         IMA_CHAP_INITIATOR_AUTHPARMS    chapParms;
1301*fcf3ce44SJohn Forte         IMA_SRP_INITIATOR_AUTHPARMS     srpParms;
1302*fcf3ce44SJohn Forte         IMA_KRB5_INITIATOR_AUTHPARMS    kerberosParms;
1303*fcf3ce44SJohn Forte         IMA_SPKM_INITIATOR_AUTHPARMS    spkmParms;
1304*fcf3ce44SJohn Forte 
1305*fcf3ce44SJohn Forte } IMA_INITIATOR_AUTHPARMS;
1306*fcf3ce44SJohn Forte 
1307*fcf3ce44SJohn Forte 
1308*fcf3ce44SJohn Forte typedef struct _IMA_STATIC_DISCOVERY_TARGET
1309*fcf3ce44SJohn Forte {
1310*fcf3ce44SJohn Forte 		IMA_NODE_NAME 		targetName;
1311*fcf3ce44SJohn Forte 		IMA_TARGET_ADDRESS 	targetAddress;
1312*fcf3ce44SJohn Forte 
1313*fcf3ce44SJohn Forte } IMA_STATIC_DISCOVERY_TARGET;
1314*fcf3ce44SJohn Forte 
1315*fcf3ce44SJohn Forte typedef struct _IMA_DISCOVERY_ADDRESS_PROPERTIES
1316*fcf3ce44SJohn Forte {
1317*fcf3ce44SJohn Forte 		IMA_OID			associatedNodeOid;
1318*fcf3ce44SJohn Forte 		IMA_OID			associatedLhbaOid;
1319*fcf3ce44SJohn Forte 		IMA_TARGET_ADDRESS	discoveryAddress;
1320*fcf3ce44SJohn Forte 
1321*fcf3ce44SJohn Forte } IMA_DISCOVERY_ADDRESS_PROPERTIES;
1322*fcf3ce44SJohn Forte 
1323*fcf3ce44SJohn Forte typedef struct _IMA_STATIC_TGT_PROPERTIES
1324*fcf3ce44SJohn Forte {
1325*fcf3ce44SJohn Forte 		IMA_OID				associatedNodeOid;
1326*fcf3ce44SJohn Forte 		IMA_OID				associatedLhbaOid;
1327*fcf3ce44SJohn Forte 		IMA_STATIC_DISCOVERY_TARGET	staticTarget;
1328*fcf3ce44SJohn Forte 
1329*fcf3ce44SJohn Forte } IMA_STATIC_DISCOVERY_TARGET_PROPERTIES;
1330*fcf3ce44SJohn Forte 
1331*fcf3ce44SJohn Forte 
1332*fcf3ce44SJohn Forte /**
1333*fcf3ce44SJohn Forte *******************************************************************************
1334*fcf3ce44SJohn Forte *
1335*fcf3ce44SJohn Forte * The individual APIs of the IMA are declared below.
1336*fcf3ce44SJohn Forte *
1337*fcf3ce44SJohn Forte *******************************************************************************
1338*fcf3ce44SJohn Forte */
1339*fcf3ce44SJohn Forte 
1340*fcf3ce44SJohn Forte /**
1341*fcf3ce44SJohn Forte *******************************************************************************
1342*fcf3ce44SJohn Forte *
1343*fcf3ce44SJohn Forte * Gets the properties of the IMA library that is being used.
1344*fcf3ce44SJohn Forte *
1345*fcf3ce44SJohn Forte * @param  pProps
1346*fcf3ce44SJohn Forte *         A pointer to an IMA_LIBRARY_PROPERTIES structure allocated by
1347*fcf3ce44SJohn Forte *         the caller.  On successful return this structure will contain the
1348*fcf3ce44SJohn Forte *         properties of the IMA library.
1349*fcf3ce44SJohn Forte *
1350*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1351*fcf3ce44SJohn Forte *         an error occurred.
1352*fcf3ce44SJohn Forte *
1353*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1354*fcf3ce44SJohn Forte *         Returned if the library properties were successfully returned.
1355*fcf3ce44SJohn Forte *
1356*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1357*fcf3ce44SJohn Forte *         Returned if 'pProps' is NULL or specifies a memory area to which
1358*fcf3ce44SJohn Forte *         data cannot be written.
1359*fcf3ce44SJohn Forte *
1360*fcf3ce44SJohn Forte *******************************************************************************
1361*fcf3ce44SJohn Forte */
1362*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLibraryProperties(
1363*fcf3ce44SJohn Forte         IMA_LIBRARY_PROPERTIES *pProps
1364*fcf3ce44SJohn Forte );
1365*fcf3ce44SJohn Forte 
1366*fcf3ce44SJohn Forte 
1367*fcf3ce44SJohn Forte 
1368*fcf3ce44SJohn Forte /**
1369*fcf3ce44SJohn Forte *******************************************************************************
1370*fcf3ce44SJohn Forte *
1371*fcf3ce44SJohn Forte * Gets a list of the object IDs of all currently loaded plugins.
1372*fcf3ce44SJohn Forte *
1373*fcf3ce44SJohn Forte * @param ppList
1374*fcf3ce44SJohn Forte *        A pointer to a pointer to an IMA_OID_LIST.  On successful
1375*fcf3ce44SJohn Forte *        return this will contain a pointer to an @ref IMA_OID_LIST
1376*fcf3ce44SJohn Forte *        which contains the object IDs of all of the plugins currently
1377*fcf3ce44SJohn Forte *        loaded by the library.
1378*fcf3ce44SJohn Forte *
1379*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or
1380*fcf3ce44SJohn Forte *         if an error occurred.
1381*fcf3ce44SJohn Forte *
1382*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1383*fcf3ce44SJohn Forte *         Returned if the plugin ID list was successfully returned.
1384*fcf3ce44SJohn Forte *
1385*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1386*fcf3ce44SJohn Forte *         Returned if 'ppList' is NULL or specifies a memory area to
1387*fcf3ce44SJohn Forte *         which data cannot be written.
1388*fcf3ce44SJohn Forte *
1389*fcf3ce44SJohn Forte *******************************************************************************
1390*fcf3ce44SJohn Forte */
1391*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPluginOidList(
1392*fcf3ce44SJohn Forte         IMA_OID_LIST **ppList
1393*fcf3ce44SJohn Forte );
1394*fcf3ce44SJohn Forte 
1395*fcf3ce44SJohn Forte 
1396*fcf3ce44SJohn Forte 
1397*fcf3ce44SJohn Forte /**
1398*fcf3ce44SJohn Forte *******************************************************************************
1399*fcf3ce44SJohn Forte *
1400*fcf3ce44SJohn Forte * Gets the properties of the specified vendor plugin.
1401*fcf3ce44SJohn Forte *
1402*fcf3ce44SJohn Forte * @param  pluginOid
1403*fcf3ce44SJohn Forte *         The ID of the plugin whose properties are being retrieved.
1404*fcf3ce44SJohn Forte *
1405*fcf3ce44SJohn Forte * @param  pProps
1406*fcf3ce44SJohn Forte *         A pointer to an @ref IMA_PLUGIN_PROPERTIES structure allocated by
1407*fcf3ce44SJohn Forte *         the caller.  On successful return this will contain the properties
1408*fcf3ce44SJohn Forte *         of the plugin specified by pluginOid.
1409*fcf3ce44SJohn Forte *
1410*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if an
1411*fcf3ce44SJohn Forte *         error occurred.
1412*fcf3ce44SJohn Forte *
1413*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1414*fcf3ce44SJohn Forte *         Returned if the plugin properties were successfully returned.
1415*fcf3ce44SJohn Forte *
1416*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1417*fcf3ce44SJohn Forte *         Returned if 'pluginOid' does not specify any valid object type.
1418*fcf3ce44SJohn Forte *
1419*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1420*fcf3ce44SJohn Forte *         Returned if 'pluginOid' does not specify a plugin object.
1421*fcf3ce44SJohn Forte *
1422*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1423*fcf3ce44SJohn Forte *         Returned if 'pluginOid' refers to a plugin, but not one that
1424*fcf3ce44SJohn Forte *         is currently loaded.
1425*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1426*fcf3ce44SJohn Forte *         Returned if 'pProps' is NULL or specifies a memory area to
1427*fcf3ce44SJohn Forte *         which data cannot be written.
1428*fcf3ce44SJohn Forte *
1429*fcf3ce44SJohn Forte *******************************************************************************
1430*fcf3ce44SJohn Forte */
1431*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPluginProperties(
1432*fcf3ce44SJohn Forte         IMA_OID pluginOid,
1433*fcf3ce44SJohn Forte         IMA_PLUGIN_PROPERTIES *pProps
1434*fcf3ce44SJohn Forte );
1435*fcf3ce44SJohn Forte 
1436*fcf3ce44SJohn Forte 
1437*fcf3ce44SJohn Forte 
1438*fcf3ce44SJohn Forte /**
1439*fcf3ce44SJohn Forte *******************************************************************************
1440*fcf3ce44SJohn Forte *
1441*fcf3ce44SJohn Forte * Gets the object ID for the plugin associated with the specified object ID.
1442*fcf3ce44SJohn Forte *
1443*fcf3ce44SJohn Forte * @param  oid
1444*fcf3ce44SJohn Forte *         The object ID of an object that has been received from a previous
1445*fcf3ce44SJohn Forte *         library call.
1446*fcf3ce44SJohn Forte *
1447*fcf3ce44SJohn Forte * @param  pPluginOid
1448*fcf3ce44SJohn Forte *         A pointer to an IMA_OID structure allocated by the caller.  On
1449*fcf3ce44SJohn Forte *         successful return this will contain the object ID of the plugin
1450*fcf3ce44SJohn Forte *         associated with the object specified by @a objectId.  This
1451*fcf3ce44SJohn Forte *         can then be used to work with the plugin, e.g., to get the
1452*fcf3ce44SJohn Forte *         properties of the plugin or the send the plugin an IOCtl.
1453*fcf3ce44SJohn Forte *
1454*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1455*fcf3ce44SJohn Forte *         an error occurred.
1456*fcf3ce44SJohn Forte *
1457*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1458*fcf3ce44SJohn Forte *         Returned if the associated plugin ID was successfully returned.
1459*fcf3ce44SJohn Forte *
1460*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1461*fcf3ce44SJohn Forte *         Returned if 'pPluginOid' is NULL or specifies a memory area to
1462*fcf3ce44SJohn Forte *         which data cannot be written.
1463*fcf3ce44SJohn Forte *
1464*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1465*fcf3ce44SJohn Forte *         Returned if 'oid' specifies an object not owned by a plugin, but
1466*fcf3ce44SJohn Forte *         instead one that is owned by the library.
1467*fcf3ce44SJohn Forte *
1468*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1469*fcf3ce44SJohn Forte *         Returned if 'oid' specifies an object with an invalid type.
1470*fcf3ce44SJohn Forte *
1471*fcf3ce44SJohn Forte *******************************************************************************
1472*fcf3ce44SJohn Forte */
1473*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetAssociatedPluginOid(
1474*fcf3ce44SJohn Forte         IMA_OID oid,
1475*fcf3ce44SJohn Forte         IMA_OID *pPluginOid
1476*fcf3ce44SJohn Forte );
1477*fcf3ce44SJohn Forte 
1478*fcf3ce44SJohn Forte 
1479*fcf3ce44SJohn Forte 
1480*fcf3ce44SJohn Forte /**
1481*fcf3ce44SJohn Forte *******************************************************************************
1482*fcf3ce44SJohn Forte *
1483*fcf3ce44SJohn Forte * Gets the object ID of the shared node.
1484*fcf3ce44SJohn Forte *
1485*fcf3ce44SJohn Forte * @param  pSharedNodeOid
1486*fcf3ce44SJohn Forte *         A pointer to an IMA_OID structure allocated by the caller.  On
1487*fcf3ce44SJohn Forte *         successful return it will contain the object ID of the
1488*fcf3ce44SJohn Forte *         shared node of the currently executing system is placed.
1489*fcf3ce44SJohn Forte *
1490*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or
1491*fcf3ce44SJohn Forte *         if an error occurred.
1492*fcf3ce44SJohn Forte *
1493*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1494*fcf3ce44SJohn Forte *         Returned if the shared node ID has been successfully retrieved.
1495*fcf3ce44SJohn Forte *
1496*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1497*fcf3ce44SJohn Forte *         Returned if 'pSharedNodeOid' is NULL or specifies a memory area
1498*fcf3ce44SJohn Forte *         to which data cannot be written.
1499*fcf3ce44SJohn Forte *
1500*fcf3ce44SJohn Forte *******************************************************************************
1501*fcf3ce44SJohn Forte */
1502*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetSharedNodeOid(
1503*fcf3ce44SJohn Forte         IMA_OID *pSharedNodeOid
1504*fcf3ce44SJohn Forte );
1505*fcf3ce44SJohn Forte 
1506*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetObjectType(
1507*fcf3ce44SJohn Forte         IMA_OID oid,
1508*fcf3ce44SJohn Forte         IMA_OBJECT_TYPE *pObjectType
1509*fcf3ce44SJohn Forte );
1510*fcf3ce44SJohn Forte 
1511*fcf3ce44SJohn Forte 
1512*fcf3ce44SJohn Forte /**
1513*fcf3ce44SJohn Forte *******************************************************************************
1514*fcf3ce44SJohn Forte *
1515*fcf3ce44SJohn Forte * Gets the properties of the specified iSCSI node.
1516*fcf3ce44SJohn Forte *
1517*fcf3ce44SJohn Forte * @param  nodeOid
1518*fcf3ce44SJohn Forte *         The ID of the node to get the properties of.
1519*fcf3ce44SJohn Forte *
1520*fcf3ce44SJohn Forte * @param  pProps
1521*fcf3ce44SJohn Forte *         A pointer to an @ref IMA_NODE_PROPERTIES structure which on
1522*fcf3ce44SJohn Forte *         successful return will contain the properties of the specified node.
1523*fcf3ce44SJohn Forte *
1524*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1525*fcf3ce44SJohn Forte *         an error occurred.
1526*fcf3ce44SJohn Forte *
1527*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1528*fcf3ce44SJohn Forte *         Returned if the node properties have been successfully retrieved.
1529*fcf3ce44SJohn Forte *
1530*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1531*fcf3ce44SJohn Forte *         Returned if 'pProps' is NULL or specifies a memory area to which
1532*fcf3ce44SJohn Forte *         data cannot be written.
1533*fcf3ce44SJohn Forte *
1534*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1535*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify any valid object type.
1536*fcf3ce44SJohn Forte *
1537*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1538*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify a node object.
1539*fcf3ce44SJohn Forte *
1540*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1541*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify a node which is currently
1542*fcf3ce44SJohn Forte *         known to the system.
1543*fcf3ce44SJohn Forte *
1544*fcf3ce44SJohn Forte *******************************************************************************
1545*fcf3ce44SJohn Forte */
1546*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetNodeProperties(
1547*fcf3ce44SJohn Forte         IMA_OID nodeOid,
1548*fcf3ce44SJohn Forte         IMA_NODE_PROPERTIES *pProps
1549*fcf3ce44SJohn Forte );
1550*fcf3ce44SJohn Forte 
1551*fcf3ce44SJohn Forte 
1552*fcf3ce44SJohn Forte 
1553*fcf3ce44SJohn Forte /**
1554*fcf3ce44SJohn Forte *******************************************************************************
1555*fcf3ce44SJohn Forte *
1556*fcf3ce44SJohn Forte * Sets the name of the specified node.
1557*fcf3ce44SJohn Forte *
1558*fcf3ce44SJohn Forte * @param  nodeOid
1559*fcf3ce44SJohn Forte *         The object ID of the node whose name is being set.
1560*fcf3ce44SJohn Forte *
1561*fcf3ce44SJohn Forte * @param  newName
1562*fcf3ce44SJohn Forte *         The new name of the node.
1563*fcf3ce44SJohn Forte *
1564*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or
1565*fcf3ce44SJohn Forte *         if an error occurred.
1566*fcf3ce44SJohn Forte *
1567*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1568*fcf3ce44SJohn Forte *         Returned if the node name was successfully changed.
1569*fcf3ce44SJohn Forte *
1570*fcf3ce44SJohn Forte * @retval IMA_STATUS_REBOOT_NECESSARY
1571*fcf3ce44SJohn Forte *         Returned if a reboot is necessary before the setting of the
1572*fcf3ce44SJohn Forte *         name actually takes affect.
1573*fcf3ce44SJohn Forte *
1574*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1575*fcf3ce44SJohn Forte *         Returned if 'newName' is NULL, or specifies a memory area
1576*fcf3ce44SJohn Forte *         to which data cannot be written, or has a length of 0.
1577*fcf3ce44SJohn Forte *
1578*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1579*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify any valid object type.
1580*fcf3ce44SJohn Forte *
1581*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1582*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify a node object.
1583*fcf3ce44SJohn Forte *
1584*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1585*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify a node which is
1586*fcf3ce44SJohn Forte *         currently known to the system.
1587*fcf3ce44SJohn Forte *
1588*fcf3ce44SJohn Forte * @retval IMA_ERROR_NAME_TOO_LONG
1589*fcf3ce44SJohn Forte *         Returned if 'newName' contains too many characters.
1590*fcf3ce44SJohn Forte *
1591*fcf3ce44SJohn Forte *******************************************************************************
1592*fcf3ce44SJohn Forte */
1593*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetNodeName(
1594*fcf3ce44SJohn Forte         IMA_OID nodeOid,
1595*fcf3ce44SJohn Forte         const IMA_NODE_NAME newName
1596*fcf3ce44SJohn Forte );
1597*fcf3ce44SJohn Forte 
1598*fcf3ce44SJohn Forte 
1599*fcf3ce44SJohn Forte 
1600*fcf3ce44SJohn Forte /**
1601*fcf3ce44SJohn Forte *******************************************************************************
1602*fcf3ce44SJohn Forte *
1603*fcf3ce44SJohn Forte * Generates a unique node name for the currently running system.
1604*fcf3ce44SJohn Forte *
1605*fcf3ce44SJohn Forte * @param  generatedName
1606*fcf3ce44SJohn Forte *         On successful return contains the generated node name.
1607*fcf3ce44SJohn Forte *
1608*fcf3ce44SJohn Forte * @return  An IMA_STATUS indicating if the operation was successful or if an
1609*fcf3ce44SJohn Forte *          error occurred.
1610*fcf3ce44SJohn Forte *
1611*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1612*fcf3ce44SJohn Forte *         Returned if 'generatedname is NULL or
1613*fcf3ce44SJohn Forte *               specifies a memory area to which data cannot be written.
1614*fcf3ce44SJohn Forte *
1615*fcf3ce44SJohn Forte *******************************************************************************
1616*fcf3ce44SJohn Forte */
1617*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GenerateNodeName(
1618*fcf3ce44SJohn Forte         IMA_NODE_NAME generatedName
1619*fcf3ce44SJohn Forte );
1620*fcf3ce44SJohn Forte 
1621*fcf3ce44SJohn Forte 
1622*fcf3ce44SJohn Forte 
1623*fcf3ce44SJohn Forte /**
1624*fcf3ce44SJohn Forte *******************************************************************************
1625*fcf3ce44SJohn Forte *
1626*fcf3ce44SJohn Forte * Sets the alias of the specified node.
1627*fcf3ce44SJohn Forte *
1628*fcf3ce44SJohn Forte * @param  nodeOid
1629*fcf3ce44SJohn Forte *         The object ID of the node whose alias is being set.
1630*fcf3ce44SJohn Forte *
1631*fcf3ce44SJohn Forte * @param  newAlias
1632*fcf3ce44SJohn Forte *         A pointer to a Unicode string which contains the new node alias.
1633*fcf3ce44SJohn Forte *         If this parameter is NULL then the current alias is deleted, in which
1634*fcf3ce44SJohn Forte *         case the specified node no longer has an alias.
1635*fcf3ce44SJohn Forte *
1636*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or
1637*fcf3ce44SJohn Forte *         if an error occurred.
1638*fcf3ce44SJohn Forte *
1639*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1640*fcf3ce44SJohn Forte *         Returned if the node's alias has been successfully set.
1641*fcf3ce44SJohn Forte *
1642*fcf3ce44SJohn Forte * @retval IMA_STATUS_REBOOT_NECESSARY
1643*fcf3ce44SJohn Forte *         A reboot is necessary before the setting of the alias actually
1644*fcf3ce44SJohn Forte *         takes effect.
1645*fcf3ce44SJohn Forte *
1646*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1647*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify any valid object type.
1648*fcf3ce44SJohn Forte *
1649*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1650*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify a node object.
1651*fcf3ce44SJohn Forte *
1652*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1653*fcf3ce44SJohn Forte *         Returned if 'nodeOid' does not specify a node which is currently
1654*fcf3ce44SJohn Forte *         known to the system.
1655*fcf3ce44SJohn Forte *
1656*fcf3ce44SJohn Forte * @retval IMA_ERROR_NAME_TOO_LONG
1657*fcf3ce44SJohn Forte *         Returned if 'newAlias' contains too many characters.
1658*fcf3ce44SJohn Forte *
1659*fcf3ce44SJohn Forte *******************************************************************************
1660*fcf3ce44SJohn Forte */
1661*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetNodeAlias(
1662*fcf3ce44SJohn Forte         IMA_OID nodeOid,
1663*fcf3ce44SJohn Forte         const IMA_NODE_ALIAS newAlias
1664*fcf3ce44SJohn Forte );
1665*fcf3ce44SJohn Forte 
1666*fcf3ce44SJohn Forte 
1667*fcf3ce44SJohn Forte 
1668*fcf3ce44SJohn Forte /**
1669*fcf3ce44SJohn Forte *******************************************************************************
1670*fcf3ce44SJohn Forte *
1671*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the logical HBAs in the system.
1672*fcf3ce44SJohn Forte *
1673*fcf3ce44SJohn Forte * @param  ppList
1674*fcf3ce44SJohn Forte *         A pointer to a pointer to an @ref IMA_OID_LIST structure.  On
1675*fcf3ce44SJohn Forte *         successful return this will contain a pointer to an
1676*fcf3ce44SJohn Forte *         IMA_OID_LIST which contains the object IDs of all of the
1677*fcf3ce44SJohn Forte *         LHBAs currently in the system.
1678*fcf3ce44SJohn Forte *
1679*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1680*fcf3ce44SJohn Forte *         an error occurred.
1681*fcf3ce44SJohn Forte *
1682*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1683*fcf3ce44SJohn Forte *         Returned if the LHBA ID list has been successfully returned.
1684*fcf3ce44SJohn Forte *
1685*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1686*fcf3ce44SJohn Forte *         Returned if 'ppList' is NULL or specifies a memory area to which
1687*fcf3ce44SJohn Forte *         data cannot be written.
1688*fcf3ce44SJohn Forte *
1689*fcf3ce44SJohn Forte *******************************************************************************
1690*fcf3ce44SJohn Forte */
1691*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLhbaOidList(
1692*fcf3ce44SJohn Forte         IMA_OID_LIST **ppList
1693*fcf3ce44SJohn Forte );
1694*fcf3ce44SJohn Forte 
1695*fcf3ce44SJohn Forte 
1696*fcf3ce44SJohn Forte 
1697*fcf3ce44SJohn Forte /**
1698*fcf3ce44SJohn Forte *******************************************************************************
1699*fcf3ce44SJohn Forte *
1700*fcf3ce44SJohn Forte * Gets the properties of the specified logical HBA.
1701*fcf3ce44SJohn Forte *
1702*fcf3ce44SJohn Forte * @param  lhbaOid
1703*fcf3ce44SJohn Forte *         The object ID of the LHBA whose properties are being retrieved.
1704*fcf3ce44SJohn Forte *
1705*fcf3ce44SJohn Forte * @param  pProps
1706*fcf3ce44SJohn Forte *         A pointer to an IMA_LHBA_PROPERTIES structure.  On successful
1707*fcf3ce44SJohn Forte *         return this will contain the properties of the LHBA specified by
1708*fcf3ce44SJohn Forte *         'lhbaOid'.
1709*fcf3ce44SJohn Forte *
1710*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1711*fcf3ce44SJohn Forte *         an error occurred.
1712*fcf3ce44SJohn Forte *
1713*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1714*fcf3ce44SJohn Forte *         Returned if the properties of the specified LHBA have been
1715*fcf3ce44SJohn Forte *         successfully retrieved.
1716*fcf3ce44SJohn Forte *
1717*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1718*fcf3ce44SJohn Forte *         Returned if 'pProps' is NULL or specifies a memory area to which
1719*fcf3ce44SJohn Forte *         data cannot be written.
1720*fcf3ce44SJohn Forte *
1721*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1722*fcf3ce44SJohn Forte *         Returned if 'lhbaOid' does not specify any valid object type.
1723*fcf3ce44SJohn Forte *
1724*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1725*fcf3ce44SJohn Forte *         Returned if 'lhbaOid' does not specify a LHBA.
1726*fcf3ce44SJohn Forte *
1727*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1728*fcf3ce44SJohn Forte *         Returned if 'lhbaOid' does not specify a LHBA which is currently
1729*fcf3ce44SJohn Forte *         known to the system.
1730*fcf3ce44SJohn Forte *
1731*fcf3ce44SJohn Forte *******************************************************************************
1732*fcf3ce44SJohn Forte */
1733*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLhbaProperties(
1734*fcf3ce44SJohn Forte         IMA_OID lhbaOid,
1735*fcf3ce44SJohn Forte         IMA_LHBA_PROPERTIES *pProps
1736*fcf3ce44SJohn Forte );
1737*fcf3ce44SJohn Forte 
1738*fcf3ce44SJohn Forte 
1739*fcf3ce44SJohn Forte 
1740*fcf3ce44SJohn Forte /**
1741*fcf3ce44SJohn Forte *******************************************************************************
1742*fcf3ce44SJohn Forte *
1743*fcf3ce44SJohn Forte * Gets a list of the object IDs of all the physical HBAs in the system.
1744*fcf3ce44SJohn Forte *
1745*fcf3ce44SJohn Forte * @param  ppList
1746*fcf3ce44SJohn Forte *         A pointer to a pointer to an IMA_OID_LIST structure.  On successful
1747*fcf3ce44SJohn Forte *         return this will contain a pointer to an IMA_OID_LIST which
1748*fcf3ce44SJohn Forte *         contains the object IDs of all of the PHBAs currently in the system.
1749*fcf3ce44SJohn Forte *
1750*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1751*fcf3ce44SJohn Forte *         an error occurred.
1752*fcf3ce44SJohn Forte *
1753*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1754*fcf3ce44SJohn Forte *         Returned if the PHBA OID list has been successfully returned.
1755*fcf3ce44SJohn Forte *
1756*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1757*fcf3ce44SJohn Forte *         Returned if 'ppList' is NULL or specifies a memory area to which
1758*fcf3ce44SJohn Forte *         data cannot be written.
1759*fcf3ce44SJohn Forte *
1760*fcf3ce44SJohn Forte *******************************************************************************
1761*fcf3ce44SJohn Forte */
1762*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPhbaOidList(
1763*fcf3ce44SJohn Forte         IMA_OID_LIST **ppList
1764*fcf3ce44SJohn Forte );
1765*fcf3ce44SJohn Forte 
1766*fcf3ce44SJohn Forte 
1767*fcf3ce44SJohn Forte 
1768*fcf3ce44SJohn Forte /**
1769*fcf3ce44SJohn Forte *******************************************************************************
1770*fcf3ce44SJohn Forte *
1771*fcf3ce44SJohn Forte * Gets the general properties of a physical HBA.
1772*fcf3ce44SJohn Forte *
1773*fcf3ce44SJohn Forte * @param  phbaOid
1774*fcf3ce44SJohn Forte *         The object ID of the PHBA whose properties are being queried.
1775*fcf3ce44SJohn Forte *
1776*fcf3ce44SJohn Forte * @param  pProps
1777*fcf3ce44SJohn Forte *         A pointer to an @ref IMA_PHBA_PROPERTIES structure.  On successful
1778*fcf3ce44SJohn Forte *         return this will contain the properties of the PHBA specified by
1779*fcf3ce44SJohn Forte *         'phbaOid'.
1780*fcf3ce44SJohn Forte #
1781*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or
1782*fcf3ce44SJohn Forte *         if an error occurred.
1783*fcf3ce44SJohn Forte *
1784*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1785*fcf3ce44SJohn Forte *         Returned if the properties of the specified PHBA have been
1786*fcf3ce44SJohn Forte *         successfully retrieved.
1787*fcf3ce44SJohn Forte *
1788*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1789*fcf3ce44SJohn Forte *         Returned if 'pProps' is NULL or specifies a memory area to which
1790*fcf3ce44SJohn Forte *         data cannot be written.
1791*fcf3ce44SJohn Forte *
1792*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1793*fcf3ce44SJohn Forte *         Returned if 'phbaOid' does not specify any valid object type.
1794*fcf3ce44SJohn Forte *
1795*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1796*fcf3ce44SJohn Forte *         Returned if 'phbaOid' does not specify a PHBA.
1797*fcf3ce44SJohn Forte *
1798*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1799*fcf3ce44SJohn Forte *         Returned if 'phbaOid' does not specify a PHBA which is currently
1800*fcf3ce44SJohn Forte *         known to the system.
1801*fcf3ce44SJohn Forte *
1802*fcf3ce44SJohn Forte *******************************************************************************
1803*fcf3ce44SJohn Forte */
1804*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPhbaProperties(
1805*fcf3ce44SJohn Forte         IMA_OID phbaOid,
1806*fcf3ce44SJohn Forte         IMA_PHBA_PROPERTIES *pProps
1807*fcf3ce44SJohn Forte );
1808*fcf3ce44SJohn Forte 
1809*fcf3ce44SJohn Forte /**
1810*fcf3ce44SJohn Forte *******************************************************************************
1811*fcf3ce44SJohn Forte *
1812*fcf3ce44SJohn Forte * Frees a previously allocated IMA_OID_LIST structure.
1813*fcf3ce44SJohn Forte *
1814*fcf3ce44SJohn Forte * @param pMemory  A pointer to an IMA_OID_LIST structure allocated by the
1815*fcf3ce44SJohn Forte *                 library.  On successful return the memory allocated by the
1816*fcf3ce44SJohn Forte *                 list is freed.
1817*fcf3ce44SJohn Forte * @return  An IMA_STATUS indicating if the operation was successful or if an
1818*fcf3ce44SJohn Forte *          error occurred.
1819*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1820*fcf3ce44SJohn Forte *         Returned if the specified object ID list was successfully
1821*fcf3ce44SJohn Forte *         freed.
1822*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1823*fcf3ce44SJohn Forte *         Returned if pMemory is NULL or specifies a memory area from which
1824*fcf3ce44SJohn Forte *         data cannot be read.
1825*fcf3ce44SJohn Forte *
1826*fcf3ce44SJohn Forte *******************************************************************************
1827*fcf3ce44SJohn Forte */
1828*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_FreeMemory(
1829*fcf3ce44SJohn Forte         void *pMemory
1830*fcf3ce44SJohn Forte );
1831*fcf3ce44SJohn Forte 
1832*fcf3ce44SJohn Forte 
1833*fcf3ce44SJohn Forte 
1834*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetNonSharedNodeOidList(
1835*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
1836*fcf3ce44SJohn Forte );
1837*fcf3ce44SJohn Forte 
1838*fcf3ce44SJohn Forte 
1839*fcf3ce44SJohn Forte 
1840*fcf3ce44SJohn Forte 
1841*fcf3ce44SJohn Forte /**
1842*fcf3ce44SJohn Forte *******************************************************************************
1843*fcf3ce44SJohn Forte *
1844*fcf3ce44SJohn Forte * Gets the first burst length properties of the specified logical HBA.
1845*fcf3ce44SJohn Forte *
1846*fcf3ce44SJohn Forte * @param  oid
1847*fcf3ce44SJohn Forte *         The object ID of the logical HBA to get the first burst length
1848*fcf3ce44SJohn Forte *         properties of.
1849*fcf3ce44SJohn Forte *
1850*fcf3ce44SJohn Forte * @param  pProps
1851*fcf3ce44SJohn Forte *         A pointer to a min/max values structure.
1852*fcf3ce44SJohn Forte *
1853*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if an
1854*fcf3ce44SJohn Forte *         error occurred.
1855*fcf3ce44SJohn Forte *
1856*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1857*fcf3ce44SJohn Forte *         Returned if the first burst length properties have been
1858*fcf3ce44SJohn Forte *         successfully retrieved.
1859*fcf3ce44SJohn Forte *
1860*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1861*fcf3ce44SJohn Forte *         Returned if pProps is NULL or specifies a memory area to which
1862*fcf3ce44SJohn Forte *         data cannot be written.
1863*fcf3ce44SJohn Forte *
1864*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1865*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify any valid object type.
1866*fcf3ce44SJohn Forte *
1867*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1868*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify a LHBA.
1869*fcf3ce44SJohn Forte *
1870*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1871*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify a LHBA which is currently
1872*fcf3ce44SJohn Forte *         known to the system.
1873*fcf3ce44SJohn Forte *
1874*fcf3ce44SJohn Forte *******************************************************************************
1875*fcf3ce44SJohn Forte */
1876*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetFirstBurstLengthProperties(
1877*fcf3ce44SJohn Forte                 IMA_OID oid,
1878*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
1879*fcf3ce44SJohn Forte );
1880*fcf3ce44SJohn Forte 
1881*fcf3ce44SJohn Forte 
1882*fcf3ce44SJohn Forte /**
1883*fcf3ce44SJohn Forte *******************************************************************************
1884*fcf3ce44SJohn Forte *
1885*fcf3ce44SJohn Forte * Gets the max burst length properties of the specified logical HBA.
1886*fcf3ce44SJohn Forte *
1887*fcf3ce44SJohn Forte * @param  oid
1888*fcf3ce44SJohn Forte *         The object ID of the logical HBA to get the max burst length
1889*fcf3ce44SJohn Forte *         properties of.
1890*fcf3ce44SJohn Forte *
1891*fcf3ce44SJohn Forte * @param  pProps
1892*fcf3ce44SJohn Forte *         A pointer to an IMA_MIN_MAX_VALUE structure allocated by the
1893*fcf3ce44SJohn Forte *         caller.  On successful return this structure will contain the max
1894*fcf3ce44SJohn Forte *         burst length properties of this LHBA.
1895*fcf3ce44SJohn Forte *
1896*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1897*fcf3ce44SJohn Forte *         an error occurred.
1898*fcf3ce44SJohn Forte *
1899*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1900*fcf3ce44SJohn Forte *         Returned if the max burst length properties have been successfully
1901*fcf3ce44SJohn Forte *         retrieved.
1902*fcf3ce44SJohn Forte *
1903*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1904*fcf3ce44SJohn Forte *         Returned if pProps is NULL or specifies a memory area to which
1905*fcf3ce44SJohn Forte *         data cannot be written.
1906*fcf3ce44SJohn Forte *
1907*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1908*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify any valid object type.
1909*fcf3ce44SJohn Forte *
1910*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1911*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify a LHBA.
1912*fcf3ce44SJohn Forte *
1913*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1914*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify a LHBA which is currently
1915*fcf3ce44SJohn Forte *         known to the system.
1916*fcf3ce44SJohn Forte *
1917*fcf3ce44SJohn Forte *******************************************************************************
1918*fcf3ce44SJohn Forte */
1919*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetMaxBurstLengthProperties(
1920*fcf3ce44SJohn Forte                 IMA_OID Oid,
1921*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
1922*fcf3ce44SJohn Forte );
1923*fcf3ce44SJohn Forte 
1924*fcf3ce44SJohn Forte /**
1925*fcf3ce44SJohn Forte *******************************************************************************
1926*fcf3ce44SJohn Forte *
1927*fcf3ce44SJohn Forte * Gets the maximum receive data segment length properties of the specified
1928*fcf3ce44SJohn Forte * logical HBA.
1929*fcf3ce44SJohn Forte *
1930*fcf3ce44SJohn Forte * @param  oid
1931*fcf3ce44SJohn Forte *         The object ID of the logical HBA to get the max receive data
1932*fcf3ce44SJohn Forte *         segment length properties of.
1933*fcf3ce44SJohn Forte *
1934*fcf3ce44SJohn Forte * @param  pProps
1935*fcf3ce44SJohn Forte *         A pointer to an @ref IMA_MIN_MAX_VALUE structure allocated by the
1936*fcf3ce44SJohn Forte *         caller.  On successful return this structure will contain the max
1937*fcf3ce44SJohn Forte *         receive data segment length properties of this LHBA.
1938*fcf3ce44SJohn Forte *
1939*fcf3ce44SJohn Forte * @return An IMA_STATUS indicating if the operation was successful or if
1940*fcf3ce44SJohn Forte *         an error occurred.
1941*fcf3ce44SJohn Forte *
1942*fcf3ce44SJohn Forte * @retval IMA_SUCCESS
1943*fcf3ce44SJohn Forte *         Returned if the max receive data segment length properties
1944*fcf3ce44SJohn Forte *         have been successfully retrieved.
1945*fcf3ce44SJohn Forte *
1946*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_PARAMETER
1947*fcf3ce44SJohn Forte *         Returned if 'pProps' is NULL or specifies a memory area to which
1948*fcf3ce44SJohn Forte *         data cannot be written.
1949*fcf3ce44SJohn Forte *
1950*fcf3ce44SJohn Forte * @retval IMA_ERROR_INVALID_OBJECT_TYPE
1951*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify any valid object type.
1952*fcf3ce44SJohn Forte *
1953*fcf3ce44SJohn Forte * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
1954*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify a LHBA.
1955*fcf3ce44SJohn Forte *
1956*fcf3ce44SJohn Forte * @retval IMA_ERROR_OBJECT_NOT_FOUND
1957*fcf3ce44SJohn Forte *         Returned if 'oid' does not specify a LHBA which is currently
1958*fcf3ce44SJohn Forte *         known to the system.
1959*fcf3ce44SJohn Forte *
1960*fcf3ce44SJohn Forte *******************************************************************************
1961*fcf3ce44SJohn Forte */
1962*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetMaxRecvDataSegmentLengthProperties(
1963*fcf3ce44SJohn Forte                 IMA_OID oid,
1964*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
1965*fcf3ce44SJohn Forte );
1966*fcf3ce44SJohn Forte 
1967*fcf3ce44SJohn Forte 
1968*fcf3ce44SJohn Forte /*---------------------------------------------*/
1969*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_PluginIOCtl(
1970*fcf3ce44SJohn Forte                 IMA_OID pluginOid,
1971*fcf3ce44SJohn Forte                 IMA_UINT command,
1972*fcf3ce44SJohn Forte                 const void *pInputBuffer,
1973*fcf3ce44SJohn Forte                 IMA_UINT inputBufferLength,
1974*fcf3ce44SJohn Forte                 void *pOutputBuffer,
1975*fcf3ce44SJohn Forte                 IMA_UINT *pOutputBufferLength
1976*fcf3ce44SJohn Forte );
1977*fcf3ce44SJohn Forte 
1978*fcf3ce44SJohn Forte 
1979*fcf3ce44SJohn Forte 
1980*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetNetworkPortalOidList(
1981*fcf3ce44SJohn Forte                 IMA_OID oid,
1982*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
1983*fcf3ce44SJohn Forte );
1984*fcf3ce44SJohn Forte 
1985*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetFirstBurstLength(
1986*fcf3ce44SJohn Forte                 IMA_OID oid,
1987*fcf3ce44SJohn Forte                 IMA_UINT firstBurstLength
1988*fcf3ce44SJohn Forte );
1989*fcf3ce44SJohn Forte 
1990*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetMaxBurstLength(
1991*fcf3ce44SJohn Forte                 IMA_OID oid,
1992*fcf3ce44SJohn Forte                 IMA_UINT maxBurstLength
1993*fcf3ce44SJohn Forte );
1994*fcf3ce44SJohn Forte 
1995*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetMaxRecvDataSegmentLength(
1996*fcf3ce44SJohn Forte                 IMA_OID oid,
1997*fcf3ce44SJohn Forte                 IMA_UINT maxRecvDataSegmentLength
1998*fcf3ce44SJohn Forte );
1999*fcf3ce44SJohn Forte 
2000*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetMaxConnectionsProperties(
2001*fcf3ce44SJohn Forte                 IMA_OID oid,
2002*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
2003*fcf3ce44SJohn Forte );
2004*fcf3ce44SJohn Forte 
2005*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetMaxConnections(
2006*fcf3ce44SJohn Forte                 IMA_OID oid,
2007*fcf3ce44SJohn Forte                 IMA_UINT maxConnections
2008*fcf3ce44SJohn Forte );
2009*fcf3ce44SJohn Forte 
2010*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDefaultTime2RetainProperties(
2011*fcf3ce44SJohn Forte                 IMA_OID oid,
2012*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
2013*fcf3ce44SJohn Forte );
2014*fcf3ce44SJohn Forte 
2015*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetDefaultTime2Retain(
2016*fcf3ce44SJohn Forte                 IMA_OID oid,
2017*fcf3ce44SJohn Forte                 IMA_UINT defaultTime2Retain
2018*fcf3ce44SJohn Forte );
2019*fcf3ce44SJohn Forte 
2020*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDefaultTime2WaitProperties(
2021*fcf3ce44SJohn Forte                 IMA_OID oid,
2022*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
2023*fcf3ce44SJohn Forte );
2024*fcf3ce44SJohn Forte 
2025*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetDefaultTime2Wait(
2026*fcf3ce44SJohn Forte                 IMA_OID oid,
2027*fcf3ce44SJohn Forte                 IMA_UINT defaultTime2Wait
2028*fcf3ce44SJohn Forte );
2029*fcf3ce44SJohn Forte 
2030*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetMaxOutstandingR2TProperties(
2031*fcf3ce44SJohn Forte                 IMA_OID oid,
2032*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
2033*fcf3ce44SJohn Forte );
2034*fcf3ce44SJohn Forte 
2035*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetMaxOutstandingR2T(
2036*fcf3ce44SJohn Forte                 IMA_OID oid,
2037*fcf3ce44SJohn Forte                 IMA_UINT maxOutstandingR2T
2038*fcf3ce44SJohn Forte );
2039*fcf3ce44SJohn Forte 
2040*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetErrorRecoveryLevelProperties(
2041*fcf3ce44SJohn Forte                 IMA_OID oid,
2042*fcf3ce44SJohn Forte                 IMA_MIN_MAX_VALUE *pProps
2043*fcf3ce44SJohn Forte );
2044*fcf3ce44SJohn Forte 
2045*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetErrorRecoveryLevel(
2046*fcf3ce44SJohn Forte                 IMA_OID oid,
2047*fcf3ce44SJohn Forte                 IMA_UINT errorRecoveryLevel
2048*fcf3ce44SJohn Forte );
2049*fcf3ce44SJohn Forte 
2050*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetInitialR2TProperties(
2051*fcf3ce44SJohn Forte                 IMA_OID oid,
2052*fcf3ce44SJohn Forte                 IMA_BOOL_VALUE *pProps
2053*fcf3ce44SJohn Forte );
2054*fcf3ce44SJohn Forte 
2055*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetInitialR2T(
2056*fcf3ce44SJohn Forte                 IMA_OID oid,
2057*fcf3ce44SJohn Forte                 IMA_BOOL initialR2T
2058*fcf3ce44SJohn Forte );
2059*fcf3ce44SJohn Forte 
2060*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetImmediateDataProperties(
2061*fcf3ce44SJohn Forte                 IMA_OID oid,
2062*fcf3ce44SJohn Forte                 IMA_BOOL_VALUE *pProps
2063*fcf3ce44SJohn Forte );
2064*fcf3ce44SJohn Forte 
2065*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetImmediateData(
2066*fcf3ce44SJohn Forte                 IMA_OID oid,
2067*fcf3ce44SJohn Forte                 IMA_BOOL immediateData
2068*fcf3ce44SJohn Forte );
2069*fcf3ce44SJohn Forte 
2070*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDataPduInOrderProperties(
2071*fcf3ce44SJohn Forte                 IMA_OID oid,
2072*fcf3ce44SJohn Forte                 IMA_BOOL_VALUE *pProps
2073*fcf3ce44SJohn Forte );
2074*fcf3ce44SJohn Forte 
2075*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetDataPduInOrder(
2076*fcf3ce44SJohn Forte                 IMA_OID oid,
2077*fcf3ce44SJohn Forte                 IMA_BOOL dataPduInOrder
2078*fcf3ce44SJohn Forte );
2079*fcf3ce44SJohn Forte 
2080*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDataSequenceInOrderProperties(
2081*fcf3ce44SJohn Forte                 IMA_OID oid,
2082*fcf3ce44SJohn Forte                 IMA_BOOL_VALUE *pProps
2083*fcf3ce44SJohn Forte );
2084*fcf3ce44SJohn Forte 
2085*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetDataSequenceInOrder(
2086*fcf3ce44SJohn Forte                 IMA_OID oid,
2087*fcf3ce44SJohn Forte                 IMA_BOOL dataSequenceInOrder
2088*fcf3ce44SJohn Forte );
2089*fcf3ce44SJohn Forte 
2090*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetStatisticsCollection(
2091*fcf3ce44SJohn Forte                 IMA_OID oid,
2092*fcf3ce44SJohn Forte                 IMA_BOOL enableStatisticsCollection
2093*fcf3ce44SJohn Forte );
2094*fcf3ce44SJohn Forte 
2095*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetNetworkPortStatus(
2096*fcf3ce44SJohn Forte                 IMA_OID portOid,
2097*fcf3ce44SJohn Forte                 IMA_NETWORK_PORT_STATUS *pStatus
2098*fcf3ce44SJohn Forte );
2099*fcf3ce44SJohn Forte 
2100*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetTargetOidList(
2101*fcf3ce44SJohn Forte                 IMA_OID oid,
2102*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
2103*fcf3ce44SJohn Forte );
2104*fcf3ce44SJohn Forte 
2105*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_RemoveStaleData(
2106*fcf3ce44SJohn Forte                 IMA_OID lhbaOid
2107*fcf3ce44SJohn Forte );
2108*fcf3ce44SJohn Forte 
2109*fcf3ce44SJohn Forte IMA_API	IMA_STATUS IMA_SetIsnsDiscovery(
2110*fcf3ce44SJohn Forte 		IMA_OID phbaId,
2111*fcf3ce44SJohn Forte 		IMA_BOOL enableIsnsDiscovery,
2112*fcf3ce44SJohn Forte 		IMA_ISNS_DISCOVERY_METHOD discoveryMethod,
2113*fcf3ce44SJohn Forte 		const IMA_HOST_ID *iSnsHost
2114*fcf3ce44SJohn Forte );
2115*fcf3ce44SJohn Forte 
2116*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetSlpDiscovery(
2117*fcf3ce44SJohn Forte                 IMA_OID phbaOid,
2118*fcf3ce44SJohn Forte                 IMA_BOOL enableSlpDiscovery
2119*fcf3ce44SJohn Forte );
2120*fcf3ce44SJohn Forte 
2121*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetStaticDiscovery(
2122*fcf3ce44SJohn Forte                 IMA_OID phbaOid,
2123*fcf3ce44SJohn Forte                 IMA_BOOL enableStaticDiscovery
2124*fcf3ce44SJohn Forte );
2125*fcf3ce44SJohn Forte 
2126*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetSendTargetsDiscovery(
2127*fcf3ce44SJohn Forte                 IMA_OID oid,
2128*fcf3ce44SJohn Forte                 IMA_BOOL enableSendTargetsDiscovery
2129*fcf3ce44SJohn Forte );
2130*fcf3ce44SJohn Forte 
2131*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_RemoveStaticDiscoveryTarget(
2132*fcf3ce44SJohn Forte                 IMA_OID targetOid
2133*fcf3ce44SJohn Forte );
2134*fcf3ce44SJohn Forte 
2135*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetIpsecProperties(
2136*fcf3ce44SJohn Forte                 IMA_OID phbaOid,
2137*fcf3ce44SJohn Forte                 IMA_IPSEC_PROPERTIES *pProps
2138*fcf3ce44SJohn Forte );
2139*fcf3ce44SJohn Forte 
2140*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPnpOidList(
2141*fcf3ce44SJohn Forte                 IMA_OID oid,
2142*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
2143*fcf3ce44SJohn Forte );
2144*fcf3ce44SJohn Forte 
2145*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPhbaDownloadProperties(
2146*fcf3ce44SJohn Forte                 IMA_OID phbaOid,
2147*fcf3ce44SJohn Forte                 IMA_PHBA_DOWNLOAD_PROPERTIES *pProps
2148*fcf3ce44SJohn Forte );
2149*fcf3ce44SJohn Forte 
2150*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_IsPhbaDownloadFile(
2151*fcf3ce44SJohn Forte                 IMA_OID phbaOid,
2152*fcf3ce44SJohn Forte                 const IMA_WCHAR *pFileName,
2153*fcf3ce44SJohn Forte                 IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES *pProps
2154*fcf3ce44SJohn Forte );
2155*fcf3ce44SJohn Forte 
2156*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_PhbaDownload(
2157*fcf3ce44SJohn Forte                 IMA_OID phbaOid,
2158*fcf3ce44SJohn Forte                 IMA_PHBA_DOWNLOAD_IMAGE_TYPE imageType,
2159*fcf3ce44SJohn Forte                 const IMA_WCHAR *pFileName
2160*fcf3ce44SJohn Forte );
2161*fcf3ce44SJohn Forte 
2162*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetNetworkPortalProperties(
2163*fcf3ce44SJohn Forte                 IMA_OID networkPortalOid,
2164*fcf3ce44SJohn Forte                 IMA_NETWORK_PORTAL_PROPERTIES *pProps
2165*fcf3ce44SJohn Forte );
2166*fcf3ce44SJohn Forte 
2167*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetNetworkPortalIpAddress(
2168*fcf3ce44SJohn Forte                 IMA_OID networkPortalOid,
2169*fcf3ce44SJohn Forte                 const IMA_IP_ADDRESS NewIpAddress
2170*fcf3ce44SJohn Forte );
2171*fcf3ce44SJohn Forte 
2172*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLnpOidList(
2173*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
2174*fcf3ce44SJohn Forte );
2175*fcf3ce44SJohn Forte 
2176*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLnpProperties(
2177*fcf3ce44SJohn Forte                 IMA_OID lnpOid,
2178*fcf3ce44SJohn Forte                 IMA_LNP_PROPERTIES *pProps
2179*fcf3ce44SJohn Forte );
2180*fcf3ce44SJohn Forte 
2181*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPnpProperties(
2182*fcf3ce44SJohn Forte                 IMA_OID pnpOid,
2183*fcf3ce44SJohn Forte                 IMA_PNP_PROPERTIES *pProps
2184*fcf3ce44SJohn Forte );
2185*fcf3ce44SJohn Forte 
2186*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPnpStatistics(
2187*fcf3ce44SJohn Forte                 IMA_OID pnpOid,
2188*fcf3ce44SJohn Forte                 IMA_PNP_STATISTICS *pStats
2189*fcf3ce44SJohn Forte );
2190*fcf3ce44SJohn Forte 
2191*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetTargetProperties(
2192*fcf3ce44SJohn Forte                 IMA_OID targetOid,
2193*fcf3ce44SJohn Forte                 IMA_TARGET_PROPERTIES *pProps
2194*fcf3ce44SJohn Forte );
2195*fcf3ce44SJohn Forte 
2196*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetTargetErrorStatistics(
2197*fcf3ce44SJohn Forte                 IMA_OID targetOid,
2198*fcf3ce44SJohn Forte                 IMA_TARGET_ERROR_STATISTICS *pStats
2199*fcf3ce44SJohn Forte );
2200*fcf3ce44SJohn Forte 
2201*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLuOidList(
2202*fcf3ce44SJohn Forte                 IMA_OID oid,
2203*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
2204*fcf3ce44SJohn Forte );
2205*fcf3ce44SJohn Forte 
2206*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLuOid(
2207*fcf3ce44SJohn Forte                 IMA_OID targetOid,
2208*fcf3ce44SJohn Forte                 IMA_UINT64 lun,
2209*fcf3ce44SJohn Forte                 IMA_OID *pluOid
2210*fcf3ce44SJohn Forte );
2211*fcf3ce44SJohn Forte 
2212*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetLuProperties(
2213*fcf3ce44SJohn Forte                 IMA_OID luOid,
2214*fcf3ce44SJohn Forte                 IMA_LU_PROPERTIES *pProps
2215*fcf3ce44SJohn Forte );
2216*fcf3ce44SJohn Forte 
2217*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetStatisticsProperties(
2218*fcf3ce44SJohn Forte                 IMA_OID oid,
2219*fcf3ce44SJohn Forte                 IMA_STATISTICS_PROPERTIES *pProps
2220*fcf3ce44SJohn Forte );
2221*fcf3ce44SJohn Forte 
2222*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDeviceStatistics(
2223*fcf3ce44SJohn Forte                 IMA_OID oid,
2224*fcf3ce44SJohn Forte                 IMA_DEVICE_STATISTICS *pStats
2225*fcf3ce44SJohn Forte );
2226*fcf3ce44SJohn Forte 
2227*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_LuInquiry(
2228*fcf3ce44SJohn Forte                 IMA_OID deviceOid,
2229*fcf3ce44SJohn Forte                 IMA_BOOL evpd,
2230*fcf3ce44SJohn Forte                 IMA_BOOL cmddt,
2231*fcf3ce44SJohn Forte                 IMA_BYTE pageCode,
2232*fcf3ce44SJohn Forte 
2233*fcf3ce44SJohn Forte                 IMA_BYTE *pOutputBuffer,
2234*fcf3ce44SJohn Forte                 IMA_UINT *pOutputBufferLength,
2235*fcf3ce44SJohn Forte 
2236*fcf3ce44SJohn Forte                 IMA_BYTE *pSenseBuffer,
2237*fcf3ce44SJohn Forte                 IMA_UINT *pSenseBufferLength
2238*fcf3ce44SJohn Forte );
2239*fcf3ce44SJohn Forte 
2240*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_LuReadCapacity(
2241*fcf3ce44SJohn Forte                 IMA_OID deviceOid,
2242*fcf3ce44SJohn Forte                 IMA_UINT cdbLength,
2243*fcf3ce44SJohn Forte                 IMA_BYTE *pOutputBuffer,
2244*fcf3ce44SJohn Forte                 IMA_UINT *pOutputBufferLength,
2245*fcf3ce44SJohn Forte 
2246*fcf3ce44SJohn Forte                 IMA_BYTE *pSenseBuffer,
2247*fcf3ce44SJohn Forte                 IMA_UINT *pSenseBufferLength
2248*fcf3ce44SJohn Forte );
2249*fcf3ce44SJohn Forte 
2250*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_LuReportLuns(
2251*fcf3ce44SJohn Forte                 IMA_OID deviceOid,
2252*fcf3ce44SJohn Forte                 IMA_BOOL sendToWellKnownLun,
2253*fcf3ce44SJohn Forte                 IMA_BYTE selectReport,
2254*fcf3ce44SJohn Forte 
2255*fcf3ce44SJohn Forte                 IMA_BYTE *pOutputBuffer,
2256*fcf3ce44SJohn Forte                 IMA_UINT *pOutputBufferLength,
2257*fcf3ce44SJohn Forte 
2258*fcf3ce44SJohn Forte                 IMA_BYTE *pSenseBuffer,
2259*fcf3ce44SJohn Forte                 IMA_UINT *pSenseBufferLength
2260*fcf3ce44SJohn Forte );
2261*fcf3ce44SJohn Forte 
2262*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_ExposeLu(
2263*fcf3ce44SJohn Forte                 IMA_OID luOid
2264*fcf3ce44SJohn Forte );
2265*fcf3ce44SJohn Forte 
2266*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_UnexposeLu(
2267*fcf3ce44SJohn Forte                 IMA_OID luOid
2268*fcf3ce44SJohn Forte );
2269*fcf3ce44SJohn Forte 
2270*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetPhbaStatus(
2271*fcf3ce44SJohn Forte                 IMA_OID hbaOid,
2272*fcf3ce44SJohn Forte                 IMA_PHBA_STATUS *pStatus
2273*fcf3ce44SJohn Forte );
2274*fcf3ce44SJohn Forte 
2275*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_RegisterForObjectVisibilityChanges (
2276*fcf3ce44SJohn Forte                 IMA_OBJECT_VISIBILITY_FN pClientFn
2277*fcf3ce44SJohn Forte );
2278*fcf3ce44SJohn Forte 
2279*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_DeregisterForObjectVisibilityChanges (
2280*fcf3ce44SJohn Forte                 IMA_OBJECT_VISIBILITY_FN pClientFn
2281*fcf3ce44SJohn Forte );
2282*fcf3ce44SJohn Forte 
2283*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_RegisterForObjectPropertyChanges (
2284*fcf3ce44SJohn Forte                 IMA_OBJECT_PROPERTY_FN pClientFn
2285*fcf3ce44SJohn Forte );
2286*fcf3ce44SJohn Forte 
2287*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_DeregisterForObjectPropertyChanges (
2288*fcf3ce44SJohn Forte                 IMA_OBJECT_PROPERTY_FN pClientFn
2289*fcf3ce44SJohn Forte );
2290*fcf3ce44SJohn Forte 
2291*fcf3ce44SJohn Forte 
2292*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetAddressKeyProperties(
2293*fcf3ce44SJohn Forte                 IMA_OID targetOid,
2294*fcf3ce44SJohn Forte                 IMA_ADDRESS_KEY_PROPERTIES **ppProps
2295*fcf3ce44SJohn Forte );
2296*fcf3ce44SJohn Forte 
2297*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetIpProperties(
2298*fcf3ce44SJohn Forte                 IMA_OID oid,
2299*fcf3ce44SJohn Forte                 IMA_IP_PROPERTIES *pProps
2300*fcf3ce44SJohn Forte );
2301*fcf3ce44SJohn Forte 
2302*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetIpConfigMethod(
2303*fcf3ce44SJohn Forte                 IMA_OID oid,
2304*fcf3ce44SJohn Forte                 IMA_BOOL enableDhcpIpConfiguration
2305*fcf3ce44SJohn Forte );
2306*fcf3ce44SJohn Forte 
2307*fcf3ce44SJohn Forte IMA_API	IMA_STATUS IMA_SetIsnsDiscovery(
2308*fcf3ce44SJohn Forte 		IMA_OID oid,
2309*fcf3ce44SJohn Forte 		IMA_BOOL enableIsnsDiscovery,
2310*fcf3ce44SJohn Forte 		IMA_ISNS_DISCOVERY_METHOD discoveryMethod,
2311*fcf3ce44SJohn Forte 		const IMA_HOST_ID *iSnsHost
2312*fcf3ce44SJohn Forte );
2313*fcf3ce44SJohn Forte 
2314*fcf3ce44SJohn Forte 
2315*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetSubnetMask(
2316*fcf3ce44SJohn Forte                 IMA_OID oid,
2317*fcf3ce44SJohn Forte                 IMA_IP_ADDRESS subnetMask
2318*fcf3ce44SJohn Forte );
2319*fcf3ce44SJohn Forte 
2320*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetDnsServerAddress(
2321*fcf3ce44SJohn Forte                 IMA_OID oid,
2322*fcf3ce44SJohn Forte                 const IMA_IP_ADDRESS *pPrimaryDnsServerAddress,
2323*fcf3ce44SJohn Forte                 const IMA_IP_ADDRESS *pAlternateDnsServerAddress
2324*fcf3ce44SJohn Forte );
2325*fcf3ce44SJohn Forte 
2326*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetDefaultGateway(
2327*fcf3ce44SJohn Forte                 IMA_OID oid,
2328*fcf3ce44SJohn Forte                 IMA_IP_ADDRESS defaultGateway
2329*fcf3ce44SJohn Forte );
2330*fcf3ce44SJohn Forte 
2331*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetSupportedAuthMethods(
2332*fcf3ce44SJohn Forte                 IMA_OID lhbaOid,
2333*fcf3ce44SJohn Forte                 IMA_BOOL getSettableMethods,
2334*fcf3ce44SJohn Forte                 IMA_UINT *pMethodCount,
2335*fcf3ce44SJohn Forte                 IMA_AUTHMETHOD *pMethodList
2336*fcf3ce44SJohn Forte );
2337*fcf3ce44SJohn Forte 
2338*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetInUseInitiatorAuthMethods(
2339*fcf3ce44SJohn Forte                 IMA_OID lhbaOid,
2340*fcf3ce44SJohn Forte                 IMA_UINT        *pMethodCount,
2341*fcf3ce44SJohn Forte                 IMA_AUTHMETHOD  *pMethodList
2342*fcf3ce44SJohn Forte );
2343*fcf3ce44SJohn Forte 
2344*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetInitiatorAuthParms(
2345*fcf3ce44SJohn Forte                 IMA_OID lhbaOid,
2346*fcf3ce44SJohn Forte                 IMA_AUTHMETHOD method,
2347*fcf3ce44SJohn Forte                 IMA_INITIATOR_AUTHPARMS *pParms
2348*fcf3ce44SJohn Forte );
2349*fcf3ce44SJohn Forte 
2350*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetInitiatorAuthMethods(
2351*fcf3ce44SJohn Forte                 IMA_OID lhbaOid,
2352*fcf3ce44SJohn Forte                 IMA_UINT methodCount,
2353*fcf3ce44SJohn Forte                 const IMA_AUTHMETHOD *pMethodList
2354*fcf3ce44SJohn Forte );
2355*fcf3ce44SJohn Forte 
2356*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetInitiatorAuthParms(
2357*fcf3ce44SJohn Forte                 IMA_OID lhbaOid,
2358*fcf3ce44SJohn Forte                 IMA_AUTHMETHOD method,
2359*fcf3ce44SJohn Forte                 const IMA_INITIATOR_AUTHPARMS *pParms
2360*fcf3ce44SJohn Forte );
2361*fcf3ce44SJohn Forte 
2362*fcf3ce44SJohn Forte 
2363*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetStaticDiscoveryTargetOidList (
2364*fcf3ce44SJohn Forte                 IMA_OID oid,
2365*fcf3ce44SJohn Forte                 IMA_OID_LIST **ppList
2366*fcf3ce44SJohn Forte );
2367*fcf3ce44SJohn Forte 
2368*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetStaticDiscoveryTargetProperties(
2369*fcf3ce44SJohn Forte 		IMA_OID staticDiscoveryTargetOid,
2370*fcf3ce44SJohn Forte 		IMA_STATIC_DISCOVERY_TARGET_PROPERTIES *pProps
2371*fcf3ce44SJohn Forte );
2372*fcf3ce44SJohn Forte 
2373*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_SetStaticDiscovery(
2374*fcf3ce44SJohn Forte 		IMA_OID oid,
2375*fcf3ce44SJohn Forte 		IMA_BOOL enableStaticDiscovery
2376*fcf3ce44SJohn Forte );
2377*fcf3ce44SJohn Forte 
2378*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDiscoveryProperties(
2379*fcf3ce44SJohn Forte 		IMA_OID oid,
2380*fcf3ce44SJohn Forte 		IMA_DISCOVERY_PROPERTIES *pProps
2381*fcf3ce44SJohn Forte );
2382*fcf3ce44SJohn Forte 
2383*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_AddDiscoveryAddress(
2384*fcf3ce44SJohn Forte 		IMA_OID oid,
2385*fcf3ce44SJohn Forte 		const IMA_TARGET_ADDRESS discoveryAddress,
2386*fcf3ce44SJohn Forte 		IMA_OID *pDiscoveryAddressOid
2387*fcf3ce44SJohn Forte );
2388*fcf3ce44SJohn Forte 
2389*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_AddStaticDiscoveryTarget(
2390*fcf3ce44SJohn Forte 		IMA_OID oid,
2391*fcf3ce44SJohn Forte 		const IMA_STATIC_DISCOVERY_TARGET staticDiscoveryTarget,
2392*fcf3ce44SJohn Forte 		IMA_OID *pStaticDiscoveryTargetOid
2393*fcf3ce44SJohn Forte );
2394*fcf3ce44SJohn Forte 
2395*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetAddressKeys(
2396*fcf3ce44SJohn Forte 		IMA_OID targetOid,
2397*fcf3ce44SJohn Forte 		IMA_ADDRESS_KEYS **ppKeys
2398*fcf3ce44SJohn Forte );
2399*fcf3ce44SJohn Forte 
2400*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetSessionOidList (
2401*fcf3ce44SJohn Forte 		IMA_OID oid,
2402*fcf3ce44SJohn Forte 		IMA_OID_LIST **ppList
2403*fcf3ce44SJohn Forte );
2404*fcf3ce44SJohn Forte 
2405*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetConnectionOidList (
2406*fcf3ce44SJohn Forte 		IMA_OID oid,
2407*fcf3ce44SJohn Forte 		IMA_OID_LIST **ppList
2408*fcf3ce44SJohn Forte );
2409*fcf3ce44SJohn Forte 
2410*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDiscoveryAddressOidList (
2411*fcf3ce44SJohn Forte 		IMA_OID oid,
2412*fcf3ce44SJohn Forte 		IMA_OID_LIST **ppList
2413*fcf3ce44SJohn Forte );
2414*fcf3ce44SJohn Forte 
2415*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_GetDiscoveryAddressProperties (
2416*fcf3ce44SJohn Forte 		IMA_OID discoveryAddressOid,
2417*fcf3ce44SJohn Forte 		IMA_DISCOVERY_ADDRESS_PROPERTIES *pProps
2418*fcf3ce44SJohn Forte );
2419*fcf3ce44SJohn Forte 
2420*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_RemoveDiscoveryAddress (
2421*fcf3ce44SJohn Forte 		IMA_OID oid
2422*fcf3ce44SJohn Forte );
2423*fcf3ce44SJohn Forte 
2424*fcf3ce44SJohn Forte IMA_API IMA_STATUS QIMA_SetUpdateInterval(IMA_OID pluginOid, time_t interval);
2425*fcf3ce44SJohn Forte 
2426*fcf3ce44SJohn Forte IMA_API IMA_STATUS IMA_CommitHbaParameters (IMA_OID lhba, IMA_COMMIT_LEVEL commitLevel);
2427*fcf3ce44SJohn Forte 
2428*fcf3ce44SJohn Forte #endif
2429*fcf3ce44SJohn Forte 
2430*fcf3ce44SJohn Forte #ifdef __cplusplus
2431*fcf3ce44SJohn Forte };
2432*fcf3ce44SJohn Forte #endif
2433*fcf3ce44SJohn Forte 
2434*fcf3ce44SJohn Forte 
2435