This EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL.\r
interfaces declaration.\r
\r
- Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
#include <Library/DevicePathLib.h>\r
#include <Library/PcdLib.h>\r
\r
-typedef struct _PXEBC_PRIVATE_DATA PXEBC_PRIVATE_DATA;\r
-typedef struct _PXEBC_PRIVATE_PROTOCOL PXEBC_PRIVATE_PROTOCOL;\r
-typedef struct _PXEBC_VIRTUAL_NIC PXEBC_VIRTUAL_NIC;\r
+typedef struct _PXEBC_PRIVATE_DATA PXEBC_PRIVATE_DATA;\r
+typedef struct _PXEBC_PRIVATE_PROTOCOL PXEBC_PRIVATE_PROTOCOL;\r
+typedef struct _PXEBC_VIRTUAL_NIC PXEBC_VIRTUAL_NIC;\r
\r
#include "PxeBcDriver.h"\r
#include "PxeBcDhcp4.h"\r
#include "PxeBcBoot.h"\r
#include "PxeBcSupport.h"\r
\r
-#define PXEBC_DEFAULT_HOPLIMIT 64\r
-#define PXEBC_DEFAULT_LIFETIME 50000 // 50 ms, unit is microsecond\r
-#define PXEBC_UDP_TIMEOUT 30000000 // 3 seconds, unit is 100nanosecond\r
-#define PXEBC_DAD_ADDITIONAL_DELAY 30000000 // 3 seconds\r
-#define PXEBC_MTFTP_TIMEOUT 4\r
-#define PXEBC_MTFTP_RETRIES 6\r
-#define PXEBC_DHCP_RETRIES 4 // refers to mPxeDhcpTimeout, also by PXE2.1 spec.\r
-#define PXEBC_MENU_MAX_NUM 24\r
-#define PXEBC_OFFER_MAX_NUM 16\r
+#define PXEBC_DEFAULT_HOPLIMIT 64\r
+#define PXEBC_DEFAULT_LIFETIME 50000 // 50 ms, unit is microsecond\r
+#define PXEBC_UDP_TIMEOUT 30000000 // 3 seconds, unit is 100nanosecond\r
+#define PXEBC_DAD_ADDITIONAL_DELAY 30000000 // 3 seconds\r
+#define PXEBC_MTFTP_TIMEOUT 4\r
+#define PXEBC_MTFTP_RETRIES 6\r
+#define PXEBC_DHCP_RETRIES 4 // refers to mPxeDhcpTimeout, also by PXE2.1 spec.\r
+#define PXEBC_MENU_MAX_NUM 24\r
+#define PXEBC_OFFER_MAX_NUM 16\r
\r
-#define PXEBC_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20)\r
+#define PXEBC_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20)\r
\r
-#define PXEBC_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'P')\r
-#define PXEBC_VIRTUAL_NIC_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'V')\r
-#define PXEBC_PRIVATE_DATA_FROM_PXEBC(a) CR (a, PXEBC_PRIVATE_DATA, PxeBc, PXEBC_PRIVATE_DATA_SIGNATURE)\r
-#define PXEBC_PRIVATE_DATA_FROM_ID(a) CR (a, PXEBC_PRIVATE_DATA, Id, PXEBC_PRIVATE_DATA_SIGNATURE)\r
-#define PXEBC_VIRTUAL_NIC_FROM_LOADFILE(a) CR (a, PXEBC_VIRTUAL_NIC, LoadFile, PXEBC_VIRTUAL_NIC_SIGNATURE)\r
+#define PXEBC_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'P')\r
+#define PXEBC_VIRTUAL_NIC_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'V')\r
+#define PXEBC_PRIVATE_DATA_FROM_PXEBC(a) CR (a, PXEBC_PRIVATE_DATA, PxeBc, PXEBC_PRIVATE_DATA_SIGNATURE)\r
+#define PXEBC_PRIVATE_DATA_FROM_ID(a) CR (a, PXEBC_PRIVATE_DATA, Id, PXEBC_PRIVATE_DATA_SIGNATURE)\r
+#define PXEBC_VIRTUAL_NIC_FROM_LOADFILE(a) CR (a, PXEBC_VIRTUAL_NIC, LoadFile, PXEBC_VIRTUAL_NIC_SIGNATURE)\r
+\r
+#define PXE_ENABLED 0x01\r
+#define PXE_DISABLED 0x00\r
\r
typedef union {\r
- PXEBC_DHCP4_PACKET_CACHE Dhcp4;\r
- PXEBC_DHCP6_PACKET_CACHE Dhcp6;\r
+ PXEBC_DHCP4_PACKET_CACHE Dhcp4;\r
+ PXEBC_DHCP6_PACKET_CACHE Dhcp6;\r
} PXEBC_DHCP_PACKET_CACHE;\r
\r
struct _PXEBC_PRIVATE_PROTOCOL {\r
- UINT64 Reserved;\r
+ UINT64 Reserved;\r
};\r
\r
struct _PXEBC_VIRTUAL_NIC {\r
- UINT32 Signature;\r
- EFI_HANDLE Controller;\r
- EFI_LOAD_FILE_PROTOCOL LoadFile;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- PXEBC_PRIVATE_DATA *Private;\r
+ UINT32 Signature;\r
+ EFI_HANDLE Controller;\r
+ EFI_LOAD_FILE_PROTOCOL LoadFile;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+ PXEBC_PRIVATE_DATA *Private;\r
};\r
\r
struct _PXEBC_PRIVATE_DATA {\r
- UINT32 Signature;\r
- EFI_HANDLE Controller;\r
- EFI_HANDLE Image;\r
-\r
- PXEBC_PRIVATE_PROTOCOL Id;\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
-\r
- PXEBC_VIRTUAL_NIC *Ip4Nic;\r
- PXEBC_VIRTUAL_NIC *Ip6Nic;\r
-\r
- EFI_HANDLE ArpChild;\r
- EFI_HANDLE Ip4Child;\r
- EFI_HANDLE Dhcp4Child;\r
- EFI_HANDLE Mtftp4Child;\r
- EFI_HANDLE Udp4ReadChild;\r
- EFI_HANDLE Udp4WriteChild;\r
-\r
- EFI_ARP_PROTOCOL *Arp;\r
- EFI_IP4_PROTOCOL *Ip4;\r
- EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2;\r
- EFI_DHCP4_PROTOCOL *Dhcp4;\r
- EFI_MTFTP4_PROTOCOL *Mtftp4;\r
- EFI_UDP4_PROTOCOL *Udp4Read;\r
- EFI_UDP4_PROTOCOL *Udp4Write;\r
-\r
- EFI_HANDLE Ip6Child;\r
- EFI_HANDLE Dhcp6Child;\r
- EFI_HANDLE Mtftp6Child;\r
- EFI_HANDLE Udp6ReadChild;\r
- EFI_HANDLE Udp6WriteChild;\r
-\r
- EFI_IP6_PROTOCOL *Ip6;\r
- EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg;\r
- EFI_DHCP6_PROTOCOL *Dhcp6;\r
- EFI_MTFTP6_PROTOCOL *Mtftp6;\r
- EFI_UDP6_PROTOCOL *Udp6Read;\r
- EFI_UDP6_PROTOCOL *Udp6Write;\r
- EFI_DNS6_PROTOCOL *Dns6;\r
-\r
- EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii;\r
- EFI_PXE_BASE_CODE_PROTOCOL PxeBc;\r
- EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL LoadFileCallback;\r
- EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *PxeBcCallback;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-\r
- EFI_PXE_BASE_CODE_MODE Mode;\r
- EFI_PXE_BASE_CODE_FUNCTION Function;\r
- UINT32 Ip6Policy;\r
- UINT32 SolicitTimes;\r
- UINT64 ElapsedTime;\r
-\r
- EFI_UDP4_CONFIG_DATA Udp4CfgData;\r
- EFI_UDP6_CONFIG_DATA Udp6CfgData;\r
- EFI_IP4_CONFIG_DATA Ip4CfgData;\r
- EFI_IP6_CONFIG_DATA Ip6CfgData;\r
-\r
- EFI_EVENT UdpTimeOutEvent;\r
- EFI_EVENT ArpUpdateEvent;\r
- EFI_IP4_COMPLETION_TOKEN IcmpToken;\r
- EFI_IP6_COMPLETION_TOKEN Icmp6Token;\r
-\r
- BOOLEAN IsAddressOk;\r
- BOOLEAN IsOfferSorted;\r
- BOOLEAN IsProxyRecved;\r
- BOOLEAN IsDoDiscover;\r
-\r
- EFI_IP_ADDRESS TmpStationIp;\r
- EFI_IP_ADDRESS StationIp;\r
- EFI_IP_ADDRESS SubnetMask;\r
- EFI_IP_ADDRESS GatewayIp;\r
- EFI_IP_ADDRESS ServerIp;\r
- EFI_IPv6_ADDRESS *DnsServer;\r
- UINT16 CurSrcPort;\r
- UINT32 IaId;\r
-\r
- UINT32 Ip4MaxPacketSize;\r
- UINT32 Ip6MaxPacketSize;\r
- UINT8 *BootFileName;\r
- UINTN BootFileSize;\r
- UINTN BlockSize;\r
-\r
- PXEBC_DHCP_PACKET_CACHE ProxyOffer;\r
- PXEBC_DHCP_PACKET_CACHE DhcpAck;\r
- PXEBC_DHCP_PACKET_CACHE PxeReply;\r
- EFI_DHCP6_PACKET *Dhcp6Request;\r
- EFI_DHCP4_PACKET SeedPacket;\r
+ UINT32 Signature;\r
+ EFI_HANDLE Controller;\r
+ EFI_HANDLE Image;\r
+\r
+ PXEBC_PRIVATE_PROTOCOL Id;\r
+ EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
+\r
+ PXEBC_VIRTUAL_NIC *Ip4Nic;\r
+ PXEBC_VIRTUAL_NIC *Ip6Nic;\r
+\r
+ EFI_HANDLE ArpChild;\r
+ EFI_HANDLE Ip4Child;\r
+ EFI_HANDLE Dhcp4Child;\r
+ EFI_HANDLE Mtftp4Child;\r
+ EFI_HANDLE Udp4ReadChild;\r
+ EFI_HANDLE Udp4WriteChild;\r
+\r
+ EFI_ARP_PROTOCOL *Arp;\r
+ EFI_IP4_PROTOCOL *Ip4;\r
+ EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2;\r
+ EFI_DHCP4_PROTOCOL *Dhcp4;\r
+ EFI_MTFTP4_PROTOCOL *Mtftp4;\r
+ EFI_UDP4_PROTOCOL *Udp4Read;\r
+ EFI_UDP4_PROTOCOL *Udp4Write;\r
+\r
+ EFI_HANDLE Ip6Child;\r
+ EFI_HANDLE Dhcp6Child;\r
+ EFI_HANDLE Mtftp6Child;\r
+ EFI_HANDLE Udp6ReadChild;\r
+ EFI_HANDLE Udp6WriteChild;\r
+\r
+ EFI_IP6_PROTOCOL *Ip6;\r
+ EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg;\r
+ EFI_DHCP6_PROTOCOL *Dhcp6;\r
+ EFI_MTFTP6_PROTOCOL *Mtftp6;\r
+ EFI_UDP6_PROTOCOL *Udp6Read;\r
+ EFI_UDP6_PROTOCOL *Udp6Write;\r
+ EFI_DNS6_PROTOCOL *Dns6;\r
+\r
+ EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii;\r
+ EFI_PXE_BASE_CODE_PROTOCOL PxeBc;\r
+ EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL LoadFileCallback;\r
+ EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *PxeBcCallback;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+\r
+ EFI_PXE_BASE_CODE_MODE Mode;\r
+ EFI_PXE_BASE_CODE_FUNCTION Function;\r
+ UINT32 Ip6Policy;\r
+ UINT32 SolicitTimes;\r
+ UINT64 ElapsedTime;\r
+\r
+ EFI_UDP4_CONFIG_DATA Udp4CfgData;\r
+ EFI_UDP6_CONFIG_DATA Udp6CfgData;\r
+ EFI_IP4_CONFIG_DATA Ip4CfgData;\r
+ EFI_IP6_CONFIG_DATA Ip6CfgData;\r
+\r
+ EFI_EVENT UdpTimeOutEvent;\r
+ EFI_EVENT ArpUpdateEvent;\r
+ EFI_IP4_COMPLETION_TOKEN IcmpToken;\r
+ EFI_IP6_COMPLETION_TOKEN Icmp6Token;\r
+\r
+ BOOLEAN IsAddressOk;\r
+ BOOLEAN IsOfferSorted;\r
+ BOOLEAN IsProxyRecved;\r
+ BOOLEAN IsDoDiscover;\r
+\r
+ EFI_IP_ADDRESS TmpStationIp;\r
+ EFI_IP_ADDRESS StationIp;\r
+ EFI_IP_ADDRESS SubnetMask;\r
+ EFI_IP_ADDRESS GatewayIp;\r
+ EFI_IP_ADDRESS ServerIp;\r
+ EFI_IPv6_ADDRESS *DnsServer;\r
+ UINT16 CurSrcPort;\r
+ UINT32 IaId;\r
+\r
+ UINT32 Ip4MaxPacketSize;\r
+ UINT32 Ip6MaxPacketSize;\r
+ UINT8 *BootFileName;\r
+ UINTN BootFileSize;\r
+ UINTN BlockSize;\r
+\r
+ PXEBC_DHCP_PACKET_CACHE ProxyOffer;\r
+ PXEBC_DHCP_PACKET_CACHE DhcpAck;\r
+ PXEBC_DHCP_PACKET_CACHE PxeReply;\r
+ EFI_DHCP6_PACKET *Dhcp6Request;\r
+ EFI_DHCP4_PACKET SeedPacket;\r
\r
//\r
// OfferIndex records the index of DhcpOffer[] buffer, and OfferCount records the num of each type of offer.\r
// (OfferIndex is 0-based.)\r
//\r
//\r
- UINT32 SelectIndex;\r
- UINT32 SelectProxyType;\r
- PXEBC_DHCP_PACKET_CACHE OfferBuffer[PXEBC_OFFER_MAX_NUM];\r
- UINT32 OfferNum;\r
- UINT32 OfferCount[PxeOfferTypeMax];\r
- UINT32 OfferIndex[PxeOfferTypeMax][PXEBC_OFFER_MAX_NUM];\r
+ UINT32 SelectIndex;\r
+ UINT32 SelectProxyType;\r
+ PXEBC_DHCP_PACKET_CACHE OfferBuffer[PXEBC_OFFER_MAX_NUM];\r
+ UINT32 OfferNum;\r
+ UINT32 OfferCount[PxeOfferTypeMax];\r
+ UINT32 OfferIndex[PxeOfferTypeMax][PXEBC_OFFER_MAX_NUM];\r
};\r
\r
extern EFI_PXE_BASE_CODE_PROTOCOL gPxeBcProtocolTemplate;\r