## @file
#  This module produces EFI iSCSI Initiator Name Protocol.
#
#  This module produces EFI iSCSI Initiator Name Protocol upon EFI TCPv4 Protocol
#  and EFI DHCPv4 Protocol, to provide the capability to do the transport for SCSI
#  data over TCP/IP. It installs EFI HII Configuration Access Protocol to provide
#  one way to configurate the iSCSI setting.
#
#  Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
#  This program and the accompanying materials
#  are licensed and made available under the terms and conditions of the BSD License
#  which accompanies this distribution.  The full text of the license may be found at
#  http://opensource.org/licenses/bsd-license.php
#
#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = IScsi4Dxe
  MODULE_UNI_FILE                = IScsi4Dxe.uni
  FILE_GUID                      = 4579B72D-7EC4-4dd4-8486-083C86B182A7
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = IScsiDriverEntryPoint
  UNLOAD_IMAGE                   = EfiIScsiUnload

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gIScsiDriverBinding
#  COMPONENT_NAME                =  gIScsiComponentName
#  COMPONENT_NAME2               =  gIScsiComponentName2
#

[Sources]
  IScsiTcp4Io.h
  IScsiProto.h
  IScsiMisc.h
  IScsiIbft.h
  IScsiExtScsiPassThru.h
  IScsiDriver.h
  IScsiDhcp.h
  IScsiCommon.h
  IScsiCHAP.h
  IScsiInitiatorName.h
  ComponentName.h
  Md5.h
  IScsiTcp4Io.c
  IScsiProto.c
  IScsiMisc.c
  IScsiInitiatorName.c
  IScsiIbft.c
  IScsiExtScsiPassThru.c
  IScsiDriver.c
  IScsiDhcp.c
  IScsiCHAP.c
  ComponentName.c
  Md5.c
  IScsiConfigDxeStrings.uni
  IScsiConfigDxe.vfr
  IScsiConfig.c
  IScsiConfig.h
  IScsiImpl.h
  IScsiConfigNVDataStruc.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiLib
  BaseLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  MemoryAllocationLib
  DevicePathLib
  DebugLib
  PrintLib
  HiiLib
  NetLib

[Protocols]
  ## PRODUCES
  ## UNDEFINED # Variable
  gEfiIScsiInitiatorNameProtocolGuid
  gEfiExtScsiPassThruProtocolGuid               ## BY_START
  gEfiTcp4ProtocolGuid                          ## TO_START
  gEfiTcp4ServiceBindingProtocolGuid            ## TO_START
  gEfiDhcp4ProtocolGuid                         ## TO_START
  gEfiDhcp4ServiceBindingProtocolGuid           ## TO_START
  ## TO_START
  ## PRODUCES
  gEfiDevicePathProtocolGuid
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiHiiDatabaseProtocolGuid                   ## CONSUMES
  gEfiPciIoProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiAcpiTableProtocolGuid                     ## SOMETIMES_CONSUMES

[Guids]
  gEfiEventExitBootServicesGuid                 ## SOMETIMES_CONSUMES ## Event
  gEfiIfrTianoGuid                              ## SOMETIMES_PRODUCES ## UNDEFINED
  gEfiAcpiTableGuid                             ## SOMETIMES_CONSUMES ## SystemTable
  gEfiAcpi10TableGuid                           ## SOMETIMES_CONSUMES ## SystemTable
  ## SOMETIMES_PRODUCES ## Variable:L"iSCSIDeviceList"
  ## SOMETIMES_CONSUMES ## Variable:L"iSCSIDeviceList"
  ## SOMETIMES_CONSUMES ## UNDEFINED # HiiIsConfigHdrMatch   mVendorStorageName
  ## SOMETIMES_PRODUCES ## UNDEFINED # HiiConstructConfigHdr mVendorStorageName
  ## SOMETIMES_PRODUCES ## UNDEFINED # HiiGetBrowserData     mVendorStorageName
  ## SOMETIMES_CONSUMES ## UNDEFINED # HiiSetBrowserData     mVendorStorageName
  ## SOMETIMES_CONSUMES ## HII
  gIp4IScsiConfigGuid
  ## SOMETIMES_PRODUCES ## Variable
  ## SOMETIMES_CONSUMES ## Variable
  gIScsiCHAPAuthInfoGuid

[UserExtensions.TianoCore."ExtraFiles"]
  IScsi4DxeExtra.uni
