]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h
MdeModulePkg/Network: Fix potential ASSERT if NetIp4IsUnicast is called
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Mtftp4Dxe / Mtftp4Impl.h
index 8f39df3c4f2edeae414f019b1b2656b72c7d4b9f..527fd1db10d1723b4c6d75023f3c4f90911595d7 100644 (file)
@@ -9,8 +9,8 @@
   RFC2348 - TFTP Blocksize Option\r
   RFC2349 - TFTP Timeout Interval and Transfer Size Options\r
   \r
-Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
 http://opensource.org/licenses/bsd-license.php<BR>\r
@@ -34,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/UdpIoLib.h>\r
+#include <Library/PrintLib.h>\r
 \r
 extern EFI_MTFTP4_PROTOCOL  gMtftp4ProtocolTemplate;\r
 \r
@@ -48,20 +49,18 @@ typedef struct _MTFTP4_PROTOCOL MTFTP4_PROTOCOL;
 ///\r
 /// Some constant value of Mtftp service.\r
 ///\r
-typedef enum {\r
-  MTFTP4_SERVICE_SIGNATURE   = SIGNATURE_32 ('T', 'F', 'T', 'P'),\r
-  MTFTP4_PROTOCOL_SIGNATURE  = SIGNATURE_32 ('t', 'f', 't', 'p'),\r
+#define MTFTP4_SERVICE_SIGNATURE    SIGNATURE_32 ('T', 'F', 'T', 'P')\r
+#define MTFTP4_PROTOCOL_SIGNATURE   SIGNATURE_32 ('t', 'f', 't', 'p')\r
 \r
-  MTFTP4_DEFAULT_SERVER_PORT = 69,\r
-  MTFTP4_DEFAULT_TIMEOUT     = 3,\r
-  MTFTP4_DEFAULT_RETRY       = 5,\r
-  MTFTP4_DEFAULT_BLKSIZE     = 512,\r
-  MTFTP4_TIME_TO_GETMAP      = 5,\r
+#define MTFTP4_DEFAULT_SERVER_PORT  69\r
+#define MTFTP4_DEFAULT_TIMEOUT      3\r
+#define MTFTP4_DEFAULT_RETRY        5\r
+#define MTFTP4_DEFAULT_BLKSIZE      512\r
+#define MTFTP4_TIME_TO_GETMAP       5\r
 \r
-  MTFTP4_STATE_UNCONFIGED    = 0,\r
-  MTFTP4_STATE_CONFIGED,\r
-  MTFTP4_STATE_DESTORY\r
-} MTFTP4_SERVICE_CONST_VALUE;\r
+#define MTFTP4_STATE_UNCONFIGED     0\r
+#define MTFTP4_STATE_CONFIGED       1\r
+#define MTFTP4_STATE_DESTROY        2\r
 \r
 ///\r
 /// Mtftp service block\r
@@ -70,8 +69,6 @@ struct _MTFTP4_SERVICE {
   UINT32                        Signature;\r
   EFI_SERVICE_BINDING_PROTOCOL  ServiceBinding;\r
 \r
-  BOOLEAN                       InDestory;\r
-\r
   UINT16                        ChildrenNum;\r
   LIST_ENTRY                    Children;\r
 \r
@@ -85,7 +82,7 @@ struct _MTFTP4_SERVICE {
   // This UDP child is used to keep the connection between the UDP\r
   // and MTFTP, so MTFTP will be notified when UDP is uninstalled.\r
   //\r
-  UDP_IO_PORT                   *ConnectUdp;\r
+  UDP_IO                        *ConnectUdp;\r
 };\r
 \r
 \r
@@ -101,7 +98,7 @@ struct _MTFTP4_PROTOCOL {
   EFI_MTFTP4_PROTOCOL           Mtftp4;\r
 \r
   INTN                          State;\r
-  BOOLEAN                       InDestory;\r
+  BOOLEAN                       InDestroy;\r
 \r
   MTFTP4_SERVICE                *Service;\r
   EFI_HANDLE                    Handle;\r
@@ -131,7 +128,7 @@ struct _MTFTP4_PROTOCOL {
   UINT16                        ListeningPort;\r
   UINT16                        ConnectedPort;\r
   IP4_ADDR                      Gateway;\r
-  UDP_IO_PORT                   *UnicastPort;\r
+  UDP_IO                        *UnicastPort;\r
 \r
   //\r
   // Timeout and retransmit status\r
@@ -148,9 +145,15 @@ struct _MTFTP4_PROTOCOL {
   IP4_ADDR                      McastIp;\r
   UINT16                        McastPort;\r
   BOOLEAN                       Master;\r
-  UDP_IO_PORT                   *McastUdpPort;\r
+  UDP_IO                        *McastUdpPort;\r
 };\r
 \r
+typedef struct {\r
+  EFI_SERVICE_BINDING_PROTOCOL  *ServiceBinding;\r
+  UINTN                         NumberOfChildren;\r
+  EFI_HANDLE                    *ChildHandleBuffer;\r
+} MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT;\r
+\r
 /**\r
   Clean up the MTFTP session to get ready for new operation.\r
 \r