755 lines
20 KiB
C
755 lines
20 KiB
C
#ifndef EFI_PROTOCOLS_NETWORK_H
|
|
#define EFI_PROTOCOLS_NETWORK_H
|
|
|
|
////
|
|
// Simple Network Protocol
|
|
///
|
|
|
|
#define EFI_SIMPLE_NETWORK_PROTOCOL_GUID {0xa19832b9,0xac25,0x11d3, {0x9a,0x2d,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
|
|
|
#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
|
|
|
|
#define MAX_MCAST_FILTER_CNT 16
|
|
|
|
// Bit Mask Values for ReceiveFilterString
|
|
#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
|
|
|
|
// Interrupt Bit Mask Settings for InterruptStatus
|
|
#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01
|
|
#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02
|
|
#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04
|
|
#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08
|
|
|
|
typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL EFI_SIMPLE_NETWORK_PROTOCOL;
|
|
|
|
typedef enum {
|
|
EfiSimpleNetworkStopped,
|
|
EfiSimpleNetworkStarted,
|
|
EfiSimpleNetworkInitialized,
|
|
EfiSimpleNetworkMaxState
|
|
} EFI_SIMPLE_NETWORK_STATE;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 State;
|
|
EFI_UINT32 HwAddressSize;
|
|
EFI_UINT32 MediaHeaderSize;
|
|
EFI_UINT32 MaxPacketSize;
|
|
EFI_UINT32 NvRamSize;
|
|
EFI_UINT32 NvRamAccessSize;
|
|
EFI_UINT32 ReceiveFilterMask;
|
|
EFI_UINT32 ReceiveFilterSetting;
|
|
EFI_UINT32 MaxMCastFilterCount;
|
|
EFI_UINT32 MCastFilterCount;
|
|
EFI_MAC_ADDRESS MCastFilter[MAX_MCAST_FILTER_CNT];
|
|
EFI_MAC_ADDRESS CurrentAddress;
|
|
EFI_MAC_ADDRESS BroadcastAddress;
|
|
EFI_MAC_ADDRESS PermanentAddress;
|
|
EFI_UINT8 IfType;
|
|
EFI_BOOLEAN MacAddressChangeable;
|
|
EFI_BOOLEAN MultipleTxSupported;
|
|
EFI_BOOLEAN MediaPresentSupported;
|
|
EFI_BOOLEAN MediaPresent;
|
|
} EFI_SIMPLE_NETWORK_MODE;
|
|
|
|
typedef struct {
|
|
EFI_UINT64 RxTotalFrames;
|
|
EFI_UINT64 RxGoodFrames;
|
|
EFI_UINT64 RxUndersizeFrames;
|
|
EFI_UINT64 RxOversizeFrames;
|
|
EFI_UINT64 RxDroppedFrames;
|
|
EFI_UINT64 RxUnicastFrames;
|
|
EFI_UINT64 RxBroadcastFrames;
|
|
EFI_UINT64 RxMulticastFrames;
|
|
EFI_UINT64 RxCrcErrorFrames;
|
|
EFI_UINT64 RxTotalBytes;
|
|
EFI_UINT64 TxTotalFrames;
|
|
EFI_UINT64 TxGoodFrames;
|
|
EFI_UINT64 TxUndersizeFrames;
|
|
EFI_UINT64 TxOversizeFrames;
|
|
EFI_UINT64 TxDroppedFrames;
|
|
EFI_UINT64 TxUnicastFrames;
|
|
EFI_UINT64 TxBroadcastFrames;
|
|
EFI_UINT64 TxMulticastFrames;
|
|
EFI_UINT64 TxCrcErrorFrames;
|
|
EFI_UINT64 TxTotalBytes;
|
|
EFI_UINT64 Collisions;
|
|
EFI_UINT64 UnsupportedProtocol;
|
|
EFI_UINT64 RxDuplicatedFrames;
|
|
EFI_UINT64 RxDecryptErrorFrames;
|
|
EFI_UINT64 TxErrorFrames;
|
|
EFI_UINT64 TxRetryFrames;
|
|
} EFI_NETWORK_STATISTICS;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_START)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_STOP)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_INITIALIZE)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_UINTN ExtraRxBufferSize OPTIONAL,
|
|
IN EFI_UINTN ExtraTxBufferSize OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_RESET)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_BOOLEAN ExtendedVerification
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_SHUTDOWN)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE_FILTERS)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_UINT32 Enable,
|
|
IN EFI_UINT32 Disable,
|
|
IN EFI_BOOLEAN ResetMCastFilter,
|
|
IN EFI_UINTN MCastFilterCnt OPTIONAL,
|
|
IN EFI_MAC_ADDRESS MCastFilter OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_STATION_ADDRESS)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_BOOLEAN Reset,
|
|
IN EFI_MAC_ADDRESS *New OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_STATISTICS)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_BOOLEAN Reset,
|
|
IN OUT EFI_UINTN *StatisticsSize OPTIONAL,
|
|
OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_BOOLEAN IPv6,
|
|
IN EFI_IP_ADDRESS *IP,
|
|
OUT EFI_MAC_ADDRESS *MAC
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_NVDATA)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_BOOLEAN ReadWrite,
|
|
IN EFI_UINTN Offset,
|
|
IN EFI_UINTN BufferSize,
|
|
IN OUT VOID *Buffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_GET_STATUS)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
OUT EFI_UINT32 *InterruptStatus OPTIONAL,
|
|
OUT VOID **TxBuf OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_TRANSMIT)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
IN EFI_UINTN HeaderSize,
|
|
IN EFI_UINTN BufferSize,
|
|
IN VOID *Buffer,
|
|
IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
|
|
IN EFI_MAC_ADDRESS *DestAddr OPTIONAL,
|
|
IN EFI_UINT16 *Protocol OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_SIMPLE_NETWORK_RECEIVE)(
|
|
IN EFI_SIMPLE_NETWORK_PROTOCOL *This,
|
|
OUT EFI_UINTN *HeaderSize OPTIONAL,
|
|
IN OUT EFI_UINTN *BufferSize,
|
|
OUT VOID *Buffer,
|
|
OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL,
|
|
OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL,
|
|
OUT EFI_UINT16 *Protocol OPTIONAL
|
|
);
|
|
|
|
typedef struct _EFI_SIMPLE_NETWORK_PROTOCOL {
|
|
EFI_UINT64 Revision;
|
|
EFI_SIMPLE_NETWORK_START Start;
|
|
EFI_SIMPLE_NETWORK_STOP Stop;
|
|
EFI_SIMPLE_NETWORK_INITIALIZE Initialize;
|
|
EFI_SIMPLE_NETWORK_RESET Reset;
|
|
EFI_SIMPLE_NETWORK_SHUTDOWN Shutdown;
|
|
EFI_SIMPLE_NETWORK_RECEIVE_FILTERS ReceiveFilters;
|
|
EFI_SIMPLE_NETWORK_STATION_ADDRESS StationAddress;
|
|
EFI_SIMPLE_NETWORK_STATISTICS Statistics;
|
|
EFI_SIMPLE_NETWORK_MCAST_IP_TO_MAC MCastIpToMac;
|
|
EFI_SIMPLE_NETWORK_NVDATA NvData;
|
|
EFI_SIMPLE_NETWORK_GET_STATUS GetStatus;
|
|
EFI_SIMPLE_NETWORK_TRANSMIT Transmit;
|
|
EFI_SIMPLE_NETWORK_RECEIVE Receive;
|
|
EFI_EVENT WaitForPacket;
|
|
EFI_SIMPLE_NETWORK_MODE *Mode;
|
|
} EFI_SIMPLE_NETWORK_PROTOCOL;
|
|
|
|
////
|
|
// Network Interface Identifier Protocol
|
|
///
|
|
|
|
#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_GUID_31 {0x1aced566, 0x76ed, 0x4218, {0xbc, 0x81, 0x76, 0x7f, 0x1f, 0x97, 0x7a, 0x89}}
|
|
|
|
#define EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION 0x00020000
|
|
|
|
typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
|
|
|
|
typedef enum {
|
|
EfiNetworkInterfaceUndi = 1
|
|
} EFI_NETWORK_INTERFACE_TYPE;
|
|
|
|
typedef struct _EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL {
|
|
EFI_UINT64 Revision;
|
|
EFI_UINT64 Id;
|
|
EFI_UINT64 ImageAddr;
|
|
EFI_UINT32 ImageSize;
|
|
CHAR8 StringId[4];
|
|
EFI_UINT8 Type;
|
|
EFI_UINT8 MajorVer;
|
|
EFI_UINT8 MinorVer;
|
|
EFI_BOOLEAN Ipv6Supported;
|
|
EFI_UINT16 IfNum;
|
|
} EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
|
|
|
|
////
|
|
// PXE Base Code Protocol
|
|
///
|
|
|
|
#define EFI_PXE_BASE_CODE_PROTOCOL_GUID {0x03c4e603,0xac28,0x11d3, {0x9a,0x2d,0x00,0x90,0x27,0x3f,0xc1,0x4d}}
|
|
|
|
#define EFI_PXE_BASE_CODE_PROTOCOL_REVISION 0x00010000
|
|
|
|
// Maximum ARP and Route Entries
|
|
#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
|
|
#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
|
|
|
|
#define EFI_PXE_BASE_CODE_MAX_IPCNT 8
|
|
|
|
#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
|
|
#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
|
|
#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
|
|
#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
|
|
|
|
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
|
|
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
|
|
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
|
|
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
|
|
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
|
|
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
|
|
|
|
#define DEFAULT_TTL 16
|
|
#define DEFAULT_ToS 0
|
|
|
|
// Bootstrap Types
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
|
|
#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
|
|
|
|
#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
|
|
#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
|
|
|
|
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE_PROTOCOL;
|
|
|
|
typedef EFI_UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
|
|
|
|
typedef enum {
|
|
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;
|
|
|
|
typedef struct {
|
|
EFI_UINT8 Filters;
|
|
EFI_UINT8 IpCnt;
|
|
EFI_UINT16 Reserved;
|
|
EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
|
|
} EFI_PXE_BASE_CODE_IP_FILTER;
|
|
|
|
typedef struct {
|
|
EFI_UINT8 BootpOpcode;
|
|
EFI_UINT8 BootpHwType;
|
|
EFI_UINT8 BootpHwAddrLen;
|
|
EFI_UINT8 BootpGateHops;
|
|
EFI_UINT32 BootpIdent;
|
|
EFI_UINT16 BootpSeconds;
|
|
EFI_UINT16 BootpFlags;
|
|
EFI_UINT8 BootpCiAddr[4];
|
|
EFI_UINT8 BootpYiAddr[4];
|
|
EFI_UINT8 BootpSiAddr[4];
|
|
EFI_UINT8 BootpGiAddr[4];
|
|
EFI_UINT8 BootpHwAddr[16];
|
|
EFI_UINT8 BootpSrvName[64];
|
|
EFI_UINT8 BootpBootFile[128];
|
|
EFI_UINT32 DhcpMagik;
|
|
EFI_UINT8 DhcpOptions[56];
|
|
} EFI_PXE_BASE_CODE_DHCPV4_PACKET;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 MessageType : 8;
|
|
EFI_UINT32 TransactionId : 24;
|
|
EFI_UINT8 DhcpOptions[1024];
|
|
} EFI_PXE_BASE_CODE_DHCPV6_PACKET;
|
|
|
|
typedef union {
|
|
EFI_UINT8 Raw[1472];
|
|
EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
|
|
EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
|
|
} EFI_PXE_BASE_CODE_PACKET;
|
|
|
|
typedef struct {
|
|
EFI_UINT8 Type;
|
|
EFI_UINT8 Code;
|
|
EFI_UINT16 Checksum;
|
|
union {
|
|
EFI_UINT32 reserved;
|
|
EFI_UINT32 Mtu;
|
|
EFI_UINT32 Pointer;
|
|
struct {
|
|
EFI_UINT16 Identifier;
|
|
EFI_UINT16 Sequence;
|
|
} Echo;
|
|
} u;
|
|
EFI_UINT8 Data[494];
|
|
} EFI_PXE_BASE_CODE_ICMP_ERROR;
|
|
|
|
typedef struct {
|
|
EFI_UINT8 ErrorCode;
|
|
CHAR8 ErrorString[127];
|
|
} EFI_PXE_BASE_CODE_TFTP_ERROR;
|
|
|
|
typedef struct {
|
|
EFI_IP_ADDRESS IpAddr;
|
|
EFI_MAC_ADDRESS MacAddr;
|
|
} EFI_PXE_BASE_CODE_ARP_ENTRY;
|
|
|
|
typedef struct {
|
|
EFI_IP_ADDRESS IpAddr;
|
|
EFI_IP_ADDRESS SubnetMask;
|
|
EFI_IP_ADDRESS GwAddr;
|
|
} EFI_PXE_BASE_CODE_ROUTE_ENTRY;
|
|
|
|
typedef struct {
|
|
EFI_UINT16 Type;
|
|
EFI_BOOLEAN AcceptAnyResponse;
|
|
EFI_UINT8 reserved;
|
|
EFI_IP_ADDRESS IpAddr;
|
|
} EFI_PXE_BASE_CODE_SRVLIST;
|
|
|
|
typedef struct {
|
|
EFI_BOOLEAN UseMCast;
|
|
EFI_BOOLEAN UseBCast;
|
|
EFI_BOOLEAN UseUCast;
|
|
EFI_BOOLEAN MustUseList;
|
|
EFI_IP_ADDRESS ServerMCastIp;
|
|
EFI_UINT16 IpCnt;
|
|
EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
|
|
} EFI_PXE_BASE_CODE_DISCOVER_INFO;
|
|
|
|
typedef struct {
|
|
EFI_BOOLEAN Started;
|
|
EFI_BOOLEAN Ipv6Available;
|
|
EFI_BOOLEAN Ipv6Supported;
|
|
EFI_BOOLEAN UsingIpv6;
|
|
EFI_BOOLEAN BisSupported;
|
|
EFI_BOOLEAN BisDetected;
|
|
EFI_BOOLEAN AutoArp;
|
|
EFI_BOOLEAN SendGUID;
|
|
EFI_BOOLEAN DhcpDiscoverValid;
|
|
EFI_BOOLEAN DhcpAckReceivd;
|
|
EFI_BOOLEAN ProxyOfferReceived;
|
|
EFI_BOOLEAN PxeDiscoverValid;
|
|
EFI_BOOLEAN PxeReplyReceived;
|
|
EFI_BOOLEAN PxeBisReplyReceived;
|
|
EFI_BOOLEAN IcmpErrorReceived;
|
|
EFI_BOOLEAN TftpErrorReceived;
|
|
EFI_BOOLEAN MakeCallbacks;
|
|
EFI_UINT8 TTL;
|
|
EFI_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;
|
|
EFI_UINT32 ArpCacheEntries;
|
|
EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
|
|
EFI_UINT32 RouteTableEntries;
|
|
EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
|
|
EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
|
|
EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
|
|
} EFI_PXE_BASE_CODE_MODE;
|
|
|
|
typedef struct {
|
|
EFI_IP_ADDRESS MCastIp;
|
|
EFI_PXE_BASE_CODE_UDP_PORT CPort;
|
|
EFI_PXE_BASE_CODE_UDP_PORT SPort;
|
|
EFI_UINT16 ListenTimeout;
|
|
EFI_UINT16 TransmitTimeout;
|
|
} EFI_PXE_BASE_CODE_MTFTP_INFO;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_START)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_BOOLEAN UseIpv6
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_STOP)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_BOOLEAN SortOffers
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_UINT16 Type,
|
|
IN EFI_UINT16 *Layer,
|
|
IN EFI_BOOLEAN UseBis,
|
|
IN EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
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 EFI_BOOLEAN Overwrite,
|
|
IN OUT EFI_UINT64 *BufferSize,
|
|
IN EFI_UINTN *BlockSize OPTIONAL,
|
|
IN EFI_IP_ADDRESS *ServerIp,
|
|
IN CHAR8 *Filename OPTIONAL,
|
|
IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
|
|
IN EFI_BOOLEAN DontUseBuffer
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_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 EFI_UINTN *HeaderSize OPTIONAL,
|
|
IN VOID *HeaderPtr OPTIONAL,
|
|
IN EFI_UINTN *BufferSize,
|
|
IN VOID *BufferPtr
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_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 EFI_UINTN *HeaderSize OPTIONAL,
|
|
IN VOID *HeaderPtr OPTIONAL,
|
|
IN OUT EFI_UINTN *BufferSize,
|
|
IN VOID *BufferPtr
|
|
);
|
|
|
|
typedef
|
|
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
|
|
);
|
|
|
|
typedef
|
|
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
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_BOOLEAN *NewAutoArp OPTIONAL,
|
|
IN EFI_BOOLEAN *NewSendGUID OPTIONAL,
|
|
IN EFI_UINT8 *NewTTL OPTIONAL,
|
|
IN EFI_UINT8 *NewToS OPTIONAL,
|
|
IN EFI_BOOLEAN *NewMakeCallback OPTIONAL
|
|
);
|
|
|
|
typedef
|
|
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
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS)(
|
|
IN EFI_PXE_BASE_CODE_PROTOCOL *This,
|
|
IN EFI_BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
|
|
IN EFI_BOOLEAN *NewDhcpAckReceived, OPTIONAL
|
|
IN EFI_BOOLEAN *NewProxyOfferReceived, OPTIONAL
|
|
IN EFI_BOOLEAN *NewPxeDiscoverValid, OPTIONAL
|
|
IN EFI_BOOLEAN *NewPxeReplyReceived, OPTIONAL
|
|
IN EFI_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
|
|
);
|
|
|
|
typedef struct _EFI_PXE_BASE_CODE_PROTOCOL {
|
|
EFI_UINT64 Revision;
|
|
EFI_PXE_BASE_CODE_START Start;
|
|
EFI_PXE_BASE_CODE_STOP Stop;
|
|
EFI_PXE_BASE_CODE_DHCP Dhcp;
|
|
EFI_PXE_BASE_CODE_DISCOVER Discover;
|
|
EFI_PXE_BASE_CODE_MTFTP Mtftp;
|
|
EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
|
|
EFI_PXE_BASE_CODE_UDP_READ UdpRead;
|
|
EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
|
|
EFI_PXE_BASE_CODE_ARP Arp;
|
|
EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
|
|
EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
|
|
EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
|
|
EFI_PXE_BASE_CODE_MODE *Mode;
|
|
} EFI_PXE_BASE_CODE_PROTOCOL;
|
|
|
|
////
|
|
// Boot Integrity Services Protocol
|
|
///
|
|
|
|
#define EFI_BIS_PROTOCOL_GUID {0x0b64aab0,0x5429,0x11d4, {0x98,0x16,0x00,0xa0,0xc9,0x1f,0xad,0xcf}}
|
|
#define BOOT_OBJECT_AUTHORIZATION_PARMSET_GUID {0xedd35e31,0x7b9,0x11d2, {0x83,0xa3,0x0,0xa0,0xc9,0x1f,0xad,0xcf}}
|
|
|
|
#define BIS_CURRENT_VERSION_MAJOR BIS_VERSION_1
|
|
#define BIS_VERSION_1 1
|
|
|
|
#define BIS_ALG_DSA (41) //CSSM_ALGID_DSA
|
|
#define BIS_ALG_RSA_MD5 (42) //CSSM_ALGID_MD5_WITH_RSA
|
|
|
|
#define BIS_CERT_ID_DSA BIS_ALG_DSA //CSSM_ALGID_DSA
|
|
#define BIS_CERT_ID_RSA_MD5 BIS_ALG_RSA_MD5 //CSSM_ALGID_MD5_WITH_RSA
|
|
|
|
#define BIS_CERT_ID_MASK (0xFF7F7FFF)
|
|
|
|
#define BIS_GET_SIGINFO_COUNT(BisDataPtr) ((BisDataPtr)->Length/sizeof(EFI_BIS_SIGNATURE_INFO))
|
|
#define BIS_GET_SIGINFO_ARRAY(BisDataPtr) ((EFI_BIS_SIGNATURE_INFO*)(BisDataPtr)->Data)
|
|
|
|
typedef struct _EFI_BIS_PROTOCOL EFI_BIS_PROTOCOL;
|
|
|
|
typedef VOID *BIS_APPLICATION_HANDLE;
|
|
typedef EFI_UINT32 BIS_CERT_ID;
|
|
typedef EFI_UINT16 BIS_ALG_ID;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 Major;
|
|
EFI_UINT32 Minor;
|
|
} EFI_BIS_VERSION;
|
|
|
|
typedef struct {
|
|
EFI_UINT32 Length;
|
|
EFI_UINT8 *Data;
|
|
} EFI_BIS_DATA;
|
|
|
|
typedef struct {
|
|
BIS_CERT_ID CertificateID;
|
|
BIS_ALG_ID AlgorithmID;
|
|
EFI_UINT16 KeyLength;
|
|
} EFI_BIS_SIGNATURE_INFO;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_INITIALIZE)(
|
|
IN EFI_BIS_PROTOCOL *This,
|
|
OUT BIS_APPLICATION_HANDLE *AppHandle,
|
|
IN OUT EFI_BIS_VERSION *InterfaceVersion,
|
|
IN EFI_BIS_DATA *TargetAddress
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_SHUTDOWN)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_FREE)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
IN EFI_BIS_DATA *ToFree
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
OUT EFI_BIS_DATA **Certificate
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
OUT EFI_BOOLEAN *CheckIsRequired
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
OUT EFI_BIS_DATA **UpdateToken
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_GET_SIGNATURE_INFO)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
OUT EFI_BIS_DATA **SignatureInfo
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
IN EFI_BIS_DATA *RequestCredential,
|
|
OUT EFI_BIS_DATA **NewUpdateToken
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_VERIFY_BOOT_OBJECT)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
IN EFI_BIS_DATA *Credentials,
|
|
IN EFI_BIS_DATA *DataObject,
|
|
OUT EFI_BOOLEAN *IsVerified
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL)(
|
|
IN BIS_APPLICATION_HANDLE AppHandle,
|
|
IN EFI_BIS_DATA *Credentials,
|
|
IN EFI_BIS_DATA *DataObject,
|
|
IN EFI_BIS_DATA *SectionName,
|
|
IN EFI_BIS_DATA *AuthorityCertificate,
|
|
OUT EFI_BOOLEAN *IsVerified
|
|
);
|
|
|
|
typedef struct _EFI_BIS_PROTOCOL {
|
|
EFI_BIS_INITIALIZE Initialize;
|
|
EFI_BIS_SHUTDOWN Shutdown;
|
|
EFI_BIS_FREE Free;
|
|
EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CERTIFICATE GetBootObjectAuthorizationCertificate;
|
|
EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_CHECKFLAG GetBootObjectAuthorizationCheckFlag;
|
|
EFI_BIS_GET_BOOT_OBJECT_AUTHORIZATION_UPDATE_TOKEN GetBootObjectAuthorizationUpdateToken;
|
|
EFI_BIS_GET_SIGNATURE_INFO GetSignatureInfo;
|
|
EFI_BIS_UPDATE_BOOT_OBJECT_AUTHORIZATION UpdateBootObjectAuthorization;
|
|
EFI_BIS_VERIFY_BOOT_OBJECT VerifyBootObject;
|
|
EFI_BIS_VERIFY_OBJECT_WITH_CREDENTIAL VerifyObjectWithCredential;
|
|
} EFI_BIS_PROTOCOL;
|
|
|
|
////
|
|
// HTTP Boot Callback Protocol
|
|
///
|
|
|
|
#define EFI_HTTP_BOOT_CALLBACK_PROTOCOL_GUID {0xba23b311,0x343d,0x11e6, {0x91,0x85,0x58,0x20,0xb1,0xd6,0x52,0x99}}
|
|
|
|
typedef struct _EFI_HTTP_BOOT_CALLBACK_PROTOCOL EFI_HTTP_BOOT_CALLBACK_PROTOCOL;
|
|
|
|
typedef enum {
|
|
HttpBootDhcp4,
|
|
HttpBootDhcp6,
|
|
HttpBootHttpRequest,
|
|
HttpBootHttpResponse,
|
|
HttpBootHttpEntityBody,
|
|
HttpBootTypeMax
|
|
} EFI_HTTP_BOOT_CALLBACK_DATA_TYPE;
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *EFI_HTTP_BOOT_CALLBACK)(
|
|
IN EFI_HTTP_BOOT_CALLBACK_PROTOCOL *This,
|
|
IN EFI_HTTP_BOOT_CALLBACK_DATA_TYPE DataType,
|
|
IN EFI_BOOLEAN Received,
|
|
IN EFI_UINT32 DataLength,
|
|
IN VOID *Data OPTIONAL
|
|
);
|
|
|
|
typedef struct _EFI_HTTP_BOOT_CALLBACK_PROTOCOL {
|
|
EFI_HTTP_BOOT_CALLBACK Callback;
|
|
} EFI_HTTP_BOOT_CALLBACK_PROTOCOL;
|
|
|
|
#endif /* EFI_PROTOCOLS_NETWORK_H */
|