ima.h revision 1
1N/A * The contents of this file are subject to the terms of the 1N/A * Common Development and Distribution License (the "License"). 1N/A * You may not use this file except in compliance with the License. 1N/A * See the License for the specific language governing permissions 1N/A * and limitations under the License. 1N/A * When distributing Covered Code, include this CDDL HEADER in each 1N/A * If applicable, add the following below this CDDL HEADER, with the 1N/A * fields enclosed by brackets "[]" replaced with your own identifying 1N/A * information: Portions Copyright [yyyy] [name of copyright owner] 1N/A * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 1N/A * Use is subject to license terms. 1N/A/****************************************************************************** 1N/A * Ima.h - general header file for client 1N/A * and library developers 1N/A * The contents of this file are subject to the SNIA Public License 1N/A * Version 1.0 (the "License"); you may not use this file except in 1N/A * compliance with the License. You may obtain a copy of the License at 1N/A * Software distributed under the License is distributed on an "AS IS" 1N/A * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 1N/A * the License for the specific language governing rights and limitations 1N/A * under the License. 1N/A * The Original Code is SNIA HBA API and IMA general header file 1N/A * The Initial Developer of the Original Code is: 1N/A * Benjamin F. Kuo, Troika Networks, Inc. (benk@troikanetworks.com) 1N/A * David Dillard VERITAS Software david.dillard@veritas.com 1N/A * Jeff Ding, Adaptec, Inc. (jding@corp.adaptec.com) 1N/A * Dave Wysochanski, Network Appliance, Inc. (davidw@netapp.com) 1N/A ****************************************************************************** 1N/A * 09/24/2003 Initial Draft 1N/A * (for other changes... see the CVS logs) 1N/A * 12/15/2003 corrected the defined parameter in IMA_SetPhbaIsnsDiscovery(). 1N/A * lower case the computer name as iscsi name in 1N/A * IMA_GenerateNodeName(). 1N/A * 03/01/2004 Brought up to date with respect to IMA v1.0.1; made formatting 1N/A * changes - lines to 80 cols - for readability. 1N/A * 01/21/2005 Updated to support IMA 1.1.3. 1N/A *****************************************************************************/ 1N/A/* Library version string */ 1N/A/* DLL imports for WIN32 operation */ 1N/A/* OS specific definitions */ 1N/A/* Don't confuse, _WIN32 with WIN32... OK, how do you accompish that */ 1N/A#
endif /* #ifdef _WIN32 */ 1N/A/* Note this section needs to be cleaned up for various Unix platforms */ 1N/A#
endif /* #ifdef WIN32 */ 1N/A******************************************************************************* 1N/A* Generic IMA Constant Definitions 1N/A******************************************************************************* 1N/A* Value which can be assigned to an IMA_BOOL and or an IMA_XBOOL. 1N/A* Value which can be assigned to an IMA_BOOL and or an IMA_XBOOL. 1N/A* Value which can be assigned to an IMA_XBOOL. 1N/A******************************************************************************* 1N/A* Base IMA Type Definitions 1N/A* @note Types that have a specific size must be defined ImaOsTypes.h which is 1N/A* an OS specific include file which is included by this file. 1N/A******************************************************************************* 1N/A* An integer. Spec states this is 32 bits on 32-bit systems, and 64-bit 1N/A* An extended boolean: can have the values @ref IMA_TRUE, @ref IMA_FALSE, and 1N/A******************************************************************************* 1N/A* Constants and macros declarations related to IMA_STATUS 1N/A******************************************************************************* 1N/A#define IMA_SUCCESS(status) ( (IMA_UINT32)(status) & \ 1N/A (IMA_UINT32)IMA_STATUS_ERROR == 0 ? \ 1N/A IMA_TRUE : IMA_FALSE ) 1N/A#define IMA_ERROR(status) ( (IMA_UINT32)(status) & \ 1N/A (IMA_UINT32)IMA_STATUS_ERROR == 0x8000000 ? \ 1N/A IMA_TRUE : IMA_FALSE ) 1N/A******************************************************************************* 1N/A* Declaration of the IMA_OBJECT_TYPE enumeration 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_OID structure 1N/A* This structure should be treated as opaque by clients of the API. 1N/A* Appropriate APIs should be used to extract information from the structure. 1N/A******************************************************************************* 1N/A * The type of the object. When an object ID is supplied as a parameter 1N/A * to an API the library uses this value to insure that the supplied 1N/A * object's type is appropriate for the API. 1N/A * A value determined by the library which it uses to uniquely identify the 1N/A * owner of an object. The owner of an object is either the library itself 1N/A * or a plugin. When an object ID is supplied as a parameter to an API the 1N/A * library uses this value to determine if it should handle the call itself 1N/A * or direct the call to one or more plugins. 1N/A * A value determined by a plugin which a plugin uses, perhaps in 1N/A * combination with the object type, to uniquely identify one of its 1N/A******************************************************************************* 1N/A* Declaration of the IMA_OID_LIST structure 1N/A* This structure is used by a number of APIs to return lists of objects. Any 1N/A* instance of this structure returned by an API must be freed by a client 1N/A* using the IMA_FreeObjectIdList API. Although oids is declared to be an 1N/A* @ref IMA_OID structure it can in fact contain any number of 1N/A* @ref IMA_OID structures. 1N/A* @note The @a oids array is a variable length array, despite its declaration 1N/A* below it can be of any length. 1N/A******************************************************************************* 1N/A * The number of object IDs in the @a oids array. 1N/A * A variable length array of zero or more object IDs. There are 1N/A * 'oidCount' object IDs in this array. 1N/A******************************************************************************* 1N/A* Declaration of the IMA_LIBRARY_PROPERTIES structure 1N/A******************************************************************************* 1N/A * The version of the iSCSI Management API implemented by the library. 1N/A * The value returned by a library for the API as described in this 1N/A * A nul terminated ASCII string containing the name of the vendor that 1N/A * created the binary version of the library. 1N/A * A nul terminated ASCII string containing the implementation version 1N/A * of the library from the vendor specified in the 'vendor' field. 1N/A * A nul terminated ASCII string ideally containing the path and file 1N/A * name of the library that is being used by the currently executing 1N/A * process can be found. If the path cannot be determined then it is 1N/A * acceptable to fill this field with only the name (and extension if 1N/A * applicable) of the file of the library. If this cannot be determined 1N/A * then this field should be an empty string. 1N/A * The time and date that the library that is executing was built. 1N/A******************************************************************************* 1N/A* Declaration of the IMA_PLUGIN_PROPERTIES structure 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_NODE_NAME type 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_NODE_ALIAS type 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_DOMAIN_NAME type 1N/A* A variable of this type may be formatted in any of the following four ways: 1N/A* 1. An empty string, which indicates that no host or IP address is 1N/A* 3. A dotted-decimal IPv4 address 1N/A* 4. A bracketed IPv6 address as specified in RFC 2732 1N/A* In all cases a domain name is terminated by a nul character. 1N/A* This type is used by several APIs: IMA_SetPhbaSnsDiscovery(), 1N/A* IMA_SetNetworkPortalIpAddress(), and indirectly by 1N/A* IMA_GetPhbaDiscoveryProperties(). 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_NODE_PROPERTIES structure 1N/A* This structure is returned by the IMA_GetNodeProperties() API. 1N/A* NOTE: It is possible for both 'runningInInitiatorMode' and 1N/A* 'runningInTargetMode' to be set to @c IMA_TRUE. This means that 1N/A* the node is operating both as an initiator and as a target. 1N/A******************************************************************************* 1N/A * A boolean indicating if the node is running as initiator or not. 1N/A * A boolean indicating if the node is running as a target or not. 1N/A * A boolean which indicates if the node's name is set or not. 1N/A * A nul terminated Unicode string which contains the name of the node. 1N/A * The value in this field is only valid if 'nameValid' is set to 1N/A * IMA_TRUE, in which case it will be Unicode NULL terminated. If 1N/A * 'nameValid' is set to IMA_FALSE then this field will contain an 1N/A * A boolean which indicates if the node's alias is set or not. 1N/A * A nul terminated Unicode string which contains the alias of the node. 1N/A * This field is only valid if 'aliasValid' is set to IMA_TRUE, in which 1N/A * case it will be Unicode NULL terminated. If 'aliasValid' is set to 1N/A * IMA_FALSE then this field will contain an empty string. 1N/A * Boolean indicating if both the name and alias are settable using 1N/A * IMA_SetNodeName() and IMA_SetNodeAlias(). 1N/A******************************************************************************* 1N/A* Declaration of the IMA_LHBA_PROPERTIES structure 1N/A* This structure is returned by the IMA_GetLhbaProperties() API. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_ULP_xxx constants 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Declaration of the IMA_MIN_MAX_VALUE structure 1N/A* Note: If the 'currentValueValid' field is IMA_FALSE then the value of 1N/A* 'settable' must also be set to IMA_FALSE. 1N/A* Note: The fields in this structure contain values which are defined by the 1N/A* implementation and not by the iSCSI specification. It is possible 1N/A* that an implementation may be more or less restrictive in the values 1N/A* that it can accept than the iSCSI specification allows. 1N/A* Note: An example of how to use 'incrementValue': Suppose that a structure is 1N/A* obtained where 'currentValueValid' is IMA_TRUE, 'settable' is 1N/A* IMA_TRUE, 'currentValue' is 50, 'defaultValue' is 50, 'minimumValue' 1N/A* is 30, 'maximumValue' is 70 and 'incrementValue' is 10. In this case, 1N/A* the possible values that the property can be set to are 30, 40, 50, 1N/A* 60, and 70. The new value must be the current value plus or minus 1N/A* some multiple of 'incrementValue'. 1N/A******************************************************************************* 1N/A * A boolean indicating if the @a currentValue field contains a valid value. 1N/A * Indicates if the corresponding property is settable. If this field 1N/A * has the value IMA_TRUE then the 'defaultValue', 'minimumValue', 1N/A * 'maximumValue', and 'incrementValue' fields shall contain valid 1N/A * values. If this field has the value IMA_FALSE then these fields 1N/A * have undefined values. 1N/A * If currentValueValid has the value IMA_TRUE then this field contains 1N/A * the current value of the associated property. If 'currentValueValid' has 1N/A * the value IMA_FALSE then the value of this field is undefined. 1N/A * If 'settable' has the value IMA_TRUE then this field contains the 1N/A * implementation's default value of the associated property. If 'settable' 1N/A * has the value IMA_FALSE then the value of this field is undefined. 1N/A * If 'settable' has the value IMA_TRUE then this field contains the 1N/A * implementation's minimum value of the associated property. If 'settable' 1N/A * has the value IMA_FALSE then the value of this field is undefined. 1N/A * If 'settable' has the value IMA_TRUE then this field contains the 1N/A * implementation's maximum value of the associated property. If 'settable' 1N/A * has the value IMA_FALSE then the value of this field is undefined. 1N/A * If 'settable' has the value IMA_TRUE then this field contains a value 1N/A * which can be added to or subtracted from 'currentValue' to obtain other 1N/A * possible values of the associated property. If 'settable' has the value 1N/A * IMA_FALSE then the value of this field is undefined. 1N/A******************************************************************************* 1N/A* Declaration of the IMA_PHBA_PROPERTIES structure 1N/A* This structure is returned by the IMA_GetPhbaProperties() API. 1N/A* Note: Both 'isInitiator' and 'isTarget' cannot be set to IMA_FALSE as this 1N/A* would mean that the PHBA was not functioning as either an initiator or 1N/A* target, which means that its not functioning at all. 1N/A******************************************************************************* 1N/A * A nul terminated ASCII string which contains the name of the vendor 1N/A * of a PHBA. If the first character in this field is nul then the 1N/A * vendor is unknown. 1N/A * A nul terminated ASCII string which contains the name of the model of 1N/A * a PHBA. If the first character in this field is nul then the model is 1N/A * A nul terminated ASCII string which contains a description of a PHBA. 1N/A * This is a user friendly description of the PHBA. If the first character 1N/A * in this field is nul then there is no description. 1N/A * A nul terminated ASCII string which contains the serial number of a 1N/A * PHBA. If the first character in this field is nul then the serial 1N/A * number is unknown. 1N/A * A nul terminated ASCII string which contains the hardware version of 1N/A * a PHBA. If the first character in this field is nul then the hardware 1N/A * version is unknown. 1N/A * A nul terminated ASCII string which contains the ASIC version of a 1N/A * PHBA. If the first character in this field is nul then the ASIC 1N/A * version is unknown or is not applicable. 1N/A * A nul terminated ASCII string which contains the firmware version of 1N/A * a PHBA. If the first character in this field is nul then the firmware 1N/A * version is unknown or is not applicable. 1N/A * A nul terminated ASCII string which contains the option ROM version 1N/A * of a PHBA. If the first character in this field is nul then the option 1N/A * ROM version is unknown or is not applicable. 1N/A * A nul terminated ASCII string which contains the name of the driver 1N/A * controlling a PHBA. If the first character in this field is nul then 1N/A * the name of the driver is unknown. 1N/A * A nul terminated ASCII string which contains the version of the driver 1N/A * specified in 'driverName'. If the first character in this field is nul 1N/A * then the version of the driver is unknown. 1N/A * This field can have a known value only if @a driverName has a known 1N/A * A field containing flags which indicate what upper level protocols 1N/A * are supported by a PHBA. Examples of upper level protocols include: 1N/A * - TCP, represented by IMA_ULP_TCP 1N/A * - SCTP, represented by IMA_ULP_SCTP 1N/A * - UDP, represented by IMA_ULP_UDP 1N/A * A extended boolean which indicates if a PHBA supports executing SCSI 1N/A * commands which cause bidirectional transfers. 1N/A * Note: The value of this field applies to the entire stack: 1N/A * the hardware, ASIC, firmware, driver, etc. All must support SCSI 1N/A * commands which cause bidirectional transfers for this field to be 1N/A * The maximum length, in bytes, of a CDB that can be transferred by 1N/A * this PHBA. If this field has a value of zero that indicates that 1N/A * this value is unknown. 1N/A * Note: The value of this field applies to the entire stack: 1N/A * the hardware, ASIC, firmware, driver, etc. All must support the 1N/A * maximum CDB length returned in this field. 1N/A * An extended boolean which indicates if a PHBA can also function as 1N/A * a standard NIC concurrently with functioning as an iSCSI PHBA. 1N/A * A extended boolean which indicates if a PHBA is functioning as a 1N/A * standard NIC concurrently with functioning as an iSCSI PHBA. 1N/A * An extended boolean indicating if the PHBA is functioning as an 1N/A * An extended boolean indicating if the PHBA is functioning as a target. 1N/A * An extended boolean indicating if the PHBA is using a TCP offload engine. 1N/A * Note: This value should only be set to @c IMA_TRUE if a TCP offload 1N/A * engine is present and is being used. If it can be determined that a 1N/A * TCP offload engine is present, but it cannot be determined if that 1N/A * offload engine is being used then this value should be set to 1N/A * An extended boolean indicating if the PHBA is using a iSCSI offload 1N/A * Note: This value should only be set to @c IMA_TRUE if a iSCSI offload 1N/A * engine is present and is being used. If it can be determined that an 1N/A * iSCSI offload engine is present, but it cannot be determined if that 1N/A * offload engine is being used then this value should be set to 1N/A******************************************************************************* 1N/A* Declaration of the IMA_DISCOVERY_PROPERTIES structure 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* The individual APIs of the IMA are declared below. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the properties of the IMA library that is being used. 1N/A* A pointer to an IMA_LIBRARY_PROPERTIES structure allocated by 1N/A* the caller. On successful return this structure will contain the 1N/A* properties of the IMA library. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the library properties were successfully returned. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pProps' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets a list of the object IDs of all currently loaded plugins. 1N/A* A pointer to a pointer to an IMA_OID_LIST. On successful 1N/A* return this will contain a pointer to an @ref IMA_OID_LIST 1N/A* which contains the object IDs of all of the plugins currently 1N/A* loaded by the library. 1N/A* @return An IMA_STATUS indicating if the operation was successful or 1N/A* if an error occurred. 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the plugin ID list was successfully returned. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'ppList' is NULL or specifies a memory area to 1N/A* which data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the properties of the specified vendor plugin. 1N/A* The ID of the plugin whose properties are being retrieved. 1N/A* A pointer to an @ref IMA_PLUGIN_PROPERTIES structure allocated by 1N/A* the caller. On successful return this will contain the properties 1N/A* of the plugin specified by pluginOid. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if an 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the plugin properties were successfully returned. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'pluginOid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'pluginOid' does not specify a plugin object. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'pluginOid' refers to a plugin, but not one that 1N/A* is currently loaded. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pProps' is NULL or specifies a memory area to 1N/A* which data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the object ID for the plugin associated with the specified object ID. 1N/A* The object ID of an object that has been received from a previous 1N/A* A pointer to an IMA_OID structure allocated by the caller. On 1N/A* successful return this will contain the object ID of the plugin 1N/A* associated with the object specified by @a objectId. This 1N/A* can then be used to work with the plugin, e.g., to get the 1N/A* properties of the plugin or the send the plugin an IOCtl. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the associated plugin ID was successfully returned. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pPluginOid' is NULL or specifies a memory area to 1N/A* which data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'oid' specifies an object not owned by a plugin, but 1N/A* instead one that is owned by the library. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'oid' specifies an object with an invalid type. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the object ID of the shared node. 1N/A* @param pSharedNodeOid 1N/A* A pointer to an IMA_OID structure allocated by the caller. On 1N/A* successful return it will contain the object ID of the 1N/A* shared node of the currently executing system is placed. 1N/A* @return An IMA_STATUS indicating if the operation was successful or 1N/A* if an error occurred. 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the shared node ID has been successfully retrieved. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pSharedNodeOid' is NULL or specifies a memory area 1N/A* to which data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the properties of the specified iSCSI node. 1N/A* The ID of the node to get the properties of. 1N/A* A pointer to an @ref IMA_NODE_PROPERTIES structure which on 1N/A* successful return will contain the properties of the specified node. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the node properties have been successfully retrieved. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pProps' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'nodeOid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'nodeOid' does not specify a node object. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'nodeOid' does not specify a node which is currently 1N/A* known to the system. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Sets the name of the specified node. 1N/A* The object ID of the node whose name is being set. 1N/A* The new name of the node. 1N/A* @return An IMA_STATUS indicating if the operation was successful or 1N/A* if an error occurred. 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the node name was successfully changed. 1N/A* @retval IMA_STATUS_REBOOT_NECESSARY 1N/A* Returned if a reboot is necessary before the setting of the 1N/A* name actually takes affect. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'newName' is NULL, or specifies a memory area 1N/A* to which data cannot be written, or has a length of 0. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'nodeOid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'nodeOid' does not specify a node object. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'nodeOid' does not specify a node which is 1N/A* currently known to the system. 1N/A* @retval IMA_ERROR_NAME_TOO_LONG 1N/A* Returned if 'newName' contains too many characters. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Generates a unique node name for the currently running system. 1N/A* @param generatedName 1N/A* On successful return contains the generated node name. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if an 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'generatedname is NULL or 1N/A* specifies a memory area to which data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Sets the alias of the specified node. 1N/A* The object ID of the node whose alias is being set. 1N/A* A pointer to a Unicode string which contains the new node alias. 1N/A* If this parameter is NULL then the current alias is deleted, in which 1N/A* case the specified node no longer has an alias. 1N/A* @return An IMA_STATUS indicating if the operation was successful or 1N/A* if an error occurred. 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the node's alias has been successfully set. 1N/A* @retval IMA_STATUS_REBOOT_NECESSARY 1N/A* A reboot is necessary before the setting of the alias actually 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'nodeOid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'nodeOid' does not specify a node object. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'nodeOid' does not specify a node which is currently 1N/A* known to the system. 1N/A* @retval IMA_ERROR_NAME_TOO_LONG 1N/A* Returned if 'newAlias' contains too many characters. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets a list of the object IDs of all the logical HBAs in the system. 1N/A* A pointer to a pointer to an @ref IMA_OID_LIST structure. On 1N/A* successful return this will contain a pointer to an 1N/A* IMA_OID_LIST which contains the object IDs of all of the 1N/A* LHBAs currently in the system. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the LHBA ID list has been successfully returned. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'ppList' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the properties of the specified logical HBA. 1N/A* The object ID of the LHBA whose properties are being retrieved. 1N/A* A pointer to an IMA_LHBA_PROPERTIES structure. On successful 1N/A* return this will contain the properties of the LHBA specified by 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the properties of the specified LHBA have been 1N/A* successfully retrieved. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pProps' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'lhbaOid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'lhbaOid' does not specify a LHBA. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'lhbaOid' does not specify a LHBA which is currently 1N/A* known to the system. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets a list of the object IDs of all the physical HBAs in the system. 1N/A* A pointer to a pointer to an IMA_OID_LIST structure. On successful 1N/A* return this will contain a pointer to an IMA_OID_LIST which 1N/A* contains the object IDs of all of the PHBAs currently in the system. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the PHBA OID list has been successfully returned. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'ppList' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the general properties of a physical HBA. 1N/A* The object ID of the PHBA whose properties are being queried. 1N/A* A pointer to an @ref IMA_PHBA_PROPERTIES structure. On successful 1N/A* return this will contain the properties of the PHBA specified by 1N/A* @return An IMA_STATUS indicating if the operation was successful or 1N/A* if an error occurred. 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the properties of the specified PHBA have been 1N/A* successfully retrieved. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pProps' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'phbaOid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'phbaOid' does not specify a PHBA. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'phbaOid' does not specify a PHBA which is currently 1N/A* known to the system. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Frees a previously allocated IMA_OID_LIST structure. 1N/A* @param pMemory A pointer to an IMA_OID_LIST structure allocated by the 1N/A* library. On successful return the memory allocated by the 1N/A* @return An IMA_STATUS indicating if the operation was successful or if an 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the specified object ID list was successfully 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if pMemory is NULL or specifies a memory area from which 1N/A* data cannot be read. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the first burst length properties of the specified logical HBA. 1N/A* The object ID of the logical HBA to get the first burst length 1N/A* @return An IMA_STATUS indicating if the operation was successful or if an 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the first burst length properties have been 1N/A* successfully retrieved. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if pProps is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'oid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'oid' does not specify a LHBA. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'oid' does not specify a LHBA which is currently 1N/A* known to the system. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the max burst length properties of the specified logical HBA. 1N/A* The object ID of the logical HBA to get the max burst length 1N/A* A pointer to an IMA_MIN_MAX_VALUE structure allocated by the 1N/A* caller. On successful return this structure will contain the max 1N/A* burst length properties of this LHBA. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the max burst length properties have been successfully 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if pProps is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'oid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'oid' does not specify a LHBA. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'oid' does not specify a LHBA which is currently 1N/A* known to the system. 1N/A******************************************************************************* 1N/A******************************************************************************* 1N/A* Gets the maximum receive data segment length properties of the specified 1N/A* The object ID of the logical HBA to get the max receive data 1N/A* segment length properties of. 1N/A* A pointer to an @ref IMA_MIN_MAX_VALUE structure allocated by the 1N/A* caller. On successful return this structure will contain the max 1N/A* receive data segment length properties of this LHBA. 1N/A* @return An IMA_STATUS indicating if the operation was successful or if 1N/A* @retval IMA_SUCCESS 1N/A* Returned if the max receive data segment length properties 1N/A* have been successfully retrieved. 1N/A* @retval IMA_ERROR_INVALID_PARAMETER 1N/A* Returned if 'pProps' is NULL or specifies a memory area to which 1N/A* data cannot be written. 1N/A* @retval IMA_ERROR_INVALID_OBJECT_TYPE 1N/A* Returned if 'oid' does not specify any valid object type. 1N/A* @retval IMA_ERROR_INCORRECT_OBJECT_TYPE 1N/A* Returned if 'oid' does not specify a LHBA. 1N/A* @retval IMA_ERROR_OBJECT_NOT_FOUND 1N/A* Returned if 'oid' does not specify a LHBA which is currently 1N/A* known to the system. 1N/A******************************************************************************* 1N/A/*---------------------------------------------*/