1 /** @file 2 EFI Network Interface Identifier Protocol. 3 4 Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials are licensed and made available under 6 the terms and conditions of the BSD License that accompanies this distribution. 7 The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php. 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 @par Revision Reference: 14 This Protocol is introduced in EFI Specification 1.10. 15 16 **/ 17 18 #ifndef __EFI_NETWORK_INTERFACE_IDENTIFER_H__ 19 #define __EFI_NETWORK_INTERFACE_IDENTIFER_H__ 20 21 // 22 // GUID retired from UEFI Specification 2.1b 23 // 24 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID \ 25 { \ 26 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29 } \ 27 } 28 29 // 30 // GUID intruduced in UEFI Specification 2.1b 31 // 32 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID_31 \ 33 { \ 34 0x1ACED566, 0x76ED, 0x4218, {0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89 } \ 35 } 36 37 // 38 // Revision defined in UEFI Specification 2.4 39 // 40 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION 0x00020000 41 42 43 /// 44 /// Revision defined in EFI1.1. 45 /// 46 #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION 47 48 /// 49 /// Forward reference for pure ANSI compatability. 50 /// 51 typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL; 52 53 /// 54 /// Protocol defined in EFI1.1. 55 /// 56 typedef EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE; 57 58 /// 59 /// An optional protocol that is used to describe details about the software 60 /// layer that is used to produce the Simple Network Protocol. 61 /// 62 struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL { 63 UINT64 Revision; ///< The revision of the EFI_NETWORK_INTERFACE_IDENTIFIER protocol. 64 UINT64 Id; ///< The address of the first byte of the identifying structure for this network 65 ///< interface. This is only valid when the network interface is started 66 ///< (see Start()). When the network interface is not started, this field is set to zero. 67 UINT64 ImageAddr; ///< The address of the first byte of the identifying structure for this 68 ///< network interface. This is set to zero if there is no structure. 69 UINT32 ImageSize; ///< The size of unrelocated network interface image. 70 CHAR8 StringId[4];///< A four-character ASCII string that is sent in the class identifier field of 71 ///< option 60 in DHCP. For a Type of EfiNetworkInterfaceUndi, this field is UNDI. 72 UINT8 Type; ///< Network interface type. This will be set to one of the values 73 ///< in EFI_NETWORK_INTERFACE_TYPE. 74 UINT8 MajorVer; ///< Major version number. 75 UINT8 MinorVer; ///< Minor version number. 76 BOOLEAN Ipv6Supported; ///< TRUE if the network interface supports IPv6; otherwise FALSE. 77 UINT16 IfNum; ///< The network interface number that is being identified by this Network 78 ///< Interface Identifier Protocol. This field must be less than or 79 ///< equal to the (IFcnt | IFcntExt <<8 ) fields in the !PXE structure. 80 81 }; 82 83 /// 84 ///******************************************************* 85 /// EFI_NETWORK_INTERFACE_TYPE 86 ///******************************************************* 87 /// 88 typedef enum { 89 EfiNetworkInterfaceUndi = 1 90 } EFI_NETWORK_INTERFACE_TYPE; 91 92 /// 93 /// Forward reference for pure ANSI compatability. 94 /// 95 typedef struct undiconfig_table UNDI_CONFIG_TABLE; 96 97 /// 98 /// The format of the configuration table for UNDI 99 /// 100 struct undiconfig_table { 101 UINT32 NumberOfInterfaces; ///< The number of NIC devices 102 ///< that this UNDI controls. 103 UINT32 reserved; 104 UNDI_CONFIG_TABLE *nextlink; ///< A pointer to the next UNDI 105 ///< configuration table. 106 /// 107 /// The length of this array is given in the NumberOfInterfaces field. 108 /// 109 struct { 110 VOID *NII_InterfacePointer; ///< Pointer to the NII interface structure. 111 VOID *DevicePathPointer; ///< Pointer to the device path for this NIC. 112 } NII_entry[1]; 113 }; 114 115 extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid; 116 extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid_31; 117 118 #endif 119