## @file
# Implementation of EFI_DNS4_PROTOCOL and EFI_DNS6_PROTOCOL interfaces.
#
# Copyright (c) 2015, 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                 = DnsDxe
  FILE_GUID                 = b219e140-dffc-11e3-b956-0022681e6906
  MODULE_TYPE               = UEFI_DRIVER
  VERSION_STRING            = 1.0
  ENTRY_POINT               = DnsDriverEntryPoint
  UNLOAD_IMAGE              = DnsUnload
  MODULE_UNI_FILE           = DnsDxe.uni

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[Sources]
  ComponentName.c
  DnsDriver.h
  DnsDriver.c
  DnsImpl.h
  DnsImpl.c
  DnsProtocol.c
  DnsDhcp.h
  DnsDhcp.c
  
  
[LibraryClasses]
  BaseLib
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  MemoryAllocationLib
  NetLib
  DebugLib
  DpcLib
  PrintLib
  UdpIoLib
  

[Protocols]
  gEfiDns4ServiceBindingProtocolGuid              ## BY_START
  gEfiDns4ProtocolGuid                            ## BY_START
  gEfiUdp4ServiceBindingProtocolGuid              ## TO_START
  gEfiUdp4ProtocolGuid                            ## TO_START
  gEfiDhcp4ServiceBindingProtocolGuid             ## SOMETIMES_CONSUMES
  gEfiDhcp4ProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiIp4Config2ProtocolGuid                      ## SOMETIMES_CONSUMES
  gEfiManagedNetworkServiceBindingProtocolGuid    ## SOMETIMES_CONSUMES
  gEfiManagedNetworkProtocolGuid                  ## SOMETIMES_CONSUMES
  
  gEfiDns6ServiceBindingProtocolGuid              ## BY_START
  gEfiDns6ProtocolGuid                            ## BY_START
  gEfiUdp6ServiceBindingProtocolGuid              ## TO_START
  gEfiUdp6ProtocolGuid                            ## TO_START
  gEfiDhcp6ServiceBindingProtocolGuid             ## SOMETIMES_CONSUMES
  gEfiDhcp6ProtocolGuid                           ## SOMETIMES_CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  DnsDxeExtra.uni

