Network and PXE related structures

This commit is contained in:
Rafal Kupiec 2022-08-02 08:20:40 +02:00
parent 4bead0ead0
commit 9788f37cf8
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 362 additions and 0 deletions

View File

@ -124,6 +124,22 @@ typedef struct _EFI_LBAL EFI_LBAL, *PEFI_LBAL;
typedef struct _EFI_RL EFI_RL, *PEFI_RL;
typedef struct _EFI_UART_IO_MODE EFI_UART_IO_MODE, *PEFI_UART_IO_MODE;
typedef struct _EFI_UART_IO_PROTOCOL EFI_UART_IO_PROTOCOL, *PEFI_UART_IO_PROTOCOL;
typedef struct _EFI_NETWORK_STATISTICS EFI_NETWORK_STATISTICS, *PEFI_NETWORK_STATISTICS;
typedef struct _EFI_SIMPLE_NETWORK_MODE EFI_SIMPLE_NETWORK_MODE, *PEFI_SIMPLE_NETWORK_MODE;
typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK_PROTOCOL, *PEFI_SIMPLE_NETWORK_PROTOCOL;
typedef struct _EFI_PXE_BASE_CODE_DHCPV4_PACKET EFI_PXE_BASE_CODE_DHCPV4_PACKET, *PEFI_PXE_BASE_CODE_DHCPV4_PACKET;
typedef struct _EFI_PXE_BASE_CODE_DHCPV6_PACKET EFI_PXE_BASE_CODE_DHCPV6_PACKET, *PEFI_PXE_BASE_CODE_DHCPV6_PACKET;
typedef struct _EFI_PXE_BASE_CODE_ICMP_ERROR EFI_PXE_BASE_CODE_ICMP_ERROR, *PEFI_PXE_BASE_CODE_ICMP_ERROR;
typedef struct _EFI_PXE_BASE_CODE_TFTP_ERROR EFI_PXE_BASE_CODE_TFTP_ERROR, *PEFI_PXE_BASE_CODE_TFTP_ERROR;
typedef struct _EFI_PXE_BASE_CODE_IP_FILTER EFI_PXE_BASE_CODE_IP_FILTER, *PEFI_PXE_BASE_CODE_IP_FILTER;
typedef struct _EFI_PXE_BASE_CODE_ARP_ENTRY EFI_PXE_BASE_CODE_ARP_ENTRY, *PEFI_PXE_BASE_CODE_ARP_ENTRY;
typedef struct _EFI_PXE_BASE_CODE_ROUTE_ENTRY EFI_PXE_BASE_CODE_ROUTE_ENTRY, *PEFI_PXE_BASE_CODE_ROUTE_ENTRY;
typedef struct _EFI_PXE_BASE_CODE_SRVLIST EFI_PXE_BASE_CODE_SRVLIST, *PEFI_PXE_BASE_CODE_SRVLIST;
typedef struct _EFI_PXE_BASE_CODE_DISCOVER_INFO EFI_PXE_BASE_CODE_DISCOVER_INFO, *PEFI_PXE_BASE_CODE_DISCOVER_INFO;
typedef struct _EFI_PXE_BASE_CODE_MTFTP_INFO EFI_PXE_BASE_CODE_MTFTP_INFO, *PEFI_PXE_BASE_CODE_MTFTP_INFO;
typedef struct _EFI_PXE_BASE_CODE_MODE EFI_PXE_BASE_CODE_MODE, *PEFI_PXE_BASE_CODE_MODE;
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE_PROTOCOL, *PEFI_PXE_BASE_CODE_PROTOCOL;
typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL, *PEFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;
typedef struct _LIST_ENTRY LIST_ENTRY, *PLIST_ENTRY;
typedef struct _LIST_ENTRY32 LIST_ENTRY32, *PLIST_ENTRY32;
typedef struct _LIST_ENTRY64 LIST_ENTRY64, *PLIST_ENTRY64;
@ -133,5 +149,7 @@ typedef union _EFI_DEV_PATH EFI_DEV_PATH, *PEFI_DEV_PATH;
typedef union _EFI_DEV_PATH_PTR EFI_DEV_PATH_PTR, *PEFI_DEV_PATH_PTR;
typedef union _EFI_HASH_OUTPUT EFI_HASH_OUTPUT, *PEFI_HASH_OUTPUT;
typedef union _EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION, *PEFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION;
typedef union _EFI_IP_ADDRESS EFI_IP_ADDRESS, *PEFI_IP_ADDRESS;
typedef union _EFI_PXE_BASE_CODE_PACKET EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET;
#endif /* __XTDK_XTSTRUCT_H */

