efipxebc.h revision 1.1.1.1.6.2 1 1.1.1.1.6.2 yamt /* $NetBSD: efipxebc.h,v 1.1.1.1.6.2 2014/05/22 11:40:57 yamt Exp $ */
2 1.1.1.1.6.2 yamt
3 1.1.1.1.6.2 yamt #ifndef _EFIPXEBC_H
4 1.1.1.1.6.2 yamt #define _EFIPXEBC_H
5 1.1.1.1.6.2 yamt
6 1.1.1.1.6.2 yamt /*++
7 1.1.1.1.6.2 yamt
8 1.1.1.1.6.2 yamt Copyright (c) 1998 Intel Corporation
9 1.1.1.1.6.2 yamt
10 1.1.1.1.6.2 yamt Module Name:
11 1.1.1.1.6.2 yamt
12 1.1.1.1.6.2 yamt efipxebc.h
13 1.1.1.1.6.2 yamt
14 1.1.1.1.6.2 yamt Abstract:
15 1.1.1.1.6.2 yamt
16 1.1.1.1.6.2 yamt EFI PXE Base Code Protocol
17 1.1.1.1.6.2 yamt
18 1.1.1.1.6.2 yamt
19 1.1.1.1.6.2 yamt
20 1.1.1.1.6.2 yamt Revision History
21 1.1.1.1.6.2 yamt
22 1.1.1.1.6.2 yamt --*/
23 1.1.1.1.6.2 yamt
24 1.1.1.1.6.2 yamt //
25 1.1.1.1.6.2 yamt // PXE Base Code protocol
26 1.1.1.1.6.2 yamt //
27 1.1.1.1.6.2 yamt
28 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_PROTOCOL \
29 1.1.1.1.6.2 yamt { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
30 1.1.1.1.6.2 yamt
31 1.1.1.1.6.2 yamt INTERFACE_DECL(_EFI_PXE_BASE_CODE);
32 1.1.1.1.6.2 yamt
33 1.1.1.1.6.2 yamt #define DEFAULT_TTL 4
34 1.1.1.1.6.2 yamt #define DEFAULT_ToS 0
35 1.1.1.1.6.2 yamt //
36 1.1.1.1.6.2 yamt // Address definitions
37 1.1.1.1.6.2 yamt //
38 1.1.1.1.6.2 yamt
39 1.1.1.1.6.2 yamt typedef union {
40 1.1.1.1.6.2 yamt UINT32 Addr[4];
41 1.1.1.1.6.2 yamt EFI_IPv4_ADDRESS v4;
42 1.1.1.1.6.2 yamt EFI_IPv6_ADDRESS v6;
43 1.1.1.1.6.2 yamt } EFI_IP_ADDRESS;
44 1.1.1.1.6.2 yamt
45 1.1.1.1.6.2 yamt typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
46 1.1.1.1.6.2 yamt
47 1.1.1.1.6.2 yamt //
48 1.1.1.1.6.2 yamt // Packet definitions
49 1.1.1.1.6.2 yamt //
50 1.1.1.1.6.2 yamt
51 1.1.1.1.6.2 yamt typedef struct {
52 1.1.1.1.6.2 yamt UINT8 BootpOpcode;
53 1.1.1.1.6.2 yamt UINT8 BootpHwType;
54 1.1.1.1.6.2 yamt UINT8 BootpHwAddrLen;
55 1.1.1.1.6.2 yamt UINT8 BootpGateHops;
56 1.1.1.1.6.2 yamt UINT32 BootpIdent;
57 1.1.1.1.6.2 yamt UINT16 BootpSeconds;
58 1.1.1.1.6.2 yamt UINT16 BootpFlags;
59 1.1.1.1.6.2 yamt UINT8 BootpCiAddr[4];
60 1.1.1.1.6.2 yamt UINT8 BootpYiAddr[4];
61 1.1.1.1.6.2 yamt UINT8 BootpSiAddr[4];
62 1.1.1.1.6.2 yamt UINT8 BootpGiAddr[4];
63 1.1.1.1.6.2 yamt UINT8 BootpHwAddr[16];
64 1.1.1.1.6.2 yamt UINT8 BootpSrvName[64];
65 1.1.1.1.6.2 yamt UINT8 BootpBootFile[128];
66 1.1.1.1.6.2 yamt UINT32 DhcpMagik;
67 1.1.1.1.6.2 yamt UINT8 DhcpOptions[56];
68 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_DHCPV4_PACKET;
69 1.1.1.1.6.2 yamt
70 1.1.1.1.6.2 yamt typedef struct {
71 1.1.1.1.6.2 yamt UINT32 MessageType:8;
72 1.1.1.1.6.2 yamt UINT32 TransactionId:24;
73 1.1.1.1.6.2 yamt UINT8 DhcpOptions[1024];
74 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_DHCPV6_PACKET;
75 1.1.1.1.6.2 yamt
76 1.1.1.1.6.2 yamt typedef union {
77 1.1.1.1.6.2 yamt UINT8 Raw[1472];
78 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
79 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
80 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_PACKET;
81 1.1.1.1.6.2 yamt
82 1.1.1.1.6.2 yamt typedef struct {
83 1.1.1.1.6.2 yamt UINT8 Type;
84 1.1.1.1.6.2 yamt UINT8 Code;
85 1.1.1.1.6.2 yamt UINT16 Checksum;
86 1.1.1.1.6.2 yamt union {
87 1.1.1.1.6.2 yamt UINT32 reserved;
88 1.1.1.1.6.2 yamt UINT32 Mtu;
89 1.1.1.1.6.2 yamt UINT32 Pointer;
90 1.1.1.1.6.2 yamt struct {
91 1.1.1.1.6.2 yamt UINT16 Identifier;
92 1.1.1.1.6.2 yamt UINT16 Sequence;
93 1.1.1.1.6.2 yamt } Echo;
94 1.1.1.1.6.2 yamt } u;
95 1.1.1.1.6.2 yamt UINT8 Data[494];
96 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_ICMP_ERROR;
97 1.1.1.1.6.2 yamt
98 1.1.1.1.6.2 yamt typedef struct {
99 1.1.1.1.6.2 yamt UINT8 ErrorCode;
100 1.1.1.1.6.2 yamt CHAR8 ErrorString[127];
101 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_TFTP_ERROR;
102 1.1.1.1.6.2 yamt
103 1.1.1.1.6.2 yamt //
104 1.1.1.1.6.2 yamt // IP Receive Filter definitions
105 1.1.1.1.6.2 yamt //
106 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_MAX_IPCNT 8
107 1.1.1.1.6.2 yamt typedef struct {
108 1.1.1.1.6.2 yamt UINT8 Filters;
109 1.1.1.1.6.2 yamt UINT8 IpCnt;
110 1.1.1.1.6.2 yamt UINT16 reserved;
111 1.1.1.1.6.2 yamt EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
112 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_IP_FILTER;
113 1.1.1.1.6.2 yamt
114 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
115 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
116 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
117 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
118 1.1.1.1.6.2 yamt
119 1.1.1.1.6.2 yamt //
120 1.1.1.1.6.2 yamt // ARP Cache definitions
121 1.1.1.1.6.2 yamt //
122 1.1.1.1.6.2 yamt
123 1.1.1.1.6.2 yamt typedef struct {
124 1.1.1.1.6.2 yamt EFI_IP_ADDRESS IpAddr;
125 1.1.1.1.6.2 yamt EFI_MAC_ADDRESS MacAddr;
126 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_ARP_ENTRY;
127 1.1.1.1.6.2 yamt
128 1.1.1.1.6.2 yamt typedef struct {
129 1.1.1.1.6.2 yamt EFI_IP_ADDRESS IpAddr;
130 1.1.1.1.6.2 yamt EFI_IP_ADDRESS SubnetMask;
131 1.1.1.1.6.2 yamt EFI_IP_ADDRESS GwAddr;
132 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_ROUTE_ENTRY;
133 1.1.1.1.6.2 yamt
134 1.1.1.1.6.2 yamt //
135 1.1.1.1.6.2 yamt // UDP definitions
136 1.1.1.1.6.2 yamt //
137 1.1.1.1.6.2 yamt
138 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
139 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
140 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
141 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
142 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
143 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
144 1.1.1.1.6.2 yamt
145 1.1.1.1.6.2 yamt //
146 1.1.1.1.6.2 yamt // Discover() definitions
147 1.1.1.1.6.2 yamt //
148 1.1.1.1.6.2 yamt
149 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
150 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
151 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
152 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
153 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
154 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
155 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
156 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
157 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
158 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
159 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
160 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
161 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
162 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
163 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
164 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
165 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
166 1.1.1.1.6.2 yamt //
167 1.1.1.1.6.2 yamt // 17 through 32767 are reserved
168 1.1.1.1.6.2 yamt // 32768 through 65279 are for vendor use
169 1.1.1.1.6.2 yamt // 65280 through 65534 are reserved
170 1.1.1.1.6.2 yamt //
171 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
172 1.1.1.1.6.2 yamt
173 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
174 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
175 1.1.1.1.6.2 yamt
176 1.1.1.1.6.2 yamt
177 1.1.1.1.6.2 yamt typedef struct {
178 1.1.1.1.6.2 yamt UINT16 Type;
179 1.1.1.1.6.2 yamt BOOLEAN AcceptAnyResponse;
180 1.1.1.1.6.2 yamt UINT8 Reserved;
181 1.1.1.1.6.2 yamt EFI_IP_ADDRESS IpAddr;
182 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_SRVLIST;
183 1.1.1.1.6.2 yamt
184 1.1.1.1.6.2 yamt typedef struct {
185 1.1.1.1.6.2 yamt BOOLEAN UseMCast;
186 1.1.1.1.6.2 yamt BOOLEAN UseBCast;
187 1.1.1.1.6.2 yamt BOOLEAN UseUCast;
188 1.1.1.1.6.2 yamt BOOLEAN MustUseList;
189 1.1.1.1.6.2 yamt EFI_IP_ADDRESS ServerMCastIp;
190 1.1.1.1.6.2 yamt UINT16 IpCnt;
191 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
192 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_DISCOVER_INFO;
193 1.1.1.1.6.2 yamt
194 1.1.1.1.6.2 yamt //
195 1.1.1.1.6.2 yamt // Mtftp() definitions
196 1.1.1.1.6.2 yamt //
197 1.1.1.1.6.2 yamt
198 1.1.1.1.6.2 yamt typedef enum {
199 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_TFTP_FIRST,
200 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
201 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_TFTP_READ_FILE,
202 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
203 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
204 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
205 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
206 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
207 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_MTFTP_LAST
208 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_TFTP_OPCODE;
209 1.1.1.1.6.2 yamt
210 1.1.1.1.6.2 yamt typedef struct {
211 1.1.1.1.6.2 yamt EFI_IP_ADDRESS MCastIp;
212 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_UDP_PORT CPort;
213 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_UDP_PORT SPort;
214 1.1.1.1.6.2 yamt UINT16 ListenTimeout;
215 1.1.1.1.6.2 yamt UINT16 TransmitTimeout;
216 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_MTFTP_INFO;
217 1.1.1.1.6.2 yamt
218 1.1.1.1.6.2 yamt //
219 1.1.1.1.6.2 yamt // PXE Base Code Mode structure
220 1.1.1.1.6.2 yamt //
221 1.1.1.1.6.2 yamt
222 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
223 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
224 1.1.1.1.6.2 yamt
225 1.1.1.1.6.2 yamt typedef struct {
226 1.1.1.1.6.2 yamt BOOLEAN Started;
227 1.1.1.1.6.2 yamt BOOLEAN Ipv6Available;
228 1.1.1.1.6.2 yamt BOOLEAN Ipv6Supported;
229 1.1.1.1.6.2 yamt BOOLEAN UsingIpv6;
230 1.1.1.1.6.2 yamt BOOLEAN BisSupported;
231 1.1.1.1.6.2 yamt BOOLEAN BisDetected;
232 1.1.1.1.6.2 yamt BOOLEAN AutoArp;
233 1.1.1.1.6.2 yamt BOOLEAN SendGUID;
234 1.1.1.1.6.2 yamt BOOLEAN DhcpDiscoverValid;
235 1.1.1.1.6.2 yamt BOOLEAN DhcpAckReceived;
236 1.1.1.1.6.2 yamt BOOLEAN ProxyOfferReceived;
237 1.1.1.1.6.2 yamt BOOLEAN PxeDiscoverValid;
238 1.1.1.1.6.2 yamt BOOLEAN PxeReplyReceived;
239 1.1.1.1.6.2 yamt BOOLEAN PxeBisReplyReceived;
240 1.1.1.1.6.2 yamt BOOLEAN IcmpErrorReceived;
241 1.1.1.1.6.2 yamt BOOLEAN TftpErrorReceived;
242 1.1.1.1.6.2 yamt BOOLEAN MakeCallbacks;
243 1.1.1.1.6.2 yamt UINT8 TTL;
244 1.1.1.1.6.2 yamt UINT8 ToS;
245 1.1.1.1.6.2 yamt EFI_IP_ADDRESS StationIp;
246 1.1.1.1.6.2 yamt EFI_IP_ADDRESS SubnetMask;
247 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
248 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PACKET DhcpAck;
249 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PACKET ProxyOffer;
250 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PACKET PxeDiscover;
251 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PACKET PxeReply;
252 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PACKET PxeBisReply;
253 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
254 1.1.1.1.6.2 yamt UINT32 ArpCacheEntries;
255 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
256 1.1.1.1.6.2 yamt UINT32 RouteTableEntries;
257 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
258 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
259 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
260 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_MODE;
261 1.1.1.1.6.2 yamt
262 1.1.1.1.6.2 yamt //
263 1.1.1.1.6.2 yamt // PXE Base Code Interface Function definitions
264 1.1.1.1.6.2 yamt //
265 1.1.1.1.6.2 yamt
266 1.1.1.1.6.2 yamt typedef
267 1.1.1.1.6.2 yamt EFI_STATUS
268 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_START) (
269 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
270 1.1.1.1.6.2 yamt IN BOOLEAN UseIpv6
271 1.1.1.1.6.2 yamt );
272 1.1.1.1.6.2 yamt
273 1.1.1.1.6.2 yamt typedef
274 1.1.1.1.6.2 yamt EFI_STATUS
275 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_STOP) (
276 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This
277 1.1.1.1.6.2 yamt );
278 1.1.1.1.6.2 yamt
279 1.1.1.1.6.2 yamt typedef
280 1.1.1.1.6.2 yamt EFI_STATUS
281 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
282 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
283 1.1.1.1.6.2 yamt IN BOOLEAN SortOffers
284 1.1.1.1.6.2 yamt );
285 1.1.1.1.6.2 yamt
286 1.1.1.1.6.2 yamt typedef
287 1.1.1.1.6.2 yamt EFI_STATUS
288 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
289 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
290 1.1.1.1.6.2 yamt IN UINT16 Type,
291 1.1.1.1.6.2 yamt IN UINT16 *Layer,
292 1.1.1.1.6.2 yamt IN BOOLEAN UseBis,
293 1.1.1.1.6.2 yamt IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
294 1.1.1.1.6.2 yamt );
295 1.1.1.1.6.2 yamt
296 1.1.1.1.6.2 yamt typedef
297 1.1.1.1.6.2 yamt EFI_STATUS
298 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
299 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
300 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
301 1.1.1.1.6.2 yamt IN OUT VOID *BufferPtr OPTIONAL,
302 1.1.1.1.6.2 yamt IN BOOLEAN Overwrite,
303 1.1.1.1.6.2 yamt IN OUT UINT64 *BufferSize,
304 1.1.1.1.6.2 yamt IN UINTN *BlockSize OPTIONAL,
305 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *ServerIp,
306 1.1.1.1.6.2 yamt IN UINT8 *Filename,
307 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
308 1.1.1.1.6.2 yamt IN BOOLEAN DontUseBuffer
309 1.1.1.1.6.2 yamt );
310 1.1.1.1.6.2 yamt
311 1.1.1.1.6.2 yamt typedef
312 1.1.1.1.6.2 yamt EFI_STATUS
313 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
314 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
315 1.1.1.1.6.2 yamt IN UINT16 OpFlags,
316 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *DestIp,
317 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
318 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
319 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
320 1.1.1.1.6.2 yamt IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
321 1.1.1.1.6.2 yamt IN UINTN *HeaderSize, OPTIONAL
322 1.1.1.1.6.2 yamt IN VOID *HeaderPtr, OPTIONAL
323 1.1.1.1.6.2 yamt IN UINTN *BufferSize,
324 1.1.1.1.6.2 yamt IN VOID *BufferPtr
325 1.1.1.1.6.2 yamt );
326 1.1.1.1.6.2 yamt
327 1.1.1.1.6.2 yamt typedef
328 1.1.1.1.6.2 yamt EFI_STATUS
329 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
330 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
331 1.1.1.1.6.2 yamt IN UINT16 OpFlags,
332 1.1.1.1.6.2 yamt IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
333 1.1.1.1.6.2 yamt IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL
334 1.1.1.1.6.2 yamt IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
335 1.1.1.1.6.2 yamt IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
336 1.1.1.1.6.2 yamt IN UINTN *HeaderSize, OPTIONAL
337 1.1.1.1.6.2 yamt IN VOID *HeaderPtr, OPTIONAL
338 1.1.1.1.6.2 yamt IN OUT UINTN *BufferSize,
339 1.1.1.1.6.2 yamt IN VOID *BufferPtr
340 1.1.1.1.6.2 yamt );
341 1.1.1.1.6.2 yamt
342 1.1.1.1.6.2 yamt typedef
343 1.1.1.1.6.2 yamt EFI_STATUS
344 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
345 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
346 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter
347 1.1.1.1.6.2 yamt );
348 1.1.1.1.6.2 yamt
349 1.1.1.1.6.2 yamt typedef
350 1.1.1.1.6.2 yamt EFI_STATUS
351 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_ARP) (
352 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
353 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *IpAddr,
354 1.1.1.1.6.2 yamt IN EFI_MAC_ADDRESS *MacAddr OPTIONAL
355 1.1.1.1.6.2 yamt );
356 1.1.1.1.6.2 yamt
357 1.1.1.1.6.2 yamt typedef
358 1.1.1.1.6.2 yamt EFI_STATUS
359 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
360 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
361 1.1.1.1.6.2 yamt IN BOOLEAN *NewAutoArp, OPTIONAL
362 1.1.1.1.6.2 yamt IN BOOLEAN *NewSendGUID, OPTIONAL
363 1.1.1.1.6.2 yamt IN UINT8 *NewTTL, OPTIONAL
364 1.1.1.1.6.2 yamt IN UINT8 *NewToS, OPTIONAL
365 1.1.1.1.6.2 yamt IN BOOLEAN *NewMakeCallback OPTIONAL
366 1.1.1.1.6.2 yamt );
367 1.1.1.1.6.2 yamt
368 1.1.1.1.6.2 yamt typedef
369 1.1.1.1.6.2 yamt EFI_STATUS
370 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
371 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
372 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
373 1.1.1.1.6.2 yamt IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
374 1.1.1.1.6.2 yamt );
375 1.1.1.1.6.2 yamt
376 1.1.1.1.6.2 yamt typedef
377 1.1.1.1.6.2 yamt EFI_STATUS
378 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
379 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE *This,
380 1.1.1.1.6.2 yamt BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
381 1.1.1.1.6.2 yamt BOOLEAN *NewDhcpAckReceived, OPTIONAL
382 1.1.1.1.6.2 yamt BOOLEAN *NewProxyOfferReceived, OPTIONAL
383 1.1.1.1.6.2 yamt BOOLEAN *NewPxeDiscoverValid, OPTIONAL
384 1.1.1.1.6.2 yamt BOOLEAN *NewPxeReplyReceived, OPTIONAL
385 1.1.1.1.6.2 yamt BOOLEAN *NewPxeBisReplyReceived,OPTIONAL
386 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL
387 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL
388 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL
389 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL
390 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL
391 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
392 1.1.1.1.6.2 yamt );
393 1.1.1.1.6.2 yamt
394 1.1.1.1.6.2 yamt //
395 1.1.1.1.6.2 yamt // PXE Base Code Protocol structure
396 1.1.1.1.6.2 yamt //
397 1.1.1.1.6.2 yamt
398 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000
399 1.1.1.1.6.2 yamt
400 1.1.1.1.6.2 yamt typedef struct _EFI_PXE_BASE_CODE {
401 1.1.1.1.6.2 yamt UINT64 Revision;
402 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_START Start;
403 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_STOP Stop;
404 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_DHCP Dhcp;
405 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_DISCOVER Discover;
406 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_MTFTP Mtftp;
407 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
408 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_UDP_READ UdpRead;
409 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
410 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_ARP Arp;
411 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
412 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
413 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
414 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_MODE *Mode;
415 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE;
416 1.1.1.1.6.2 yamt
417 1.1.1.1.6.2 yamt //
418 1.1.1.1.6.2 yamt // Call Back Definitions
419 1.1.1.1.6.2 yamt //
420 1.1.1.1.6.2 yamt
421 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
422 1.1.1.1.6.2 yamt { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
423 1.1.1.1.6.2 yamt
424 1.1.1.1.6.2 yamt //
425 1.1.1.1.6.2 yamt // Revision Number
426 1.1.1.1.6.2 yamt //
427 1.1.1.1.6.2 yamt
428 1.1.1.1.6.2 yamt #define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000
429 1.1.1.1.6.2 yamt
430 1.1.1.1.6.2 yamt INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
431 1.1.1.1.6.2 yamt
432 1.1.1.1.6.2 yamt typedef enum {
433 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_FIRST,
434 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_DHCP,
435 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
436 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
437 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
438 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
439 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_ARP,
440 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_FUNCTION_IGMP,
441 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
442 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_FUNCTION;
443 1.1.1.1.6.2 yamt
444 1.1.1.1.6.2 yamt typedef enum {
445 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
446 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
447 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
448 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
449 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_CALLBACK_STATUS;
450 1.1.1.1.6.2 yamt
451 1.1.1.1.6.2 yamt typedef
452 1.1.1.1.6.2 yamt EFI_PXE_BASE_CODE_CALLBACK_STATUS
453 1.1.1.1.6.2 yamt (EFIAPI *EFI_PXE_CALLBACK) (
454 1.1.1.1.6.2 yamt IN struct _EFI_PXE_BASE_CODE_CALLBACK *This,
455 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_FUNCTION Function,
456 1.1.1.1.6.2 yamt IN BOOLEAN Received,
457 1.1.1.1.6.2 yamt IN UINT32 PacketLen,
458 1.1.1.1.6.2 yamt IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL
459 1.1.1.1.6.2 yamt );
460 1.1.1.1.6.2 yamt
461 1.1.1.1.6.2 yamt typedef struct _EFI_PXE_BASE_CODE_CALLBACK {
462 1.1.1.1.6.2 yamt UINT64 Revision;
463 1.1.1.1.6.2 yamt EFI_PXE_CALLBACK Callback;
464 1.1.1.1.6.2 yamt } EFI_PXE_BASE_CODE_CALLBACK;
465 1.1.1.1.6.2 yamt
466 1.1.1.1.6.2 yamt #endif /* _EFIPXEBC_H */
467