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