]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h
Add IPV6 support from UNDI
[mirror_edk2.git] / NetworkPkg / UefiPxeBcDxe / PxeBcImpl.h
index 7491cf828523f76e0959b90ffcb0f6b061df263c..4aa3ce2f5b13310a2a70be2e01775212b261fe29 100644 (file)
@@ -2,7 +2,7 @@
   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 - 2015, 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
 #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
@@ -51,6 +53,7 @@
 #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
@@ -63,6 +66,7 @@ typedef struct _PXEBC_VIRTUAL_NIC   PXEBC_VIRTUAL_NIC;
 #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
@@ -72,6 +76,7 @@ typedef struct _PXEBC_VIRTUAL_NIC   PXEBC_VIRTUAL_NIC;
 #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
@@ -79,6 +84,10 @@ typedef union {
   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
@@ -92,6 +101,9 @@ struct _PXEBC_PRIVATE_DATA {
   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
@@ -131,6 +143,8 @@ struct _PXEBC_PRIVATE_DATA {
   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
@@ -147,11 +161,13 @@ struct _PXEBC_PRIVATE_DATA {
   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
   UINT16                                    CurSrcPort;\r
+  UINT32                                    IaId;\r
 \r
   UINT32                                    Ip4MaxPacketSize;\r
   UINT32                                    Ip6MaxPacketSize;\r