--- /dev/null
+/** @file\r
+ EFI PXE Base Code CallBack Protocol\r
+\r
+ Copyright (c) 2006, Intel Corporation \r
+ All rights reserved. This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ Module Name: PxeBaseCodeCallBack.h\r
+\r
+**/\r
+\r
+#ifndef _PXE_BASE_CODE_CALLBACK_H_\r
+#define _PXE_BASE_CODE_CALLBACK_H_\r
+\r
+//\r
+// Call Back Definitions\r
+//\r
+#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID \\r
+ { \\r
+ 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \\r
+ }\r
+\r
+//\r
+// Revision Number\r
+//\r
+#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000\r
+#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION \\r
+ EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION\r
+\r
+//\r
+// Protocol definition\r
+//\r
+typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;\r
+\r
+typedef enum {\r
+ EFI_PXE_BASE_CODE_FUNCTION_FIRST,\r
+ EFI_PXE_BASE_CODE_FUNCTION_DHCP,\r
+ EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,\r
+ EFI_PXE_BASE_CODE_FUNCTION_MTFTP,\r
+ EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,\r
+ EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,\r
+ EFI_PXE_BASE_CODE_FUNCTION_ARP,\r
+ EFI_PXE_BASE_CODE_FUNCTION_IGMP,\r
+ EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST\r
+} EFI_PXE_BASE_CODE_FUNCTION;\r
+\r
+typedef enum {\r
+ EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,\r
+ EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,\r
+ EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,\r
+ EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST\r
+} EFI_PXE_BASE_CODE_CALLBACK_STATUS;\r
+\r
+/** \r
+ Callback function that is invoked when the PXE Base Code Protocol is about to transmit, has\r
+ received, or is waiting to receive a packet. \r
+ \r
+ @param This Pointer to the EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL instance.\r
+ @param Function The PXE Base Code Protocol function that is waiting for an event. \r
+ @param Received TRUE if the callback is being invoked due to a receive event. FALSE if\r
+ the callback is being invoked due to a transmit event. \r
+ @param PacketLen The length, in bytes, of Packet. This field will have a value of zero if\r
+ this is a wait for receive event. \r
+ @param Packet If Received is TRUE, a pointer to the packet that was just received;\r
+ otherwise a pointer to the packet that is about to be transmitted. \r
+ \r
+ @retval EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE if Function specifies a continue operation \r
+ @retval EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT if Function specifies an abort operation\r
+ \r
+**/\r
+typedef \r
+EFI_PXE_BASE_CODE_CALLBACK_STATUS \r
+(EFIAPI *EFI_PXE_CALLBACK)(\r
+ IN EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *This,\r
+ IN EFI_PXE_BASE_CODE_FUNCTION Function,\r
+ IN BOOLEAN Received,\r
+ IN UINT32 PacketLen,\r
+ IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL\r
+ );\r
+\r
+struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL {\r
+ UINT64 Revision;\r
+ EFI_PXE_CALLBACK Callback;\r
+};\r
+\r
+extern EFI_GUID gEfiPxeBaseCodeCallbackProtocolGuid;\r
+\r
+#endif \r
+\r