xref: /freebsd/stand/efi/include/efi_nii.h (revision 3a05fa14f9a62370edc26260a4cfabb8a0c5041c)
1*ca987d46SWarner Losh #ifndef _EFI_NII_H
2*ca987d46SWarner Losh #define _EFI_NII_H
3*ca987d46SWarner Losh 
4*ca987d46SWarner Losh /*++
5*ca987d46SWarner Losh Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
6*ca987d46SWarner Losh This software and associated documentation (if any) is furnished
7*ca987d46SWarner Losh under a license and may only be used or copied in accordance
8*ca987d46SWarner Losh with the terms of the license. Except as permitted by such
9*ca987d46SWarner Losh license, no part of this software or documentation may be
10*ca987d46SWarner Losh reproduced, stored in a retrieval system, or transmitted in any
11*ca987d46SWarner Losh form or by any means without the express written consent of
12*ca987d46SWarner Losh Intel Corporation.
13*ca987d46SWarner Losh 
14*ca987d46SWarner Losh Module name:
15*ca987d46SWarner Losh     efi_nii.h
16*ca987d46SWarner Losh 
17*ca987d46SWarner Losh Abstract:
18*ca987d46SWarner Losh 
19*ca987d46SWarner Losh Revision history:
20*ca987d46SWarner Losh     2000-Feb-18 M(f)J   GUID updated.
21*ca987d46SWarner Losh                 Structure order changed for machine word alignment.
22*ca987d46SWarner Losh                 Added StringId[4] to structure.
23*ca987d46SWarner Losh 
24*ca987d46SWarner Losh     2000-Feb-14 M(f)J   Genesis.
25*ca987d46SWarner Losh --*/
26*ca987d46SWarner Losh 
27*ca987d46SWarner Losh #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL \
28*ca987d46SWarner Losh     { 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29} }
29*ca987d46SWarner Losh #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_31 \
30*ca987d46SWarner Losh     { 0x1ACED566, 0x76ED, 0x4218, {0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89} }
31*ca987d46SWarner Losh 
32*ca987d46SWarner Losh #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION 0x00010000
33*ca987d46SWarner Losh #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION_31 0x00010001
34*ca987d46SWarner Losh 
35*ca987d46SWarner Losh typedef enum {
36*ca987d46SWarner Losh     EfiNetworkInterfaceUndi = 1
37*ca987d46SWarner Losh } EFI_NETWORK_INTERFACE_TYPE;
38*ca987d46SWarner Losh 
39*ca987d46SWarner Losh typedef struct {
40*ca987d46SWarner Losh 
41*ca987d46SWarner Losh     UINT64 Revision;
42*ca987d46SWarner Losh     // Revision of the network interface identifier protocol interface.
43*ca987d46SWarner Losh 
44*ca987d46SWarner Losh     UINT64 ID;
45*ca987d46SWarner Losh     // Address of the first byte of the identifying structure for this
46*ca987d46SWarner Losh     // network interface.  This is set to zero if there is no structure.
47*ca987d46SWarner Losh     //
48*ca987d46SWarner Losh     // For PXE/UNDI this is the first byte of the !PXE structure.
49*ca987d46SWarner Losh 
50*ca987d46SWarner Losh     UINT64 ImageAddr;
51*ca987d46SWarner Losh     // Address of the UNrelocated driver/ROM image.  This is set
52*ca987d46SWarner Losh     // to zero if there is no driver/ROM image.
53*ca987d46SWarner Losh     //
54*ca987d46SWarner Losh     // For 16-bit UNDI, this is the first byte of the option ROM in
55*ca987d46SWarner Losh     // upper memory.
56*ca987d46SWarner Losh     //
57*ca987d46SWarner Losh     // For 32/64-bit S/W UNDI, this is the first byte of the EFI ROM
58*ca987d46SWarner Losh     // image.
59*ca987d46SWarner Losh     //
60*ca987d46SWarner Losh     // For H/W UNDI, this is set to zero.
61*ca987d46SWarner Losh 
62*ca987d46SWarner Losh     UINT32 ImageSize;
63*ca987d46SWarner Losh     // Size of the UNrelocated driver/ROM image of this network interface.
64*ca987d46SWarner Losh     // This is set to zero if there is no driver/ROM image.
65*ca987d46SWarner Losh 
66*ca987d46SWarner Losh     CHAR8 StringId[4];
67*ca987d46SWarner Losh     // 4 char ASCII string to go in class identifier (option 60) in DHCP
68*ca987d46SWarner Losh     // and Boot Server discover packets.
69*ca987d46SWarner Losh     // For EfiNetworkInterfaceUndi this field is "UNDI".
70*ca987d46SWarner Losh     // For EfiNetworkInterfaceSnp this field is "SNPN".
71*ca987d46SWarner Losh 
72*ca987d46SWarner Losh     UINT8 Type;
73*ca987d46SWarner Losh     UINT8 MajorVer;
74*ca987d46SWarner Losh     UINT8 MinorVer;
75*ca987d46SWarner Losh     // Information to be placed into the PXE DHCP and Discover packets.
76*ca987d46SWarner Losh     // This is the network interface type and version number that will
77*ca987d46SWarner Losh     // be placed into DHCP option 94 (client network interface identifier).
78*ca987d46SWarner Losh     BOOLEAN Ipv6Supported;
79*ca987d46SWarner Losh 	UINT8   IfNum;	// interface number to be used with pxeid structure
80*ca987d46SWarner Losh } EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
81*ca987d46SWarner Losh 
82*ca987d46SWarner Losh extern EFI_GUID NetworkInterfaceIdentifierProtocol;
83*ca987d46SWarner Losh extern EFI_GUID NetworkInterfaceIdentifierProtocol_31;
84*ca987d46SWarner Losh 
85*ca987d46SWarner Losh #endif // _EFI_NII_H
86