efipxebc.h 16 KB

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