#ifdef __cplusplus
extern "C" {
#endif
#ifndef VENDOR_HBA_API_H
#define VENDOR_HBA_API_H
typedef HBA_UINT32 (* HBAGetVersionFunc)();
typedef HBA_STATUS (* HBALoadLibraryFunc)();
typedef HBA_STATUS (* HBAFreeLibraryFunc)();
typedef HBA_UINT32 (* HBAGetNumberOfAdaptersFunc)();
typedef HBA_STATUS (* HBAGetAdapterNameFunc)(HBA_UINT32, char *);
typedef HBA_HANDLE (* HBAOpenAdapterFunc)(char *);
typedef HBA_STATUS (* HBAOpenAdapterByWWNFunc)
(HBA_HANDLE *, HBA_WWN);
typedef void (* HBACloseAdapterFunc)(HBA_HANDLE);
typedef HBA_STATUS (* HBAGetAdapterAttributesFunc)
(HBA_HANDLE, HBA_ADAPTERATTRIBUTES *);
typedef HBA_STATUS (* HBAGetAdapterPortAttributesFunc)
(HBA_HANDLE, HBA_UINT32, HBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* HBAGetPortStatisticsFunc)
(HBA_HANDLE, HBA_UINT32, HBA_PORTSTATISTICS *);
typedef HBA_STATUS (* HBAGetDiscoveredPortAttributesFunc)
(HBA_HANDLE, HBA_UINT32, HBA_UINT32, HBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* HBAGetPortAttributesByWWNFunc)
(HBA_HANDLE, HBA_WWN, HBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* HBASendCTPassThruV2Func)
(HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32 *);
typedef void (* HBARefreshInformationFunc)(HBA_HANDLE);
typedef void (* HBARefreshAdapterConfigurationFunc) ();
typedef void (* HBAResetStatisticsFunc)(HBA_HANDLE, HBA_UINT32);
typedef HBA_STATUS (* HBAGetFcpTargetMappingV2Func)
(HBA_HANDLE, HBA_WWN, HBA_FCPTARGETMAPPINGV2 *);
typedef HBA_STATUS (* HBAGetBindingCapabilityFunc)
(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
typedef HBA_STATUS (* HBAGetBindingSupportFunc)
(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY *);
typedef HBA_STATUS (* HBASetBindingSupportFunc)
(HBA_HANDLE, HBA_WWN, HBA_BIND_CAPABILITY);
typedef HBA_STATUS (* HBASetPersistentBindingV2Func)
(HBA_HANDLE, HBA_WWN, const HBA_FCPBINDING2 *);
typedef HBA_STATUS (* HBAGetPersistentBindingV2Func)
(HBA_HANDLE, HBA_WWN, HBA_FCPBINDING2 *);
typedef HBA_STATUS (* HBARemovePersistentBindingFunc)
(HBA_HANDLE, HBA_WWN, const HBA_FCPBINDING2 *);
typedef HBA_STATUS (* HBARemoveAllPersistentBindingsFunc)
(HBA_HANDLE, HBA_WWN);
typedef HBA_STATUS (* HBAGetEventBufferFunc)
(HBA_HANDLE, HBA_EVENTINFO *, HBA_UINT32 *);
typedef HBA_STATUS (* HBASetRNIDMgmtInfoFunc)
(HBA_HANDLE, HBA_MGMTINFO);
typedef HBA_STATUS (* HBAGetRNIDMgmtInfoFunc)
(HBA_HANDLE, HBA_MGMTINFO *);
typedef HBA_STATUS (* HBASendRNIDV2Func)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32*);
typedef HBA_STATUS (* HBAScsiInquiryV2Func)
(HBA_HANDLE,HBA_WWN,HBA_WWN, HBA_UINT64, HBA_UINT8, HBA_UINT8,
void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
typedef HBA_STATUS (* HBAScsiReportLUNsV2Func)
(HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *, HBA_UINT8 *,
void *, HBA_UINT32 *);
typedef HBA_STATUS (* HBAScsiReadCapacityV2Func)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT64, void *, HBA_UINT32 *,
HBA_UINT8 *, void *, HBA_UINT32 *);
typedef HBA_UINT32 (* HBAGetVendorLibraryAttributesFunc)
(HBA_LIBRARYATTRIBUTES *);
typedef HBA_STATUS (* HBARemoveCallbackFunc) (HBA_CALLBACKHANDLE);
typedef HBA_STATUS (* HBARegisterForAdapterAddEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* HBARegisterForAdapterEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* HBARegisterForAdapterPortEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32), void *, HBA_HANDLE,
HBA_WWN, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* HBARegisterForAdapterPortStatEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE, HBA_WWN,
HBA_PORTSTATISTICS, HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* HBARegisterForTargetEventsFunc)
(void (*)(void *, HBA_WWN, HBA_WWN, HBA_UINT32), void *, HBA_HANDLE,
HBA_WWN, HBA_WWN, HBA_CALLBACKHANDLE *,
HBA_UINT32 );
typedef HBA_STATUS (* HBARegisterForLinkEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32, void *, HBA_UINT32), void *, void *,
HBA_UINT32, HBA_HANDLE, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* HBASendRPLFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_UINT32, void *, HBA_UINT32 *);
typedef HBA_STATUS (* HBASendRPSFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, HBA_WWN, HBA_UINT32, void *,
HBA_UINT32 *);
typedef HBA_STATUS (* HBASendSRLFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32 *);
typedef HBA_STATUS (* HBASendLIRRFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT8, HBA_UINT8, void *, HBA_UINT32 *);
typedef HBA_STATUS (* HBAGetFC4StatisticsFunc)
(HBA_HANDLE, HBA_WWN, HBA_UINT8, HBA_FC4STATISTICS *);
typedef HBA_STATUS (* HBAGetFCPStatisticsFunc)
(HBA_HANDLE, const HBA_SCSIID *, HBA_FC4STATISTICS *);
typedef HBA_STATUS (* HBASendRLSFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *);
typedef HBA_STATUS (* HBAGetFcpTargetMappingFunc)
(HBA_HANDLE, HBA_FCPTARGETMAPPING *);
typedef HBA_STATUS (* HBAGetFcpPersistentBindingFunc)
(HBA_HANDLE, HBA_FCPBINDING *);
typedef HBA_STATUS (* HBASendCTPassThruFunc)
(HBA_HANDLE, void *, HBA_UINT32, void *, HBA_UINT32);
typedef HBA_STATUS (* HBASendScsiInquiryFunc)
(HBA_HANDLE, HBA_WWN,HBA_UINT64, HBA_UINT8, HBA_UINT32, void *,
HBA_UINT32, void *, HBA_UINT32);
typedef HBA_STATUS (* HBASendReportLUNsFunc)
(HBA_HANDLE, HBA_WWN, void *, HBA_UINT32, void *, HBA_UINT32);
typedef HBA_STATUS (* HBASendReadCapacityFunc)
(HBA_HANDLE, HBA_WWN, HBA_UINT64, void *, HBA_UINT32, void *,
HBA_UINT32);
typedef HBA_STATUS (* HBASendRNIDFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWNTYPE, void *, HBA_UINT32 *);
typedef struct HBA_EntryPoints {
HBAGetVersionFunc GetVersionHandler;
HBALoadLibraryFunc LoadLibraryHandler;
HBAFreeLibraryFunc FreeLibraryHandler;
HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
HBAGetAdapterNameFunc GetAdapterNameHandler;
HBAOpenAdapterFunc OpenAdapterHandler;
HBACloseAdapterFunc CloseAdapterHandler;
HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
HBAGetPortStatisticsFunc GetPortStatisticsHandler;
HBAGetDiscoveredPortAttributesFunc GetDiscoveredPortAttributesHandler;
HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
HBASendCTPassThruFunc SendCTPassThruHandler;
HBARefreshInformationFunc RefreshInformationHandler;
HBAResetStatisticsFunc ResetStatisticsHandler;
HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
HBAGetEventBufferFunc GetEventBufferHandler;
HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
HBASendRNIDFunc SendRNIDHandler;
HBASendScsiInquiryFunc ScsiInquiryHandler;
HBASendReportLUNsFunc ReportLUNsHandler;
HBASendReadCapacityFunc ReadCapacityHandler;
} HBA_ENTRYPOINTS, *PHBA_ENTRYPOINTS;
typedef struct HBA_EntryPointsV2 {
HBAGetVersionFunc GetVersionHandler;
HBALoadLibraryFunc LoadLibraryHandler;
HBAFreeLibraryFunc FreeLibraryHandler;
HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
HBAGetAdapterNameFunc GetAdapterNameHandler;
HBAOpenAdapterFunc OpenAdapterHandler;
HBACloseAdapterFunc CloseAdapterHandler;
HBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
HBAGetAdapterPortAttributesFunc GetAdapterPortAttributesHandler;
HBAGetPortStatisticsFunc GetPortStatisticsHandler;
HBAGetDiscoveredPortAttributesFunc GetDiscoveredPortAttributesHandler;
HBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
HBASendCTPassThruFunc SendCTPassThruHandler;
HBARefreshInformationFunc RefreshInformationHandler;
HBAResetStatisticsFunc ResetStatisticsHandler;
HBAGetFcpTargetMappingFunc GetFcpTargetMappingHandler;
HBAGetFcpPersistentBindingFunc GetFcpPersistentBindingHandler;
HBAGetEventBufferFunc GetEventBufferHandler;
HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
HBASendRNIDFunc SendRNIDHandler;
HBASendScsiInquiryFunc ScsiInquiryHandler;
HBASendReportLUNsFunc ReportLUNsHandler;
HBASendReadCapacityFunc ReadCapacityHandler;
HBAOpenAdapterByWWNFunc OpenAdapterByWWNHandler;
HBAGetFcpTargetMappingV2Func GetFcpTargetMappingV2Handler;
HBASendCTPassThruV2Func SendCTPassThruV2Handler;
HBARefreshAdapterConfigurationFunc RefreshAdapterConfigurationHandler;
HBAGetBindingCapabilityFunc GetBindingCapabilityHandler;
HBAGetBindingSupportFunc GetBindingSupportHandler;
HBASetBindingSupportFunc SetBindingSupportHandler;
HBASetPersistentBindingV2Func SetPersistentBindingV2Handler;
HBAGetPersistentBindingV2Func GetPersistentBindingV2Handler;
HBARemovePersistentBindingFunc RemovePersistentBindingHandler;
HBARemoveAllPersistentBindingsFunc RemoveAllPersistentBindingsHandler;
HBASendRNIDV2Func SendRNIDV2Handler;
HBAScsiInquiryV2Func ScsiInquiryV2Handler;
HBAScsiReportLUNsV2Func ScsiReportLUNsV2Handler;
HBAScsiReadCapacityV2Func ScsiReadCapacityV2Handler;
HBAGetVendorLibraryAttributesFunc GetVendorLibraryAttributesHandler;
HBARemoveCallbackFunc RemoveCallbackHandler;
HBARegisterForAdapterAddEventsFunc RegisterForAdapterAddEventsHandler;
HBARegisterForAdapterEventsFunc RegisterForAdapterEventsHandler;
HBARegisterForAdapterPortEventsFunc RegisterForAdapterPortEventsHandler;
HBARegisterForAdapterPortStatEventsFunc
RegisterForAdapterPortStatEventsHandler;
HBARegisterForTargetEventsFunc RegisterForTargetEventsHandler;
HBARegisterForLinkEventsFunc RegisterForLinkEventsHandler;
HBASendRPLFunc SendRPLHandler;
HBASendRPSFunc SendRPSHandler;
HBASendSRLFunc SendSRLHandler;
HBASendLIRRFunc SendLIRRHandler;
HBAGetFC4StatisticsFunc GetFC4StatisticsHandler;
HBAGetFCPStatisticsFunc GetFCPStatisticsHandler;
HBASendRLSFunc SendRLSHandler;
} HBA_ENTRYPOINTSV2, *PHBA_ENTRYPOINTSV2;
typedef HBA_STATUS (* HBARegisterLibraryFunc)(HBA_ENTRYPOINTS *);
typedef HBA_STATUS (* HBARegisterLibraryV2Func)(HBA_ENTRYPOINTSV2 *);
HBA_API HBA_STATUS HBA_RegisterLibrary(
HBA_ENTRYPOINTS *functionTable
);
HBA_API HBA_STATUS HBA_RegisterLibraryV2(
HBA_ENTRYPOINTSV2 *functionTable
);
#endif
#ifdef __cplusplus
}
#endif