xref: /openbsd-src/sys/stand/efi/include/efi_nii.h (revision aa2a8ca5e5140b61be1a50d5e92ee775499a1008)
1060fee10Skettenis /* $FreeBSD: head/sys/boot/efi/include/efi_nii.h 163898 2006-11-02 02:42:48Z marcel $ */
2060fee10Skettenis #ifndef _EFI_NII_H
3060fee10Skettenis #define _EFI_NII_H
4060fee10Skettenis 
5060fee10Skettenis /*++
6060fee10Skettenis Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
7060fee10Skettenis This software and associated documentation (if any) is furnished
8060fee10Skettenis under a license and may only be used or copied in accordance
9060fee10Skettenis with the terms of the license. Except as permitted by such
10060fee10Skettenis license, no part of this software or documentation may be
11060fee10Skettenis reproduced, stored in a retrieval system, or transmitted in any
12060fee10Skettenis form or by any means without the express written consent of
13060fee10Skettenis Intel Corporation.
14060fee10Skettenis 
15060fee10Skettenis Module name:
16060fee10Skettenis     efi_nii.h
17060fee10Skettenis 
18060fee10Skettenis Abstract:
19060fee10Skettenis 
20060fee10Skettenis Revision history:
21060fee10Skettenis     2000-Feb-18 M(f)J   GUID updated.
22060fee10Skettenis                 Structure order changed for machine word alignment.
23060fee10Skettenis                 Added StringId[4] to structure.
24060fee10Skettenis 
25060fee10Skettenis     2000-Feb-14 M(f)J   Genesis.
26060fee10Skettenis --*/
27060fee10Skettenis 
28060fee10Skettenis #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL \
29*aa2a8ca5Sjsg     { 0xE18541CD, 0xF755, 0x4f73, { 0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29 } }
30060fee10Skettenis #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_31 \
31*aa2a8ca5Sjsg     { 0x1ACED566, 0x76ED, 0x4218, { 0xBC, 0x81, 0x76, 0x7F, 0x1F, 0x97, 0x7A, 0x89 } }
32060fee10Skettenis 
33060fee10Skettenis #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION 0x00010000
34060fee10Skettenis #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION_31 0x00010001
35060fee10Skettenis 
36060fee10Skettenis typedef enum {
37060fee10Skettenis     EfiNetworkInterfaceUndi = 1
38060fee10Skettenis } EFI_NETWORK_INTERFACE_TYPE;
39060fee10Skettenis 
40060fee10Skettenis typedef struct {
41060fee10Skettenis 
42060fee10Skettenis     UINT64 Revision;
43060fee10Skettenis     // Revision of the network interface identifier protocol interface.
44060fee10Skettenis 
45060fee10Skettenis     UINT64 ID;
46060fee10Skettenis     // Address of the first byte of the identifying structure for this
47060fee10Skettenis     // network interface.  This is set to zero if there is no structure.
48060fee10Skettenis     //
49060fee10Skettenis     // For PXE/UNDI this is the first byte of the !PXE structure.
50060fee10Skettenis 
51060fee10Skettenis     UINT64 ImageAddr;
52060fee10Skettenis     // Address of the UNrelocated driver/ROM image.  This is set
53060fee10Skettenis     // to zero if there is no driver/ROM image.
54060fee10Skettenis     //
55060fee10Skettenis     // For 16-bit UNDI, this is the first byte of the option ROM in
56060fee10Skettenis     // upper memory.
57060fee10Skettenis     //
58060fee10Skettenis     // For 32/64-bit S/W UNDI, this is the first byte of the EFI ROM
59060fee10Skettenis     // image.
60060fee10Skettenis     //
61060fee10Skettenis     // For H/W UNDI, this is set to zero.
62060fee10Skettenis 
63060fee10Skettenis     UINT32 ImageSize;
64060fee10Skettenis     // Size of the UNrelocated driver/ROM image of this network interface.
65060fee10Skettenis     // This is set to zero if there is no driver/ROM image.
66060fee10Skettenis 
67060fee10Skettenis     CHAR8 StringId[4];
68060fee10Skettenis     // 4 char ASCII string to go in class identifier (option 60) in DHCP
69060fee10Skettenis     // and Boot Server discover packets.
70060fee10Skettenis     // For EfiNetworkInterfaceUndi this field is "UNDI".
71060fee10Skettenis     // For EfiNetworkInterfaceSnp this field is "SNPN".
72060fee10Skettenis 
73060fee10Skettenis     UINT8 Type;
74060fee10Skettenis     UINT8 MajorVer;
75060fee10Skettenis     UINT8 MinorVer;
76060fee10Skettenis     // Information to be placed into the PXE DHCP and Discover packets.
77060fee10Skettenis     // This is the network interface type and version number that will
78060fee10Skettenis     // be placed into DHCP option 94 (client network interface identifier).
79060fee10Skettenis     BOOLEAN Ipv6Supported;
80060fee10Skettenis 	UINT8   IfNum;	// interface number to be used with pxeid structure
81060fee10Skettenis } EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
82060fee10Skettenis 
83060fee10Skettenis extern EFI_GUID NetworkInterfaceIdentifierProtocol;
84060fee10Skettenis extern EFI_GUID NetworkInterfaceIdentifierProtocol_31;
85060fee10Skettenis 
86060fee10Skettenis #endif // _EFI_NII_H
87