View File

@ -178,6 +178,13 @@
#define EFI_UART_SOFTWARE_LOOPBACK_ENABLE 0x2000
#define EFI_UART_HARDWARE_FLOW_CONTROL_ENABLE 0x4000
/* EFI Simple Network protocol */
#define EFI_SIMPLE_NETWORK_RECEIVE_UNICAST 0x01
#define EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST 0x02
#define EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST 0x04
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10
/* EFI protocols GUIDs */
#define EFI_BLOCK_IO_PROTOCOL_GUID {0x964E5B21, 0x6459, 0x11D2, {0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
#define EFI_BLOCK_IO2_PROTOCOL_GUID {0xA77B2472, 0xE282, 0x4E9F, {0xA2, 0x45, 0xC2, 0xC0, 0xE2, 0x7B, 0xBC, 0xC1}}
@ -209,8 +216,11 @@
#define EFI_PCI_IO_PROTOCOL_GUID {0x4CF5B200, 0x68B8, 0x4CA5, {0x9E, 0xEC, 0xB2, 0x3E, 0x3F, 0x50, 0x02, 0x9A}}
#define EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_GUID {0x2F707EBB, 0x4A1A, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}}
#define EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID {0x6B30C738, 0xA391, 0x11D4, {0x9A, 0x3B, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}}
#define EFI_PXE_BASE_CODE_PROTOCOL_GUID {0x03C4E603, 0xAC28, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3D, 0xC1, 0x4D}}
#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID {0x245DCA21, 0xFB7F, 0x11D3, {0x8F, 0x01, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
#define EFI_RNG_PROTOCOL_GUID {0x3152BCA5, 0xEADE, 0x433D, {0x86, 0x2E, 0xC0, 0x1C, 0xDC, 0x29, 0x1F, 0x44}}
#define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID {0x964E5B22, 0x6459, 0x11D2, {0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
#define EFI_SIMPLE_NETWORK_PROTOCOL_GUID {0xA19832B9, 0xAC25, 0x11D3, {0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}}
#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID {0x387477C1, 0x69C7, 0x11D2, {0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID {0xDD9E7534, 0x7762, 0x4698, {0x8C, 0x14, 0xF5, 0x85, 0x17, 0xA6, 0x25, 0xAA}}
#define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID {0x387477C2, 0x69C7, 0x11D2, {0x8E, 0x39, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3B}}
@ -398,6 +408,52 @@ typedef enum _EFI_UART_STOP_BITS_TYPE
TwoStopBits
} EFI_UART_STOP_BITS_TYPE, *PEFI_UART_STOP_BITS_TYPE;
/* Enumeration of network state */
typedef enum _EFI_SIMPLE_NETWORK_STATE
{
EfiSimpleNetworkStopped,
EfiSimpleNetworkStarted,
EfiSimpleNetworkInitialized,
EfiSimpleNetworkMaxState
} EFI_SIMPLE_NETWORK_STATE, *PEFI_SIMPLE_NETWORK_STATE;
/* Enumeration of PXE TFTP opcodes */
typedef enum _EFI_PXE_BASE_CODE_TFTP_OPCODE
{
EFI_PXE_BASE_CODE_TFTP_FIRST,
EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
EFI_PXE_BASE_CODE_TFTP_READ_FILE,
EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
EFI_PXE_BASE_CODE_MTFTP_LAST
} EFI_PXE_BASE_CODE_TFTP_OPCODE, *PEFI_PXE_BASE_CODE_TFTP_OPCODE;
/* Enumeration of PXE functions */
typedef enum _EFI_PXE_BASE_CODE_FUNCTION
{
EFI_PXE_BASE_CODE_FUNCTION_FIRST,
EFI_PXE_BASE_CODE_FUNCTION_DHCP,
EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
EFI_PXE_BASE_CODE_FUNCTION_ARP,
EFI_PXE_BASE_CODE_FUNCTION_IGMP,
EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
} EFI_PXE_BASE_CODE_FUNCTION, *PEFI_PXE_BASE_CODE_FUNCTION;
/* Enumeration of PXE callback statuses */
typedef enum _EFI_PXE_BASE_CODE_CALLBACK_STATUS
{
EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
} EFI_PXE_BASE_CODE_CALLBACK_STATUS, *PEFI_PXE_BASE_CODE_CALLBACK_STATUS;
/* EFI routines forward references */
typedef EFI_STATUS (*PEFI_CONVERT_POINTER)(IN UINT_PTR DebugDisposition, IN OUT PVOID *Address);
typedef EFI_STATUS (*PEFI_ALLOCATE_PAGES)(IN EFI_ALLOCATE_TYPE Type, IN EFI_MEMORY_TYPE MemoryType, IN UINT_PTR NoPages, OUT PEFI_PHYSICAL_ADDRESS Memory);
@ -586,6 +642,32 @@ typedef EFI_STATUS (*PEFI_UART_SET_CONTROL_BITS)(IN PEFI_UART_IO_PROTOCOL This,
typedef EFI_STATUS (*PEFI_UART_GET_CONTROL_BITS)(IN PEFI_UART_IO_PROTOCOL This, OUT PUINT32 Control);
typedef EFI_STATUS (*PEFI_UART_WRITE)(IN PEFI_UART_IO_PROTOCOL This, IN OUT PUINT_PTR BufferSize, IN PVOID Buffer);
typedef EFI_STATUS (*PEFI_UART_READ)(IN PEFI_UART_IO_PROTOCOL This, IN OUT PUINT_PTR BufferSize, OUT PVOID Buffer);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_START)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_STOP)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_INITIALIZE)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN UINT_PTR ExtraRxBufferSize, IN UINT_PTR ExtraTxBufferSize);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_RESET)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN BOOLEAN ExtendedVerification);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_SHUTDOWN)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_RECEIVE_FILTERS)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN UINT32 Enable, IN UINT32 Disable, IN BOOLEAN ResetMCastFilter, IN UINT_PTR MCastFilterCnt, IN PEFI_MAC_ADDRESS MCastFilter);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_STATION_ADDRESS)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN BOOLEAN Reset, IN PEFI_MAC_ADDRESS New);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_STATISTICS)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN BOOLEAN Reset, IN OUT PUINT_PTR StatisticsSize, OUT PEFI_NETWORK_STATISTICS StatisticsTable);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN BOOLEAN IPv6, IN PEFI_IP_ADDRESS IP, OUT PEFI_MAC_ADDRESS MAC);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_NVDATA)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN BOOLEAN ReadWrite, IN UINT_PTR Offset, IN UINT_PTR BufferSize, IN OUT PVOID Buffer);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_GET_STATUS)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, OUT PUINT32 InterruptStatus, OUT PVOID *TxBuf);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_TRANSMIT)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, IN UINT_PTR HeaderSize, IN UINT_PTR BufferSize, IN PVOID Buffer, IN PEFI_MAC_ADDRESS SrcAddr, IN PEFI_MAC_ADDRESS DestAddr, IN PUINT16 Protocol);
typedef EFI_STATUS (*PEFI_SIMPLE_NETWORK_RECEIVE)(IN PEFI_SIMPLE_NETWORK_PROTOCOL This, OUT PUINT_PTR HeaderSize, IN OUT PUINT_PTR BufferSize, OUT PVOID Buffer, OUT PEFI_MAC_ADDRESS SrcAddr, OUT PEFI_MAC_ADDRESS DestAddr, OUT PUINT16 Protocol);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_START)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN BOOLEAN UseIpv6);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_STOP)(IN PEFI_PXE_BASE_CODE_PROTOCOL This);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_DHCP)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN BOOLEAN SortOffers);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_DISCOVER)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN UINT16 Type, IN PUINT16 Layer, IN BOOLEAN UseBis, IN OUT PEFI_PXE_BASE_CODE_DISCOVER_INFO Info);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_MTFTP)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, IN OUT PVOID *BufferPtr, IN BOOLEAN Overwrite, IN OUT PUINT64 BufferSize, IN PUINT_PTR BlockSize, IN PEFI_IP_ADDRESS ServerIp, IN PUINT8 Filename, IN PEFI_PXE_BASE_CODE_MTFTP_INFO Info, IN BOOLEAN DontUseBuffer);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_UDP_WRITE)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN UINT16 OpFlags, IN PEFI_IP_ADDRESS DestIp, IN PUINT16 DestPort, IN PEFI_IP_ADDRESS GatewayIp, IN PEFI_IP_ADDRESS SrcIp, IN OUT PUINT16 SrcPort, IN PUINT_PTR HeaderSize, IN PVOID HeaderPtr, IN PUINT_PTR BufferSize, IN PVOID BufferPtr);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_UDP_READ)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN UINT16 OpFlags, IN OUT PEFI_IP_ADDRESS DestIp, IN OUT PUINT16 DestPort, IN OUT PEFI_IP_ADDRESS SrcIp, IN OUT PUINT16 SrcPort, IN PUINT_PTR HeaderSize, IN PVOID HeaderPtr, IN OUT PUINT_PTR BufferSize, IN PVOID BufferPtr);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_IP_FILTER)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN PEFI_PXE_BASE_CODE_IP_FILTER NewFilter);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_ARP)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN PEFI_IP_ADDRESS IpAddr, IN PEFI_MAC_ADDRESS MacAddr);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_PARAMETERS)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN PBOOLEAN NewAutoArp, IN PBOOLEAN NewSendGUID, IN PUINT8 NewTTL, IN PUINT8 NewToS, IN PBOOLEAN NewMakeCallback);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_STATION_IP)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, IN PEFI_IP_ADDRESS NewStationIp, IN PEFI_IP_ADDRESS NewSubnetMask);
typedef EFI_STATUS (*PEFI_PXE_BASE_CODE_SET_PACKETS)(IN PEFI_PXE_BASE_CODE_PROTOCOL This, PBOOLEAN NewDhcpDiscoverValid, PBOOLEAN NewDhcpAckReceived, PBOOLEAN NewProxyOfferReceived, PBOOLEAN NewPxeDiscoverValid, PBOOLEAN NewPxeReplyReceived, PBOOLEAN NewPxeBisReplyReceived, IN PEFI_PXE_BASE_CODE_PACKET NewDhcpDiscover, IN PEFI_PXE_BASE_CODE_PACKET NewDhcpAck, IN PEFI_PXE_BASE_CODE_PACKET NewProxyOffer, IN PEFI_PXE_BASE_CODE_PACKET NewPxeDiscover, IN PEFI_PXE_BASE_CODE_PACKET NewPxeReply, IN PEFI_PXE_BASE_CODE_PACKET NewPxeBisReply);
typedef EFI_PXE_BASE_CODE_CALLBACK_STATUS (*PEFI_PXE_CALLBACK)(IN PEFI_PXE_BASE_CODE_CALLBACK_PROTOCOL This, IN EFI_PXE_BASE_CODE_FUNCTION Function, IN BOOLEAN Received, IN UINT32 PacketLen, IN PEFI_PXE_BASE_CODE_PACKET Packet);
/* 128-bit buffer containing a unique identifier value */
typedef struct _EFI_GUID
@ -1833,4 +1915,266 @@ typedef struct _EFI_UART_IO_PROTOCOL {
PEFI_UART_IO_MODE Mode;
} EFI_UART_IO_PROTOCOL, *PEFI_UART_IO_PROTOCOL;
/* EFI IP address definition */
typedef union _EFI_IP_ADDRESS
{
UINT32 Addr[4];
EFI_IPv4_ADDRESS v4;
EFI_IPv6_ADDRESS v6;
} EFI_IP_ADDRESS, *PEFI_IP_ADDRESS;
/* EFI DHCPv4 packet definition */
typedef struct _EFI_PXE_BASE_CODE_DHCPV4_PACKET
{
UINT8 BootpOpcode;
UINT8 BootpHwType;
UINT8 BootpHwAddrLen;
UINT8 BootpGateHops;
UINT32 BootpIdent;
UINT16 BootpSeconds;
UINT16 BootpFlags;
UINT8 BootpCiAddr[4];
UINT8 BootpYiAddr[4];
UINT8 BootpSiAddr[4];
UINT8 BootpGiAddr[4];
UINT8 BootpHwAddr[16];
UINT8 BootpSrvName[64];
UINT8 BootpBootFile[128];
UINT32 DhcpMagik;
UINT8 DhcpOptions[56];
} EFI_PXE_BASE_CODE_DHCPV4_PACKET, *PEFI_PXE_BASE_CODE_DHCPV4_PACKET;
/* EFI DHCPv6 packet definition */
typedef struct _EFI_PXE_BASE_CODE_DHCPV6_PACKET
{
UINT32 MessageType:8;
UINT32 TransactionId:24;
UINT8 DhcpOptions[1024];
} EFI_PXE_BASE_CODE_DHCPV6_PACKET, *PEFI_PXE_BASE_CODE_DHCPV6_PACKET;
/* EFI packet definition */
typedef union _EFI_PXE_BASE_CODE_PACKET
{
UINT8 Raw[1472];
EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
} EFI_PXE_BASE_CODE_PACKET, *PEFI_PXE_BASE_CODE_PACKET;
/* EFI ICMP error definition */
typedef struct _EFI_PXE_BASE_CODE_ICMP_ERROR
{
UINT8 Type;
UINT8 Code;
UINT16 Checksum;
union
{
UINT32 reserved;
UINT32 Mtu;
UINT32 Pointer;
struct
{
UINT16 Identifier;
UINT16 Sequence;
} Echo;
} u;
UINT8 Data[494];
} EFI_PXE_BASE_CODE_ICMP_ERROR, *PEFI_PXE_BASE_CODE_ICMP_ERROR;
/* EFI TFTP error definition */
typedef struct _EFI_PXE_BASE_CODE_TFTP_ERROR
{
UINT8 ErrorCode;
UINT8 ErrorString[127];
} EFI_PXE_BASE_CODE_TFTP_ERROR, *PEFI_PXE_BASE_CODE_TFTP_ERROR;
/* EFI IP filter */
typedef struct _EFI_PXE_BASE_CODE_IP_FILTER
{
UINT8 Filters;
UINT8 IpCnt;
UINT16 reserved;
EFI_IP_ADDRESS IpList[8];
} EFI_PXE_BASE_CODE_IP_FILTER, *PEFI_PXE_BASE_CODE_IP_FILTER;
/* EFI ARP cache entry */
typedef struct _EFI_PXE_BASE_CODE_ARP_ENTRY
{
EFI_IP_ADDRESS IpAddr;
EFI_MAC_ADDRESS MacAddr;
} EFI_PXE_BASE_CODE_ARP_ENTRY, *PEFI_PXE_BASE_CODE_ARP_ENTRY;
/* EFI route cache entry */
typedef struct _EFI_PXE_BASE_CODE_ROUTE_ENTRY
{
EFI_IP_ADDRESS IpAddr;
EFI_IP_ADDRESS SubnetMask;
EFI_IP_ADDRESS GwAddr;
} EFI_PXE_BASE_CODE_ROUTE_ENTRY, *PEFI_PXE_BASE_CODE_ROUTE_ENTRY;
/* EFI service list */
typedef struct _EFI_PXE_BASE_CODE_SRVLIST
{
UINT16 Type;
BOOLEAN AcceptAnyResponse;
UINT8 Reserved;
EFI_IP_ADDRESS IpAddr;
} EFI_PXE_BASE_CODE_SRVLIST, *PEFI_PXE_BASE_CODE_SRVLIST;
/* EFI network discovery info */
typedef struct _EFI_PXE_BASE_CODE_DISCOVER_INFO
{
BOOLEAN UseMCast;
BOOLEAN UseBCast;
BOOLEAN UseUCast;
BOOLEAN MustUseList;
EFI_IP_ADDRESS ServerMCastIp;
UINT16 IpCnt;
EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
} EFI_PXE_BASE_CODE_DISCOVER_INFO, *PEFI_PXE_BASE_CODE_DISCOVER_INFO;
/* EFI TFTP info */
typedef struct _EFI_PXE_BASE_CODE_MTFTP_INFO
{
EFI_IP_ADDRESS MCastIp;
UINT16 CPort;
UINT16 SPort;
UINT16 ListenTimeout;
UINT16 TransmitTimeout;
} EFI_PXE_BASE_CODE_MTFTP_INFO, *PEFI_PXE_BASE_CODE_MTFTP_INFO;
/* EFI PXE base code mode structure */
typedef struct _EFI_PXE_BASE_CODE_MODE
{
BOOLEAN Started;
BOOLEAN Ipv6Available;
BOOLEAN Ipv6Supported;
BOOLEAN UsingIpv6;
BOOLEAN BisSupported;
BOOLEAN BisDetected;
BOOLEAN AutoArp;
BOOLEAN SendGUID;
BOOLEAN DhcpDiscoverValid;
BOOLEAN DhcpAckReceived;
BOOLEAN ProxyOfferReceived;
BOOLEAN PxeDiscoverValid;
BOOLEAN PxeReplyReceived;
BOOLEAN PxeBisReplyReceived;
BOOLEAN IcmpErrorReceived;
BOOLEAN TftpErrorReceived;
BOOLEAN MakeCallbacks;
UINT8 TTL;
UINT8 ToS;
EFI_IP_ADDRESS StationIp;
EFI_IP_ADDRESS SubnetMask;
EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
EFI_PXE_BASE_CODE_PACKET DhcpAck;
EFI_PXE_BASE_CODE_PACKET ProxyOffer;
EFI_PXE_BASE_CODE_PACKET PxeDiscover;
EFI_PXE_BASE_CODE_PACKET PxeReply;
EFI_PXE_BASE_CODE_PACKET PxeBisReply;
EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
UINT32 ArpCacheEntries;
EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[8];
UINT32 RouteTableEntries;
EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[8];
EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
} EFI_PXE_BASE_CODE_MODE, *PEFI_PXE_BASE_CODE_MODE;
/* EFI PXE base code protocol */
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL {
UINT64 Revision;
PEFI_PXE_BASE_CODE_START Start;
PEFI_PXE_BASE_CODE_STOP Stop;
PEFI_PXE_BASE_CODE_DHCP Dhcp;
PEFI_PXE_BASE_CODE_DISCOVER Discover;
PEFI_PXE_BASE_CODE_MTFTP Mtftp;
PEFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
PEFI_PXE_BASE_CODE_UDP_READ UdpRead;
PEFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
PEFI_PXE_BASE_CODE_ARP Arp;
PEFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
PEFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
PEFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
PEFI_PXE_BASE_CODE_MODE Mode;
} EFI_PXE_BASE_CODE_PROTOCOL, *PEFI_PXE_BASE_CODE_PROTOCOL;
/* EFI PXE base code callback protocol */
typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL {
UINT64 Revision;
PEFI_PXE_CALLBACK Callback;
} EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL, *PEFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;
/* EFI network statistics structure */
typedef struct _EFI_NETWORK_STATISTICS
{
UINT64 RxTotalFrames;
UINT64 RxGoodFrames;
UINT64 RxUndersizeFrames;
UINT64 RxOversizeFrames;
UINT64 RxDroppedFrames;
UINT64 RxUnicastFrames;
UINT64 RxBroadcastFrames;
UINT64 RxMulticastFrames;
UINT64 RxCrcErrorFrames;
UINT64 RxTotalBytes;
UINT64 TxTotalFrames;
UINT64 TxGoodFrames;
UINT64 TxUndersizeFrames;
UINT64 TxOversizeFrames;
UINT64 TxDroppedFrames;
UINT64 TxUnicastFrames;
UINT64 TxBroadcastFrames;
UINT64 TxMulticastFrames;
UINT64 TxCrcErrorFrames;
UINT64 TxTotalBytes;
UINT64 Collisions;
UINT64 UnsupportedProtocol;
} EFI_NETWORK_STATISTICS, *PEFI_NETWORK_STATISTICS;
/* EFI network mode structure */
typedef struct _EFI_SIMPLE_NETWORK_MODE
{
UINT32 State;
UINT32 HwAddressSize;
UINT32 MediaHeaderSize;
UINT32 MaxPacketSize;
UINT32 NvRamSize;
UINT32 NvRamAccessSize;
UINT32 ReceiveFilterMask;
UINT32 ReceiveFilterSetting;
UINT32 MaxMCastFilterCount;
UINT32 MCastFilterCount;
EFI_MAC_ADDRESS MCastFilter[16];
EFI_MAC_ADDRESS CurrentAddress;
EFI_MAC_ADDRESS BroadcastAddress;
EFI_MAC_ADDRESS PermanentAddress;
UINT8 IfType;
BOOLEAN MacAddressChangeable;
BOOLEAN MultipleTxSupported;
BOOLEAN MediaPresentSupported;
BOOLEAN MediaPresent;
} EFI_SIMPLE_NETWORK_MODE, *PEFI_SIMPLE_NETWORK_MODE;
/* EFI network protocol structure */
typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL
{
UINT64 Revision;
PEFI_SIMPLE_NETWORK_START Start;
PEFI_SIMPLE_NETWORK_STOP Stop;
PEFI_SIMPLE_NETWORK_INITIALIZE Initialize;
PEFI_SIMPLE_NETWORK_RESET Reset;
PEFI_SIMPLE_NETWORK_SHUTDOWN Shutdown;
PEFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters;
PEFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress;
PEFI_SIMPLE_NETWORK_STATISTICS Statistics;
PEFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac;
PEFI_SIMPLE_NETWORK_NVDATA NvData;
PEFI_SIMPLE_NETWORK_GET_STATUS GetStatus;
PEFI_SIMPLE_NETWORK_TRANSMIT Transmit;
PEFI_SIMPLE_NETWORK_RECEIVE Receive;
EFI_EVENT WaitForPacket;
PEFI_SIMPLE_NETWORK_MODE Mode;
} EFI_SIMPLE_NETWORK_PROTOCOL, *PEFI_SIMPLE_NETWORK_PROTOCOL;
#endif /* __XTDK_XTUEFI_H */