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