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