TianoCore EDK2 master
Loading...
Searching...
No Matches
PxeBaseCode.h
Go to the documentation of this file.
1
16#ifndef __PXE_BASE_CODE_PROTOCOL_H__
17#define __PXE_BASE_CODE_PROTOCOL_H__
18
22#define EFI_PXE_BASE_CODE_PROTOCOL_GUID \
23 { \
24 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
25 }
26
28
33
37#define DEFAULT_TTL 64
38#define DEFAULT_ToS 0
39
43typedef struct {
44 UINT8 Type;
45 UINT8 Code;
46 UINT16 Checksum;
47 union {
48 UINT32 reserved;
49 UINT32 Mtu;
50 UINT32 Pointer;
51 struct {
52 UINT16 Identifier;
53 UINT16 Sequence;
54 } Echo;
55 } u;
56 UINT8 Data[494];
58
62typedef struct {
63 UINT8 ErrorCode;
64 CHAR8 ErrorString[127];
66
70#define EFI_PXE_BASE_CODE_MAX_IPCNT 8
71
75typedef struct {
76 UINT8 Filters;
77 UINT8 IpCnt;
78 UINT16 reserved;
81
82#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
83#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
84#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
85#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
86
90typedef struct {
91 EFI_IP_ADDRESS IpAddr;
92 EFI_MAC_ADDRESS MacAddr;
94
98typedef struct {
99 EFI_IP_ADDRESS IpAddr;
100 EFI_IP_ADDRESS SubnetMask;
101 EFI_IP_ADDRESS GwAddr;
103
104//
105// UDP definitions
106//
107typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
108
109#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
110#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
111#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
112#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
113#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
114#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
115
116//
117// Discover() definitions
118//
119#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
120#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
121#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
122#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
123#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
124#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
125#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
126#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
127#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
128#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
129#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
130#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
131#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
132#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
133#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
134#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
135#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
136//
137// 17 through 32767 are reserved
138// 32768 through 65279 are for vendor use
139// 65280 through 65534 are reserved
140//
141#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
142
143#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
144#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
145
146//
147// PXE Tag definition that identifies the processor
148// and programming environment of the client system.
149// These identifiers are defined by IETF:
150// http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml
151//
152#if defined (MDE_CPU_IA32)
153#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0006
154#elif defined (MDE_CPU_X64)
155#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0007
156#elif defined (MDE_CPU_AARCH64)
157#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x000B
158#elif defined (MDE_CPU_RISCV64)
159#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x001B
160#elif defined (MDE_CPU_LOONGARCH64)
161#define EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE 0x0027
162#endif
163
167typedef struct {
168 UINT16 Type;
169 BOOLEAN AcceptAnyResponse;
170 UINT8 Reserved;
171 EFI_IP_ADDRESS IpAddr;
173
177typedef struct {
178 BOOLEAN UseMCast;
179 BOOLEAN UseBCast;
180 BOOLEAN UseUCast;
181 BOOLEAN MustUseList;
182 EFI_IP_ADDRESS ServerMCastIp;
183 UINT16 IpCnt;
184 EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
186
190typedef enum {
191 EFI_PXE_BASE_CODE_TFTP_FIRST,
192 EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
193 EFI_PXE_BASE_CODE_TFTP_READ_FILE,
194 EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
195 EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
196 EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
197 EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
198 EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
199 EFI_PXE_BASE_CODE_MTFTP_LAST
201
207typedef struct {
208 EFI_IP_ADDRESS MCastIp;
209 EFI_PXE_BASE_CODE_UDP_PORT CPort;
210 EFI_PXE_BASE_CODE_UDP_PORT SPort;
211 UINT16 ListenTimeout;
212 UINT16 TransmitTimeout;
214
218typedef struct {
219 UINT8 BootpOpcode;
220 UINT8 BootpHwType;
221 UINT8 BootpHwAddrLen;
222 UINT8 BootpGateHops;
223 UINT32 BootpIdent;
224 UINT16 BootpSeconds;
225 UINT16 BootpFlags;
226 UINT8 BootpCiAddr[4];
227 UINT8 BootpYiAddr[4];
228 UINT8 BootpSiAddr[4];
229 UINT8 BootpGiAddr[4];
230 UINT8 BootpHwAddr[16];
231 UINT8 BootpSrvName[64];
232 UINT8 BootpBootFile[128];
233 UINT32 DhcpMagik;
234 UINT8 DhcpOptions[56];
236
240typedef struct {
241 UINT32 MessageType : 8;
242 UINT32 TransactionId : 24;
243 UINT8 DhcpOptions[1024];
245
249typedef union {
250 UINT8 Raw[1472];
254
255//
256// PXE Base Code Mode structure
257//
258#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
259#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
260
267typedef struct {
268 BOOLEAN Started;
269 BOOLEAN Ipv6Available;
270 BOOLEAN Ipv6Supported;
271 BOOLEAN UsingIpv6;
272 BOOLEAN BisSupported;
273 BOOLEAN BisDetected;
274 BOOLEAN AutoArp;
275 BOOLEAN SendGUID;
276 BOOLEAN DhcpDiscoverValid;
277 BOOLEAN DhcpAckReceived;
278 BOOLEAN ProxyOfferReceived;
279 BOOLEAN PxeDiscoverValid;
280 BOOLEAN PxeReplyReceived;
281 BOOLEAN PxeBisReplyReceived;
282 BOOLEAN IcmpErrorReceived;
283 BOOLEAN TftpErrorReceived;
284 BOOLEAN MakeCallbacks;
285 UINT8 TTL;
286 UINT8 ToS;
287 EFI_IP_ADDRESS StationIp;
288 EFI_IP_ADDRESS SubnetMask;
289 EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
291 EFI_PXE_BASE_CODE_PACKET ProxyOffer;
292 EFI_PXE_BASE_CODE_PACKET PxeDiscover;
294 EFI_PXE_BASE_CODE_PACKET PxeBisReply;
296 UINT32 ArpCacheEntries;
297 EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
298 UINT32 RouteTableEntries;
299 EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
303
304//
305// PXE Base Code Interface Function definitions
306//
307
372typedef
376 IN BOOLEAN UseIpv6
377 );
378
396typedef
398(EFIAPI *EFI_PXE_BASE_CODE_STOP)(
400 );
401
435typedef
437(EFIAPI *EFI_PXE_BASE_CODE_DHCP)(
439 IN BOOLEAN SortOffers
440 );
441
485typedef
489 IN UINT16 Type,
490 IN UINT16 *Layer,
491 IN BOOLEAN UseBis,
493 );
494
566typedef
571 IN OUT VOID *BufferPtr OPTIONAL,
572 IN BOOLEAN Overwrite,
573 IN OUT UINT64 *BufferSize,
574 IN UINTN *BlockSize OPTIONAL,
575 IN EFI_IP_ADDRESS *ServerIp,
576 IN UINT8 *Filename OPTIONAL,
578 IN BOOLEAN DontUseBuffer
579 );
580
618typedef
622 IN UINT16 OpFlags,
623 IN EFI_IP_ADDRESS *DestIp,
624 IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
625 IN EFI_IP_ADDRESS *GatewayIp OPTIONAL,
627 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL,
628 IN UINTN *HeaderSize OPTIONAL,
629 IN VOID *HeaderPtr OPTIONAL,
630 IN UINTN *BufferSize,
631 IN VOID *BufferPtr
632 );
633
672typedef
676 IN UINT16 OpFlags,
678 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,
680 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL,
681 IN UINTN *HeaderSize OPTIONAL,
682 IN VOID *HeaderPtr OPTIONAL,
683 IN OUT UINTN *BufferSize,
684 IN VOID *BufferPtr
685 );
686
719typedef
724 );
725
755typedef
757(EFIAPI *EFI_PXE_BASE_CODE_ARP)(
759 IN EFI_IP_ADDRESS *IpAddr,
761 );
762
795typedef
799 IN BOOLEAN *NewAutoArp OPTIONAL,
800 IN BOOLEAN *NewSendGUID OPTIONAL,
801 IN UINT8 *NewTTL OPTIONAL,
802 IN UINT8 *NewToS OPTIONAL,
803 IN BOOLEAN *NewMakeCallback OPTIONAL
804 );
805
829typedef
833 IN EFI_IP_ADDRESS *NewStationIp OPTIONAL,
834 IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
835 );
836
868typedef
872 BOOLEAN *NewDhcpDiscoverValid OPTIONAL,
873 BOOLEAN *NewDhcpAckReceived OPTIONAL,
874 BOOLEAN *NewProxyOfferReceived OPTIONAL,
875 BOOLEAN *NewPxeDiscoverValid OPTIONAL,
876 BOOLEAN *NewPxeReplyReceived OPTIONAL,
877 BOOLEAN *NewPxeBisReplyReceived OPTIONAL,
878 IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover OPTIONAL,
880 IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer OPTIONAL,
881 IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover OPTIONAL,
883 IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
884 );
885
886//
887// PXE Base Code Protocol structure
888//
889#define EFI_PXE_BASE_CODE_PROTOCOL_REVISION 0x00010000
890
891//
892// Revision defined in EFI1.1
893//
894#define EFI_PXE_BASE_CODE_INTERFACE_REVISION EFI_PXE_BASE_CODE_PROTOCOL_REVISION
895
910 UINT64 Revision;
927};
928
929extern EFI_GUID gEfiPxeBaseCodeProtocolGuid;
930
931#endif
UINT64 UINTN
#define VOID
Definition: Base.h:269
#define OPTIONAL
Definition: Base.h:290
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_START)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN BOOLEAN UseIpv6)
Definition: PxeBaseCode.h:374
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)
Definition: PxeBaseCode.h:568
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)
Definition: PxeBaseCode.h:620
EFI_PXE_BASE_CODE_TFTP_OPCODE
Definition: PxeBaseCode.h:190
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)
Definition: PxeBaseCode.h:757
#define EFI_PXE_BASE_CODE_MAX_IPCNT
Definition: PxeBaseCode.h:70
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)
Definition: PxeBaseCode.h:797
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)
Definition: PxeBaseCode.h:870
EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE
Definition: PxeBaseCode.h:32
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_STOP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This)
Definition: PxeBaseCode.h:398
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)
Definition: PxeBaseCode.h:721
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)
Definition: PxeBaseCode.h:674
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)
Definition: PxeBaseCode.h:487
EFI_STATUS(EFIAPI * EFI_PXE_BASE_CODE_DHCP)(IN EFI_PXE_BASE_CODE_PROTOCOL *This, IN BOOLEAN SortOffers)
Definition: PxeBaseCode.h:437
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)
Definition: PxeBaseCode.h:831
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
EFI_PXE_BASE_CODE_MODE * Mode
Definition: PxeBaseCode.h:926
Definition: Base.h:213