https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			162 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The definition for iSCSI Boot Firmware Table, it's defined in Microsoft's
 | 
						|
  iSCSI Boot Firmware Table(iBFT) as Defined in ACPI 3.0b Specification.
 | 
						|
 | 
						|
  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _ISCSI_BOOT_FIRMWARE_TABLE_H_
 | 
						|
#define _ISCSI_BOOT_FIRMWARE_TABLE_H_
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION            0x01
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8
 | 
						|
 | 
						|
///
 | 
						|
/// Structure Type/ID
 | 
						|
///
 | 
						|
#define  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID         0
 | 
						|
#define  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID          1
 | 
						|
#define  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID        2
 | 
						|
#define  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID              3
 | 
						|
#define  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID           4
 | 
						|
#define  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID      5
 | 
						|
 | 
						|
///
 | 
						|
/// from the definition of IP_PREFIX_ORIGIN Enumeration in MSDN,
 | 
						|
/// not defined in Microsoft iBFT document.
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  IpPrefixOriginOther = 0,
 | 
						|
  IpPrefixOriginManual,
 | 
						|
  IpPrefixOriginWellKnown,
 | 
						|
  IpPrefixOriginDhcp,
 | 
						|
  IpPrefixOriginRouterAdvertisement,
 | 
						|
  IpPrefixOriginUnchanged = 16
 | 
						|
} IP_PREFIX_VALUE;
 | 
						|
 | 
						|
#pragma pack(1)
 | 
						|
 | 
						|
///
 | 
						|
/// iBF Table Header
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT32  Signature;
 | 
						|
  UINT32  Length;
 | 
						|
  UINT8   Revision;
 | 
						|
  UINT8   Checksum;
 | 
						|
  UINT8   OemId[6];
 | 
						|
  UINT64  OemTableId;
 | 
						|
  UINT8   Reserved[24];
 | 
						|
} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;
 | 
						|
 | 
						|
///
 | 
						|
/// Common Header of Boot Firmware Table Structure
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8   StructureId;
 | 
						|
  UINT8   Version;
 | 
						|
  UINT16  Length;
 | 
						|
  UINT8   Index;
 | 
						|
  UINT8   Flags;
 | 
						|
} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;
 | 
						|
 | 
						|
///
 | 
						|
/// Control Structure
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
 | 
						|
  UINT16                                               Extensions;
 | 
						|
  UINT16                                               InitiatorOffset;
 | 
						|
  UINT16                                               NIC0Offset;
 | 
						|
  UINT16                                               Target0Offset;
 | 
						|
  UINT16                                               NIC1Offset;
 | 
						|
  UINT16                                               Target1Offset;
 | 
						|
} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION              0x1
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER   BIT0
 | 
						|
 | 
						|
///
 | 
						|
/// Initiator Structure
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
 | 
						|
  EFI_IPv6_ADDRESS                                     ISnsServer;
 | 
						|
  EFI_IPv6_ADDRESS                                     SlpServer;
 | 
						|
  EFI_IPv6_ADDRESS                                     PrimaryRadiusServer;
 | 
						|
  EFI_IPv6_ADDRESS                                     SecondaryRadiusServer;
 | 
						|
  UINT16                                               IScsiNameLength;
 | 
						|
  UINT16                                               IScsiNameOffset;
 | 
						|
} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION             0x1
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID    BIT0
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED  BIT1
 | 
						|
 | 
						|
///
 | 
						|
/// NIC Structure
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
 | 
						|
  EFI_IPv6_ADDRESS                                     Ip;
 | 
						|
  UINT8                                                SubnetMaskPrefixLength;
 | 
						|
  UINT8                                                Origin;
 | 
						|
  EFI_IPv6_ADDRESS                                     Gateway;
 | 
						|
  EFI_IPv6_ADDRESS                                     PrimaryDns;
 | 
						|
  EFI_IPv6_ADDRESS                                     SecondaryDns;
 | 
						|
  EFI_IPv6_ADDRESS                                     DhcpServer;
 | 
						|
  UINT16                                               VLanTag;
 | 
						|
  UINT8                                                Mac[6];
 | 
						|
  UINT16                                               PciLocation;
 | 
						|
  UINT16                                               HostNameLength;
 | 
						|
  UINT16                                               HostNameOffset;
 | 
						|
} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION                 0x1
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID        BIT0
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED      BIT1
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL             BIT2
 | 
						|
 | 
						|
///
 | 
						|
/// Target Structure
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
 | 
						|
  EFI_IPv6_ADDRESS                                     Ip;
 | 
						|
  UINT16                                               Port;
 | 
						|
  UINT8                                                BootLun[8];
 | 
						|
  UINT8                                                CHAPType;
 | 
						|
  UINT8                                                NicIndex;
 | 
						|
  UINT16                                               IScsiNameLength;
 | 
						|
  UINT16                                               IScsiNameOffset;
 | 
						|
  UINT16                                               CHAPNameLength;
 | 
						|
  UINT16                                               CHAPNameOffset;
 | 
						|
  UINT16                                               CHAPSecretLength;
 | 
						|
  UINT16                                               CHAPSecretOffset;
 | 
						|
  UINT16                                               ReverseCHAPNameLength;
 | 
						|
  UINT16                                               ReverseCHAPNameOffset;
 | 
						|
  UINT16                                               ReverseCHAPSecretLength;
 | 
						|
  UINT16                                               ReverseCHAPSecretOffset;
 | 
						|
} EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION               0x1
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID      BIT0
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED    BIT1
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP      BIT2
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP     BIT3
 | 
						|
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_NO_CHAP        0
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_CHAP           1
 | 
						|
#define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_MUTUAL_CHAP    2
 | 
						|
 | 
						|
#pragma pack()
 | 
						|
 | 
						|
#endif
 | 
						|
 |