## @file
#  Instance of DxeNetLib.
#
# Copyright (c) 2006 - 2011, 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                      = DxeNetLib
  FILE_GUID                      = db6dcef3-9f4e-4340-9351-fc35aa8a5888
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = NetLib|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]
  DxeNetLib.c
  NetBuffer.c


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  DebugLib
  BaseMemoryLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  UefiLib
  MemoryAllocationLib
  DevicePathLib
  HiiLib
  PrintLib

[Guids]
  gEfiNicIp4ConfigVariableGuid
  gEfiSmbiosTableGuid

[Protocols]
  gEfiSimpleNetworkProtocolGuid                 # PROTOCOL ALWAYS_CONSUMED
  gEfiManagedNetworkProtocolGuid                # PROTOCOL ALWAYS_CONSUMED
  gEfiManagedNetworkServiceBindingProtocolGuid  # PROTOCOL ALWAYS_CONSUMED
  gEfiComponentNameProtocolGuid                 # PROTOCOL ALWAYS_CONSUMED
  gEfiComponentName2ProtocolGuid                # PROTOCOL ALWAYS_CONSUMED
  gEfiHiiConfigRoutingProtocolGuid              # PROTOCOL ALWAYS_CONSUMED
  gEfiHiiConfigAccessProtocolGuid               # PROTOCOL ALWAYS_CONSUMED
