]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Protocol/NetworkInterfaceIdentifier.h
Code Scrub for Protocol and Ppi Definition
[mirror_edk2.git] / MdePkg / Include / Protocol / NetworkInterfaceIdentifier.h
1 /** @file
2 EFI Network Interface Identifier Protocol
3
4 Copyright (c) 2006 - 2008, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13
14 **/
15
16 #ifndef __EFI_NETWORK_INTERFACE_IDENTIFER_H__
17 #define __EFI_NETWORK_INTERFACE_IDENTIFER_H__
18
19
20 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID \
21 { \
22 0xE18541CD, 0xF755, 0x4f73, {0x92, 0x8D, 0x64, 0x3C, 0x8A, 0x79, 0xB2, 0x29 } \
23 }
24
25 #define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION 0x00010000
26
27 //
28 // Revision defined in EFI1.1.
29 //
30 #define EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE_REVISION EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION
31
32 //
33 // Forward reference for pure ANSI compatability
34 //
35 typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
36
37 //
38 // Protocol defined in EFI1.1.
39 //
40 typedef EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_INTERFACE;
41
42 typedef enum {
43 EfiNetworkInterfaceUndi = 1
44 } EFI_NETWORK_PROTOCOL_TYPE;
45
46 /**
47 @par Protocol Description:
48 An optional protocol that is used to describe details about the software
49 layer that is used to produce the Simple Network Protocol.
50
51 @param Revision
52 The revision of the EFI_NETWORK_INTERFACE_IDENTIFIER protocol.
53
54 @param Id
55 Address of the first byte of the identifying structure for this network
56 interface. This is only valid when the network interface is started
57 (see Start()). When the network interface is not started, this field is set to zero.
58
59 @param ImageAddr
60 Address of the unrelocated network interface image.
61
62 @param ImageSize
63 Size of unrelocated network interface image.
64
65 @param StringId
66 A four-character ASCII string that is sent in the class identifier field of
67 option 60 in DHCP. For a Type of EfiNetworkInterfaceUndi, this field is UNDI.
68
69 @param Type
70 Network interface type. This will be set to one of the values
71 in EFI_NETWORK_INTERFACE_TYPE.
72
73 @param MajorVer
74 Major version number.
75
76 @param MinorVer
77 Minor version number.
78
79 @param Ipv6Supported
80 TRUE if the network interface supports IPv6; otherwise FALSE.
81
82 @param IfNum
83 The network interface number that is being identified by this Network
84 Interface Identifier Protocol. This field must be less than or equal
85 to the IFcnt field in the !PXE structure.
86
87 **/
88 struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL {
89
90 UINT64 Revision;
91 //
92 // Revision of the network interface identifier protocol interface.
93 //
94 UINT64 ID;
95 //
96 // Address of the first byte of the identifying structure for this
97 // network interface. This is set to zero if there is no structure.
98 //
99 // For PXE/UNDI this is the first byte of the !PXE structure.
100 //
101 UINT64 ImageAddr;
102 //
103 // Address of the UNrelocated driver/ROM image. This is set
104 // to zero if there is no driver/ROM image.
105 //
106 // For 16-bit UNDI, this is the first byte of the option ROM in
107 // upper memory.
108 //
109 // For 32/64-bit S/W UNDI, this is the first byte of the EFI ROM
110 // image.
111 //
112 // For H/W UNDI, this is set to zero.
113 //
114 UINT32 ImageSize;
115 //
116 // Size of the UNrelocated driver/ROM image of this network interface.
117 // This is set to zero if there is no driver/ROM image.
118 //
119 CHAR8 StringId[4];
120 //
121 // 4 char ASCII string to go in class identifier (option 60) in DHCP
122 // and Boot Server discover packets.
123 // For EfiNetworkInterfaceUndi this field is "UNDI".
124 // For EfiNetworkInterfaceSnp this field is "SNPN".
125 //
126 UINT8 Type;
127 UINT8 MajorVer;
128 UINT8 MinorVer;
129 //
130 // Information to be placed into the PXE DHCP and Discover packets.
131 // This is the network interface type and version number that will
132 // be placed into DHCP option 94 (client network interface identifier).
133 //
134 BOOLEAN Ipv6Supported;
135 UINT8 IfNum; // interface number to be used with pxeid structure
136 };
137
138 extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid;
139 extern EFI_GUID gEfiNetworkInterfaceIdentifierProtocolGuid_31;
140
141 #endif // _EFI_NII_H