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