Home | History | Annotate | Download | only in IndustryStandard
      1 /*++
      2 
      3 Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   IScsiBootFirmwareTable.h
     15 
     16 Abstract:
     17 
     18   The definition for iSCSI Boot Firmware Table, it's defined in
     19   Microsoft iBFT document.
     20 
     21 --*/
     22 
     23 #ifndef _ISCSI_BOOT_FIRMWARE_TABLE_H_
     24 #define _ISCSI_BOOT_FIRMWARE_TABLE_H_
     25 
     26 #include "Tiano.h"
     27 #include "Acpi3_0.h"
     28 
     29 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_REVISION            0x01
     30 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT 8
     31 
     32 enum {
     33   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_RESERVED_STRUCTURE_ID = 0,
     34   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID,
     35   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID,
     36   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID,
     37   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID,
     38   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_EXTERNSIONS_STRUCTURE_ID,
     39 };
     40 
     41 enum {
     42   IpPrefixOriginOther = 0,
     43   IpPrefixOriginManual,
     44   IpPrefixOriginWellKnown,
     45   IpPrefixOriginDhcp,
     46   IpPrefixOriginRouterAdvertisement,
     47   IpPrefixOriginUnchanged = 16
     48 };
     49 
     50 #pragma pack(1)
     51 
     52 typedef struct {
     53   UINT32  Signature;
     54   UINT32  Length;
     55   UINT8   Revision;
     56   UINT8   Checksum;
     57   UINT8   OemId[6];
     58   UINT64  OemTableId;
     59   UINT8   Reserved[24];
     60 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER;
     61 
     62 typedef struct {
     63   UINT8   StructureId;
     64   UINT8   Version;
     65   UINT16  Length;
     66   UINT8   Index;
     67   UINT8   Flags;
     68 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER;
     69 
     70 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION            0x1
     71 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_FLAG_BOOT_FAILOVER 0x1
     72 
     73 typedef struct {
     74   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
     75   UINT16                                               Extensions;
     76   UINT16                                               InitiatorOffset;
     77   UINT16                                               NIC0Offset;
     78   UINT16                                               Target0Offset;
     79   UINT16                                               NIC1Offset;
     80   UINT16                                               Target1Offset;
     81 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE;
     82 
     83 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION            0x1
     84 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID   0x1
     85 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED 0x2
     86 
     87 typedef struct {
     88   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
     89   EFI_IPv6_ADDRESS                                     ISnsServer;
     90   EFI_IPv6_ADDRESS                                     SlpServer;
     91   EFI_IPv6_ADDRESS                                     PrimaryRadiusServer;
     92   EFI_IPv6_ADDRESS                                     SecondaryRadiusServer;
     93   UINT16                                               IScsiNameLength;
     94   UINT16                                               IScsiNameOffset;
     95 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE;
     96 
     97 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION            0x1
     98 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID   0x1
     99 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED 0x2
    100 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL        0x4
    101 
    102 typedef struct {
    103   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
    104   EFI_IPv6_ADDRESS                                     Ip;
    105   UINT8                                                SubnetMaskPrefixLength;
    106   UINT8                                                Origin;
    107   EFI_IPv6_ADDRESS                                     Gateway;
    108   EFI_IPv6_ADDRESS                                     PrimaryDns;
    109   EFI_IPv6_ADDRESS                                     SecondaryDns;
    110   EFI_IPv6_ADDRESS                                     DhcpServer;
    111   UINT16                                               VLanTag;
    112   UINT8                                                Mac[6];
    113   UINT16                                               PciLocation;
    114   UINT16                                               HostNameLength;
    115   UINT16                                               HostNameOffset;
    116 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE;
    117 
    118 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION            0x1
    119 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID   0x1
    120 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED 0x2
    121 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_CHAP   0x4
    122 #define EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_RADIUS_RCHAP  0x8
    123 
    124 typedef struct {
    125   EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_HEADER  Header;
    126   EFI_IPv6_ADDRESS                                     Ip;
    127   UINT16                                               Port;
    128   UINT8                                                BootLun[8];
    129   UINT8                                                CHAPType;
    130   UINT8                                                NicIndex;
    131   UINT16                                               IScsiNameLength;
    132   UINT16                                               IScsiNameOffset;
    133   UINT16                                               CHAPNameLength;
    134   UINT16                                               CHAPNameOffset;
    135   UINT16                                               CHAPSecretLength;
    136   UINT16                                               CHAPSecretOffset;
    137   UINT16                                               ReverseCHAPNameLength;
    138   UINT16                                               ReverseCHAPNameOffset;
    139   UINT16                                               ReverseCHAPSecretLength;
    140   UINT16                                               ReverseCHAPSecretOffset;
    141 } EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE;
    142 
    143 #pragma pack()
    144 
    145 #endif
    146 
    147