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