## @file Udp6Dxe.inf
#  Component description file for Udp6 module.
#
#  Copyright (c) 2009 - 2010, 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                      = Udp6Dxe
  FILE_GUID                      = D912C7BC-F098-4367-92BA-E911083C7B0E
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = Udp6DriverEntryPoint
  UNLOAD_IMAGE                   = NetLibDefaultUnload

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  Udp6Driver.h
  Udp6Driver.c
  Udp6Impl.c
  Udp6Impl.h
  ComponentName.c
  Udp6Main.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  UefiLib
  DebugLib
  IpIoLib
  NetLib
  DpcLib


[Protocols]
  gEfiIp6ProtocolGuid                           # PROTOCOL ALWAYS_CONSUMED
  gEfiIp6ServiceBindingProtocolGuid             # PROTOCOL ALWAYS_CONSUMED
  gEfiUdp6ServiceBindingProtocolGuid            # PROTOCOL ALWAYS_CONSUMED
  gEfiUdp6ProtocolGuid                          # PROTOCOL ALWAYS_CONSUMED

