This EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL.\r
interfaces declaration.\r
\r
- Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
#include <Guid/SmBios.h>\r
#include <IndustryStandard/SmBios.h>\r
+#include <IndustryStandard/Dhcp.h>\r
#include <Protocol/NetworkInterfaceIdentifier.h>\r
#include <Protocol/Arp.h>\r
#include <Protocol/Ip4.h>\r
+#include <Protocol/Ip4Config2.h>\r
#include <Protocol/Ip6.h>\r
#include <Protocol/Ip6Config.h>\r
#include <Protocol/Udp4.h>\r
#include <Protocol/Udp6.h>\r
#include <Protocol/Dhcp4.h>\r
#include <Protocol/Dhcp6.h>\r
+#include <Protocol/Dns6.h>\r
#include <Protocol/Mtftp4.h>\r
#include <Protocol/Mtftp6.h>\r
#include <Protocol/PxeBaseCode.h>\r
#include <Protocol/PxeBaseCodeCallBack.h>\r
#include <Protocol/ServiceBinding.h>\r
#include <Protocol/DriverBinding.h>\r
+#include <Protocol/AdapterInformation.h>\r
\r
#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/UefiDriverEntryPoint.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/UefiRuntimeServicesTableLib.h>\r
#include <Library/UefiLib.h>\r
#include <Library/BaseLib.h>\r
#include <Library/NetLib.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
\r
#include "PxeBcDriver.h"\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
+\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
typedef union {\r
PXEBC_DHCP6_PACKET_CACHE Dhcp6;\r
} PXEBC_DHCP_PACKET_CACHE;\r
\r
+struct _PXEBC_PRIVATE_PROTOCOL {\r
+ UINT64 Reserved;\r
+};\r
+\r
struct _PXEBC_VIRTUAL_NIC {\r
UINT32 Signature;\r
EFI_HANDLE Controller;\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
\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_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_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
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