xref: /DragonStub/inc/efi_nii.h (revision d039cd620b8a270d9b231691c9b31d6824f18c08)
1 #ifndef _EFI_NII_H
2 #define _EFI_NII_H
3 
4 /*++
5 Copyright (c) 2000  Intel Corporation
6 
7 Module name:
8     efi_nii.h
9 
10 Abstract:
11 
12 Revision history:
13     2000-Feb-18 M(f)J   GUID updated.
14                 Structure order changed for machine word alignment.
15                 Added StringId[4] to structure.
16 
17     2000-Feb-14 M(f)J   Genesis.
18 --*/
19 
20 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID \
21     { 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29} }
22 
23 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION  0x00010000
24 #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION
25 
26 typedef enum {
27     EfiNetworkInterfaceUndi = 1
28 } EFI_NETWORK_INTERFACE_TYPE;
29 
30 typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL {
31 
32     UINT64 Revision;
33     // Revision of the network interface identifier protocol interface.
34 
35     UINT64 ID;
36     // Address of the first byte of the identifying structure for this
37     // network interface.  This is set to zero if there is no structure.
38     //
39     // For PXE/UNDI this is the first byte of the !PXE structure.
40 
41     UINT64 ImageAddr;
42     // Address of the UNrelocated driver/ROM image.  This is set
43     // to zero if there is no driver/ROM image.
44     //
45     // For 16-bit UNDI, this is the first byte of the option ROM in
46     // upper memory.
47     //
48     // For 32/64-bit S/W UNDI, this is the first byte of the EFI ROM
49     // image.
50     //
51     // For H/W UNDI, this is set to zero.
52 
53     UINT32 ImageSize;
54     // Size of the UNrelocated driver/ROM image of this network interface.
55     // This is set to zero if there is no driver/ROM image.
56 
57     CHAR8 StringId[4];
58     // 4 char ASCII string to go in class identifier (option 60) in DHCP
59     // and Boot Server discover packets.
60     // For EfiNetworkInterfaceUndi this field is "UNDI".
61     // For EfiNetworkInterfaceSnp this field is "SNPN".
62 
63     UINT8 Type;
64     UINT8 MajorVer;
65     UINT8 MinorVer;
66     // Information to be placed into the PXE DHCP and Discover packets.
67     // This is the network interface type and version number that will
68     // be placed into DHCP option 94 (client network interface identifier).
69     BOOLEAN Ipv6Supported;
70     UINT8   IfNum;	// interface number to be used with pxeid structure
71 } EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL, EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
72 
73 // Note: Because it conflicted with the EDK2 struct name, the
74 // 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL' GUID definition,
75 // from older versions of gnu-efi, is now obsoleted.
76 // Use 'EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID' instead.
77 
78 #endif // _EFI_NII_H
79