## @file
#  Shell application IfConfig6.
#
#  It is shell application which is used to set and get configurations for the
#  EFI IPv6 network stack.
#
#  Copyright (c) 2009 - 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                    = 0x00010006
  BASE_NAME                      = IfConfig6
  FILE_GUID                      = 6F71926E-60CE-428d-AA58-A3D9FB879429
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = IfConfig6Initialize
  MODULE_UNI_FILE                = IfConfig6.uni

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#
[Sources]
  IfConfig6Strings.uni
  IfConfig6.c
  IfConfig6.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  ShellPkg/ShellPkg.dec
  
[LibraryClasses]
  BaseLib
  UefiBootServicesTableLib
  UefiApplicationEntryPoint
  BaseMemoryLib
  ShellLib
  MemoryAllocationLib
  DebugLib
  HiiLib
  NetLib

[Protocols]
  gEfiIp6ServiceBindingProtocolGuid             ## CONSUMES
  gEfiIp6ConfigProtocolGuid                     ## CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  IfConfig6Extra.uni
