## @file
#  This library instance provides IP services upon EFI IPv4/IPv6 Protocols.
#
#  Copyright (c) 2006 - 2014, 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                      = DxeIpIoLib
  MODULE_UNI_FILE                = DxeIpIoLib.uni
  FILE_GUID                      = A302F877-8625-425c-B1EC-7487B62C4FDA
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = IpIoLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DxeIpIoLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  IpIoLib
  BaseLib
  DebugLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  DpcLib

[Protocols]
  gEfiIp4ProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiIp4ServiceBindingProtocolGuid             ## SOMETIMES_CONSUMES
  gEfiIp6ProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiIp6ServiceBindingProtocolGuid             ## SOMETIMES_CONSUMES

