15#ifndef __PXE_BASE_CODE_PROTOCOL_H__
16#define __PXE_BASE_CODE_PROTOCOL_H__
21#define EFI_PXE_BASE_CODE_PROTOCOL_GUID \
23 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
63 CHAR8 ErrorString[127];
69#define EFI_PXE_BASE_CODE_MAX_IPCNT 8
81#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
82#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
83#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
84#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
106typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
108#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
109#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
110#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
111#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
112#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
113#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
118#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
119#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
120#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
121#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
122#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
123#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
124#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
125#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
126#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
127#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
128#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
129#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
130#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
131#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
132#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
133#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
134#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
140#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
142#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
143#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
151#if defined (MDE_CPU_IA32)
152#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0006
153#elif defined (MDE_CPU_X64)
154#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0007
155#elif defined (MDE_CPU_ARM)
156#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x000A
157#elif defined (MDE_CPU_AARCH64)
158#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x000B
159#elif defined (MDE_CPU_RISCV64)
160#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x001B
168 BOOLEAN AcceptAnyResponse;
190 EFI_PXE_BASE_CODE_TFTP_FIRST,
191 EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
192 EFI_PXE_BASE_CODE_TFTP_READ_FILE,
193 EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
194 EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
195 EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
196 EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
197 EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
198 EFI_PXE_BASE_CODE_MTFTP_LAST
208 EFI_PXE_BASE_CODE_UDP_PORT CPort;
209 EFI_PXE_BASE_CODE_UDP_PORT SPort;
210 UINT16 ListenTimeout;
211 UINT16 TransmitTimeout;
220 UINT8 BootpHwAddrLen;
225 UINT8 BootpCiAddr[4];
226 UINT8 BootpYiAddr[4];
227 UINT8 BootpSiAddr[4];
228 UINT8 BootpGiAddr[4];
229 UINT8 BootpHwAddr[16];
230 UINT8 BootpSrvName[64];
231 UINT8 BootpBootFile[128];
233 UINT8 DhcpOptions[56];
240 UINT32 MessageType : 8;
241 UINT32 TransactionId : 24;
242 UINT8 DhcpOptions[1024];
257#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
258#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
268 BOOLEAN Ipv6Available;
269 BOOLEAN Ipv6Supported;
271 BOOLEAN BisSupported;
275 BOOLEAN DhcpDiscoverValid;
276 BOOLEAN DhcpAckReceived;
277 BOOLEAN ProxyOfferReceived;
278 BOOLEAN PxeDiscoverValid;
279 BOOLEAN PxeReplyReceived;
280 BOOLEAN PxeBisReplyReceived;
281 BOOLEAN IcmpErrorReceived;
282 BOOLEAN TftpErrorReceived;
283 BOOLEAN MakeCallbacks;
295 UINT32 ArpCacheEntries;
297 UINT32 RouteTableEntries;
438 IN BOOLEAN SortOffers
571 IN BOOLEAN Overwrite,
572 IN OUT UINT64 *BufferSize,
577 IN BOOLEAN DontUseBuffer
623 IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
871 BOOLEAN *NewDhcpDiscoverValid
OPTIONAL,
872 BOOLEAN *NewDhcpAckReceived
OPTIONAL,
873 BOOLEAN *NewProxyOfferReceived
OPTIONAL,
874 BOOLEAN *NewPxeDiscoverValid
OPTIONAL,
875 BOOLEAN *NewPxeReplyReceived
OPTIONAL,
876 BOOLEAN *NewPxeBisReplyReceived
OPTIONAL,
888#define EFI_PXE_BASE_CODE_PROTOCOL_REVISION 0x00010000
893#define EFI_PXE_BASE_CODE_INTERFACE_REVISION EFI_PXE_BASE_CODE_PROTOCOL_REVISION
928extern EFI_GUID gEfiPxeBaseCodeProtocolGuid;
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_START)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN BOOLEAN UseIpv6)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_MTFTP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, IN OUT VOID *BufferPtr OPTIONAL, IN BOOLEAN Overwrite, IN OUT UINT64 *BufferSize, IN UINTN *BlockSize OPTIONAL, IN EFI_IP_ADDRESS *ServerIp, IN UINT8 *Filename OPTIONAL, IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL, IN BOOLEAN DontUseBuffer)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_UDP_WRITE)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN UINT16 OpFlags, IN EFI_IP_ADDRESS *DestIp, IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort, IN EFI_IP_ADDRESS *GatewayIp OPTIONAL, IN EFI_IP_ADDRESS *SrcIp OPTIONAL, IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL, IN UINTN *HeaderSize OPTIONAL, IN VOID *HeaderPtr OPTIONAL, IN UINTN *BufferSize, IN VOID *BufferPtr)
EFI_PXE_BASE_CODE_TFTP_OPCODE
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_ARP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN EFI_IP_ADDRESS *IpAddr, IN EFI_MAC_ADDRESS *MacAddr OPTIONAL)
#define EFI_PXE_BASE_CODE_MAX_IPCNT
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_SET_PARAMETERS)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN BOOLEAN *NewAutoArp OPTIONAL, IN BOOLEAN *NewSendGUID OPTIONAL, IN UINT8 *NewTTL OPTIONAL, IN UINT8 *NewToS OPTIONAL, IN BOOLEAN *NewMakeCallback OPTIONAL)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_SET_PACKETS)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, BOOLEAN *NewDhcpDiscoverValid OPTIONAL, BOOLEAN *NewDhcpAckReceived OPTIONAL, BOOLEAN *NewProxyOfferReceived OPTIONAL, BOOLEAN *NewPxeDiscoverValid OPTIONAL, BOOLEAN *NewPxeReplyReceived OPTIONAL, BOOLEAN *NewPxeBisReplyReceived OPTIONAL, IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover OPTIONAL, IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck OPTIONAL, IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer OPTIONAL, IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover OPTIONAL, IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply OPTIONAL, IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL)
EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_STOP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_SET_IP_FILTER)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_UDP_READ)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN UINT16 OpFlags, IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL, IN UINTN *HeaderSize OPTIONAL, IN VOID *HeaderPtr OPTIONAL, IN OUT UINTN *BufferSize, IN VOID *BufferPtr)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_DISCOVER)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN UINT16 Type, IN UINT16 *Layer, IN BOOLEAN UseBis, IN EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_DHCP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN BOOLEAN SortOffers)
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_SET_STATION_IP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN EFI_IP_ADDRESS *NewStationIp OPTIONAL, IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL)
EFI_PXE_BASE_CODE_MODE * Mode