xref: /onnv-gate/usr/src/lib/libima/common/ima.h (revision 10156:a1ab3f203504)
17836SJohn.Forte@Sun.COM /*
27836SJohn.Forte@Sun.COM  * CDDL HEADER START
37836SJohn.Forte@Sun.COM  *
47836SJohn.Forte@Sun.COM  * The contents of this file are subject to the terms of the
57836SJohn.Forte@Sun.COM  * Common Development and Distribution License (the "License").
67836SJohn.Forte@Sun.COM  * You may not use this file except in compliance with the License.
77836SJohn.Forte@Sun.COM  *
87836SJohn.Forte@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97836SJohn.Forte@Sun.COM  * or http://www.opensolaris.org/os/licensing.
107836SJohn.Forte@Sun.COM  * See the License for the specific language governing permissions
117836SJohn.Forte@Sun.COM  * and limitations under the License.
127836SJohn.Forte@Sun.COM  *
137836SJohn.Forte@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
147836SJohn.Forte@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157836SJohn.Forte@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
167836SJohn.Forte@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
177836SJohn.Forte@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
187836SJohn.Forte@Sun.COM  *
197836SJohn.Forte@Sun.COM  * CDDL HEADER END
207836SJohn.Forte@Sun.COM  */
217836SJohn.Forte@Sun.COM /*
22*10156SZhang.Yi@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
237836SJohn.Forte@Sun.COM  * Use is subject to license terms.
247836SJohn.Forte@Sun.COM  */
257836SJohn.Forte@Sun.COM 
267836SJohn.Forte@Sun.COM /******************************************************************************
277836SJohn.Forte@Sun.COM  *
287836SJohn.Forte@Sun.COM  * Description
297836SJohn.Forte@Sun.COM  *  Ima.h - general header file for client
307836SJohn.Forte@Sun.COM  *       and library developers
317836SJohn.Forte@Sun.COM  *
327836SJohn.Forte@Sun.COM  * License:
337836SJohn.Forte@Sun.COM  *  The contents of this file are subject to the SNIA Public License
347836SJohn.Forte@Sun.COM  *  Version 1.0 (the "License"); you may not use this file except in
357836SJohn.Forte@Sun.COM  *  compliance with the License. You may obtain a copy of the License at
367836SJohn.Forte@Sun.COM  *
377836SJohn.Forte@Sun.COM  *  /http://www.snia.org/English/Resources/Code/OpenSource.html
387836SJohn.Forte@Sun.COM  *
397836SJohn.Forte@Sun.COM  *  Software distributed under the License is distributed on an "AS IS"
407836SJohn.Forte@Sun.COM  *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
417836SJohn.Forte@Sun.COM  *  the License for the specific language governing rights and limitations
427836SJohn.Forte@Sun.COM  *  under the License.
437836SJohn.Forte@Sun.COM  *
447836SJohn.Forte@Sun.COM  * The Original Code is  SNIA HBA API and IMA general header file
457836SJohn.Forte@Sun.COM  *
467836SJohn.Forte@Sun.COM  * The Initial Developer of the Original Code is:
477836SJohn.Forte@Sun.COM  *      Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com)
487836SJohn.Forte@Sun.COM  *      David Dillard       VERITAS Software        david.dillard@veritas.com
497836SJohn.Forte@Sun.COM  *
507836SJohn.Forte@Sun.COM  * Contributor(s):
517836SJohn.Forte@Sun.COM  *  Jeff Ding, Adaptec, Inc. (jding@corp.adaptec.com)
527836SJohn.Forte@Sun.COM  *  Dave Wysochanski, Network Appliance, Inc. (davidw@netapp.com)
537836SJohn.Forte@Sun.COM  *
547836SJohn.Forte@Sun.COM  ******************************************************************************
557836SJohn.Forte@Sun.COM  *
567836SJohn.Forte@Sun.COM  *   Changes:
577836SJohn.Forte@Sun.COM  *  09/24/2003 Initial Draft
587836SJohn.Forte@Sun.COM  *  (for other changes... see the CVS logs)
597836SJohn.Forte@Sun.COM  *  12/15/2003 corrected the defined parameter in IMA_SetPhbaIsnsDiscovery().
607836SJohn.Forte@Sun.COM  *             lower case the computer name as iscsi name in
617836SJohn.Forte@Sun.COM  *             IMA_GenerateNodeName().
627836SJohn.Forte@Sun.COM  *  03/01/2004 Brought up to date with respect to IMA v1.0.1; made formatting
637836SJohn.Forte@Sun.COM  *             changes - lines to 80 cols - for readability.
647836SJohn.Forte@Sun.COM  *
657836SJohn.Forte@Sun.COM  *  01/21/2005 Updated to support IMA 1.1.3.
667836SJohn.Forte@Sun.COM  *****************************************************************************/
677836SJohn.Forte@Sun.COM #ifdef __cplusplus
687836SJohn.Forte@Sun.COM extern "C" {
697836SJohn.Forte@Sun.COM #endif
707836SJohn.Forte@Sun.COM 
717836SJohn.Forte@Sun.COM #ifndef IMA_H
727836SJohn.Forte@Sun.COM #define IMA_H
737836SJohn.Forte@Sun.COM 
747836SJohn.Forte@Sun.COM #include <time.h>
757836SJohn.Forte@Sun.COM #include <wchar.h>
767836SJohn.Forte@Sun.COM 
777836SJohn.Forte@Sun.COM 
787836SJohn.Forte@Sun.COM /* Library version string */
797836SJohn.Forte@Sun.COM #define HBA_LIBVERSION 2
807836SJohn.Forte@Sun.COM 
81*10156SZhang.Yi@Sun.COM #define	IMA_MAX_CALLBACK_PER_PLUGIN	64
82*10156SZhang.Yi@Sun.COM #define IMA_MAX_NUM_PLUGINS		32
83*10156SZhang.Yi@Sun.COM 
847836SJohn.Forte@Sun.COM /* DLL imports for WIN32 operation */
857836SJohn.Forte@Sun.COM #ifdef WIN32
867836SJohn.Forte@Sun.COM #ifdef IMA_EXPORTS
877836SJohn.Forte@Sun.COM #define IMA_API __declspec(dllexport)
887836SJohn.Forte@Sun.COM #else
897836SJohn.Forte@Sun.COM #define IMA_API __declspec(dllimport)
907836SJohn.Forte@Sun.COM #endif
917836SJohn.Forte@Sun.COM #else
927836SJohn.Forte@Sun.COM #define IMA_API
937836SJohn.Forte@Sun.COM #endif
947836SJohn.Forte@Sun.COM 
957836SJohn.Forte@Sun.COM /* OS specific definitions */
967836SJohn.Forte@Sun.COM 
977836SJohn.Forte@Sun.COM #ifdef WIN32
987836SJohn.Forte@Sun.COM typedef unsigned char   IMA_UINT8;  // Unsigned  8 bits
997836SJohn.Forte@Sun.COM typedef char            IMA_INT8;   // Signed    8 bits
1007836SJohn.Forte@Sun.COM typedef unsigned short  IMA_UINT16; // Unsigned 16 bits
1017836SJohn.Forte@Sun.COM typedef short           IMA_INT16;  // Signed   16 bits
1027836SJohn.Forte@Sun.COM typedef unsigned int    IMA_UINT32; // Unsigned 32 bits
1037836SJohn.Forte@Sun.COM typedef int             IMA_INT32;  // Signed   32 bits
1047836SJohn.Forte@Sun.COM typedef void*           IMA_PVOID;  // Pointer  to void
1057836SJohn.Forte@Sun.COM typedef IMA_UINT32      IMA_VOID32; // Opaque   32 bits
1067836SJohn.Forte@Sun.COM 
1077836SJohn.Forte@Sun.COM 
1087836SJohn.Forte@Sun.COM /* Don't confuse, _WIN32 with WIN32... OK, how do you accompish that */
1097836SJohn.Forte@Sun.COM #ifdef _WIN32
1107836SJohn.Forte@Sun.COM typedef __int64             IMA_INT64;
1117836SJohn.Forte@Sun.COM typedef unsigned __int64    IMA_UINT64;
1127836SJohn.Forte@Sun.COM #else
1137836SJohn.Forte@Sun.COM typedef struct {
1147836SJohn.Forte@Sun.COM     TN_UINT32   lo_val;
1157836SJohn.Forte@Sun.COM     TN_UINT32   hi_val;
1167836SJohn.Forte@Sun.COM } IMA_INT64;
1177836SJohn.Forte@Sun.COM 
1187836SJohn.Forte@Sun.COM typedef struct {
1197836SJohn.Forte@Sun.COM     TN_UINT32   lo_val;
1207836SJohn.Forte@Sun.COM     TN_UINT32   hi_val;
1217836SJohn.Forte@Sun.COM } IMA_UINT64;
1227836SJohn.Forte@Sun.COM #endif  /*  #ifdef _WIN32   */
1237836SJohn.Forte@Sun.COM 
1247836SJohn.Forte@Sun.COM 
1257836SJohn.Forte@Sun.COM #else
1267836SJohn.Forte@Sun.COM 
1277836SJohn.Forte@Sun.COM /* Note this section needs to be cleaned up for various Unix platforms */
1287836SJohn.Forte@Sun.COM typedef unsigned char   IMA_UINT8;  /* Unsigned  8 bits */
1297836SJohn.Forte@Sun.COM typedef char            IMA_INT8;   /* Signed    8 bits */
1307836SJohn.Forte@Sun.COM typedef unsigned short  IMA_UINT16; /* Unsigned 16 bits */
1317836SJohn.Forte@Sun.COM typedef short           IMA_INT16;  /* Signed   16 bits */
1327836SJohn.Forte@Sun.COM typedef unsigned int    IMA_UINT32; /* Unsigned 32 bits */
1337836SJohn.Forte@Sun.COM typedef int             IMA_INT32;  /* Signed   32 bits */
1347836SJohn.Forte@Sun.COM typedef void*           IMA_PVOID;  /* Pointer  to void */
1357836SJohn.Forte@Sun.COM typedef IMA_UINT32      IMA_VOID32; /* Opaque   32 bits */
1367836SJohn.Forte@Sun.COM typedef long long       IMA_INT64;
1377836SJohn.Forte@Sun.COM typedef long long       IMA_UINT64;
1387836SJohn.Forte@Sun.COM 
1397836SJohn.Forte@Sun.COM #endif  /*  #ifdef WIN32 */
1407836SJohn.Forte@Sun.COM 
1417836SJohn.Forte@Sun.COM 
1427836SJohn.Forte@Sun.COM 
1437836SJohn.Forte@Sun.COM /**
1447836SJohn.Forte@Sun.COM *******************************************************************************
1457836SJohn.Forte@Sun.COM *
1467836SJohn.Forte@Sun.COM * Generic IMA Constant Definitions
1477836SJohn.Forte@Sun.COM *
1487836SJohn.Forte@Sun.COM *******************************************************************************
1497836SJohn.Forte@Sun.COM */
1507836SJohn.Forte@Sun.COM #define RL_LIBRARY_SEQNUM           0
1517836SJohn.Forte@Sun.COM #define RL_SHARED_NODE_SEQNUM       0
1527836SJohn.Forte@Sun.COM 
1537836SJohn.Forte@Sun.COM /**
1547836SJohn.Forte@Sun.COM * Value which can be assigned to an IMA_BOOL and or an IMA_XBOOL.
1557836SJohn.Forte@Sun.COM */
1567836SJohn.Forte@Sun.COM #define IMA_TRUE        1
1577836SJohn.Forte@Sun.COM 
1587836SJohn.Forte@Sun.COM /**
1597836SJohn.Forte@Sun.COM * Value which can be assigned to an IMA_BOOL and or an IMA_XBOOL.
1607836SJohn.Forte@Sun.COM */
1617836SJohn.Forte@Sun.COM #define IMA_FALSE       0
1627836SJohn.Forte@Sun.COM 
1637836SJohn.Forte@Sun.COM /**
1647836SJohn.Forte@Sun.COM * Value which can be assigned to an IMA_XBOOL.
1657836SJohn.Forte@Sun.COM */
1667836SJohn.Forte@Sun.COM #define IMA_UNKNOWN     0xFFFFFFFF
1677836SJohn.Forte@Sun.COM 
1687836SJohn.Forte@Sun.COM 
1697836SJohn.Forte@Sun.COM 
1707836SJohn.Forte@Sun.COM /**
1717836SJohn.Forte@Sun.COM *******************************************************************************
1727836SJohn.Forte@Sun.COM *
1737836SJohn.Forte@Sun.COM * Base IMA Type Definitions
1747836SJohn.Forte@Sun.COM *
1757836SJohn.Forte@Sun.COM * @note Types that have a specific size must be defined ImaOsTypes.h which is
1767836SJohn.Forte@Sun.COM *       an OS specific include file which is included by this file.
1777836SJohn.Forte@Sun.COM *
1787836SJohn.Forte@Sun.COM *******************************************************************************
1797836SJohn.Forte@Sun.COM */
1807836SJohn.Forte@Sun.COM 
1817836SJohn.Forte@Sun.COM /**
1827836SJohn.Forte@Sun.COM * A character.
1837836SJohn.Forte@Sun.COM */
1847836SJohn.Forte@Sun.COM typedef char IMA_CHAR;
1857836SJohn.Forte@Sun.COM 
1867836SJohn.Forte@Sun.COM /**
1877836SJohn.Forte@Sun.COM * A wide character.
1887836SJohn.Forte@Sun.COM */
1897836SJohn.Forte@Sun.COM typedef wchar_t IMA_WCHAR;
1907836SJohn.Forte@Sun.COM 
1917836SJohn.Forte@Sun.COM /**
1927836SJohn.Forte@Sun.COM * An integer.  Spec states this is 32 bits on 32-bit systems, and 64-bit
1937836SJohn.Forte@Sun.COM * on 64-bit systems.
1947836SJohn.Forte@Sun.COM */
1957836SJohn.Forte@Sun.COM typedef unsigned long IMA_UINT;
1967836SJohn.Forte@Sun.COM 
1977836SJohn.Forte@Sun.COM /**
1987836SJohn.Forte@Sun.COM * A boolean.
1997836SJohn.Forte@Sun.COM */
2007836SJohn.Forte@Sun.COM typedef IMA_UINT32 IMA_BOOL;
2017836SJohn.Forte@Sun.COM 
2027836SJohn.Forte@Sun.COM /**
2037836SJohn.Forte@Sun.COM * An extended boolean: can have the values @ref IMA_TRUE, @ref IMA_FALSE, and
2047836SJohn.Forte@Sun.COM * @ref IMA_UNKNOWN.
2057836SJohn.Forte@Sun.COM */
2067836SJohn.Forte@Sun.COM typedef IMA_UINT32 IMA_XBOOL;
2077836SJohn.Forte@Sun.COM 
2087836SJohn.Forte@Sun.COM /**
2097836SJohn.Forte@Sun.COM * A date and time.
2107836SJohn.Forte@Sun.COM */
2117836SJohn.Forte@Sun.COM typedef struct tm IMA_DATETIME;
2127836SJohn.Forte@Sun.COM 
2137836SJohn.Forte@Sun.COM typedef unsigned char IMA_BYTE;
2147836SJohn.Forte@Sun.COM 
2157836SJohn.Forte@Sun.COM /**
2167836SJohn.Forte@Sun.COM *******************************************************************************
2177836SJohn.Forte@Sun.COM *
2187836SJohn.Forte@Sun.COM * Constants and macros declarations related to IMA_STATUS
2197836SJohn.Forte@Sun.COM *
2207836SJohn.Forte@Sun.COM *******************************************************************************
2217836SJohn.Forte@Sun.COM */
2227836SJohn.Forte@Sun.COM #ifdef SOLARIS
2237836SJohn.Forte@Sun.COM typedef IMA_UINT IMA_STATUS;
2247836SJohn.Forte@Sun.COM 
2257836SJohn.Forte@Sun.COM #define	IMA_STATUS_SUCCESS		0x00000000
2267836SJohn.Forte@Sun.COM #define	IMA_STATUS_ERROR		0x80000000
2277836SJohn.Forte@Sun.COM 
2287836SJohn.Forte@Sun.COM #define	IMA_SUCCESS(status) (((IMA_STATUS)(status) & \
2297836SJohn.Forte@Sun.COM 	    (IMA_STATUS)IMA_STATUS_ERROR) == 0 ? IMA_TRUE : IMA_FALSE)
2307836SJohn.Forte@Sun.COM #define	IMA_ERROR(status)   (((IMA_STATUS)(status) & \
2317836SJohn.Forte@Sun.COM 	    (IMA_STATUS)IMA_STATUS_ERROR) == 0x8000000 ? IMA_TRUE : IMA_FALSE)
2327836SJohn.Forte@Sun.COM 
2337836SJohn.Forte@Sun.COM #define	MAKE_IMA_STATUS(x)	((IMA_STATUS)(x))
2347836SJohn.Forte@Sun.COM #define	MAKE_IMA_ERROR(x)	((IMA_STATUS)(IMA_STATUS_ERROR | (x)))
2357836SJohn.Forte@Sun.COM #define	GET_SYSTEM_ERROR(x)	(((IMA_STATUS)(x) & 0x0000FFFF))
2367836SJohn.Forte@Sun.COM 
2377836SJohn.Forte@Sun.COM #define	IMA_STATUS_REBOOT_NECESSARY		MAKE_IMA_STATUS(0x01)
2387836SJohn.Forte@Sun.COM #define	IMA_STATUS_INCONSISTENT_NODE_PROPERTIES	MAKE_IMA_STATUS(0x02)
2397836SJohn.Forte@Sun.COM #define	IMA_STATUS_SCSI_STATUS_CONDITION_MET	MAKE_IMA_STATUS(0x100)
2407836SJohn.Forte@Sun.COM 
2417836SJohn.Forte@Sun.COM #define	IMA_ERROR_NOT_SUPPORTED			MAKE_IMA_ERROR(0x01)
2427836SJohn.Forte@Sun.COM #define	IMA_ERROR_INSUFFICIENT_MEMORY		MAKE_IMA_ERROR(0x02)
2437836SJohn.Forte@Sun.COM #define	IMA_ERROR_LAST_PRIMARY_DISCOVERY_METHOD	MAKE_IMA_ERROR(0x03)
2447836SJohn.Forte@Sun.COM #define	IMA_ERROR_UNEXPECTED_OS_ERROR		MAKE_IMA_ERROR(0x04)
2457836SJohn.Forte@Sun.COM #define	IMA_ERROR_SYNC_TIMEOUT			MAKE_IMA_ERROR(0x05)
2467836SJohn.Forte@Sun.COM #define	IMA_ERROR_LU_EXPOSED			MAKE_IMA_ERROR(0x06)
2477836SJohn.Forte@Sun.COM #define	IMA_ERROR_LU_NOT_EXPOSED		MAKE_IMA_ERROR(0x07)
2487836SJohn.Forte@Sun.COM #define	IMA_ERROR_LU_IN_USE			MAKE_IMA_ERROR(0x08)
2497836SJohn.Forte@Sun.COM #define	IMA_ERROR_TARGET_TIMEOUT		MAKE_IMA_ERROR(0x09)
2507836SJohn.Forte@Sun.COM #define	IMA_ERROR_LOGIN_REJECTED		MAKE_IMA_ERROR(0x0A)
2517836SJohn.Forte@Sun.COM #define	IMA_ERROR_STATS_COLLECTION_NOT_ENABLED	MAKE_IMA_ERROR(0x0B)
2527836SJohn.Forte@Sun.COM #define	IMA_ERROR_SCSI_STATUS_CHECK_CONDITION	MAKE_IMA_ERROR(0x100)
2537836SJohn.Forte@Sun.COM #define	IMA_ERROR_SCSI_STATUS_BUSY		MAKE_IMA_ERROR(0x101)
2547836SJohn.Forte@Sun.COM #define	IMA_ERROR_SCSI_STATUS_RESERVATION_CONFLICT  	MAKE_IMA_ERROR(0x102)
2557836SJohn.Forte@Sun.COM #define	IMA_ERROR_SCSI_STATUS_TASK_SET_FULL	MAKE_IMA_ERROR(0x103)
2567836SJohn.Forte@Sun.COM #define	IMA_ERROR_SCSI_STATUS_ACA_ACTIVE	MAKE_IMA_ERROR(0x104)
2577836SJohn.Forte@Sun.COM #define	IMA_ERROR_SCSI_STATUS_TASK_ABORTED	MAKE_IMA_ERROR(0x105)
2587836SJohn.Forte@Sun.COM #define	IMA_ERROR_INVALID_PARAMETER		MAKE_IMA_ERROR(0x40000000)
2597836SJohn.Forte@Sun.COM #define	IMA_ERROR_INVALID_OBJECT_TYPE		MAKE_IMA_ERROR(0x40000001)
2607836SJohn.Forte@Sun.COM #define	IMA_ERROR_INCORRECT_OBJECT_TYPE		MAKE_IMA_ERROR(0x40000002)
2617836SJohn.Forte@Sun.COM #define	IMA_ERROR_OBJECT_NOT_FOUND		MAKE_IMA_ERROR(0x40000003)
2627836SJohn.Forte@Sun.COM #define	IMA_ERROR_NAME_TOO_LONG			MAKE_IMA_ERROR(0x40000004)
2637836SJohn.Forte@Sun.COM #define	IMA_ERROR_UNKNOWN_ERROR			MAKE_IMA_ERROR(0x0fffffff)
2647836SJohn.Forte@Sun.COM 
2657836SJohn.Forte@Sun.COM #else
2667836SJohn.Forte@Sun.COM 
2677836SJohn.Forte@Sun.COM typedef enum {
2687836SJohn.Forte@Sun.COM     IMA_STATUS_SUCCESS                      = 0x00000000,
2697836SJohn.Forte@Sun.COM     IMA_STATUS_REBOOT_NECESSARY             = 0x00000001,
2707836SJohn.Forte@Sun.COM     IMA_STATUS_INCONSISTENT_NODE_PROPERTIES = 0x00000002,
2717836SJohn.Forte@Sun.COM     IMA_STATUS_SCSI_STATUS_CONDITION_MET    = 0x00000100,
2727836SJohn.Forte@Sun.COM 
2737836SJohn.Forte@Sun.COM     IMA_STATUS_ERROR                        = 0x80000000,
2747836SJohn.Forte@Sun.COM     IMA_ERROR_NOT_SUPPORTED                 = 0x80000001,
2757836SJohn.Forte@Sun.COM     IMA_ERROR_INSUFFICIENT_MEMORY           = 0x80000002,
2767836SJohn.Forte@Sun.COM     IMA_ERROR_LAST_PRIMARY_DISCOVERY_METHOD = 0x80000003,
2777836SJohn.Forte@Sun.COM     IMA_ERROR_UNEXPECTED_OS_ERROR           = 0x80000004,
2787836SJohn.Forte@Sun.COM     IMA_ERROR_SYNC_TIMEOUT                  = 0x80000005,
2797836SJohn.Forte@Sun.COM     IMA_ERROR_LU_EXPOSED                    = 0x80000006,
2807836SJohn.Forte@Sun.COM     IMA_ERROR_LU_NOT_EXPOSED                = 0x80000007,
2817836SJohn.Forte@Sun.COM     IMA_ERROR_LU_IN_USE                     = 0x80000008,
2827836SJohn.Forte@Sun.COM     IMA_ERROR_TARGET_TIMEOUT                = 0x80000009,
2837836SJohn.Forte@Sun.COM     IMA_ERROR_LOGIN_REJECTED                = 0x8000000A,
2847836SJohn.Forte@Sun.COM     IMA_ERROR_STATS_COLLECTION_NOT_ENABLED  = 0x8000000B,
2857836SJohn.Forte@Sun.COM     IMA_ERROR_SCSI_STATUS_CHECK_CONDITION      = 0x80000100,
2867836SJohn.Forte@Sun.COM     IMA_ERROR_SCSI_STATUS_BUSY                 = 0x80000101,
2877836SJohn.Forte@Sun.COM     IMA_ERROR_SCSI_STATUS_RESERVATION_CONFLICT = 0x80000102,
2887836SJohn.Forte@Sun.COM     IMA_ERROR_SCSI_STATUS_TASK_SET_FULL        = 0x80000103,
2897836SJohn.Forte@Sun.COM     IMA_ERROR_SCSI_STATUS_ACA_ACTIVE           = 0x80000104,
2907836SJohn.Forte@Sun.COM     IMA_ERROR_SCSI_STATUS_TASK_ABORTED         = 0x80000105,
2917836SJohn.Forte@Sun.COM     IMA_ERROR_INVALID_PARAMETER             = 0xC0000000,
2927836SJohn.Forte@Sun.COM     IMA_ERROR_INVALID_OBJECT_TYPE           = 0xC0000001,
2937836SJohn.Forte@Sun.COM     IMA_ERROR_INCORRECT_OBJECT_TYPE         = 0xC0000002,
2947836SJohn.Forte@Sun.COM     IMA_ERROR_OBJECT_NOT_FOUND              = 0xC0000003,
2957836SJohn.Forte@Sun.COM     IMA_ERROR_NAME_TOO_LONG                 = 0xC0000004,
2967836SJohn.Forte@Sun.COM     IMA_ERROR_UNKNOWN_ERROR                 = 0x8FFFFFFF
2977836SJohn.Forte@Sun.COM } IMA_STATUS;
2987836SJohn.Forte@Sun.COM 
2997836SJohn.Forte@Sun.COM /*
3007836SJohn.Forte@Sun.COM #define IMA_SUCCESS(status)     ( (IMA_UINT32)(status) & \
3017836SJohn.Forte@Sun.COM                                   (IMA_UINT32)IMA_STATUS_ERROR == 0 ? \
3027836SJohn.Forte@Sun.COM                                   IMA_TRUE : IMA_FALSE )
3037836SJohn.Forte@Sun.COM #define IMA_ERROR(status)       ( (IMA_UINT32)(status) & \
3047836SJohn.Forte@Sun.COM                                   (IMA_UINT32)IMA_STATUS_ERROR == 0x8000000 ? \
3057836SJohn.Forte@Sun.COM                                   IMA_TRUE : IMA_FALSE )
3067836SJohn.Forte@Sun.COM */
3077836SJohn.Forte@Sun.COM 
3087836SJohn.Forte@Sun.COM #define IMA_SUCCESS(status)							!((status) & IMA_STATUS_ERROR)
3097836SJohn.Forte@Sun.COM #define IMA_ERROR(status)							((status) & IMA_STATUS_ERROR)
3107836SJohn.Forte@Sun.COM 
3117836SJohn.Forte@Sun.COM #endif
3127836SJohn.Forte@Sun.COM 
3137836SJohn.Forte@Sun.COM /**
3147836SJohn.Forte@Sun.COM *******************************************************************************
3157836SJohn.Forte@Sun.COM *
3167836SJohn.Forte@Sun.COM * Declaration of the IMA_OBJECT_TYPE enumeration
3177836SJohn.Forte@Sun.COM *
3187836SJohn.Forte@Sun.COM *******************************************************************************
3197836SJohn.Forte@Sun.COM */
3207836SJohn.Forte@Sun.COM typedef enum
3217836SJohn.Forte@Sun.COM {
3227836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_UNKNOWN =   0,
3237836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_PLUGIN  =   1,
3247836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_NODE    =   2,
3257836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_LHBA    =   3,
3267836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_PHBA    =   4,
3277836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_NETWORK_PORTAL  =   5,
3287836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_PORTAL_GROUP    =   6,
3297836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_LNP =   7,
3307836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_PNP =   8,
3317836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_TARGET  =   9,
3327836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_LU  =   10,
3337836SJohn.Forte@Sun.COM 	IMA_OBJECT_TYPE_DISCOVERY_ADDRESS = 11,
3347836SJohn.Forte@Sun.COM 	IMA_OBJECT_TYPE_STATIC_DISCOVERY_TARGET = 12,
3357836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE_CONNECTION	=	13,
3367836SJohn.Forte@Sun.COM 	IMA_OBJECT_TYPE_SESSION	=	14
3377836SJohn.Forte@Sun.COM } IMA_OBJECT_TYPE;
3387836SJohn.Forte@Sun.COM 
3397836SJohn.Forte@Sun.COM typedef enum
3407836SJohn.Forte@Sun.COM {
3417836SJohn.Forte@Sun.COM     IMA_ISNS_DISCOVERY_METHOD_STATIC    =   0,
3427836SJohn.Forte@Sun.COM     IMA_ISNS_DISCOVERY_METHOD_DHCP  =   1,
3437836SJohn.Forte@Sun.COM     IMA_ISNS_DISCOVERY_METHOD_SLP   =   2
3447836SJohn.Forte@Sun.COM } IMA_ISNS_DISCOVERY_METHOD;
3457836SJohn.Forte@Sun.COM 
3467836SJohn.Forte@Sun.COM typedef enum
3477836SJohn.Forte@Sun.COM {
3487836SJohn.Forte@Sun.COM     IMA_DOWNLOAD_IMAGE_TYPE_FIRMWARE    =   0,
3497836SJohn.Forte@Sun.COM     IMA_DOWNLOAD_IMAGE_TYPE_OPTION_ROM  =   1,
3507836SJohn.Forte@Sun.COM     IMA_DOWNLOAD_IMAGE_TYPE_ALL =   2,
3517836SJohn.Forte@Sun.COM 	IMA_DOWNLOAD_IMAGE_TYPE_BOOTCODE = 3
3527836SJohn.Forte@Sun.COM } IMA_PHBA_DOWNLOAD_IMAGE_TYPE;
3537836SJohn.Forte@Sun.COM 
3547836SJohn.Forte@Sun.COM typedef enum
3557836SJohn.Forte@Sun.COM {
3567836SJohn.Forte@Sun.COM     IMA_PHBA_STATUS_WORKING =   0,
3577836SJohn.Forte@Sun.COM     IMA_PHBA_STATUS_FAILED  =   1
3587836SJohn.Forte@Sun.COM } IMA_PHBA_STATUS;
3597836SJohn.Forte@Sun.COM 
3607836SJohn.Forte@Sun.COM typedef enum
3617836SJohn.Forte@Sun.COM {
3627836SJohn.Forte@Sun.COM     IMA_NETWORK_PORT_STATUS_WORKING =   0,
3637836SJohn.Forte@Sun.COM     IMA_NETWORK_PORT_STATUS_DEGRADED    =   1,
3647836SJohn.Forte@Sun.COM     IMA_NETWORK_PORT_STATUS_CRITICAL    =   2,
3657836SJohn.Forte@Sun.COM     IMA_NETWORK_PORT_STATUS_FAILED  =   3,
3667836SJohn.Forte@Sun.COM     IMA_NETWORK_PORT_STATUS_DISCONNECTED    =   4
3677836SJohn.Forte@Sun.COM } IMA_NETWORK_PORT_STATUS;
3687836SJohn.Forte@Sun.COM 
3697836SJohn.Forte@Sun.COM typedef enum
3707836SJohn.Forte@Sun.COM {
3717836SJohn.Forte@Sun.COM     IMA_TARGET_DISCOVERY_METHOD_STATIC      =   1,
3727836SJohn.Forte@Sun.COM     IMA_TARGET_DISCOVERY_METHOD_SLP     =   2,
3737836SJohn.Forte@Sun.COM     IMA_TARGET_DISCOVERY_METHOD_ISNS        =   4,
3747836SJohn.Forte@Sun.COM     IMA_TARGET_DISCOVERY_METHOD_SENDTARGETS =   8
3757836SJohn.Forte@Sun.COM } IMA_TARGET_DISCOVERY_METHOD;
3767836SJohn.Forte@Sun.COM 
3777836SJohn.Forte@Sun.COM typedef enum
3787836SJohn.Forte@Sun.COM {
3797836SJohn.Forte@Sun.COM     IMA_AUTHMETHOD_NONE =   0,
3807836SJohn.Forte@Sun.COM     IMA_AUTHMETHOD_CHAP =   1,
3817836SJohn.Forte@Sun.COM     IMA_AUTHMETHOD_SRP  =   2,
3827836SJohn.Forte@Sun.COM     IMA_AUTHMETHOD_KRB5 =   3,
3837836SJohn.Forte@Sun.COM     IMA_AUTHMETHOD_SPKM1    =   4,
3847836SJohn.Forte@Sun.COM     IMA_AUTHMETHOD_SPKM2    =   5
3857836SJohn.Forte@Sun.COM } IMA_AUTHMETHOD;
3867836SJohn.Forte@Sun.COM 
3877836SJohn.Forte@Sun.COM typedef enum
3887836SJohn.Forte@Sun.COM {
3897836SJohn.Forte@Sun.COM 	IMA_COMMIT_TYPE_AUTO	= 0,
3907836SJohn.Forte@Sun.COM 	IMA_COMMIT_TYPE_ACTIVE,
3917836SJohn.Forte@Sun.COM 	IMA_COMMIT_TYPE_PERSISTENT,
3927836SJohn.Forte@Sun.COM 	IMA_COMMIT_TYPE_ACTIVE_AND_PERSISTENT,
3937836SJohn.Forte@Sun.COM 	IMA_COMMIT_TYPE_ALL_WITH_RESET
3947836SJohn.Forte@Sun.COM } IMA_COMMIT_LEVEL;
3957836SJohn.Forte@Sun.COM 
3967836SJohn.Forte@Sun.COM typedef enum
3977836SJohn.Forte@Sun.COM {
3987836SJohn.Forte@Sun.COM 	IMA_DIGEST_NONE		= 0,
3997836SJohn.Forte@Sun.COM 	IMA_DIGEST_CRC32C		= 1
4007836SJohn.Forte@Sun.COM } IMA_DIGEST_TYPE;
4017836SJohn.Forte@Sun.COM 
4027836SJohn.Forte@Sun.COM 
4037836SJohn.Forte@Sun.COM /**
4047836SJohn.Forte@Sun.COM *******************************************************************************
4057836SJohn.Forte@Sun.COM *
4067836SJohn.Forte@Sun.COM * Declaration of the IMA_OID structure
4077836SJohn.Forte@Sun.COM *
4087836SJohn.Forte@Sun.COM * This structure should be treated as opaque by clients of the API.
4097836SJohn.Forte@Sun.COM * Appropriate APIs should be used to extract information from the structure.
4107836SJohn.Forte@Sun.COM *
4117836SJohn.Forte@Sun.COM *******************************************************************************
4127836SJohn.Forte@Sun.COM */
4137836SJohn.Forte@Sun.COM typedef struct _IMA_OID
4147836SJohn.Forte@Sun.COM {
4157836SJohn.Forte@Sun.COM     /**
4167836SJohn.Forte@Sun.COM     * The type of the object.  When an object ID is supplied as a parameter
4177836SJohn.Forte@Sun.COM     * to an API the library uses this value to insure that the supplied
4187836SJohn.Forte@Sun.COM     * object's type is appropriate for the API.
4197836SJohn.Forte@Sun.COM     */
4207836SJohn.Forte@Sun.COM     IMA_OBJECT_TYPE objectType;
4217836SJohn.Forte@Sun.COM 
4227836SJohn.Forte@Sun.COM     /**
4237836SJohn.Forte@Sun.COM     * A value determined by the library which it uses to uniquely identify the
4247836SJohn.Forte@Sun.COM     * owner of an object.  The owner of an object is either the library itself
4257836SJohn.Forte@Sun.COM     * or a plugin.  When an object ID is supplied as a parameter to an API the
4267836SJohn.Forte@Sun.COM     * library uses this value to determine if it should handle the call itself
4277836SJohn.Forte@Sun.COM     * or direct the call to one or more plugins.
4287836SJohn.Forte@Sun.COM     */
4297836SJohn.Forte@Sun.COM     IMA_UINT32      ownerId;
4307836SJohn.Forte@Sun.COM 
4317836SJohn.Forte@Sun.COM     /**
4327836SJohn.Forte@Sun.COM     * A value determined by a plugin which a plugin uses, perhaps in
4337836SJohn.Forte@Sun.COM     * combination with the object type, to uniquely identify one of its
4347836SJohn.Forte@Sun.COM     * objects.
4357836SJohn.Forte@Sun.COM     */
4367836SJohn.Forte@Sun.COM     IMA_UINT64      objectSequenceNumber;
4377836SJohn.Forte@Sun.COM 
4387836SJohn.Forte@Sun.COM } IMA_OID;
4397836SJohn.Forte@Sun.COM 
4407836SJohn.Forte@Sun.COM 
4417836SJohn.Forte@Sun.COM 
4427836SJohn.Forte@Sun.COM /**
4437836SJohn.Forte@Sun.COM *******************************************************************************
4447836SJohn.Forte@Sun.COM *
4457836SJohn.Forte@Sun.COM * Declaration of the IMA_OID_LIST structure
4467836SJohn.Forte@Sun.COM *
4477836SJohn.Forte@Sun.COM * This structure is used by a number of APIs to return lists of objects.  Any
4487836SJohn.Forte@Sun.COM * instance of this structure returned by an API must be freed by a client
4497836SJohn.Forte@Sun.COM * using the IMA_FreeObjectIdList API.  Although oids is declared to be an
4507836SJohn.Forte@Sun.COM * array of one
4517836SJohn.Forte@Sun.COM * @ref IMA_OID structure it can in fact contain any number of
4527836SJohn.Forte@Sun.COM * @ref IMA_OID structures.
4537836SJohn.Forte@Sun.COM *
4547836SJohn.Forte@Sun.COM * @note The @a oids array is a variable length array, despite its declaration
4557836SJohn.Forte@Sun.COM *       below it can be of any length.
4567836SJohn.Forte@Sun.COM *
4577836SJohn.Forte@Sun.COM *******************************************************************************
4587836SJohn.Forte@Sun.COM */
4597836SJohn.Forte@Sun.COM typedef struct _IMA_OID_LIST
4607836SJohn.Forte@Sun.COM {
4617836SJohn.Forte@Sun.COM     /**
4627836SJohn.Forte@Sun.COM     * The number of object IDs in the @a oids array.
4637836SJohn.Forte@Sun.COM     */
4647836SJohn.Forte@Sun.COM     IMA_UINT        oidCount;
4657836SJohn.Forte@Sun.COM 
4667836SJohn.Forte@Sun.COM     /**
4677836SJohn.Forte@Sun.COM     * A variable length array of zero or more object IDs.  There are
4687836SJohn.Forte@Sun.COM     * 'oidCount' object IDs in this array.
4697836SJohn.Forte@Sun.COM     */
4707836SJohn.Forte@Sun.COM     IMA_OID         oids[1];
4717836SJohn.Forte@Sun.COM 
4727836SJohn.Forte@Sun.COM } IMA_OID_LIST;
4737836SJohn.Forte@Sun.COM 
4747836SJohn.Forte@Sun.COM #define IMA_HOST_NAME_LEN 256
4757836SJohn.Forte@Sun.COM typedef IMA_WCHAR IMA_HOST_NAME[IMA_HOST_NAME_LEN];
4767836SJohn.Forte@Sun.COM typedef IMA_BYTE IMA_MAC_ADDRESS[6];
4777836SJohn.Forte@Sun.COM 
4787836SJohn.Forte@Sun.COM /**
4797836SJohn.Forte@Sun.COM *******************************************************************************
4807836SJohn.Forte@Sun.COM *
4817836SJohn.Forte@Sun.COM * Declaration of the IMA_LIBRARY_PROPERTIES structure
4827836SJohn.Forte@Sun.COM *
4837836SJohn.Forte@Sun.COM *******************************************************************************
4847836SJohn.Forte@Sun.COM */
4857836SJohn.Forte@Sun.COM typedef struct _IMA_LIBRARY_PROPERTIES
4867836SJohn.Forte@Sun.COM {
4877836SJohn.Forte@Sun.COM     /**
4887836SJohn.Forte@Sun.COM     * The version of the iSCSI Management API implemented by the library.
4897836SJohn.Forte@Sun.COM     * The value returned by a library for the API as described in this
4907836SJohn.Forte@Sun.COM     * document is one.
4917836SJohn.Forte@Sun.COM     */
4927836SJohn.Forte@Sun.COM     IMA_UINT        supportedImaVersion;
4937836SJohn.Forte@Sun.COM 
4947836SJohn.Forte@Sun.COM     /**
4957836SJohn.Forte@Sun.COM     * A nul terminated ASCII string containing the name of the vendor that
4967836SJohn.Forte@Sun.COM     * created the binary version of the library.
4977836SJohn.Forte@Sun.COM     */
4987836SJohn.Forte@Sun.COM     IMA_WCHAR       vendor[256];
4997836SJohn.Forte@Sun.COM 
5007836SJohn.Forte@Sun.COM     /**
5017836SJohn.Forte@Sun.COM     * A nul terminated ASCII string containing the implementation version
5027836SJohn.Forte@Sun.COM     * of the library from the vendor specified in the 'vendor' field.
5037836SJohn.Forte@Sun.COM     */
5047836SJohn.Forte@Sun.COM     IMA_WCHAR       implementationVersion[256];
5057836SJohn.Forte@Sun.COM 
5067836SJohn.Forte@Sun.COM     /**
5077836SJohn.Forte@Sun.COM     * A nul terminated ASCII string ideally containing the path and file
5087836SJohn.Forte@Sun.COM     * name of the library that is being used by the currently executing
5097836SJohn.Forte@Sun.COM     * process can be found. If the path cannot be determined then it is
5107836SJohn.Forte@Sun.COM     * acceptable to fill this field with only the name (and extension if
5117836SJohn.Forte@Sun.COM     * applicable) of the file of the library.  If this cannot be determined
5127836SJohn.Forte@Sun.COM     * then this field should be an empty string.
5137836SJohn.Forte@Sun.COM     */
5147836SJohn.Forte@Sun.COM     IMA_WCHAR       fileName[256];
5157836SJohn.Forte@Sun.COM 
5167836SJohn.Forte@Sun.COM     /**
5177836SJohn.Forte@Sun.COM     * The time and date that the library that is executing was built.
5187836SJohn.Forte@Sun.COM     */
5197836SJohn.Forte@Sun.COM     IMA_DATETIME    buildTime;
5207836SJohn.Forte@Sun.COM 
5217836SJohn.Forte@Sun.COM     IMA_BYTE    reserved[64];
5227836SJohn.Forte@Sun.COM } IMA_LIBRARY_PROPERTIES;
5237836SJohn.Forte@Sun.COM 
5247836SJohn.Forte@Sun.COM 
5257836SJohn.Forte@Sun.COM 
5267836SJohn.Forte@Sun.COM /**
5277836SJohn.Forte@Sun.COM *******************************************************************************
5287836SJohn.Forte@Sun.COM *
5297836SJohn.Forte@Sun.COM * Declaration of the IMA_PLUGIN_PROPERTIES structure
5307836SJohn.Forte@Sun.COM *
5317836SJohn.Forte@Sun.COM *******************************************************************************
5327836SJohn.Forte@Sun.COM */
5337836SJohn.Forte@Sun.COM typedef struct _IMA_PLUGIN_PROPERTIES
5347836SJohn.Forte@Sun.COM {
5357836SJohn.Forte@Sun.COM         IMA_UINT        supportedImaVersion;
5367836SJohn.Forte@Sun.COM         IMA_WCHAR       vendor[256];
5377836SJohn.Forte@Sun.COM         IMA_WCHAR       implementationVersion[256];
5387836SJohn.Forte@Sun.COM         IMA_WCHAR       fileName[256];
5397836SJohn.Forte@Sun.COM         IMA_DATETIME    buildTime;
5407836SJohn.Forte@Sun.COM 
5417836SJohn.Forte@Sun.COM         IMA_BOOL        lhbasCanBeCreatedAndDestroyed;
5427836SJohn.Forte@Sun.COM 
5437836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[64];
5447836SJohn.Forte@Sun.COM 
5457836SJohn.Forte@Sun.COM } IMA_PLUGIN_PROPERTIES;
5467836SJohn.Forte@Sun.COM 
5477836SJohn.Forte@Sun.COM 
5487836SJohn.Forte@Sun.COM typedef struct _IMA_IP_ADDRESS
5497836SJohn.Forte@Sun.COM {
5507836SJohn.Forte@Sun.COM         IMA_BOOL        ipv4Address;
5517836SJohn.Forte@Sun.COM         IMA_BYTE        ipAddress[16];
5527836SJohn.Forte@Sun.COM 
5537836SJohn.Forte@Sun.COM } IMA_IP_ADDRESS;
5547836SJohn.Forte@Sun.COM 
5557836SJohn.Forte@Sun.COM typedef struct _IMA_ADDRESS_KEY
5567836SJohn.Forte@Sun.COM {
5577836SJohn.Forte@Sun.COM         IMA_IP_ADDRESS  ipAddress;
5587836SJohn.Forte@Sun.COM         IMA_UINT16      portNumber;
5597836SJohn.Forte@Sun.COM 
5607836SJohn.Forte@Sun.COM } IMA_ADDRESS_KEY;
5617836SJohn.Forte@Sun.COM 
5627836SJohn.Forte@Sun.COM typedef struct _IMA_ADDRESS_KEYS
5637836SJohn.Forte@Sun.COM {
5647836SJohn.Forte@Sun.COM         IMA_UINT		addressKeyCount;
5657836SJohn.Forte@Sun.COM         IMA_ADDRESS_KEY addressKeys[1];
5667836SJohn.Forte@Sun.COM 
5677836SJohn.Forte@Sun.COM } IMA_ADDRESS_KEYS;
5687836SJohn.Forte@Sun.COM 
5697836SJohn.Forte@Sun.COM typedef struct _IMA_ADDRESS_KEY_PROPERTIES
5707836SJohn.Forte@Sun.COM {
5717836SJohn.Forte@Sun.COM         IMA_UINT        addressKeyCount;
5727836SJohn.Forte@Sun.COM         IMA_ADDRESS_KEY addressKeys[1];
5737836SJohn.Forte@Sun.COM 
5747836SJohn.Forte@Sun.COM } IMA_ADDRESS_KEY_PROPERTIES;
5757836SJohn.Forte@Sun.COM 
5767836SJohn.Forte@Sun.COM typedef struct _IMA_IP_PROPERTIES
5777836SJohn.Forte@Sun.COM {
5787836SJohn.Forte@Sun.COM         IMA_BOOL        ipConfigurationMethodSettable;
5797836SJohn.Forte@Sun.COM         IMA_BOOL        dhcpConfigurationEnabled;
5807836SJohn.Forte@Sun.COM 
5817836SJohn.Forte@Sun.COM         IMA_BOOL        subnetMaskSettable;
5827836SJohn.Forte@Sun.COM         IMA_BOOL        subnetMaskValid;
5837836SJohn.Forte@Sun.COM         IMA_IP_ADDRESS  subnetMask;
5847836SJohn.Forte@Sun.COM 
5857836SJohn.Forte@Sun.COM         IMA_BOOL        defaultGatewaySettable;
5867836SJohn.Forte@Sun.COM         IMA_BOOL        defaultGatewayValid;
5877836SJohn.Forte@Sun.COM         IMA_IP_ADDRESS  defaultGateway;
5887836SJohn.Forte@Sun.COM 
5897836SJohn.Forte@Sun.COM         IMA_BOOL        primaryDnsServerAddressSettable;
5907836SJohn.Forte@Sun.COM         IMA_BOOL        primaryDnsServerAddressValid;
5917836SJohn.Forte@Sun.COM         IMA_IP_ADDRESS  primaryDnsServerAddress;
5927836SJohn.Forte@Sun.COM 
5937836SJohn.Forte@Sun.COM         IMA_BOOL        alternateDnsServerAddressSettable;
5947836SJohn.Forte@Sun.COM         IMA_BOOL        alternateDnsServerAddressValid;
5957836SJohn.Forte@Sun.COM         IMA_IP_ADDRESS  alternateDnsServerAddress;
5967836SJohn.Forte@Sun.COM 
5977836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[64];
5987836SJohn.Forte@Sun.COM 
5997836SJohn.Forte@Sun.COM } IMA_IP_PROPERTIES;
6007836SJohn.Forte@Sun.COM 
6017836SJohn.Forte@Sun.COM typedef struct _IMA_HOST_ID
6027836SJohn.Forte@Sun.COM {
6037836SJohn.Forte@Sun.COM 		IMA_BOOL hostnameInUse;
6047836SJohn.Forte@Sun.COM 		union {
6057836SJohn.Forte@Sun.COM 
6067836SJohn.Forte@Sun.COM 			IMA_HOST_NAME 	hostname;
6077836SJohn.Forte@Sun.COM 			IMA_IP_ADDRESS 	ipAddress;
6087836SJohn.Forte@Sun.COM 
6097836SJohn.Forte@Sun.COM 		} id;
6107836SJohn.Forte@Sun.COM 
6117836SJohn.Forte@Sun.COM } IMA_HOST_ID;
6127836SJohn.Forte@Sun.COM 
6137836SJohn.Forte@Sun.COM typedef struct _IMA_TARGET_ADDRESS
6147836SJohn.Forte@Sun.COM {
6157836SJohn.Forte@Sun.COM 		IMA_HOST_ID hostnameIpAddress;
6167836SJohn.Forte@Sun.COM 		IMA_UINT16 	portNumber;
6177836SJohn.Forte@Sun.COM 
6187836SJohn.Forte@Sun.COM } IMA_TARGET_ADDRESS;
6197836SJohn.Forte@Sun.COM 
6207836SJohn.Forte@Sun.COM /**
6217836SJohn.Forte@Sun.COM *******************************************************************************
6227836SJohn.Forte@Sun.COM *
6237836SJohn.Forte@Sun.COM * Declaration of the IMA_NODE_NAME type
6247836SJohn.Forte@Sun.COM *
6257836SJohn.Forte@Sun.COM *******************************************************************************
6267836SJohn.Forte@Sun.COM */
6277836SJohn.Forte@Sun.COM #define	IMA_NODE_NAME_LEN   224
6287836SJohn.Forte@Sun.COM typedef IMA_WCHAR IMA_NODE_NAME[IMA_NODE_NAME_LEN];
6297836SJohn.Forte@Sun.COM 
6307836SJohn.Forte@Sun.COM 
6317836SJohn.Forte@Sun.COM 
6327836SJohn.Forte@Sun.COM /**
6337836SJohn.Forte@Sun.COM *******************************************************************************
6347836SJohn.Forte@Sun.COM *
6357836SJohn.Forte@Sun.COM * Declaration of the IMA_NODE_ALIAS type
6367836SJohn.Forte@Sun.COM *
6377836SJohn.Forte@Sun.COM *******************************************************************************
6387836SJohn.Forte@Sun.COM */
6397836SJohn.Forte@Sun.COM #define	IMA_NODE_ALIAS_LEN	256
6407836SJohn.Forte@Sun.COM typedef IMA_WCHAR IMA_NODE_ALIAS[IMA_NODE_ALIAS_LEN];
6417836SJohn.Forte@Sun.COM 
6427836SJohn.Forte@Sun.COM 
6437836SJohn.Forte@Sun.COM 
6447836SJohn.Forte@Sun.COM /**
6457836SJohn.Forte@Sun.COM *******************************************************************************
6467836SJohn.Forte@Sun.COM *
6477836SJohn.Forte@Sun.COM * Declaration of the IMA_DOMAIN_NAME type
6487836SJohn.Forte@Sun.COM *
6497836SJohn.Forte@Sun.COM * A variable of this type may be formatted in any of the following four ways:
6507836SJohn.Forte@Sun.COM *       1.  An empty string, which indicates that no host or IP address is
6517836SJohn.Forte@Sun.COM *           specified
6527836SJohn.Forte@Sun.COM *       2.  A DNS host name
6537836SJohn.Forte@Sun.COM *       3.  A dotted-decimal IPv4 address
6547836SJohn.Forte@Sun.COM *       4.  A bracketed IPv6 address as specified in RFC 2732
6557836SJohn.Forte@Sun.COM *
6567836SJohn.Forte@Sun.COM * In all cases a domain name is terminated by a nul character.
6577836SJohn.Forte@Sun.COM * This type is used by several APIs: IMA_SetPhbaSnsDiscovery(),
6587836SJohn.Forte@Sun.COM * IMA_SetNetworkPortalIpAddress(), and indirectly by
6597836SJohn.Forte@Sun.COM * IMA_GetPhbaDiscoveryProperties().
6607836SJohn.Forte@Sun.COM *
6617836SJohn.Forte@Sun.COM *******************************************************************************
6627836SJohn.Forte@Sun.COM */
6637836SJohn.Forte@Sun.COM typedef wchar_t IMA_DOMAIN_NAME[256];
6647836SJohn.Forte@Sun.COM 
6657836SJohn.Forte@Sun.COM typedef struct _IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES
6667836SJohn.Forte@Sun.COM {
6677836SJohn.Forte@Sun.COM         IMA_PHBA_DOWNLOAD_IMAGE_TYPE    imageType;
6687836SJohn.Forte@Sun.COM         IMA_WCHAR               version[32];
6697836SJohn.Forte@Sun.COM         IMA_WCHAR               description[512];
6707836SJohn.Forte@Sun.COM         IMA_XBOOL               upgrade;
6717836SJohn.Forte@Sun.COM } IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES;
6727836SJohn.Forte@Sun.COM 
6737836SJohn.Forte@Sun.COM 
6747836SJohn.Forte@Sun.COM /**
6757836SJohn.Forte@Sun.COM *******************************************************************************
6767836SJohn.Forte@Sun.COM *
6777836SJohn.Forte@Sun.COM * Declaration of the IMA_NODE_PROPERTIES structure
6787836SJohn.Forte@Sun.COM *
6797836SJohn.Forte@Sun.COM * This structure is returned by the IMA_GetNodeProperties() API.
6807836SJohn.Forte@Sun.COM *
6817836SJohn.Forte@Sun.COM * NOTE: It is possible for both 'runningInInitiatorMode' and
6827836SJohn.Forte@Sun.COM *       'runningInTargetMode' to be set to @c IMA_TRUE.  This means that
6837836SJohn.Forte@Sun.COM *       the node is operating both as an initiator and as a target.
6847836SJohn.Forte@Sun.COM *
6857836SJohn.Forte@Sun.COM *******************************************************************************
6867836SJohn.Forte@Sun.COM */
6877836SJohn.Forte@Sun.COM typedef struct _IMA_NODE_PROPERTIES
6887836SJohn.Forte@Sun.COM {
6897836SJohn.Forte@Sun.COM     /**
6907836SJohn.Forte@Sun.COM     * A boolean indicating if the node is running as initiator or not.
6917836SJohn.Forte@Sun.COM     */
6927836SJohn.Forte@Sun.COM     IMA_BOOL        runningInInitiatorMode;
6937836SJohn.Forte@Sun.COM 
6947836SJohn.Forte@Sun.COM     /**
6957836SJohn.Forte@Sun.COM     * A boolean indicating if the node is running as a target or not.
6967836SJohn.Forte@Sun.COM     */
6977836SJohn.Forte@Sun.COM     IMA_BOOL        runningInTargetMode;
6987836SJohn.Forte@Sun.COM 
6997836SJohn.Forte@Sun.COM     /**
7007836SJohn.Forte@Sun.COM     * A boolean which indicates if the node's name is set or not.
7017836SJohn.Forte@Sun.COM     */
7027836SJohn.Forte@Sun.COM     IMA_BOOL        nameValid;
7037836SJohn.Forte@Sun.COM 
7047836SJohn.Forte@Sun.COM     /**
7057836SJohn.Forte@Sun.COM     * A nul terminated Unicode string which contains the name of the node.
7067836SJohn.Forte@Sun.COM     * The value in this field is only valid if 'nameValid' is set to
7077836SJohn.Forte@Sun.COM     * IMA_TRUE, in which case it will be Unicode NULL terminated.  If
7087836SJohn.Forte@Sun.COM     * 'nameValid' is set to IMA_FALSE then this field will contain an
7097836SJohn.Forte@Sun.COM     * empty string.
7107836SJohn.Forte@Sun.COM     */
7117836SJohn.Forte@Sun.COM     IMA_NODE_NAME   name;
7127836SJohn.Forte@Sun.COM 
7137836SJohn.Forte@Sun.COM     /**
7147836SJohn.Forte@Sun.COM     * A boolean which indicates if the node's alias is set or not.
7157836SJohn.Forte@Sun.COM     */
7167836SJohn.Forte@Sun.COM     IMA_BOOL        aliasValid;
7177836SJohn.Forte@Sun.COM 
7187836SJohn.Forte@Sun.COM     /**
7197836SJohn.Forte@Sun.COM     * A nul terminated Unicode string which contains the alias of the node.
7207836SJohn.Forte@Sun.COM     * This field is only valid if 'aliasValid' is set to IMA_TRUE, in which
7217836SJohn.Forte@Sun.COM     * case it will be Unicode NULL terminated.  If 'aliasValid' is set to
7227836SJohn.Forte@Sun.COM     * IMA_FALSE then this field will contain an empty string.
7237836SJohn.Forte@Sun.COM     */
7247836SJohn.Forte@Sun.COM     IMA_NODE_ALIAS  alias;
7257836SJohn.Forte@Sun.COM 
7267836SJohn.Forte@Sun.COM     /*
7277836SJohn.Forte@Sun.COM      * Boolean indicating if both the name and alias are settable using
7287836SJohn.Forte@Sun.COM      * IMA_SetNodeName() and IMA_SetNodeAlias().
7297836SJohn.Forte@Sun.COM      */
7307836SJohn.Forte@Sun.COM     IMA_BOOL    nameAndAliasSettable;
7317836SJohn.Forte@Sun.COM 
7327836SJohn.Forte@Sun.COM     IMA_BYTE    reserved[64];
7337836SJohn.Forte@Sun.COM 
7347836SJohn.Forte@Sun.COM } IMA_NODE_PROPERTIES;
7357836SJohn.Forte@Sun.COM 
7367836SJohn.Forte@Sun.COM 
7377836SJohn.Forte@Sun.COM 
7387836SJohn.Forte@Sun.COM /**
7397836SJohn.Forte@Sun.COM *******************************************************************************
7407836SJohn.Forte@Sun.COM *
7417836SJohn.Forte@Sun.COM * Declaration of the IMA_LHBA_PROPERTIES structure
7427836SJohn.Forte@Sun.COM *
7437836SJohn.Forte@Sun.COM * This structure is returned by the IMA_GetLhbaProperties()  API.
7447836SJohn.Forte@Sun.COM *
7457836SJohn.Forte@Sun.COM *******************************************************************************
7467836SJohn.Forte@Sun.COM */
7477836SJohn.Forte@Sun.COM typedef struct _IMA_LHBA_PROPERTIES
7487836SJohn.Forte@Sun.COM {
7497836SJohn.Forte@Sun.COM     IMA_WCHAR   osDeviceName[256];
7507836SJohn.Forte@Sun.COM     IMA_BOOL    luExposingSupported;
7517836SJohn.Forte@Sun.COM     IMA_BOOL    isDestroyable;
7527836SJohn.Forte@Sun.COM 
7537836SJohn.Forte@Sun.COM     IMA_BOOL    staleDataRemovable;
7547836SJohn.Forte@Sun.COM     IMA_UINT    staleDataSize;
7557836SJohn.Forte@Sun.COM 
7567836SJohn.Forte@Sun.COM     IMA_BOOL    initiatorAuthMethodsSettable;
7577836SJohn.Forte@Sun.COM     IMA_BOOL    targetAuthMethodsSettable;
7587836SJohn.Forte@Sun.COM 
7597836SJohn.Forte@Sun.COM     IMA_BYTE    reserved[128];
7607836SJohn.Forte@Sun.COM } IMA_LHBA_PROPERTIES;
7617836SJohn.Forte@Sun.COM 
7627836SJohn.Forte@Sun.COM 
7637836SJohn.Forte@Sun.COM 
7647836SJohn.Forte@Sun.COM /**
7657836SJohn.Forte@Sun.COM *******************************************************************************
7667836SJohn.Forte@Sun.COM *
7677836SJohn.Forte@Sun.COM * Declaration of the IMA_ULP_xxx constants
7687836SJohn.Forte@Sun.COM *
7697836SJohn.Forte@Sun.COM *******************************************************************************
7707836SJohn.Forte@Sun.COM */
7717836SJohn.Forte@Sun.COM #define IMA_ULP_TCP             0x01
7727836SJohn.Forte@Sun.COM #define IMA_ULP_SCTP            0x02
7737836SJohn.Forte@Sun.COM #define IMA_ULP_UDP             0x04
7747836SJohn.Forte@Sun.COM 
7757836SJohn.Forte@Sun.COM 
7767836SJohn.Forte@Sun.COM 
7777836SJohn.Forte@Sun.COM /**
7787836SJohn.Forte@Sun.COM *******************************************************************************
7797836SJohn.Forte@Sun.COM *
7807836SJohn.Forte@Sun.COM * Declaration of the IMA_MIN_MAX_VALUE structure
7817836SJohn.Forte@Sun.COM *
7827836SJohn.Forte@Sun.COM * Note: If the 'currentValueValid' field is IMA_FALSE then the value of
7837836SJohn.Forte@Sun.COM *       'settable' must also be set to IMA_FALSE.
7847836SJohn.Forte@Sun.COM *
7857836SJohn.Forte@Sun.COM * Note: The fields in this structure contain values which are defined by the
7867836SJohn.Forte@Sun.COM *       implementation and not by the iSCSI specification.  It is possible
7877836SJohn.Forte@Sun.COM *       that an implementation may be more or less restrictive in the values
7887836SJohn.Forte@Sun.COM *       that it can accept than the iSCSI specification allows.
7897836SJohn.Forte@Sun.COM *
7907836SJohn.Forte@Sun.COM * Note: An example of how to use 'incrementValue': Suppose that a structure is
7917836SJohn.Forte@Sun.COM *       obtained where 'currentValueValid' is IMA_TRUE, 'settable' is
7927836SJohn.Forte@Sun.COM *       IMA_TRUE, 'currentValue' is 50, 'defaultValue' is 50, 'minimumValue'
7937836SJohn.Forte@Sun.COM *       is 30, 'maximumValue' is 70 and 'incrementValue' is 10.  In this case,
7947836SJohn.Forte@Sun.COM *       the possible values that the property can be set to are 30, 40, 50,
7957836SJohn.Forte@Sun.COM *       60, and 70.  The new value must be the current value plus or minus
7967836SJohn.Forte@Sun.COM *       some multiple of 'incrementValue'.
7977836SJohn.Forte@Sun.COM *
7987836SJohn.Forte@Sun.COM *******************************************************************************
7997836SJohn.Forte@Sun.COM */
8007836SJohn.Forte@Sun.COM typedef struct _IMA_MIN_MAX_VALUE
8017836SJohn.Forte@Sun.COM {
8027836SJohn.Forte@Sun.COM     /**
8037836SJohn.Forte@Sun.COM     * A boolean indicating if the @a currentValue field contains a valid value.
8047836SJohn.Forte@Sun.COM     */
8057836SJohn.Forte@Sun.COM     IMA_BOOL        currentValueValid;
8067836SJohn.Forte@Sun.COM 
8077836SJohn.Forte@Sun.COM     /**
8087836SJohn.Forte@Sun.COM     * Indicates if the corresponding property is settable.  If this field
8097836SJohn.Forte@Sun.COM     * has the value IMA_TRUE then the 'defaultValue', 'minimumValue',
8107836SJohn.Forte@Sun.COM     * 'maximumValue', and 'incrementValue' fields shall contain valid
8117836SJohn.Forte@Sun.COM     * values.  If this field has the value IMA_FALSE then these fields
8127836SJohn.Forte@Sun.COM     * have undefined values.
8137836SJohn.Forte@Sun.COM     */
8147836SJohn.Forte@Sun.COM     IMA_BOOL        settable;
8157836SJohn.Forte@Sun.COM 
8167836SJohn.Forte@Sun.COM     /**
8177836SJohn.Forte@Sun.COM     * If currentValueValid has the value IMA_TRUE then this field contains
8187836SJohn.Forte@Sun.COM     * the current value of the associated property.  If 'currentValueValid' has
8197836SJohn.Forte@Sun.COM     * the value IMA_FALSE then the value of this field is undefined.
8207836SJohn.Forte@Sun.COM     */
8217836SJohn.Forte@Sun.COM     IMA_UINT32      currentValue;
8227836SJohn.Forte@Sun.COM 
8237836SJohn.Forte@Sun.COM     /**
8247836SJohn.Forte@Sun.COM     * If 'settable' has the value IMA_TRUE then this field contains the
8257836SJohn.Forte@Sun.COM     * implementation's default value of the associated property.  If 'settable'
8267836SJohn.Forte@Sun.COM     * has the value IMA_FALSE then the value of this field is undefined.
8277836SJohn.Forte@Sun.COM     */
8287836SJohn.Forte@Sun.COM     IMA_UINT32      defaultValue;
8297836SJohn.Forte@Sun.COM 
8307836SJohn.Forte@Sun.COM     /**
8317836SJohn.Forte@Sun.COM     * If 'settable' has the value IMA_TRUE then this field contains the
8327836SJohn.Forte@Sun.COM     * implementation's minimum value of the associated property.  If 'settable'
8337836SJohn.Forte@Sun.COM     * has the value IMA_FALSE then the value of this field is undefined.
8347836SJohn.Forte@Sun.COM     */
8357836SJohn.Forte@Sun.COM     IMA_UINT32      minimumValue;
8367836SJohn.Forte@Sun.COM 
8377836SJohn.Forte@Sun.COM     /**
8387836SJohn.Forte@Sun.COM     * If 'settable' has the value IMA_TRUE then this field contains the
8397836SJohn.Forte@Sun.COM     * implementation's maximum value of the associated property.  If 'settable'
8407836SJohn.Forte@Sun.COM     * has the value IMA_FALSE then the value of this field is undefined.
8417836SJohn.Forte@Sun.COM     */
8427836SJohn.Forte@Sun.COM     IMA_UINT32      maximumValue;
8437836SJohn.Forte@Sun.COM 
8447836SJohn.Forte@Sun.COM     /**
8457836SJohn.Forte@Sun.COM     * If 'settable' has the value IMA_TRUE then this field contains a value
8467836SJohn.Forte@Sun.COM     * which can be added to or subtracted from 'currentValue' to obtain other
8477836SJohn.Forte@Sun.COM     * possible values of the associated property. If 'settable' has the value
8487836SJohn.Forte@Sun.COM     * IMA_FALSE then the value of this field is undefined.
8497836SJohn.Forte@Sun.COM     */
8507836SJohn.Forte@Sun.COM     IMA_UINT32      incrementValue;
8517836SJohn.Forte@Sun.COM 
8527836SJohn.Forte@Sun.COM } IMA_MIN_MAX_VALUE;
8537836SJohn.Forte@Sun.COM 
8547836SJohn.Forte@Sun.COM typedef struct _IMA_BOOL_VALUE
8557836SJohn.Forte@Sun.COM {
8567836SJohn.Forte@Sun.COM     IMA_BOOL    currentValueValid;
8577836SJohn.Forte@Sun.COM     IMA_BOOL    settable;
8587836SJohn.Forte@Sun.COM     IMA_BOOL    currentValue;
8597836SJohn.Forte@Sun.COM     IMA_BOOL    defaultValue;
8607836SJohn.Forte@Sun.COM } IMA_BOOL_VALUE;
8617836SJohn.Forte@Sun.COM 
8627836SJohn.Forte@Sun.COM /**
8637836SJohn.Forte@Sun.COM *******************************************************************************
8647836SJohn.Forte@Sun.COM *
8657836SJohn.Forte@Sun.COM * Declaration of the IMA_PHBA_PROPERTIES structure
8667836SJohn.Forte@Sun.COM *
8677836SJohn.Forte@Sun.COM * This structure is returned by the IMA_GetPhbaProperties() API.
8687836SJohn.Forte@Sun.COM *
8697836SJohn.Forte@Sun.COM * Note: Both 'isInitiator' and 'isTarget' cannot be set to IMA_FALSE as this
8707836SJohn.Forte@Sun.COM *       would mean that the PHBA was not functioning as either an initiator or
8717836SJohn.Forte@Sun.COM *       target, which means that its not functioning at all.
8727836SJohn.Forte@Sun.COM *
8737836SJohn.Forte@Sun.COM *******************************************************************************
8747836SJohn.Forte@Sun.COM */
8757836SJohn.Forte@Sun.COM typedef struct _IMA_PHBA_PROPERTIES
8767836SJohn.Forte@Sun.COM {
8777836SJohn.Forte@Sun.COM     /**
8787836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the name of the vendor
8797836SJohn.Forte@Sun.COM     * of a PHBA. If the first character in this field is nul then the
8807836SJohn.Forte@Sun.COM     * vendor is unknown.
8817836SJohn.Forte@Sun.COM     */
8827836SJohn.Forte@Sun.COM     IMA_WCHAR       vendor[64];
8837836SJohn.Forte@Sun.COM 
8847836SJohn.Forte@Sun.COM     /**
8857836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the name of the model of
8867836SJohn.Forte@Sun.COM     * a PHBA. If the first character in this field is nul then the model is
8877836SJohn.Forte@Sun.COM     * unknown.
8887836SJohn.Forte@Sun.COM     */
8897836SJohn.Forte@Sun.COM     IMA_WCHAR       model[256];
8907836SJohn.Forte@Sun.COM 
8917836SJohn.Forte@Sun.COM     /**
8927836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains a description of a PHBA.
8937836SJohn.Forte@Sun.COM     * This is a user friendly description of the PHBA.  If the first character
8947836SJohn.Forte@Sun.COM     * in this field is nul then there is no description.
8957836SJohn.Forte@Sun.COM     */
8967836SJohn.Forte@Sun.COM     IMA_WCHAR       description[256];
8977836SJohn.Forte@Sun.COM 
8987836SJohn.Forte@Sun.COM     /**
8997836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the serial number of a
9007836SJohn.Forte@Sun.COM     * PHBA.  If the first character in this field is nul then the serial
9017836SJohn.Forte@Sun.COM     * number is unknown.
9027836SJohn.Forte@Sun.COM     */
9037836SJohn.Forte@Sun.COM     IMA_WCHAR       serialNumber[64];
9047836SJohn.Forte@Sun.COM 
9057836SJohn.Forte@Sun.COM     /**
9067836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the hardware version of
9077836SJohn.Forte@Sun.COM     * a PHBA. If the first character in this field is nul then the hardware
9087836SJohn.Forte@Sun.COM     * version is unknown.
9097836SJohn.Forte@Sun.COM     */
9107836SJohn.Forte@Sun.COM     IMA_WCHAR       hardwareVersion[256];
9117836SJohn.Forte@Sun.COM 
9127836SJohn.Forte@Sun.COM     /**
9137836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the ASIC version of a
9147836SJohn.Forte@Sun.COM     * PHBA.  If the first character in this field is nul then the ASIC
9157836SJohn.Forte@Sun.COM     * version is unknown or is not applicable.
9167836SJohn.Forte@Sun.COM     */
9177836SJohn.Forte@Sun.COM     IMA_WCHAR       asicVersion[256];
9187836SJohn.Forte@Sun.COM 
9197836SJohn.Forte@Sun.COM     /**
9207836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the firmware version of
9217836SJohn.Forte@Sun.COM     * a PHBA.  If the first character in this field is nul then the firmware
9227836SJohn.Forte@Sun.COM     * version is unknown or is not applicable.
9237836SJohn.Forte@Sun.COM     */
9247836SJohn.Forte@Sun.COM     IMA_WCHAR       firmwareVersion[256];
9257836SJohn.Forte@Sun.COM 
9267836SJohn.Forte@Sun.COM     /**
9277836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the option ROM version
9287836SJohn.Forte@Sun.COM     * of a PHBA. If the first character in this field is nul then the option
9297836SJohn.Forte@Sun.COM     * ROM version is unknown or is not applicable.
9307836SJohn.Forte@Sun.COM     */
9317836SJohn.Forte@Sun.COM     IMA_WCHAR       optionRomVersion[256];
9327836SJohn.Forte@Sun.COM 
9337836SJohn.Forte@Sun.COM     /**
9347836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the name of the driver
9357836SJohn.Forte@Sun.COM     * controlling a PHBA.  If the first character in this field is nul then
9367836SJohn.Forte@Sun.COM     * the name of the driver is unknown.
9377836SJohn.Forte@Sun.COM     */
9387836SJohn.Forte@Sun.COM     IMA_WCHAR       driverName[256];
9397836SJohn.Forte@Sun.COM 
9407836SJohn.Forte@Sun.COM     /**
9417836SJohn.Forte@Sun.COM     * A nul terminated ASCII string which contains the version of the driver
9427836SJohn.Forte@Sun.COM     * specified in 'driverName'.  If the first character in this field is nul
9437836SJohn.Forte@Sun.COM     * then the version of the driver is unknown.
9447836SJohn.Forte@Sun.COM     *
9457836SJohn.Forte@Sun.COM     * This field can have a known value only if @a driverName has a known
9467836SJohn.Forte@Sun.COM     * value as well.
9477836SJohn.Forte@Sun.COM     */
9487836SJohn.Forte@Sun.COM     IMA_WCHAR       driverVersion[256];
9497836SJohn.Forte@Sun.COM 
9507836SJohn.Forte@Sun.COM     /**
9517836SJohn.Forte@Sun.COM     * A field containing flags which indicate what upper level protocols
9527836SJohn.Forte@Sun.COM     * are supported by a PHBA.  Examples of upper level protocols include:
9537836SJohn.Forte@Sun.COM     *
9547836SJohn.Forte@Sun.COM     *       - TCP, represented by IMA_ULP_TCP
9557836SJohn.Forte@Sun.COM     *       - SCTP, represented by IMA_ULP_SCTP
9567836SJohn.Forte@Sun.COM     *       - UDP, represented by IMA_ULP_UDP
9577836SJohn.Forte@Sun.COM     */
9587836SJohn.Forte@Sun.COM     IMA_UINT        supportedUlps;
9597836SJohn.Forte@Sun.COM 
9607836SJohn.Forte@Sun.COM     /**
9617836SJohn.Forte@Sun.COM     * A extended boolean which indicates if a PHBA supports executing SCSI
9627836SJohn.Forte@Sun.COM     * commands which cause bidirectional transfers.
9637836SJohn.Forte@Sun.COM     *
9647836SJohn.Forte@Sun.COM     * Note: The value of this field applies to the entire stack:
9657836SJohn.Forte@Sun.COM     * the hardware, ASIC, firmware, driver, etc.  All must support SCSI
9667836SJohn.Forte@Sun.COM     * commands which cause bidirectional transfers for this field to be
9677836SJohn.Forte@Sun.COM     * set to IMA_TRUE.
9687836SJohn.Forte@Sun.COM     */
9697836SJohn.Forte@Sun.COM     IMA_XBOOL       bidirectionalTransfersSupported;
9707836SJohn.Forte@Sun.COM 
9717836SJohn.Forte@Sun.COM     /**
9727836SJohn.Forte@Sun.COM     * The maximum length, in bytes, of a CDB that can be transferred by
9737836SJohn.Forte@Sun.COM     * this PHBA.  If this field has a value of zero that indicates that
9747836SJohn.Forte@Sun.COM     * this value is unknown.
9757836SJohn.Forte@Sun.COM     *
9767836SJohn.Forte@Sun.COM     * Note: The value of this field applies to the entire stack:
9777836SJohn.Forte@Sun.COM     * the hardware, ASIC, firmware, driver, etc.  All must support the
9787836SJohn.Forte@Sun.COM     * maximum CDB length returned in this field.
9797836SJohn.Forte@Sun.COM     */
9807836SJohn.Forte@Sun.COM     IMA_UINT        maximumCdbLength;
9817836SJohn.Forte@Sun.COM 
9827836SJohn.Forte@Sun.COM     /**
9837836SJohn.Forte@Sun.COM     * An extended boolean which indicates if a PHBA can also function as
9847836SJohn.Forte@Sun.COM     * a standard NIC concurrently with functioning as an iSCSI PHBA.
9857836SJohn.Forte@Sun.COM     */
9867836SJohn.Forte@Sun.COM     IMA_XBOOL       canBeNic;
9877836SJohn.Forte@Sun.COM 
9887836SJohn.Forte@Sun.COM     /**
9897836SJohn.Forte@Sun.COM     * A extended boolean which indicates if a PHBA is functioning as a
9907836SJohn.Forte@Sun.COM     * standard NIC concurrently with functioning as an iSCSI PHBA.
9917836SJohn.Forte@Sun.COM     */
9927836SJohn.Forte@Sun.COM     IMA_XBOOL       isNic;
9937836SJohn.Forte@Sun.COM 
9947836SJohn.Forte@Sun.COM     /**
9957836SJohn.Forte@Sun.COM     * An extended boolean indicating if the PHBA is functioning as an
9967836SJohn.Forte@Sun.COM     * initiator.
9977836SJohn.Forte@Sun.COM     */
9987836SJohn.Forte@Sun.COM     IMA_XBOOL       isInitiator;
9997836SJohn.Forte@Sun.COM 
10007836SJohn.Forte@Sun.COM     /**
10017836SJohn.Forte@Sun.COM     * An extended boolean indicating if the PHBA is functioning as a target.
10027836SJohn.Forte@Sun.COM     */
10037836SJohn.Forte@Sun.COM     IMA_XBOOL       isTarget;
10047836SJohn.Forte@Sun.COM 
10057836SJohn.Forte@Sun.COM     /**
10067836SJohn.Forte@Sun.COM     * An extended boolean indicating if the PHBA is using a TCP offload engine.
10077836SJohn.Forte@Sun.COM     *
10087836SJohn.Forte@Sun.COM     * Note: This value should only be set to @c IMA_TRUE if a TCP offload
10097836SJohn.Forte@Sun.COM     * engine is present and is being used.  If it can be determined that a
10107836SJohn.Forte@Sun.COM     * TCP offload engine is present, but it cannot be determined if that
10117836SJohn.Forte@Sun.COM     * offload engine is being used then this value should be set to
10127836SJohn.Forte@Sun.COM     * IMA_UNKNOWN.
10137836SJohn.Forte@Sun.COM     */
10147836SJohn.Forte@Sun.COM     IMA_XBOOL       usingTcpOffloadEngine;
10157836SJohn.Forte@Sun.COM 
10167836SJohn.Forte@Sun.COM     /**
10177836SJohn.Forte@Sun.COM     * An extended boolean indicating if the PHBA is using a iSCSI offload
10187836SJohn.Forte@Sun.COM     * engine.
10197836SJohn.Forte@Sun.COM     *
10207836SJohn.Forte@Sun.COM     * Note: This value should only be set to @c IMA_TRUE if a iSCSI offload
10217836SJohn.Forte@Sun.COM     * engine is present and is being used.  If it can be determined that an
10227836SJohn.Forte@Sun.COM     * iSCSI offload engine is present, but it cannot be determined if that
10237836SJohn.Forte@Sun.COM     * offload engine is being used then this value should be set to
10247836SJohn.Forte@Sun.COM     * IMA_UNKNOWN.
10257836SJohn.Forte@Sun.COM     */
10267836SJohn.Forte@Sun.COM     IMA_XBOOL       usingIscsiOffloadEngine;
10277836SJohn.Forte@Sun.COM 
10287836SJohn.Forte@Sun.COM     IMA_BYTE        reserved[128];
10297836SJohn.Forte@Sun.COM 
10307836SJohn.Forte@Sun.COM } IMA_PHBA_PROPERTIES;
10317836SJohn.Forte@Sun.COM 
10327836SJohn.Forte@Sun.COM /**
10337836SJohn.Forte@Sun.COM *******************************************************************************
10347836SJohn.Forte@Sun.COM *
10357836SJohn.Forte@Sun.COM * Declaration of the IMA_DISCOVERY_PROPERTIES structure
10367836SJohn.Forte@Sun.COM *
10377836SJohn.Forte@Sun.COM *******************************************************************************
10387836SJohn.Forte@Sun.COM */
10397836SJohn.Forte@Sun.COM typedef struct _IMA_DISCOVERY_PROPERTIES
10407836SJohn.Forte@Sun.COM {
10417836SJohn.Forte@Sun.COM 		IMA_BOOL			iSnsDiscoverySettable;
10427836SJohn.Forte@Sun.COM 		IMA_XBOOL			iSnsDiscoveryEnabled;
10437836SJohn.Forte@Sun.COM 		IMA_ISNS_DISCOVERY_METHOD   	iSnsDiscoveryMethod;
10447836SJohn.Forte@Sun.COM 		IMA_HOST_ID			iSnsHost;
10457836SJohn.Forte@Sun.COM 
10467836SJohn.Forte@Sun.COM 		IMA_BOOL    			slpDiscoverySettable;
10477836SJohn.Forte@Sun.COM 		IMA_XBOOL   			slpDiscoveryEnabled;
10487836SJohn.Forte@Sun.COM 
10497836SJohn.Forte@Sun.COM 		IMA_BOOL    			staticDiscoverySettable;
10507836SJohn.Forte@Sun.COM 		IMA_XBOOL   			staticDiscoveryEnabled;
10517836SJohn.Forte@Sun.COM 
10527836SJohn.Forte@Sun.COM 		IMA_BOOL    			sendTargetsDiscoverySettable;
10537836SJohn.Forte@Sun.COM 		IMA_XBOOL   			sendTargetsDiscoveryEnabled;
10547836SJohn.Forte@Sun.COM 
10557836SJohn.Forte@Sun.COM 		IMA_BYTE    			reserved[128];
10567836SJohn.Forte@Sun.COM } IMA_DISCOVERY_PROPERTIES;
10577836SJohn.Forte@Sun.COM 
10587836SJohn.Forte@Sun.COM 
10597836SJohn.Forte@Sun.COM typedef struct _IMA_PHBA_DOWNLOAD_PROPERTIES
10607836SJohn.Forte@Sun.COM {
10617836SJohn.Forte@Sun.COM         IMA_BOOL        isPhbaDownloadFileSupported;
10627836SJohn.Forte@Sun.COM         IMA_BOOL        optionRomDownloadSupported;
10637836SJohn.Forte@Sun.COM         IMA_BOOL        firmwareDownloadSupported;
10647836SJohn.Forte@Sun.COM 
10657836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[32];
10667836SJohn.Forte@Sun.COM } IMA_PHBA_DOWNLOAD_PROPERTIES;
10677836SJohn.Forte@Sun.COM 
10687836SJohn.Forte@Sun.COM typedef struct _IMA_IPSEC_PROPERTIES
10697836SJohn.Forte@Sun.COM {
10707836SJohn.Forte@Sun.COM         IMA_BOOL        ipsecSupported;
10717836SJohn.Forte@Sun.COM         IMA_BOOL        implementedInHardware;
10727836SJohn.Forte@Sun.COM         IMA_BOOL        implementedInSoftware;
10737836SJohn.Forte@Sun.COM 
10747836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[32];
10757836SJohn.Forte@Sun.COM 
10767836SJohn.Forte@Sun.COM } IMA_IPSEC_PROPERTIES;
10777836SJohn.Forte@Sun.COM 
10787836SJohn.Forte@Sun.COM typedef struct _IMA_LNP_PROPERTIES
10797836SJohn.Forte@Sun.COM {
10807836SJohn.Forte@Sun.COM         IMA_MAC_ADDRESS macAddress;
10817836SJohn.Forte@Sun.COM         IMA_BOOL        macAddressSettable;
10827836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[32];
10837836SJohn.Forte@Sun.COM 
10847836SJohn.Forte@Sun.COM } IMA_LNP_PROPERTIES;
10857836SJohn.Forte@Sun.COM 
10867836SJohn.Forte@Sun.COM typedef struct _IMA_PNP_PROPERTIES
10877836SJohn.Forte@Sun.COM {
10887836SJohn.Forte@Sun.COM         IMA_OID         associatedPhbaOid;
10897836SJohn.Forte@Sun.COM 
10907836SJohn.Forte@Sun.COM         IMA_MAC_ADDRESS macAddress;
10917836SJohn.Forte@Sun.COM         IMA_BOOL        macAddressSettable;
10927836SJohn.Forte@Sun.COM 
10937836SJohn.Forte@Sun.COM         IMA_UINT        maximumTransferRate;
10947836SJohn.Forte@Sun.COM         IMA_UINT        currentTransferRate;
10957836SJohn.Forte@Sun.COM 
10967836SJohn.Forte@Sun.COM         IMA_UINT        maximumFrameSize;
10977836SJohn.Forte@Sun.COM 
10987836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[64];
10997836SJohn.Forte@Sun.COM } IMA_PNP_PROPERTIES;
11007836SJohn.Forte@Sun.COM 
11017836SJohn.Forte@Sun.COM typedef struct _IMA_PNP_STATISTICS
11027836SJohn.Forte@Sun.COM {
11037836SJohn.Forte@Sun.COM         IMA_UINT64      bytesSent;
11047836SJohn.Forte@Sun.COM         IMA_UINT32      pdusSent;
11057836SJohn.Forte@Sun.COM         IMA_UINT64      bytesReceived;
11067836SJohn.Forte@Sun.COM         IMA_UINT32      pdusReceived;
11077836SJohn.Forte@Sun.COM 
11087836SJohn.Forte@Sun.COM } IMA_PNP_STATISTICS;
11097836SJohn.Forte@Sun.COM 
11107836SJohn.Forte@Sun.COM typedef struct _IMA_TARGET_PROPERTIES
11117836SJohn.Forte@Sun.COM {
11127836SJohn.Forte@Sun.COM         IMA_OID associatedNodeOid;
11137836SJohn.Forte@Sun.COM         IMA_OID associatedLhbaOid;
11147836SJohn.Forte@Sun.COM 
11157836SJohn.Forte@Sun.COM         IMA_NODE_NAME   name;
11167836SJohn.Forte@Sun.COM         IMA_NODE_ALIAS  alias;
11177836SJohn.Forte@Sun.COM         IMA_UINT32      discoveryMethodFlags;
11187836SJohn.Forte@Sun.COM 
11197836SJohn.Forte@Sun.COM         IMA_BOOL        sendTargetsDiscoverySettable;
11207836SJohn.Forte@Sun.COM         IMA_BOOL        sendTargetsDiscoveryEnabled;
11217836SJohn.Forte@Sun.COM 
11227836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[128];
11237836SJohn.Forte@Sun.COM 
11247836SJohn.Forte@Sun.COM } IMA_TARGET_PROPERTIES;
11257836SJohn.Forte@Sun.COM 
11267836SJohn.Forte@Sun.COM typedef struct _IMA_CONNECTION_PROPERTIES
11277836SJohn.Forte@Sun.COM {
11287836SJohn.Forte@Sun.COM 	IMA_OID	associatedSessionOid;
11297836SJohn.Forte@Sun.COM 	IMA_UINT16	connectionId;
11307836SJohn.Forte@Sun.COM 	IMA_DIGEST_TYPE	dataDigest;
11317836SJohn.Forte@Sun.COM 	IMA_DIGEST_TYPE	headerDigest;
11327836SJohn.Forte@Sun.COM 	IMA_BOOL	ifMarker;
11337836SJohn.Forte@Sun.COM 	IMA_UINT32	ifMarkInt;
11347836SJohn.Forte@Sun.COM 	IMA_UINT32	maxRecvDataSegmentLength;
11357836SJohn.Forte@Sun.COM 	IMA_UINT32	maxTransmitDataSegmentLength;
11367836SJohn.Forte@Sun.COM 	IMA_BOOL	ofMarker;
11377836SJohn.Forte@Sun.COM 	IMA_UINT32	ofMarkInt;
11387836SJohn.Forte@Sun.COM } IMA_CONNECTION_PROPERTIES;
11397836SJohn.Forte@Sun.COM 
11407836SJohn.Forte@Sun.COM 
11417836SJohn.Forte@Sun.COM typedef struct _IMA_SESSION_PROPERTIES
11427836SJohn.Forte@Sun.COM {
11437836SJohn.Forte@Sun.COM 	IMA_OID	associatedLhbaOid;
11447836SJohn.Forte@Sun.COM 	IMA_AUTHMETHOD	authMethod;
11457836SJohn.Forte@Sun.COM 	IMA_BOOL	dataPduInOrder;
11467836SJohn.Forte@Sun.COM 	IMA_BOOL	dataSequenceInOrder;
11477836SJohn.Forte@Sun.COM 	IMA_UINT16	defaultTime2Retain;
11487836SJohn.Forte@Sun.COM 	IMA_UINT16	defaultTime2Wait;
11497836SJohn.Forte@Sun.COM 	IMA_UINT16	errorRecoveryLevel;
11507836SJohn.Forte@Sun.COM 	IMA_UINT32	firstBurstLength;
11517836SJohn.Forte@Sun.COM 	IMA_BOOL	immediateData;
11527836SJohn.Forte@Sun.COM 	IMA_BOOL	initialR2T;
11537836SJohn.Forte@Sun.COM 	IMA_BYTE	isid[6];
11547836SJohn.Forte@Sun.COM 	IMA_UINT32	maxBurstLength;
11557836SJohn.Forte@Sun.COM 	IMA_UINT16	maxConnections;
11567836SJohn.Forte@Sun.COM 	IMA_UINT16	maxOutstandingR2T;
11577836SJohn.Forte@Sun.COM 	IMA_UINT16	targetPortalGroupTag;
11587836SJohn.Forte@Sun.COM 	IMA_UINT16	tsih;
11597836SJohn.Forte@Sun.COM } IMA_SESSION_PROPERTIES;
11607836SJohn.Forte@Sun.COM 
11617836SJohn.Forte@Sun.COM 
11627836SJohn.Forte@Sun.COM typedef struct _IMA_TARGET_ERROR_STATISTICS
11637836SJohn.Forte@Sun.COM {
11647836SJohn.Forte@Sun.COM         IMA_BOOL        loginFailedCountValid;
11657836SJohn.Forte@Sun.COM         IMA_UINT32      loginFailedCount;
11667836SJohn.Forte@Sun.COM 
11677836SJohn.Forte@Sun.COM         IMA_BOOL        sessionFailedCountValid;
11687836SJohn.Forte@Sun.COM         IMA_UINT32      sessionFailedCount;
11697836SJohn.Forte@Sun.COM 
11707836SJohn.Forte@Sun.COM         IMA_BOOL        headerOrDigestSessionFailedCountValid;
11717836SJohn.Forte@Sun.COM         IMA_UINT32      headerOrDigestSessionFailedCount;
11727836SJohn.Forte@Sun.COM 
11737836SJohn.Forte@Sun.COM         IMA_BOOL        timeLimitExceededSessionFailedCountValid;
11747836SJohn.Forte@Sun.COM         IMA_UINT32      timeLimitExceededSessionFailedCount;
11757836SJohn.Forte@Sun.COM 
11767836SJohn.Forte@Sun.COM         IMA_BOOL        formatErrorSessionFailedCountValid;
11777836SJohn.Forte@Sun.COM         IMA_UINT32      formatErrorSessionFailedCount;
11787836SJohn.Forte@Sun.COM 
11797836SJohn.Forte@Sun.COM         IMA_BOOL        closedConnectionDueToTimeoutCountValid;
11807836SJohn.Forte@Sun.COM         IMA_UINT32      closedConnectionDueToTimeoutCount;
11817836SJohn.Forte@Sun.COM 
11827836SJohn.Forte@Sun.COM         IMA_BOOL        lastLoginFailureTimeValid;
11837836SJohn.Forte@Sun.COM         IMA_DATETIME    lastLoginFailureTime;
11847836SJohn.Forte@Sun.COM 
11857836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[64];
11867836SJohn.Forte@Sun.COM 
11877836SJohn.Forte@Sun.COM } IMA_TARGET_ERROR_STATISTICS;
11887836SJohn.Forte@Sun.COM 
11897836SJohn.Forte@Sun.COM typedef struct _IMA_LU_PROPERTIES
11907836SJohn.Forte@Sun.COM {
11917836SJohn.Forte@Sun.COM         IMA_OID         associatedTargetOid;
11927836SJohn.Forte@Sun.COM         IMA_UINT64      targetLun;
11937836SJohn.Forte@Sun.COM 
11947836SJohn.Forte@Sun.COM         IMA_BOOL        exposedToOs;
11957836SJohn.Forte@Sun.COM         IMA_DATETIME    timeExposedToOs;
11967836SJohn.Forte@Sun.COM 
11977836SJohn.Forte@Sun.COM         IMA_BOOL        osDeviceNameValid;
11987836SJohn.Forte@Sun.COM         IMA_WCHAR       osDeviceName[64];
11997836SJohn.Forte@Sun.COM 
12007836SJohn.Forte@Sun.COM         IMA_BOOL        osParallelIdsValid;
12017836SJohn.Forte@Sun.COM         IMA_UINT32      osBusNumber;
12027836SJohn.Forte@Sun.COM         IMA_UINT32      osTargetId;
12037836SJohn.Forte@Sun.COM         IMA_UINT32      osLun;
12047836SJohn.Forte@Sun.COM 
12057836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[128];
12067836SJohn.Forte@Sun.COM 
12077836SJohn.Forte@Sun.COM } IMA_LU_PROPERTIES;
12087836SJohn.Forte@Sun.COM 
12097836SJohn.Forte@Sun.COM typedef struct _IMA_STATISTICS_PROPERTIES
12107836SJohn.Forte@Sun.COM {
12117836SJohn.Forte@Sun.COM         IMA_BOOL        statisticsCollectionSettable;
12127836SJohn.Forte@Sun.COM         IMA_BOOL        statisticsCollectionEnabled;
12137836SJohn.Forte@Sun.COM 
12147836SJohn.Forte@Sun.COM } IMA_STATISTICS_PROPERTIES;
12157836SJohn.Forte@Sun.COM 
12167836SJohn.Forte@Sun.COM typedef struct _IMA_DEVICE_STATISTICS
12177836SJohn.Forte@Sun.COM {
12187836SJohn.Forte@Sun.COM         IMA_UINT64      scsiPayloadBytesSent;
12197836SJohn.Forte@Sun.COM         IMA_UINT64      scsiPayloadBytesReceived;
12207836SJohn.Forte@Sun.COM 
12217836SJohn.Forte@Sun.COM         IMA_UINT64      iScsiPduBytesSent;
12227836SJohn.Forte@Sun.COM         IMA_UINT64      iScsiPduBytesReceived;
12237836SJohn.Forte@Sun.COM 
12247836SJohn.Forte@Sun.COM         IMA_UINT64      iScsiPdusSent;
12257836SJohn.Forte@Sun.COM         IMA_UINT64      iScsiPdusReceived;
12267836SJohn.Forte@Sun.COM 
12277836SJohn.Forte@Sun.COM         IMA_UINT64      millisecondsSpentSending;
12287836SJohn.Forte@Sun.COM         IMA_UINT64      millisecondsSpentReceiving;
12297836SJohn.Forte@Sun.COM 
12307836SJohn.Forte@Sun.COM } IMA_DEVICE_STATISTICS;
12317836SJohn.Forte@Sun.COM 
12327836SJohn.Forte@Sun.COM typedef struct _IMA_NETWORK_PORTAL_PROPERTIES
12337836SJohn.Forte@Sun.COM {
12347836SJohn.Forte@Sun.COM         IMA_IP_ADDRESS  ipAddress;
12357836SJohn.Forte@Sun.COM         IMA_OID         associatedLnp;
12367836SJohn.Forte@Sun.COM 
12377836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[32];
12387836SJohn.Forte@Sun.COM } IMA_NETWORK_PORTAL_PROPERTIES;
12397836SJohn.Forte@Sun.COM 
12407836SJohn.Forte@Sun.COM typedef void (* IMA_OBJECT_VISIBILITY_FN)(
12417836SJohn.Forte@Sun.COM         IMA_BOOL        becomingVisible,
12427836SJohn.Forte@Sun.COM         IMA_OID         oid
12437836SJohn.Forte@Sun.COM );
12447836SJohn.Forte@Sun.COM 
12457836SJohn.Forte@Sun.COM typedef void (* IMA_OBJECT_PROPERTY_FN)(
12467836SJohn.Forte@Sun.COM         IMA_OID         oid
12477836SJohn.Forte@Sun.COM );
12487836SJohn.Forte@Sun.COM 
12497836SJohn.Forte@Sun.COM typedef struct _IMA_CHAP_INITIATOR_AUTHPARMS
12507836SJohn.Forte@Sun.COM {
12517836SJohn.Forte@Sun.COM 
12527836SJohn.Forte@Sun.COM         IMA_UINT        retries;
12537836SJohn.Forte@Sun.COM 
12547836SJohn.Forte@Sun.COM         IMA_BYTE        name[512];
12557836SJohn.Forte@Sun.COM         IMA_UINT        nameLength;
12567836SJohn.Forte@Sun.COM 
12577836SJohn.Forte@Sun.COM         IMA_UINT        minValueLength;
12587836SJohn.Forte@Sun.COM         IMA_UINT        maxValueLength;
12597836SJohn.Forte@Sun.COM 
12607836SJohn.Forte@Sun.COM         IMA_BYTE        challengeSecret[256];
12617836SJohn.Forte@Sun.COM         IMA_UINT        challengeSecretLength;
12627836SJohn.Forte@Sun.COM 
12637836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[512];
12647836SJohn.Forte@Sun.COM 
12657836SJohn.Forte@Sun.COM } IMA_CHAP_INITIATOR_AUTHPARMS;
12667836SJohn.Forte@Sun.COM 
12677836SJohn.Forte@Sun.COM typedef struct _IMA_SRP_INITIATOR_AUTHPARMS
12687836SJohn.Forte@Sun.COM {
12697836SJohn.Forte@Sun.COM 
12707836SJohn.Forte@Sun.COM         IMA_BYTE        userName[512];
12717836SJohn.Forte@Sun.COM         IMA_UINT        userNameLength;
12727836SJohn.Forte@Sun.COM 
12737836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[512];
12747836SJohn.Forte@Sun.COM 
12757836SJohn.Forte@Sun.COM } IMA_SRP_INITIATOR_AUTHPARMS;
12767836SJohn.Forte@Sun.COM 
12777836SJohn.Forte@Sun.COM typedef struct _IMA_KRB5_INITIATOR_AUTHPARMS
12787836SJohn.Forte@Sun.COM {
12797836SJohn.Forte@Sun.COM 
12807836SJohn.Forte@Sun.COM         IMA_BYTE        clientKey[1024];
12817836SJohn.Forte@Sun.COM         IMA_UINT        clientKeyLength;
12827836SJohn.Forte@Sun.COM 
12837836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[2048];
12847836SJohn.Forte@Sun.COM 
12857836SJohn.Forte@Sun.COM } IMA_KRB5_INITIATOR_AUTHPARMS;
12867836SJohn.Forte@Sun.COM 
12877836SJohn.Forte@Sun.COM typedef struct _IMA_SPKM_INITIATOR_AUTHPARMS
12887836SJohn.Forte@Sun.COM {
12897836SJohn.Forte@Sun.COM 
12907836SJohn.Forte@Sun.COM         IMA_BYTE        privateKey[4096];
12917836SJohn.Forte@Sun.COM         IMA_UINT        privateKeyLength;
12927836SJohn.Forte@Sun.COM 
12937836SJohn.Forte@Sun.COM         IMA_BYTE        publicKey[4096];
12947836SJohn.Forte@Sun.COM         IMA_UINT        publicKeyLength;
12957836SJohn.Forte@Sun.COM 
12967836SJohn.Forte@Sun.COM         IMA_BYTE        reserved[4096];
12977836SJohn.Forte@Sun.COM 
12987836SJohn.Forte@Sun.COM } IMA_SPKM_INITIATOR_AUTHPARMS;
12997836SJohn.Forte@Sun.COM 
13007836SJohn.Forte@Sun.COM typedef union _IMA_INITIATOR_AUTHPARMS
13017836SJohn.Forte@Sun.COM {
13027836SJohn.Forte@Sun.COM 
13037836SJohn.Forte@Sun.COM         IMA_CHAP_INITIATOR_AUTHPARMS    chapParms;
13047836SJohn.Forte@Sun.COM         IMA_SRP_INITIATOR_AUTHPARMS     srpParms;
13057836SJohn.Forte@Sun.COM         IMA_KRB5_INITIATOR_AUTHPARMS    kerberosParms;
13067836SJohn.Forte@Sun.COM         IMA_SPKM_INITIATOR_AUTHPARMS    spkmParms;
13077836SJohn.Forte@Sun.COM 
13087836SJohn.Forte@Sun.COM } IMA_INITIATOR_AUTHPARMS;
13097836SJohn.Forte@Sun.COM 
13107836SJohn.Forte@Sun.COM 
13117836SJohn.Forte@Sun.COM typedef struct _IMA_STATIC_DISCOVERY_TARGET
13127836SJohn.Forte@Sun.COM {
13137836SJohn.Forte@Sun.COM 		IMA_NODE_NAME 		targetName;
13147836SJohn.Forte@Sun.COM 		IMA_TARGET_ADDRESS 	targetAddress;
13157836SJohn.Forte@Sun.COM 
13167836SJohn.Forte@Sun.COM } IMA_STATIC_DISCOVERY_TARGET;
13177836SJohn.Forte@Sun.COM 
13187836SJohn.Forte@Sun.COM typedef struct _IMA_DISCOVERY_ADDRESS_PROPERTIES
13197836SJohn.Forte@Sun.COM {
13207836SJohn.Forte@Sun.COM 		IMA_OID			associatedNodeOid;
13217836SJohn.Forte@Sun.COM 		IMA_OID			associatedLhbaOid;
13227836SJohn.Forte@Sun.COM 		IMA_TARGET_ADDRESS	discoveryAddress;
13237836SJohn.Forte@Sun.COM 
13247836SJohn.Forte@Sun.COM } IMA_DISCOVERY_ADDRESS_PROPERTIES;
13257836SJohn.Forte@Sun.COM 
13267836SJohn.Forte@Sun.COM typedef struct _IMA_STATIC_TGT_PROPERTIES
13277836SJohn.Forte@Sun.COM {
13287836SJohn.Forte@Sun.COM 		IMA_OID				associatedNodeOid;
13297836SJohn.Forte@Sun.COM 		IMA_OID				associatedLhbaOid;
13307836SJohn.Forte@Sun.COM 		IMA_STATIC_DISCOVERY_TARGET	staticTarget;
13317836SJohn.Forte@Sun.COM 
13327836SJohn.Forte@Sun.COM } IMA_STATIC_DISCOVERY_TARGET_PROPERTIES;
13337836SJohn.Forte@Sun.COM 
1334*10156SZhang.Yi@Sun.COM typedef struct ima_plugin_info {
1335*10156SZhang.Yi@Sun.COM 	char PluginName[64];
1336*10156SZhang.Yi@Sun.COM         char PluginPath[256];
1337*10156SZhang.Yi@Sun.COM #ifdef WIN32
1338*10156SZhang.Yi@Sun.COM 	HINSTANCE hPlugin; /* Handle to a loaded DLL */
1339*10156SZhang.Yi@Sun.COM #else
1340*10156SZhang.Yi@Sun.COM 	void* hPlugin; /* Handle to a loaded DLL */
1341*10156SZhang.Yi@Sun.COM #endif
1342*10156SZhang.Yi@Sun.COM 	IMA_UINT32 ownerId;
1343*10156SZhang.Yi@Sun.COM #ifdef WIN32
1344*10156SZhang.Yi@Sun.COM 	HANDLE pluginMutex;
1345*10156SZhang.Yi@Sun.COM #else
1346*10156SZhang.Yi@Sun.COM 	int pluginMutex;
1347*10156SZhang.Yi@Sun.COM #endif
1348*10156SZhang.Yi@Sun.COM 	IMA_UINT number_of_vbcallbacks;
1349*10156SZhang.Yi@Sun.COM         IMA_OBJECT_VISIBILITY_FN vbcallback[IMA_MAX_CALLBACK_PER_PLUGIN];
1350*10156SZhang.Yi@Sun.COM         IMA_UINT number_of_pccallbacks;
1351*10156SZhang.Yi@Sun.COM         IMA_OBJECT_PROPERTY_FN pccallback[IMA_MAX_CALLBACK_PER_PLUGIN];
1352*10156SZhang.Yi@Sun.COM } IMA_PLUGIN_INFO, *PIMA_PLUGIN_INFO;
1353*10156SZhang.Yi@Sun.COM 
13547836SJohn.Forte@Sun.COM 
13557836SJohn.Forte@Sun.COM /**
13567836SJohn.Forte@Sun.COM *******************************************************************************
13577836SJohn.Forte@Sun.COM *
13587836SJohn.Forte@Sun.COM * The individual APIs of the IMA are declared below.
13597836SJohn.Forte@Sun.COM *
13607836SJohn.Forte@Sun.COM *******************************************************************************
13617836SJohn.Forte@Sun.COM */
13627836SJohn.Forte@Sun.COM 
13637836SJohn.Forte@Sun.COM /**
13647836SJohn.Forte@Sun.COM *******************************************************************************
13657836SJohn.Forte@Sun.COM *
13667836SJohn.Forte@Sun.COM * Gets the properties of the IMA library that is being used.
13677836SJohn.Forte@Sun.COM *
13687836SJohn.Forte@Sun.COM * @param  pProps
13697836SJohn.Forte@Sun.COM *         A pointer to an IMA_LIBRARY_PROPERTIES structure allocated by
13707836SJohn.Forte@Sun.COM *         the caller.  On successful return this structure will contain the
13717836SJohn.Forte@Sun.COM *         properties of the IMA library.
13727836SJohn.Forte@Sun.COM *
13737836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
13747836SJohn.Forte@Sun.COM *         an error occurred.
13757836SJohn.Forte@Sun.COM *
13767836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
13777836SJohn.Forte@Sun.COM *         Returned if the library properties were successfully returned.
13787836SJohn.Forte@Sun.COM *
13797836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
13807836SJohn.Forte@Sun.COM *         Returned if 'pProps' is NULL or specifies a memory area to which
13817836SJohn.Forte@Sun.COM *         data cannot be written.
13827836SJohn.Forte@Sun.COM *
13837836SJohn.Forte@Sun.COM *******************************************************************************
13847836SJohn.Forte@Sun.COM */
13857836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLibraryProperties(
13867836SJohn.Forte@Sun.COM         IMA_LIBRARY_PROPERTIES *pProps
13877836SJohn.Forte@Sun.COM );
13887836SJohn.Forte@Sun.COM 
13897836SJohn.Forte@Sun.COM 
13907836SJohn.Forte@Sun.COM 
13917836SJohn.Forte@Sun.COM /**
13927836SJohn.Forte@Sun.COM *******************************************************************************
13937836SJohn.Forte@Sun.COM *
13947836SJohn.Forte@Sun.COM * Gets a list of the object IDs of all currently loaded plugins.
13957836SJohn.Forte@Sun.COM *
13967836SJohn.Forte@Sun.COM * @param ppList
13977836SJohn.Forte@Sun.COM *        A pointer to a pointer to an IMA_OID_LIST.  On successful
13987836SJohn.Forte@Sun.COM *        return this will contain a pointer to an @ref IMA_OID_LIST
13997836SJohn.Forte@Sun.COM *        which contains the object IDs of all of the plugins currently
14007836SJohn.Forte@Sun.COM *        loaded by the library.
14017836SJohn.Forte@Sun.COM *
14027836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or
14037836SJohn.Forte@Sun.COM *         if an error occurred.
14047836SJohn.Forte@Sun.COM *
14057836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
14067836SJohn.Forte@Sun.COM *         Returned if the plugin ID list was successfully returned.
14077836SJohn.Forte@Sun.COM *
14087836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
14097836SJohn.Forte@Sun.COM *         Returned if 'ppList' is NULL or specifies a memory area to
14107836SJohn.Forte@Sun.COM *         which data cannot be written.
14117836SJohn.Forte@Sun.COM *
14127836SJohn.Forte@Sun.COM *******************************************************************************
14137836SJohn.Forte@Sun.COM */
14147836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPluginOidList(
14157836SJohn.Forte@Sun.COM         IMA_OID_LIST **ppList
14167836SJohn.Forte@Sun.COM );
14177836SJohn.Forte@Sun.COM 
14187836SJohn.Forte@Sun.COM 
14197836SJohn.Forte@Sun.COM 
14207836SJohn.Forte@Sun.COM /**
14217836SJohn.Forte@Sun.COM *******************************************************************************
14227836SJohn.Forte@Sun.COM *
14237836SJohn.Forte@Sun.COM * Gets the properties of the specified vendor plugin.
14247836SJohn.Forte@Sun.COM *
14257836SJohn.Forte@Sun.COM * @param  pluginOid
14267836SJohn.Forte@Sun.COM *         The ID of the plugin whose properties are being retrieved.
14277836SJohn.Forte@Sun.COM *
14287836SJohn.Forte@Sun.COM * @param  pProps
14297836SJohn.Forte@Sun.COM *         A pointer to an @ref IMA_PLUGIN_PROPERTIES structure allocated by
14307836SJohn.Forte@Sun.COM *         the caller.  On successful return this will contain the properties
14317836SJohn.Forte@Sun.COM *         of the plugin specified by pluginOid.
14327836SJohn.Forte@Sun.COM *
14337836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if an
14347836SJohn.Forte@Sun.COM *         error occurred.
14357836SJohn.Forte@Sun.COM *
14367836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
14377836SJohn.Forte@Sun.COM *         Returned if the plugin properties were successfully returned.
14387836SJohn.Forte@Sun.COM *
14397836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
14407836SJohn.Forte@Sun.COM *         Returned if 'pluginOid' does not specify any valid object type.
14417836SJohn.Forte@Sun.COM *
14427836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
14437836SJohn.Forte@Sun.COM *         Returned if 'pluginOid' does not specify a plugin object.
14447836SJohn.Forte@Sun.COM *
14457836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
14467836SJohn.Forte@Sun.COM *         Returned if 'pluginOid' refers to a plugin, but not one that
14477836SJohn.Forte@Sun.COM *         is currently loaded.
14487836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
14497836SJohn.Forte@Sun.COM *         Returned if 'pProps' is NULL or specifies a memory area to
14507836SJohn.Forte@Sun.COM *         which data cannot be written.
14517836SJohn.Forte@Sun.COM *
14527836SJohn.Forte@Sun.COM *******************************************************************************
14537836SJohn.Forte@Sun.COM */
14547836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPluginProperties(
14557836SJohn.Forte@Sun.COM         IMA_OID pluginOid,
14567836SJohn.Forte@Sun.COM         IMA_PLUGIN_PROPERTIES *pProps
14577836SJohn.Forte@Sun.COM );
14587836SJohn.Forte@Sun.COM 
14597836SJohn.Forte@Sun.COM 
14607836SJohn.Forte@Sun.COM 
14617836SJohn.Forte@Sun.COM /**
14627836SJohn.Forte@Sun.COM *******************************************************************************
14637836SJohn.Forte@Sun.COM *
14647836SJohn.Forte@Sun.COM * Gets the object ID for the plugin associated with the specified object ID.
14657836SJohn.Forte@Sun.COM *
14667836SJohn.Forte@Sun.COM * @param  oid
14677836SJohn.Forte@Sun.COM *         The object ID of an object that has been received from a previous
14687836SJohn.Forte@Sun.COM *         library call.
14697836SJohn.Forte@Sun.COM *
14707836SJohn.Forte@Sun.COM * @param  pPluginOid
14717836SJohn.Forte@Sun.COM *         A pointer to an IMA_OID structure allocated by the caller.  On
14727836SJohn.Forte@Sun.COM *         successful return this will contain the object ID of the plugin
14737836SJohn.Forte@Sun.COM *         associated with the object specified by @a objectId.  This
14747836SJohn.Forte@Sun.COM *         can then be used to work with the plugin, e.g., to get the
14757836SJohn.Forte@Sun.COM *         properties of the plugin or the send the plugin an IOCtl.
14767836SJohn.Forte@Sun.COM *
14777836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
14787836SJohn.Forte@Sun.COM *         an error occurred.
14797836SJohn.Forte@Sun.COM *
14807836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
14817836SJohn.Forte@Sun.COM *         Returned if the associated plugin ID was successfully returned.
14827836SJohn.Forte@Sun.COM *
14837836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
14847836SJohn.Forte@Sun.COM *         Returned if 'pPluginOid' is NULL or specifies a memory area to
14857836SJohn.Forte@Sun.COM *         which data cannot be written.
14867836SJohn.Forte@Sun.COM *
14877836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
14887836SJohn.Forte@Sun.COM *         Returned if 'oid' specifies an object not owned by a plugin, but
14897836SJohn.Forte@Sun.COM *         instead one that is owned by the library.
14907836SJohn.Forte@Sun.COM *
14917836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
14927836SJohn.Forte@Sun.COM *         Returned if 'oid' specifies an object with an invalid type.
14937836SJohn.Forte@Sun.COM *
14947836SJohn.Forte@Sun.COM *******************************************************************************
14957836SJohn.Forte@Sun.COM */
14967836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetAssociatedPluginOid(
14977836SJohn.Forte@Sun.COM         IMA_OID oid,
14987836SJohn.Forte@Sun.COM         IMA_OID *pPluginOid
14997836SJohn.Forte@Sun.COM );
15007836SJohn.Forte@Sun.COM 
15017836SJohn.Forte@Sun.COM 
15027836SJohn.Forte@Sun.COM 
15037836SJohn.Forte@Sun.COM /**
15047836SJohn.Forte@Sun.COM *******************************************************************************
15057836SJohn.Forte@Sun.COM *
15067836SJohn.Forte@Sun.COM * Gets the object ID of the shared node.
15077836SJohn.Forte@Sun.COM *
15087836SJohn.Forte@Sun.COM * @param  pSharedNodeOid
15097836SJohn.Forte@Sun.COM *         A pointer to an IMA_OID structure allocated by the caller.  On
15107836SJohn.Forte@Sun.COM *         successful return it will contain the object ID of the
15117836SJohn.Forte@Sun.COM *         shared node of the currently executing system is placed.
15127836SJohn.Forte@Sun.COM *
15137836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or
15147836SJohn.Forte@Sun.COM *         if an error occurred.
15157836SJohn.Forte@Sun.COM *
15167836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
15177836SJohn.Forte@Sun.COM *         Returned if the shared node ID has been successfully retrieved.
15187836SJohn.Forte@Sun.COM *
15197836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
15207836SJohn.Forte@Sun.COM *         Returned if 'pSharedNodeOid' is NULL or specifies a memory area
15217836SJohn.Forte@Sun.COM *         to which data cannot be written.
15227836SJohn.Forte@Sun.COM *
15237836SJohn.Forte@Sun.COM *******************************************************************************
15247836SJohn.Forte@Sun.COM */
15257836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetSharedNodeOid(
15267836SJohn.Forte@Sun.COM         IMA_OID *pSharedNodeOid
15277836SJohn.Forte@Sun.COM );
15287836SJohn.Forte@Sun.COM 
15297836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetObjectType(
15307836SJohn.Forte@Sun.COM         IMA_OID oid,
15317836SJohn.Forte@Sun.COM         IMA_OBJECT_TYPE *pObjectType
15327836SJohn.Forte@Sun.COM );
15337836SJohn.Forte@Sun.COM 
15347836SJohn.Forte@Sun.COM 
15357836SJohn.Forte@Sun.COM /**
15367836SJohn.Forte@Sun.COM *******************************************************************************
15377836SJohn.Forte@Sun.COM *
15387836SJohn.Forte@Sun.COM * Gets the properties of the specified iSCSI node.
15397836SJohn.Forte@Sun.COM *
15407836SJohn.Forte@Sun.COM * @param  nodeOid
15417836SJohn.Forte@Sun.COM *         The ID of the node to get the properties of.
15427836SJohn.Forte@Sun.COM *
15437836SJohn.Forte@Sun.COM * @param  pProps
15447836SJohn.Forte@Sun.COM *         A pointer to an @ref IMA_NODE_PROPERTIES structure which on
15457836SJohn.Forte@Sun.COM *         successful return will contain the properties of the specified node.
15467836SJohn.Forte@Sun.COM *
15477836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
15487836SJohn.Forte@Sun.COM *         an error occurred.
15497836SJohn.Forte@Sun.COM *
15507836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
15517836SJohn.Forte@Sun.COM *         Returned if the node properties have been successfully retrieved.
15527836SJohn.Forte@Sun.COM *
15537836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
15547836SJohn.Forte@Sun.COM *         Returned if 'pProps' is NULL or specifies a memory area to which
15557836SJohn.Forte@Sun.COM *         data cannot be written.
15567836SJohn.Forte@Sun.COM *
15577836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
15587836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify any valid object type.
15597836SJohn.Forte@Sun.COM *
15607836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
15617836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify a node object.
15627836SJohn.Forte@Sun.COM *
15637836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
15647836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify a node which is currently
15657836SJohn.Forte@Sun.COM *         known to the system.
15667836SJohn.Forte@Sun.COM *
15677836SJohn.Forte@Sun.COM *******************************************************************************
15687836SJohn.Forte@Sun.COM */
15697836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetNodeProperties(
15707836SJohn.Forte@Sun.COM         IMA_OID nodeOid,
15717836SJohn.Forte@Sun.COM         IMA_NODE_PROPERTIES *pProps
15727836SJohn.Forte@Sun.COM );
15737836SJohn.Forte@Sun.COM 
15747836SJohn.Forte@Sun.COM 
15757836SJohn.Forte@Sun.COM 
15767836SJohn.Forte@Sun.COM /**
15777836SJohn.Forte@Sun.COM *******************************************************************************
15787836SJohn.Forte@Sun.COM *
15797836SJohn.Forte@Sun.COM * Sets the name of the specified node.
15807836SJohn.Forte@Sun.COM *
15817836SJohn.Forte@Sun.COM * @param  nodeOid
15827836SJohn.Forte@Sun.COM *         The object ID of the node whose name is being set.
15837836SJohn.Forte@Sun.COM *
15847836SJohn.Forte@Sun.COM * @param  newName
15857836SJohn.Forte@Sun.COM *         The new name of the node.
15867836SJohn.Forte@Sun.COM *
15877836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or
15887836SJohn.Forte@Sun.COM *         if an error occurred.
15897836SJohn.Forte@Sun.COM *
15907836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
15917836SJohn.Forte@Sun.COM *         Returned if the node name was successfully changed.
15927836SJohn.Forte@Sun.COM *
15937836SJohn.Forte@Sun.COM * @retval IMA_STATUS_REBOOT_NECESSARY
15947836SJohn.Forte@Sun.COM *         Returned if a reboot is necessary before the setting of the
15957836SJohn.Forte@Sun.COM *         name actually takes affect.
15967836SJohn.Forte@Sun.COM *
15977836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
15987836SJohn.Forte@Sun.COM *         Returned if 'newName' is NULL, or specifies a memory area
15997836SJohn.Forte@Sun.COM *         to which data cannot be written, or has a length of 0.
16007836SJohn.Forte@Sun.COM *
16017836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
16027836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify any valid object type.
16037836SJohn.Forte@Sun.COM *
16047836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
16057836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify a node object.
16067836SJohn.Forte@Sun.COM *
16077836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
16087836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify a node which is
16097836SJohn.Forte@Sun.COM *         currently known to the system.
16107836SJohn.Forte@Sun.COM *
16117836SJohn.Forte@Sun.COM * @retval IMA_ERROR_NAME_TOO_LONG
16127836SJohn.Forte@Sun.COM *         Returned if 'newName' contains too many characters.
16137836SJohn.Forte@Sun.COM *
16147836SJohn.Forte@Sun.COM *******************************************************************************
16157836SJohn.Forte@Sun.COM */
16167836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetNodeName(
16177836SJohn.Forte@Sun.COM         IMA_OID nodeOid,
16187836SJohn.Forte@Sun.COM         const IMA_NODE_NAME newName
16197836SJohn.Forte@Sun.COM );
16207836SJohn.Forte@Sun.COM 
16217836SJohn.Forte@Sun.COM 
16227836SJohn.Forte@Sun.COM 
16237836SJohn.Forte@Sun.COM /**
16247836SJohn.Forte@Sun.COM *******************************************************************************
16257836SJohn.Forte@Sun.COM *
16267836SJohn.Forte@Sun.COM * Generates a unique node name for the currently running system.
16277836SJohn.Forte@Sun.COM *
16287836SJohn.Forte@Sun.COM * @param  generatedName
16297836SJohn.Forte@Sun.COM *         On successful return contains the generated node name.
16307836SJohn.Forte@Sun.COM *
16317836SJohn.Forte@Sun.COM * @return  An IMA_STATUS indicating if the operation was successful or if an
16327836SJohn.Forte@Sun.COM *          error occurred.
16337836SJohn.Forte@Sun.COM *
16347836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
16357836SJohn.Forte@Sun.COM *         Returned if 'generatedname is NULL or
16367836SJohn.Forte@Sun.COM *               specifies a memory area to which data cannot be written.
16377836SJohn.Forte@Sun.COM *
16387836SJohn.Forte@Sun.COM *******************************************************************************
16397836SJohn.Forte@Sun.COM */
16407836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GenerateNodeName(
16417836SJohn.Forte@Sun.COM         IMA_NODE_NAME generatedName
16427836SJohn.Forte@Sun.COM );
16437836SJohn.Forte@Sun.COM 
16447836SJohn.Forte@Sun.COM 
16457836SJohn.Forte@Sun.COM 
16467836SJohn.Forte@Sun.COM /**
16477836SJohn.Forte@Sun.COM *******************************************************************************
16487836SJohn.Forte@Sun.COM *
16497836SJohn.Forte@Sun.COM * Sets the alias of the specified node.
16507836SJohn.Forte@Sun.COM *
16517836SJohn.Forte@Sun.COM * @param  nodeOid
16527836SJohn.Forte@Sun.COM *         The object ID of the node whose alias is being set.
16537836SJohn.Forte@Sun.COM *
16547836SJohn.Forte@Sun.COM * @param  newAlias
16557836SJohn.Forte@Sun.COM *         A pointer to a Unicode string which contains the new node alias.
16567836SJohn.Forte@Sun.COM *         If this parameter is NULL then the current alias is deleted, in which
16577836SJohn.Forte@Sun.COM *         case the specified node no longer has an alias.
16587836SJohn.Forte@Sun.COM *
16597836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or
16607836SJohn.Forte@Sun.COM *         if an error occurred.
16617836SJohn.Forte@Sun.COM *
16627836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
16637836SJohn.Forte@Sun.COM *         Returned if the node's alias has been successfully set.
16647836SJohn.Forte@Sun.COM *
16657836SJohn.Forte@Sun.COM * @retval IMA_STATUS_REBOOT_NECESSARY
16667836SJohn.Forte@Sun.COM *         A reboot is necessary before the setting of the alias actually
16677836SJohn.Forte@Sun.COM *         takes effect.
16687836SJohn.Forte@Sun.COM *
16697836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
16707836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify any valid object type.
16717836SJohn.Forte@Sun.COM *
16727836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
16737836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify a node object.
16747836SJohn.Forte@Sun.COM *
16757836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
16767836SJohn.Forte@Sun.COM *         Returned if 'nodeOid' does not specify a node which is currently
16777836SJohn.Forte@Sun.COM *         known to the system.
16787836SJohn.Forte@Sun.COM *
16797836SJohn.Forte@Sun.COM * @retval IMA_ERROR_NAME_TOO_LONG
16807836SJohn.Forte@Sun.COM *         Returned if 'newAlias' contains too many characters.
16817836SJohn.Forte@Sun.COM *
16827836SJohn.Forte@Sun.COM *******************************************************************************
16837836SJohn.Forte@Sun.COM */
16847836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetNodeAlias(
16857836SJohn.Forte@Sun.COM         IMA_OID nodeOid,
16867836SJohn.Forte@Sun.COM         const IMA_NODE_ALIAS newAlias
16877836SJohn.Forte@Sun.COM );
16887836SJohn.Forte@Sun.COM 
16897836SJohn.Forte@Sun.COM 
16907836SJohn.Forte@Sun.COM 
16917836SJohn.Forte@Sun.COM /**
16927836SJohn.Forte@Sun.COM *******************************************************************************
16937836SJohn.Forte@Sun.COM *
16947836SJohn.Forte@Sun.COM * Gets a list of the object IDs of all the logical HBAs in the system.
16957836SJohn.Forte@Sun.COM *
16967836SJohn.Forte@Sun.COM * @param  ppList
16977836SJohn.Forte@Sun.COM *         A pointer to a pointer to an @ref IMA_OID_LIST structure.  On
16987836SJohn.Forte@Sun.COM *         successful return this will contain a pointer to an
16997836SJohn.Forte@Sun.COM *         IMA_OID_LIST which contains the object IDs of all of the
17007836SJohn.Forte@Sun.COM *         LHBAs currently in the system.
17017836SJohn.Forte@Sun.COM *
17027836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
17037836SJohn.Forte@Sun.COM *         an error occurred.
17047836SJohn.Forte@Sun.COM *
17057836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
17067836SJohn.Forte@Sun.COM *         Returned if the LHBA ID list has been successfully returned.
17077836SJohn.Forte@Sun.COM *
17087836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
17097836SJohn.Forte@Sun.COM *         Returned if 'ppList' is NULL or specifies a memory area to which
17107836SJohn.Forte@Sun.COM *         data cannot be written.
17117836SJohn.Forte@Sun.COM *
17127836SJohn.Forte@Sun.COM *******************************************************************************
17137836SJohn.Forte@Sun.COM */
17147836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLhbaOidList(
17157836SJohn.Forte@Sun.COM         IMA_OID_LIST **ppList
17167836SJohn.Forte@Sun.COM );
17177836SJohn.Forte@Sun.COM 
17187836SJohn.Forte@Sun.COM 
17197836SJohn.Forte@Sun.COM 
17207836SJohn.Forte@Sun.COM /**
17217836SJohn.Forte@Sun.COM *******************************************************************************
17227836SJohn.Forte@Sun.COM *
17237836SJohn.Forte@Sun.COM * Gets the properties of the specified logical HBA.
17247836SJohn.Forte@Sun.COM *
17257836SJohn.Forte@Sun.COM * @param  lhbaOid
17267836SJohn.Forte@Sun.COM *         The object ID of the LHBA whose properties are being retrieved.
17277836SJohn.Forte@Sun.COM *
17287836SJohn.Forte@Sun.COM * @param  pProps
17297836SJohn.Forte@Sun.COM *         A pointer to an IMA_LHBA_PROPERTIES structure.  On successful
17307836SJohn.Forte@Sun.COM *         return this will contain the properties of the LHBA specified by
17317836SJohn.Forte@Sun.COM *         'lhbaOid'.
17327836SJohn.Forte@Sun.COM *
17337836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
17347836SJohn.Forte@Sun.COM *         an error occurred.
17357836SJohn.Forte@Sun.COM *
17367836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
17377836SJohn.Forte@Sun.COM *         Returned if the properties of the specified LHBA have been
17387836SJohn.Forte@Sun.COM *         successfully retrieved.
17397836SJohn.Forte@Sun.COM *
17407836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
17417836SJohn.Forte@Sun.COM *         Returned if 'pProps' is NULL or specifies a memory area to which
17427836SJohn.Forte@Sun.COM *         data cannot be written.
17437836SJohn.Forte@Sun.COM *
17447836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
17457836SJohn.Forte@Sun.COM *         Returned if 'lhbaOid' does not specify any valid object type.
17467836SJohn.Forte@Sun.COM *
17477836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
17487836SJohn.Forte@Sun.COM *         Returned if 'lhbaOid' does not specify a LHBA.
17497836SJohn.Forte@Sun.COM *
17507836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
17517836SJohn.Forte@Sun.COM *         Returned if 'lhbaOid' does not specify a LHBA which is currently
17527836SJohn.Forte@Sun.COM *         known to the system.
17537836SJohn.Forte@Sun.COM *
17547836SJohn.Forte@Sun.COM *******************************************************************************
17557836SJohn.Forte@Sun.COM */
17567836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLhbaProperties(
17577836SJohn.Forte@Sun.COM         IMA_OID lhbaOid,
17587836SJohn.Forte@Sun.COM         IMA_LHBA_PROPERTIES *pProps
17597836SJohn.Forte@Sun.COM );
17607836SJohn.Forte@Sun.COM 
17617836SJohn.Forte@Sun.COM 
17627836SJohn.Forte@Sun.COM 
17637836SJohn.Forte@Sun.COM /**
17647836SJohn.Forte@Sun.COM *******************************************************************************
17657836SJohn.Forte@Sun.COM *
17667836SJohn.Forte@Sun.COM * Gets a list of the object IDs of all the physical HBAs in the system.
17677836SJohn.Forte@Sun.COM *
17687836SJohn.Forte@Sun.COM * @param  ppList
17697836SJohn.Forte@Sun.COM *         A pointer to a pointer to an IMA_OID_LIST structure.  On successful
17707836SJohn.Forte@Sun.COM *         return this will contain a pointer to an IMA_OID_LIST which
17717836SJohn.Forte@Sun.COM *         contains the object IDs of all of the PHBAs currently in the system.
17727836SJohn.Forte@Sun.COM *
17737836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
17747836SJohn.Forte@Sun.COM *         an error occurred.
17757836SJohn.Forte@Sun.COM *
17767836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
17777836SJohn.Forte@Sun.COM *         Returned if the PHBA OID list has been successfully returned.
17787836SJohn.Forte@Sun.COM *
17797836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
17807836SJohn.Forte@Sun.COM *         Returned if 'ppList' is NULL or specifies a memory area to which
17817836SJohn.Forte@Sun.COM *         data cannot be written.
17827836SJohn.Forte@Sun.COM *
17837836SJohn.Forte@Sun.COM *******************************************************************************
17847836SJohn.Forte@Sun.COM */
17857836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPhbaOidList(
17867836SJohn.Forte@Sun.COM         IMA_OID_LIST **ppList
17877836SJohn.Forte@Sun.COM );
17887836SJohn.Forte@Sun.COM 
17897836SJohn.Forte@Sun.COM 
17907836SJohn.Forte@Sun.COM 
17917836SJohn.Forte@Sun.COM /**
17927836SJohn.Forte@Sun.COM *******************************************************************************
17937836SJohn.Forte@Sun.COM *
17947836SJohn.Forte@Sun.COM * Gets the general properties of a physical HBA.
17957836SJohn.Forte@Sun.COM *
17967836SJohn.Forte@Sun.COM * @param  phbaOid
17977836SJohn.Forte@Sun.COM *         The object ID of the PHBA whose properties are being queried.
17987836SJohn.Forte@Sun.COM *
17997836SJohn.Forte@Sun.COM * @param  pProps
18007836SJohn.Forte@Sun.COM *         A pointer to an @ref IMA_PHBA_PROPERTIES structure.  On successful
18017836SJohn.Forte@Sun.COM *         return this will contain the properties of the PHBA specified by
18027836SJohn.Forte@Sun.COM *         'phbaOid'.
18037836SJohn.Forte@Sun.COM #
18047836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or
18057836SJohn.Forte@Sun.COM *         if an error occurred.
18067836SJohn.Forte@Sun.COM *
18077836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
18087836SJohn.Forte@Sun.COM *         Returned if the properties of the specified PHBA have been
18097836SJohn.Forte@Sun.COM *         successfully retrieved.
18107836SJohn.Forte@Sun.COM *
18117836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
18127836SJohn.Forte@Sun.COM *         Returned if 'pProps' is NULL or specifies a memory area to which
18137836SJohn.Forte@Sun.COM *         data cannot be written.
18147836SJohn.Forte@Sun.COM *
18157836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
18167836SJohn.Forte@Sun.COM *         Returned if 'phbaOid' does not specify any valid object type.
18177836SJohn.Forte@Sun.COM *
18187836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
18197836SJohn.Forte@Sun.COM *         Returned if 'phbaOid' does not specify a PHBA.
18207836SJohn.Forte@Sun.COM *
18217836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
18227836SJohn.Forte@Sun.COM *         Returned if 'phbaOid' does not specify a PHBA which is currently
18237836SJohn.Forte@Sun.COM *         known to the system.
18247836SJohn.Forte@Sun.COM *
18257836SJohn.Forte@Sun.COM *******************************************************************************
18267836SJohn.Forte@Sun.COM */
18277836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPhbaProperties(
18287836SJohn.Forte@Sun.COM         IMA_OID phbaOid,
18297836SJohn.Forte@Sun.COM         IMA_PHBA_PROPERTIES *pProps
18307836SJohn.Forte@Sun.COM );
18317836SJohn.Forte@Sun.COM 
18327836SJohn.Forte@Sun.COM /**
18337836SJohn.Forte@Sun.COM *******************************************************************************
18347836SJohn.Forte@Sun.COM *
18357836SJohn.Forte@Sun.COM * Frees a previously allocated IMA_OID_LIST structure.
18367836SJohn.Forte@Sun.COM *
18377836SJohn.Forte@Sun.COM * @param pMemory  A pointer to an IMA_OID_LIST structure allocated by the
18387836SJohn.Forte@Sun.COM *                 library.  On successful return the memory allocated by the
18397836SJohn.Forte@Sun.COM *                 list is freed.
18407836SJohn.Forte@Sun.COM * @return  An IMA_STATUS indicating if the operation was successful or if an
18417836SJohn.Forte@Sun.COM *          error occurred.
18427836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
18437836SJohn.Forte@Sun.COM *         Returned if the specified object ID list was successfully
18447836SJohn.Forte@Sun.COM *         freed.
18457836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
18467836SJohn.Forte@Sun.COM *         Returned if pMemory is NULL or specifies a memory area from which
18477836SJohn.Forte@Sun.COM *         data cannot be read.
18487836SJohn.Forte@Sun.COM *
18497836SJohn.Forte@Sun.COM *******************************************************************************
18507836SJohn.Forte@Sun.COM */
18517836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_FreeMemory(
18527836SJohn.Forte@Sun.COM         void *pMemory
18537836SJohn.Forte@Sun.COM );
18547836SJohn.Forte@Sun.COM 
18557836SJohn.Forte@Sun.COM 
18567836SJohn.Forte@Sun.COM 
18577836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetNonSharedNodeOidList(
18587836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
18597836SJohn.Forte@Sun.COM );
18607836SJohn.Forte@Sun.COM 
18617836SJohn.Forte@Sun.COM 
18627836SJohn.Forte@Sun.COM 
18637836SJohn.Forte@Sun.COM 
18647836SJohn.Forte@Sun.COM /**
18657836SJohn.Forte@Sun.COM *******************************************************************************
18667836SJohn.Forte@Sun.COM *
18677836SJohn.Forte@Sun.COM * Gets the first burst length properties of the specified logical HBA.
18687836SJohn.Forte@Sun.COM *
18697836SJohn.Forte@Sun.COM * @param  oid
18707836SJohn.Forte@Sun.COM *         The object ID of the logical HBA to get the first burst length
18717836SJohn.Forte@Sun.COM *         properties of.
18727836SJohn.Forte@Sun.COM *
18737836SJohn.Forte@Sun.COM * @param  pProps
18747836SJohn.Forte@Sun.COM *         A pointer to a min/max values structure.
18757836SJohn.Forte@Sun.COM *
18767836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if an
18777836SJohn.Forte@Sun.COM *         error occurred.
18787836SJohn.Forte@Sun.COM *
18797836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
18807836SJohn.Forte@Sun.COM *         Returned if the first burst length properties have been
18817836SJohn.Forte@Sun.COM *         successfully retrieved.
18827836SJohn.Forte@Sun.COM *
18837836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
18847836SJohn.Forte@Sun.COM *         Returned if pProps is NULL or specifies a memory area to which
18857836SJohn.Forte@Sun.COM *         data cannot be written.
18867836SJohn.Forte@Sun.COM *
18877836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
18887836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify any valid object type.
18897836SJohn.Forte@Sun.COM *
18907836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
18917836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify a LHBA.
18927836SJohn.Forte@Sun.COM *
18937836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
18947836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify a LHBA which is currently
18957836SJohn.Forte@Sun.COM *         known to the system.
18967836SJohn.Forte@Sun.COM *
18977836SJohn.Forte@Sun.COM *******************************************************************************
18987836SJohn.Forte@Sun.COM */
18997836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetFirstBurstLengthProperties(
19007836SJohn.Forte@Sun.COM                 IMA_OID oid,
19017836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
19027836SJohn.Forte@Sun.COM );
19037836SJohn.Forte@Sun.COM 
19047836SJohn.Forte@Sun.COM 
19057836SJohn.Forte@Sun.COM /**
19067836SJohn.Forte@Sun.COM *******************************************************************************
19077836SJohn.Forte@Sun.COM *
19087836SJohn.Forte@Sun.COM * Gets the max burst length properties of the specified logical HBA.
19097836SJohn.Forte@Sun.COM *
19107836SJohn.Forte@Sun.COM * @param  oid
19117836SJohn.Forte@Sun.COM *         The object ID of the logical HBA to get the max burst length
19127836SJohn.Forte@Sun.COM *         properties of.
19137836SJohn.Forte@Sun.COM *
19147836SJohn.Forte@Sun.COM * @param  pProps
19157836SJohn.Forte@Sun.COM *         A pointer to an IMA_MIN_MAX_VALUE structure allocated by the
19167836SJohn.Forte@Sun.COM *         caller.  On successful return this structure will contain the max
19177836SJohn.Forte@Sun.COM *         burst length properties of this LHBA.
19187836SJohn.Forte@Sun.COM *
19197836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
19207836SJohn.Forte@Sun.COM *         an error occurred.
19217836SJohn.Forte@Sun.COM *
19227836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
19237836SJohn.Forte@Sun.COM *         Returned if the max burst length properties have been successfully
19247836SJohn.Forte@Sun.COM *         retrieved.
19257836SJohn.Forte@Sun.COM *
19267836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
19277836SJohn.Forte@Sun.COM *         Returned if pProps is NULL or specifies a memory area to which
19287836SJohn.Forte@Sun.COM *         data cannot be written.
19297836SJohn.Forte@Sun.COM *
19307836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
19317836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify any valid object type.
19327836SJohn.Forte@Sun.COM *
19337836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
19347836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify a LHBA.
19357836SJohn.Forte@Sun.COM *
19367836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
19377836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify a LHBA which is currently
19387836SJohn.Forte@Sun.COM *         known to the system.
19397836SJohn.Forte@Sun.COM *
19407836SJohn.Forte@Sun.COM *******************************************************************************
19417836SJohn.Forte@Sun.COM */
19427836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetMaxBurstLengthProperties(
19437836SJohn.Forte@Sun.COM                 IMA_OID Oid,
19447836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
19457836SJohn.Forte@Sun.COM );
19467836SJohn.Forte@Sun.COM 
19477836SJohn.Forte@Sun.COM /**
19487836SJohn.Forte@Sun.COM *******************************************************************************
19497836SJohn.Forte@Sun.COM *
19507836SJohn.Forte@Sun.COM * Gets the maximum receive data segment length properties of the specified
19517836SJohn.Forte@Sun.COM * logical HBA.
19527836SJohn.Forte@Sun.COM *
19537836SJohn.Forte@Sun.COM * @param  oid
19547836SJohn.Forte@Sun.COM *         The object ID of the logical HBA to get the max receive data
19557836SJohn.Forte@Sun.COM *         segment length properties of.
19567836SJohn.Forte@Sun.COM *
19577836SJohn.Forte@Sun.COM * @param  pProps
19587836SJohn.Forte@Sun.COM *         A pointer to an @ref IMA_MIN_MAX_VALUE structure allocated by the
19597836SJohn.Forte@Sun.COM *         caller.  On successful return this structure will contain the max
19607836SJohn.Forte@Sun.COM *         receive data segment length properties of this LHBA.
19617836SJohn.Forte@Sun.COM *
19627836SJohn.Forte@Sun.COM * @return An IMA_STATUS indicating if the operation was successful or if
19637836SJohn.Forte@Sun.COM *         an error occurred.
19647836SJohn.Forte@Sun.COM *
19657836SJohn.Forte@Sun.COM * @retval IMA_SUCCESS
19667836SJohn.Forte@Sun.COM *         Returned if the max receive data segment length properties
19677836SJohn.Forte@Sun.COM *         have been successfully retrieved.
19687836SJohn.Forte@Sun.COM *
19697836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_PARAMETER
19707836SJohn.Forte@Sun.COM *         Returned if 'pProps' is NULL or specifies a memory area to which
19717836SJohn.Forte@Sun.COM *         data cannot be written.
19727836SJohn.Forte@Sun.COM *
19737836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INVALID_OBJECT_TYPE
19747836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify any valid object type.
19757836SJohn.Forte@Sun.COM *
19767836SJohn.Forte@Sun.COM * @retval IMA_ERROR_INCORRECT_OBJECT_TYPE
19777836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify a LHBA.
19787836SJohn.Forte@Sun.COM *
19797836SJohn.Forte@Sun.COM * @retval IMA_ERROR_OBJECT_NOT_FOUND
19807836SJohn.Forte@Sun.COM *         Returned if 'oid' does not specify a LHBA which is currently
19817836SJohn.Forte@Sun.COM *         known to the system.
19827836SJohn.Forte@Sun.COM *
19837836SJohn.Forte@Sun.COM *******************************************************************************
19847836SJohn.Forte@Sun.COM */
19857836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetMaxRecvDataSegmentLengthProperties(
19867836SJohn.Forte@Sun.COM                 IMA_OID oid,
19877836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
19887836SJohn.Forte@Sun.COM );
19897836SJohn.Forte@Sun.COM 
19907836SJohn.Forte@Sun.COM 
19917836SJohn.Forte@Sun.COM /*---------------------------------------------*/
19927836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_PluginIOCtl(
19937836SJohn.Forte@Sun.COM                 IMA_OID pluginOid,
19947836SJohn.Forte@Sun.COM                 IMA_UINT command,
19957836SJohn.Forte@Sun.COM                 const void *pInputBuffer,
19967836SJohn.Forte@Sun.COM                 IMA_UINT inputBufferLength,
19977836SJohn.Forte@Sun.COM                 void *pOutputBuffer,
19987836SJohn.Forte@Sun.COM                 IMA_UINT *pOutputBufferLength
19997836SJohn.Forte@Sun.COM );
20007836SJohn.Forte@Sun.COM 
20017836SJohn.Forte@Sun.COM 
20027836SJohn.Forte@Sun.COM 
20037836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetNetworkPortalOidList(
20047836SJohn.Forte@Sun.COM                 IMA_OID oid,
20057836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
20067836SJohn.Forte@Sun.COM );
20077836SJohn.Forte@Sun.COM 
20087836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetFirstBurstLength(
20097836SJohn.Forte@Sun.COM                 IMA_OID oid,
20107836SJohn.Forte@Sun.COM                 IMA_UINT firstBurstLength
20117836SJohn.Forte@Sun.COM );
20127836SJohn.Forte@Sun.COM 
20137836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetMaxBurstLength(
20147836SJohn.Forte@Sun.COM                 IMA_OID oid,
20157836SJohn.Forte@Sun.COM                 IMA_UINT maxBurstLength
20167836SJohn.Forte@Sun.COM );
20177836SJohn.Forte@Sun.COM 
20187836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetMaxRecvDataSegmentLength(
20197836SJohn.Forte@Sun.COM                 IMA_OID oid,
20207836SJohn.Forte@Sun.COM                 IMA_UINT maxRecvDataSegmentLength
20217836SJohn.Forte@Sun.COM );
20227836SJohn.Forte@Sun.COM 
20237836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetMaxConnectionsProperties(
20247836SJohn.Forte@Sun.COM                 IMA_OID oid,
20257836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
20267836SJohn.Forte@Sun.COM );
20277836SJohn.Forte@Sun.COM 
20287836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetMaxConnections(
20297836SJohn.Forte@Sun.COM                 IMA_OID oid,
20307836SJohn.Forte@Sun.COM                 IMA_UINT maxConnections
20317836SJohn.Forte@Sun.COM );
20327836SJohn.Forte@Sun.COM 
20337836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDefaultTime2RetainProperties(
20347836SJohn.Forte@Sun.COM                 IMA_OID oid,
20357836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
20367836SJohn.Forte@Sun.COM );
20377836SJohn.Forte@Sun.COM 
20387836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetDefaultTime2Retain(
20397836SJohn.Forte@Sun.COM                 IMA_OID oid,
20407836SJohn.Forte@Sun.COM                 IMA_UINT defaultTime2Retain
20417836SJohn.Forte@Sun.COM );
20427836SJohn.Forte@Sun.COM 
20437836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDefaultTime2WaitProperties(
20447836SJohn.Forte@Sun.COM                 IMA_OID oid,
20457836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
20467836SJohn.Forte@Sun.COM );
20477836SJohn.Forte@Sun.COM 
20487836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetDefaultTime2Wait(
20497836SJohn.Forte@Sun.COM                 IMA_OID oid,
20507836SJohn.Forte@Sun.COM                 IMA_UINT defaultTime2Wait
20517836SJohn.Forte@Sun.COM );
20527836SJohn.Forte@Sun.COM 
20537836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetMaxOutstandingR2TProperties(
20547836SJohn.Forte@Sun.COM                 IMA_OID oid,
20557836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
20567836SJohn.Forte@Sun.COM );
20577836SJohn.Forte@Sun.COM 
20587836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetMaxOutstandingR2T(
20597836SJohn.Forte@Sun.COM                 IMA_OID oid,
20607836SJohn.Forte@Sun.COM                 IMA_UINT maxOutstandingR2T
20617836SJohn.Forte@Sun.COM );
20627836SJohn.Forte@Sun.COM 
20637836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetErrorRecoveryLevelProperties(
20647836SJohn.Forte@Sun.COM                 IMA_OID oid,
20657836SJohn.Forte@Sun.COM                 IMA_MIN_MAX_VALUE *pProps
20667836SJohn.Forte@Sun.COM );
20677836SJohn.Forte@Sun.COM 
20687836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetErrorRecoveryLevel(
20697836SJohn.Forte@Sun.COM                 IMA_OID oid,
20707836SJohn.Forte@Sun.COM                 IMA_UINT errorRecoveryLevel
20717836SJohn.Forte@Sun.COM );
20727836SJohn.Forte@Sun.COM 
20737836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetInitialR2TProperties(
20747836SJohn.Forte@Sun.COM                 IMA_OID oid,
20757836SJohn.Forte@Sun.COM                 IMA_BOOL_VALUE *pProps
20767836SJohn.Forte@Sun.COM );
20777836SJohn.Forte@Sun.COM 
20787836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetInitialR2T(
20797836SJohn.Forte@Sun.COM                 IMA_OID oid,
20807836SJohn.Forte@Sun.COM                 IMA_BOOL initialR2T
20817836SJohn.Forte@Sun.COM );
20827836SJohn.Forte@Sun.COM 
20837836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetImmediateDataProperties(
20847836SJohn.Forte@Sun.COM                 IMA_OID oid,
20857836SJohn.Forte@Sun.COM                 IMA_BOOL_VALUE *pProps
20867836SJohn.Forte@Sun.COM );
20877836SJohn.Forte@Sun.COM 
20887836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetImmediateData(
20897836SJohn.Forte@Sun.COM                 IMA_OID oid,
20907836SJohn.Forte@Sun.COM                 IMA_BOOL immediateData
20917836SJohn.Forte@Sun.COM );
20927836SJohn.Forte@Sun.COM 
20937836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDataPduInOrderProperties(
20947836SJohn.Forte@Sun.COM                 IMA_OID oid,
20957836SJohn.Forte@Sun.COM                 IMA_BOOL_VALUE *pProps
20967836SJohn.Forte@Sun.COM );
20977836SJohn.Forte@Sun.COM 
20987836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetDataPduInOrder(
20997836SJohn.Forte@Sun.COM                 IMA_OID oid,
21007836SJohn.Forte@Sun.COM                 IMA_BOOL dataPduInOrder
21017836SJohn.Forte@Sun.COM );
21027836SJohn.Forte@Sun.COM 
21037836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDataSequenceInOrderProperties(
21047836SJohn.Forte@Sun.COM                 IMA_OID oid,
21057836SJohn.Forte@Sun.COM                 IMA_BOOL_VALUE *pProps
21067836SJohn.Forte@Sun.COM );
21077836SJohn.Forte@Sun.COM 
21087836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetDataSequenceInOrder(
21097836SJohn.Forte@Sun.COM                 IMA_OID oid,
21107836SJohn.Forte@Sun.COM                 IMA_BOOL dataSequenceInOrder
21117836SJohn.Forte@Sun.COM );
21127836SJohn.Forte@Sun.COM 
21137836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetStatisticsCollection(
21147836SJohn.Forte@Sun.COM                 IMA_OID oid,
21157836SJohn.Forte@Sun.COM                 IMA_BOOL enableStatisticsCollection
21167836SJohn.Forte@Sun.COM );
21177836SJohn.Forte@Sun.COM 
21187836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetNetworkPortStatus(
21197836SJohn.Forte@Sun.COM                 IMA_OID portOid,
21207836SJohn.Forte@Sun.COM                 IMA_NETWORK_PORT_STATUS *pStatus
21217836SJohn.Forte@Sun.COM );
21227836SJohn.Forte@Sun.COM 
21237836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetTargetOidList(
21247836SJohn.Forte@Sun.COM                 IMA_OID oid,
21257836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
21267836SJohn.Forte@Sun.COM );
21277836SJohn.Forte@Sun.COM 
21287836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_RemoveStaleData(
21297836SJohn.Forte@Sun.COM                 IMA_OID lhbaOid
21307836SJohn.Forte@Sun.COM );
21317836SJohn.Forte@Sun.COM 
21327836SJohn.Forte@Sun.COM IMA_API	IMA_STATUS IMA_SetIsnsDiscovery(
21337836SJohn.Forte@Sun.COM 		IMA_OID phbaId,
21347836SJohn.Forte@Sun.COM 		IMA_BOOL enableIsnsDiscovery,
21357836SJohn.Forte@Sun.COM 		IMA_ISNS_DISCOVERY_METHOD discoveryMethod,
21367836SJohn.Forte@Sun.COM 		const IMA_HOST_ID *iSnsHost
21377836SJohn.Forte@Sun.COM );
21387836SJohn.Forte@Sun.COM 
21397836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetSlpDiscovery(
21407836SJohn.Forte@Sun.COM                 IMA_OID phbaOid,
21417836SJohn.Forte@Sun.COM                 IMA_BOOL enableSlpDiscovery
21427836SJohn.Forte@Sun.COM );
21437836SJohn.Forte@Sun.COM 
21447836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetStaticDiscovery(
21457836SJohn.Forte@Sun.COM                 IMA_OID phbaOid,
21467836SJohn.Forte@Sun.COM                 IMA_BOOL enableStaticDiscovery
21477836SJohn.Forte@Sun.COM );
21487836SJohn.Forte@Sun.COM 
21497836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetSendTargetsDiscovery(
21507836SJohn.Forte@Sun.COM                 IMA_OID oid,
21517836SJohn.Forte@Sun.COM                 IMA_BOOL enableSendTargetsDiscovery
21527836SJohn.Forte@Sun.COM );
21537836SJohn.Forte@Sun.COM 
21547836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_RemoveStaticDiscoveryTarget(
21557836SJohn.Forte@Sun.COM                 IMA_OID targetOid
21567836SJohn.Forte@Sun.COM );
21577836SJohn.Forte@Sun.COM 
21587836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetIpsecProperties(
21597836SJohn.Forte@Sun.COM                 IMA_OID phbaOid,
21607836SJohn.Forte@Sun.COM                 IMA_IPSEC_PROPERTIES *pProps
21617836SJohn.Forte@Sun.COM );
21627836SJohn.Forte@Sun.COM 
21637836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPnpOidList(
21647836SJohn.Forte@Sun.COM                 IMA_OID oid,
21657836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
21667836SJohn.Forte@Sun.COM );
21677836SJohn.Forte@Sun.COM 
21687836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPhbaDownloadProperties(
21697836SJohn.Forte@Sun.COM                 IMA_OID phbaOid,
21707836SJohn.Forte@Sun.COM                 IMA_PHBA_DOWNLOAD_PROPERTIES *pProps
21717836SJohn.Forte@Sun.COM );
21727836SJohn.Forte@Sun.COM 
21737836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_IsPhbaDownloadFile(
21747836SJohn.Forte@Sun.COM                 IMA_OID phbaOid,
21757836SJohn.Forte@Sun.COM                 const IMA_WCHAR *pFileName,
21767836SJohn.Forte@Sun.COM                 IMA_PHBA_DOWNLOAD_IMAGE_PROPERTIES *pProps
21777836SJohn.Forte@Sun.COM );
21787836SJohn.Forte@Sun.COM 
21797836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_PhbaDownload(
21807836SJohn.Forte@Sun.COM                 IMA_OID phbaOid,
21817836SJohn.Forte@Sun.COM                 IMA_PHBA_DOWNLOAD_IMAGE_TYPE imageType,
21827836SJohn.Forte@Sun.COM                 const IMA_WCHAR *pFileName
21837836SJohn.Forte@Sun.COM );
21847836SJohn.Forte@Sun.COM 
21857836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetNetworkPortalProperties(
21867836SJohn.Forte@Sun.COM                 IMA_OID networkPortalOid,
21877836SJohn.Forte@Sun.COM                 IMA_NETWORK_PORTAL_PROPERTIES *pProps
21887836SJohn.Forte@Sun.COM );
21897836SJohn.Forte@Sun.COM 
21907836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetNetworkPortalIpAddress(
21917836SJohn.Forte@Sun.COM                 IMA_OID networkPortalOid,
21927836SJohn.Forte@Sun.COM                 const IMA_IP_ADDRESS NewIpAddress
21937836SJohn.Forte@Sun.COM );
21947836SJohn.Forte@Sun.COM 
21957836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLnpOidList(
21967836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
21977836SJohn.Forte@Sun.COM );
21987836SJohn.Forte@Sun.COM 
21997836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLnpProperties(
22007836SJohn.Forte@Sun.COM                 IMA_OID lnpOid,
22017836SJohn.Forte@Sun.COM                 IMA_LNP_PROPERTIES *pProps
22027836SJohn.Forte@Sun.COM );
22037836SJohn.Forte@Sun.COM 
22047836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPnpProperties(
22057836SJohn.Forte@Sun.COM                 IMA_OID pnpOid,
22067836SJohn.Forte@Sun.COM                 IMA_PNP_PROPERTIES *pProps
22077836SJohn.Forte@Sun.COM );
22087836SJohn.Forte@Sun.COM 
22097836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPnpStatistics(
22107836SJohn.Forte@Sun.COM                 IMA_OID pnpOid,
22117836SJohn.Forte@Sun.COM                 IMA_PNP_STATISTICS *pStats
22127836SJohn.Forte@Sun.COM );
22137836SJohn.Forte@Sun.COM 
22147836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetTargetProperties(
22157836SJohn.Forte@Sun.COM                 IMA_OID targetOid,
22167836SJohn.Forte@Sun.COM                 IMA_TARGET_PROPERTIES *pProps
22177836SJohn.Forte@Sun.COM );
22187836SJohn.Forte@Sun.COM 
22197836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetTargetErrorStatistics(
22207836SJohn.Forte@Sun.COM                 IMA_OID targetOid,
22217836SJohn.Forte@Sun.COM                 IMA_TARGET_ERROR_STATISTICS *pStats
22227836SJohn.Forte@Sun.COM );
22237836SJohn.Forte@Sun.COM 
22247836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLuOidList(
22257836SJohn.Forte@Sun.COM                 IMA_OID oid,
22267836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
22277836SJohn.Forte@Sun.COM );
22287836SJohn.Forte@Sun.COM 
22297836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLuOid(
22307836SJohn.Forte@Sun.COM                 IMA_OID targetOid,
22317836SJohn.Forte@Sun.COM                 IMA_UINT64 lun,
22327836SJohn.Forte@Sun.COM                 IMA_OID *pluOid
22337836SJohn.Forte@Sun.COM );
22347836SJohn.Forte@Sun.COM 
22357836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetLuProperties(
22367836SJohn.Forte@Sun.COM                 IMA_OID luOid,
22377836SJohn.Forte@Sun.COM                 IMA_LU_PROPERTIES *pProps
22387836SJohn.Forte@Sun.COM );
22397836SJohn.Forte@Sun.COM 
22407836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetStatisticsProperties(
22417836SJohn.Forte@Sun.COM                 IMA_OID oid,
22427836SJohn.Forte@Sun.COM                 IMA_STATISTICS_PROPERTIES *pProps
22437836SJohn.Forte@Sun.COM );
22447836SJohn.Forte@Sun.COM 
22457836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDeviceStatistics(
22467836SJohn.Forte@Sun.COM                 IMA_OID oid,
22477836SJohn.Forte@Sun.COM                 IMA_DEVICE_STATISTICS *pStats
22487836SJohn.Forte@Sun.COM );
22497836SJohn.Forte@Sun.COM 
22507836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_LuInquiry(
22517836SJohn.Forte@Sun.COM                 IMA_OID deviceOid,
22527836SJohn.Forte@Sun.COM                 IMA_BOOL evpd,
22537836SJohn.Forte@Sun.COM                 IMA_BOOL cmddt,
22547836SJohn.Forte@Sun.COM                 IMA_BYTE pageCode,
22557836SJohn.Forte@Sun.COM 
22567836SJohn.Forte@Sun.COM                 IMA_BYTE *pOutputBuffer,
22577836SJohn.Forte@Sun.COM                 IMA_UINT *pOutputBufferLength,
22587836SJohn.Forte@Sun.COM 
22597836SJohn.Forte@Sun.COM                 IMA_BYTE *pSenseBuffer,
22607836SJohn.Forte@Sun.COM                 IMA_UINT *pSenseBufferLength
22617836SJohn.Forte@Sun.COM );
22627836SJohn.Forte@Sun.COM 
22637836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_LuReadCapacity(
22647836SJohn.Forte@Sun.COM                 IMA_OID deviceOid,
22657836SJohn.Forte@Sun.COM                 IMA_UINT cdbLength,
22667836SJohn.Forte@Sun.COM                 IMA_BYTE *pOutputBuffer,
22677836SJohn.Forte@Sun.COM                 IMA_UINT *pOutputBufferLength,
22687836SJohn.Forte@Sun.COM 
22697836SJohn.Forte@Sun.COM                 IMA_BYTE *pSenseBuffer,
22707836SJohn.Forte@Sun.COM                 IMA_UINT *pSenseBufferLength
22717836SJohn.Forte@Sun.COM );
22727836SJohn.Forte@Sun.COM 
22737836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_LuReportLuns(
22747836SJohn.Forte@Sun.COM                 IMA_OID deviceOid,
22757836SJohn.Forte@Sun.COM                 IMA_BOOL sendToWellKnownLun,
22767836SJohn.Forte@Sun.COM                 IMA_BYTE selectReport,
22777836SJohn.Forte@Sun.COM 
22787836SJohn.Forte@Sun.COM                 IMA_BYTE *pOutputBuffer,
22797836SJohn.Forte@Sun.COM                 IMA_UINT *pOutputBufferLength,
22807836SJohn.Forte@Sun.COM 
22817836SJohn.Forte@Sun.COM                 IMA_BYTE *pSenseBuffer,
22827836SJohn.Forte@Sun.COM                 IMA_UINT *pSenseBufferLength
22837836SJohn.Forte@Sun.COM );
22847836SJohn.Forte@Sun.COM 
22857836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_ExposeLu(
22867836SJohn.Forte@Sun.COM                 IMA_OID luOid
22877836SJohn.Forte@Sun.COM );
22887836SJohn.Forte@Sun.COM 
22897836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_UnexposeLu(
22907836SJohn.Forte@Sun.COM                 IMA_OID luOid
22917836SJohn.Forte@Sun.COM );
22927836SJohn.Forte@Sun.COM 
22937836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetPhbaStatus(
22947836SJohn.Forte@Sun.COM                 IMA_OID hbaOid,
22957836SJohn.Forte@Sun.COM                 IMA_PHBA_STATUS *pStatus
22967836SJohn.Forte@Sun.COM );
22977836SJohn.Forte@Sun.COM 
22987836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_RegisterForObjectVisibilityChanges (
22997836SJohn.Forte@Sun.COM                 IMA_OBJECT_VISIBILITY_FN pClientFn
23007836SJohn.Forte@Sun.COM );
23017836SJohn.Forte@Sun.COM 
23027836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_DeregisterForObjectVisibilityChanges (
23037836SJohn.Forte@Sun.COM                 IMA_OBJECT_VISIBILITY_FN pClientFn
23047836SJohn.Forte@Sun.COM );
23057836SJohn.Forte@Sun.COM 
23067836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_RegisterForObjectPropertyChanges (
23077836SJohn.Forte@Sun.COM                 IMA_OBJECT_PROPERTY_FN pClientFn
23087836SJohn.Forte@Sun.COM );
23097836SJohn.Forte@Sun.COM 
23107836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_DeregisterForObjectPropertyChanges (
23117836SJohn.Forte@Sun.COM                 IMA_OBJECT_PROPERTY_FN pClientFn
23127836SJohn.Forte@Sun.COM );
23137836SJohn.Forte@Sun.COM 
23147836SJohn.Forte@Sun.COM 
23157836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetAddressKeyProperties(
23167836SJohn.Forte@Sun.COM                 IMA_OID targetOid,
23177836SJohn.Forte@Sun.COM                 IMA_ADDRESS_KEY_PROPERTIES **ppProps
23187836SJohn.Forte@Sun.COM );
23197836SJohn.Forte@Sun.COM 
23207836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetIpProperties(
23217836SJohn.Forte@Sun.COM                 IMA_OID oid,
23227836SJohn.Forte@Sun.COM                 IMA_IP_PROPERTIES *pProps
23237836SJohn.Forte@Sun.COM );
23247836SJohn.Forte@Sun.COM 
23257836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetIpConfigMethod(
23267836SJohn.Forte@Sun.COM                 IMA_OID oid,
23277836SJohn.Forte@Sun.COM                 IMA_BOOL enableDhcpIpConfiguration
23287836SJohn.Forte@Sun.COM );
23297836SJohn.Forte@Sun.COM 
23307836SJohn.Forte@Sun.COM IMA_API	IMA_STATUS IMA_SetIsnsDiscovery(
23317836SJohn.Forte@Sun.COM 		IMA_OID oid,
23327836SJohn.Forte@Sun.COM 		IMA_BOOL enableIsnsDiscovery,
23337836SJohn.Forte@Sun.COM 		IMA_ISNS_DISCOVERY_METHOD discoveryMethod,
23347836SJohn.Forte@Sun.COM 		const IMA_HOST_ID *iSnsHost
23357836SJohn.Forte@Sun.COM );
23367836SJohn.Forte@Sun.COM 
23377836SJohn.Forte@Sun.COM 
23387836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetSubnetMask(
23397836SJohn.Forte@Sun.COM                 IMA_OID oid,
23407836SJohn.Forte@Sun.COM                 IMA_IP_ADDRESS subnetMask
23417836SJohn.Forte@Sun.COM );
23427836SJohn.Forte@Sun.COM 
23437836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetDnsServerAddress(
23447836SJohn.Forte@Sun.COM                 IMA_OID oid,
23457836SJohn.Forte@Sun.COM                 const IMA_IP_ADDRESS *pPrimaryDnsServerAddress,
23467836SJohn.Forte@Sun.COM                 const IMA_IP_ADDRESS *pAlternateDnsServerAddress
23477836SJohn.Forte@Sun.COM );
23487836SJohn.Forte@Sun.COM 
23497836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetDefaultGateway(
23507836SJohn.Forte@Sun.COM                 IMA_OID oid,
23517836SJohn.Forte@Sun.COM                 IMA_IP_ADDRESS defaultGateway
23527836SJohn.Forte@Sun.COM );
23537836SJohn.Forte@Sun.COM 
23547836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetSupportedAuthMethods(
23557836SJohn.Forte@Sun.COM                 IMA_OID lhbaOid,
23567836SJohn.Forte@Sun.COM                 IMA_BOOL getSettableMethods,
23577836SJohn.Forte@Sun.COM                 IMA_UINT *pMethodCount,
23587836SJohn.Forte@Sun.COM                 IMA_AUTHMETHOD *pMethodList
23597836SJohn.Forte@Sun.COM );
23607836SJohn.Forte@Sun.COM 
23617836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetInUseInitiatorAuthMethods(
23627836SJohn.Forte@Sun.COM                 IMA_OID lhbaOid,
23637836SJohn.Forte@Sun.COM                 IMA_UINT        *pMethodCount,
23647836SJohn.Forte@Sun.COM                 IMA_AUTHMETHOD  *pMethodList
23657836SJohn.Forte@Sun.COM );
23667836SJohn.Forte@Sun.COM 
23677836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetInitiatorAuthParms(
23687836SJohn.Forte@Sun.COM                 IMA_OID lhbaOid,
23697836SJohn.Forte@Sun.COM                 IMA_AUTHMETHOD method,
23707836SJohn.Forte@Sun.COM                 IMA_INITIATOR_AUTHPARMS *pParms
23717836SJohn.Forte@Sun.COM );
23727836SJohn.Forte@Sun.COM 
23737836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetInitiatorAuthMethods(
23747836SJohn.Forte@Sun.COM                 IMA_OID lhbaOid,
23757836SJohn.Forte@Sun.COM                 IMA_UINT methodCount,
23767836SJohn.Forte@Sun.COM                 const IMA_AUTHMETHOD *pMethodList
23777836SJohn.Forte@Sun.COM );
23787836SJohn.Forte@Sun.COM 
23797836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetInitiatorAuthParms(
23807836SJohn.Forte@Sun.COM                 IMA_OID lhbaOid,
23817836SJohn.Forte@Sun.COM                 IMA_AUTHMETHOD method,
23827836SJohn.Forte@Sun.COM                 const IMA_INITIATOR_AUTHPARMS *pParms
23837836SJohn.Forte@Sun.COM );
23847836SJohn.Forte@Sun.COM 
23857836SJohn.Forte@Sun.COM 
23867836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetStaticDiscoveryTargetOidList (
23877836SJohn.Forte@Sun.COM                 IMA_OID oid,
23887836SJohn.Forte@Sun.COM                 IMA_OID_LIST **ppList
23897836SJohn.Forte@Sun.COM );
23907836SJohn.Forte@Sun.COM 
23917836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetStaticDiscoveryTargetProperties(
23927836SJohn.Forte@Sun.COM 		IMA_OID staticDiscoveryTargetOid,
23937836SJohn.Forte@Sun.COM 		IMA_STATIC_DISCOVERY_TARGET_PROPERTIES *pProps
23947836SJohn.Forte@Sun.COM );
23957836SJohn.Forte@Sun.COM 
23967836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_SetStaticDiscovery(
23977836SJohn.Forte@Sun.COM 		IMA_OID oid,
23987836SJohn.Forte@Sun.COM 		IMA_BOOL enableStaticDiscovery
23997836SJohn.Forte@Sun.COM );
24007836SJohn.Forte@Sun.COM 
24017836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDiscoveryProperties(
24027836SJohn.Forte@Sun.COM 		IMA_OID oid,
24037836SJohn.Forte@Sun.COM 		IMA_DISCOVERY_PROPERTIES *pProps
24047836SJohn.Forte@Sun.COM );
24057836SJohn.Forte@Sun.COM 
24067836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_AddDiscoveryAddress(
24077836SJohn.Forte@Sun.COM 		IMA_OID oid,
24087836SJohn.Forte@Sun.COM 		const IMA_TARGET_ADDRESS discoveryAddress,
24097836SJohn.Forte@Sun.COM 		IMA_OID *pDiscoveryAddressOid
24107836SJohn.Forte@Sun.COM );
24117836SJohn.Forte@Sun.COM 
24127836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_AddStaticDiscoveryTarget(
24137836SJohn.Forte@Sun.COM 		IMA_OID oid,
24147836SJohn.Forte@Sun.COM 		const IMA_STATIC_DISCOVERY_TARGET staticDiscoveryTarget,
24157836SJohn.Forte@Sun.COM 		IMA_OID *pStaticDiscoveryTargetOid
24167836SJohn.Forte@Sun.COM );
24177836SJohn.Forte@Sun.COM 
24187836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetAddressKeys(
24197836SJohn.Forte@Sun.COM 		IMA_OID targetOid,
24207836SJohn.Forte@Sun.COM 		IMA_ADDRESS_KEYS **ppKeys
24217836SJohn.Forte@Sun.COM );
24227836SJohn.Forte@Sun.COM 
24237836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetSessionOidList (
24247836SJohn.Forte@Sun.COM 		IMA_OID oid,
24257836SJohn.Forte@Sun.COM 		IMA_OID_LIST **ppList
24267836SJohn.Forte@Sun.COM );
24277836SJohn.Forte@Sun.COM 
24287836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetConnectionOidList (
24297836SJohn.Forte@Sun.COM 		IMA_OID oid,
24307836SJohn.Forte@Sun.COM 		IMA_OID_LIST **ppList
24317836SJohn.Forte@Sun.COM );
24327836SJohn.Forte@Sun.COM 
24337836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDiscoveryAddressOidList (
24347836SJohn.Forte@Sun.COM 		IMA_OID oid,
24357836SJohn.Forte@Sun.COM 		IMA_OID_LIST **ppList
24367836SJohn.Forte@Sun.COM );
24377836SJohn.Forte@Sun.COM 
24387836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_GetDiscoveryAddressProperties (
24397836SJohn.Forte@Sun.COM 		IMA_OID discoveryAddressOid,
24407836SJohn.Forte@Sun.COM 		IMA_DISCOVERY_ADDRESS_PROPERTIES *pProps
24417836SJohn.Forte@Sun.COM );
24427836SJohn.Forte@Sun.COM 
24437836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_RemoveDiscoveryAddress (
24447836SJohn.Forte@Sun.COM 		IMA_OID oid
24457836SJohn.Forte@Sun.COM );
24467836SJohn.Forte@Sun.COM 
24477836SJohn.Forte@Sun.COM IMA_API IMA_STATUS QIMA_SetUpdateInterval(IMA_OID pluginOid, time_t interval);
24487836SJohn.Forte@Sun.COM 
24497836SJohn.Forte@Sun.COM IMA_API IMA_STATUS IMA_CommitHbaParameters (IMA_OID lhba, IMA_COMMIT_LEVEL commitLevel);
24507836SJohn.Forte@Sun.COM 
24517836SJohn.Forte@Sun.COM #endif
24527836SJohn.Forte@Sun.COM 
24537836SJohn.Forte@Sun.COM #ifdef __cplusplus
24547836SJohn.Forte@Sun.COM };
24557836SJohn.Forte@Sun.COM #endif
24567836SJohn.Forte@Sun.COM 
24577836SJohn.Forte@Sun.COM 
2458