## @file
#  This module produces EFI MNP Protocol, EFI MNP Servie Binding Protocol and EFI VLAN Protocol.
#
#  This module produces EFI Managed Network Protocol upon EFI Simple Network Protocol,
#  to provide raw asynchronous network I/O services. It also produces EFI VLAN Protocol
#  to provide manageability interface for VLAN configuration.
#
#  Copyright (c) 2006 - 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                      = MnpDxe
  MODULE_UNI_FILE                = MnpDxe.uni
  FILE_GUID                      = 025BBFC7-E6A9-4b8b-82AD-6815A1AEAF4A
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = MnpDriverEntryPoint
  UNLOAD_IMAGE                   = NetLibDefaultUnload
#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gMnpDriverBinding
#  COMPONENT_NAME                =  gMnpComponentName
#  COMPONENT_NAME2               =  gMnpComponentName2
#

[Sources]
  MnpMain.c
  MnpIo.c
  ComponentName.h
  MnpDriver.h
  ComponentName.c
  MnpDriver.c
  MnpConfig.c
  MnpImpl.h
  MnpVlan.h
  MnpVlan.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  MemoryAllocationLib
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  DebugLib
  NetLib
  DpcLib

[Protocols]
  gEfiManagedNetworkServiceBindingProtocolGuid  ## BY_START
  gEfiSimpleNetworkProtocolGuid                 ## TO_START
  gEfiManagedNetworkProtocolGuid                ## BY_START
  ## BY_START
  ## UNDEFINED # variable
  gEfiVlanConfigProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  MnpDxeExtra.uni
