Blame lib.c

Packit Service 35c908
/*
Packit Service 35c908
 * Copyright (c) 2008, Intel Corporation.
Packit Service 35c908
 *
Packit Service 35c908
 * This program is free software; you can redistribute it and/or modify it
Packit Service 35c908
 * under the terms and conditions of the GNU Lesser General Public License,
Packit Service 35c908
 * version 2.1, as published by the Free Software Foundation.
Packit Service 35c908
 *
Packit Service 35c908
 * This program is distributed in the hope it will be useful, but WITHOUT
Packit Service 35c908
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit Service 35c908
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
Packit Service 35c908
 * for more details.
Packit Service 35c908
 *
Packit Service 35c908
 * You should have received a copy of the GNU Lesser General Public License
Packit Service 35c908
 * along with this program; if not, write to the Free Software Foundation, Inc.,
Packit Service 35c908
 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
Packit Service 35c908
 *
Packit Service 35c908
 */
Packit Service 35c908
Packit Service 35c908
#define _XOPEN_SOURCE 500        /* for strptime() */
Packit Service 35c908
#include "utils.h"
Packit Service 35c908
#include "api_lib.h"
Packit Service 35c908
#include "adapt_impl.h"
Packit Service 35c908
#include "bind_impl.h"
Packit Service 35c908
Packit Service 35c908
/**
Packit Service 35c908
 * Return the version of the SNIA HBA-API supported by this library.
Packit Service 35c908
 */
Packit Service 35c908
static HBA_UINT32 get_library_version()
Packit Service 35c908
{
Packit Service 35c908
	return HBA_LIBVERSION;
Packit Service 35c908
}
Packit Service 35c908
Packit Service 35c908
/*
Packit Service 35c908
 * When HBA_GetVendorLibraryAttributes() is called,
Packit Service 35c908
 * it does not dispatch to the library entry point at
Packit Service 35c908
 * .GetVendorLibraryAttributesHandler. Thus this
Packit Service 35c908
 * routine can never be entered. -[sma]
Packit Service 35c908
 */
Packit Service 35c908
#if 0
Packit Service 35c908
/**
Packit Service 35c908
 * Get the library attributes.
Packit Service 35c908
 * @param ap library attributes pointer.
Packit Service 35c908
 * @returns 0 or error code.
Packit Service 35c908
 */
Packit Service 35c908
static HBA_STATUS get_vendor_lib_attrs(HBA_LIBRARYATTRIBUTES *ap)
Packit Service 35c908
{
Packit Service 35c908
	memset(ap, 0, sizeof(*ap));
Packit Service 35c908
	if (strptime(BUILD_DATE, "%Y/%m/%d %T %Z", &ap->build_date) == NULL)
Packit Service 35c908
		memset(&ap->build_date, 0, sizeof(ap->build_date));
Packit Service 35c908
	strcpy(ap->VName, HBA_API_VENDOR);
Packit Service 35c908
	strcpy(ap->VVersion, HBA_API_VERSION);
Packit Service 35c908
	return HBA_STATUS_OK;
Packit Service 35c908
}
Packit Service 35c908
#endif
Packit Service 35c908
Packit Service 35c908
/*
Packit Service 35c908
 * initialize the library after load.
Packit Service 35c908
 */
