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/*++
7Copyright (c) 2000  Intel Corporation
8
9Module name:
10    efi_nii.h
11
12Abstract:
13
14Revision 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
28typedef enum {
29    EfiNetworkInterfaceUndi = 1
30} EFI_NETWORK_INTERFACE_TYPE;
31
32typedef 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