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