Packit Service 35c908
static HBA_STATUS load_library(void)
Packit Service 35c908
{
Packit Service 35c908
	adapter_init();
Packit Service 35c908
	return HBA_STATUS_OK;
Packit Service 35c908
}
Packit Service 35c908
Packit Service 35c908
static HBA_STATUS free_library(void)
Packit Service 35c908
{
Packit Service 35c908
	adapter_shutdown();
Packit Service 35c908
	adapter_destroy_all();
Packit Service 35c908
	return HBA_STATUS_OK;
Packit Service 35c908
}
Packit Service 35c908
Packit Service 35c908
static HBA_ENTRYPOINTSV2 vendor_lib_entrypoints = {
Packit Service 35c908
    .GetVersionHandler =                       get_library_version,
Packit Service 35c908
    .LoadLibraryHandler =                      load_library,
Packit Service 35c908
    .FreeLibraryHandler =                      free_library,
Packit Service 35c908
    .GetNumberOfAdaptersHandler =              adapter_get_count,
Packit Service 35c908
    .GetAdapterNameHandler =                   adapter_get_name,
Packit Service 35c908
    .OpenAdapterHandler =                      adapter_open,
Packit Service 35c908
    .CloseAdapterHandler =                     adapter_close,
Packit Service 35c908
    .GetAdapterAttributesHandler =             adapter_get_attr,
Packit Service 35c908
    .GetAdapterPortAttributesHandler =         adapter_get_port_attr,
Packit Service 35c908
    .GetPortStatisticsHandler =                get_port_statistics,
Packit Service 35c908
    .GetDiscoveredPortAttributesHandler =      adapter_get_rport_attr,
Packit Service 35c908
Packit Service 35c908
    .GetPortAttributesByWWNHandler =           NULL,
Packit Service 35c908
					/* adapter_get_port_attr_by_wwn, */
Packit Service 35c908
    /* Next function deprecated but still supported */
Packit Service 35c908
    .SendCTPassThruHandler =                   NULL,
Packit Service 35c908
    .RefreshInformationHandler =               NULL,
Packit Service 35c908
    .ResetStatisticsHandler =                  NULL,
Packit Service 35c908
    /* Next function deprecated but still supported */
Packit Service 35c908
    .GetFcpTargetMappingHandler =              get_binding_target_mapping_v1,
Packit Service 35c908
    /* Next function depricated but still supported */
Packit Service 35c908
    .GetFcpPersistentBindingHandler =          NULL,
Packit Service 35c908
    .GetEventBufferHandler =                   NULL,
Packit Service 35c908
    .SetRNIDMgmtInfoHandler =                  NULL,
Packit Service 35c908
    .GetRNIDMgmtInfoHandler =                  NULL,
Packit Service 35c908
    /* Next function deprecated but still supported */
Packit Service 35c908
    .SendRNIDHandler =                         NULL,
Packit Service 35c908
    .ScsiInquiryHandler =                      scsi_inquiry_v1,
Packit Service 35c908
    .ReportLUNsHandler =                       scsi_report_luns_v1,
Packit Service 35c908
    .ReadCapacityHandler =                     scsi_read_capacity_v1,
Packit Service 35c908
Packit Service 35c908
    /* V2 handlers */
Packit Service 35c908
    .OpenAdapterByWWNHandler =                 NULL,
Packit Service 35c908
					/* adapter_open_by_wwn, */
Packit Service 35c908
    .GetFcpTargetMappingV2Handler =            get_binding_target_mapping_v2,
Packit Service 35c908
    .SendCTPassThruV2Handler =                 NULL,
Packit Service 35c908
    .RefreshAdapterConfigurationHandler =      NULL,
Packit Service 35c908
    .GetBindingCapabilityHandler =             NULL,
Packit Service 35c908
					/* get_binding_capability, */
Packit Service 35c908
    .GetBindingSupportHandler =                NULL,
Packit Service 35c908
					/* get_binding_support, */
Packit Service 35c908
    .SetBindingSupportHandler =                NULL,
Packit Service 35c908
					/* set_binding_support, */
Packit Service 35c908
    .SetPersistentBindingV2Handler =           NULL,
Packit Service 35c908
    .GetPersistentBindingV2Handler =           NULL,
Packit Service 35c908
    .RemovePersistentBindingHandler =          NULL,
Packit Service 35c908
    .RemoveAllPersistentBindingsHandler =      NULL,
Packit Service 35c908
    .SendRNIDV2Handler =                       NULL,
Packit Service 35c908
    .ScsiInquiryV2Handler =                    scsi_inquiry_v2,
Packit Service 35c908
    .ScsiReportLUNsV2Handler =                 scsi_report_luns_v2,
Packit Service 35c908
    .ScsiReadCapacityV2Handler =               scsi_read_capacity_v2,
Packit Service 35c908
    .GetVendorLibraryAttributesHandler =       NULL,
Packit Service 35c908
					/* get_vendor_lib_attrs, */
Packit Service 35c908
    .RemoveCallbackHandler =                   NULL,
Packit Service 35c908
    .RegisterForAdapterAddEventsHandler =      NULL,
Packit Service 35c908
    .RegisterForAdapterEventsHandler =         NULL,
Packit Service 35c908
    .RegisterForAdapterPortEventsHandler =     NULL,
Packit Service 35c908
    .RegisterForAdapterPortStatEventsHandler = NULL,
Packit Service 35c908
    .RegisterForTargetEventsHandler =          NULL,
Packit Service 35c908
    .RegisterForLinkEventsHandler =            NULL,
Packit Service 35c908
    .SendRPLHandler =                          NULL,
Packit Service 35c908
    .SendRPSHandler =                          NULL,
Packit Service 35c908
    .SendSRLHandler =                          NULL,
Packit Service 35c908
    .SendLIRRHandler =                         NULL,
Packit Service 35c908
    .GetFC4StatisticsHandler =                 get_port_fc4_statistics,
Packit Service 35c908
    .GetFCPStatisticsHandler =                 NULL,
Packit Service 35c908
    .SendRLSHandler =                          NULL,
Packit Service 35c908
};
Packit Service 35c908
Packit Service 35c908
/**
Packit Service 35c908
 * Function called by a version 1 common HBAAPI library to get our entry points.
Packit Service 35c908
 *
Packit Service 35c908
 * @arg ep pointer to entrypoints structure where we store our
Packit Service 35c908
 *  function pointers.
Packit Service 35c908
 * @returns HBA_STATUS.
Packit Service 35c908
 */
Packit Service 35c908
HBA_STATUS HBA_RegisterLibrary(HBA_ENTRYPOINTS *ep)
Packit Service 35c908
{
Packit Service 35c908
	memcpy(ep, &vendor_lib_entrypoints, sizeof(HBA_ENTRYPOINTS));
Packit Service 35c908
	return HBA_STATUS_OK;
Packit Service 35c908
}
Packit Service 35c908
Packit Service 35c908
/**
Packit Service 35c908
 * Function called by the common HBAAPI library to get our entry points.
Packit Service 35c908
 *
Packit Service 35c908
 * @arg ep pointer to entrypoints structure where we store our
Packit Service 35c908
 *  function pointers.
Packit Service 35c908
 * @returns HBA_STATUS.
Packit Service 35c908
 */
Packit Service 35c908
HBA_STATUS HBA_RegisterLibraryV2(HBA_ENTRYPOINTSV2 *ep)
Packit Service 35c908
{
Packit Service 35c908
	*ep = vendor_lib_entrypoints;  /* structure copy */
Packit Service 35c908
	return HBA_STATUS_OK;
Packit Service 35c908
}
Packit Service 35c908