/** @file\r
- \r
+\r
Mtftp4 Implementation.\r
- \r
+\r
Mtftp4 Implementation, it supports the following RFCs:\r
RFC1350 - THE TFTP PROTOCOL (REVISION 2)\r
RFC2090 - TFTP Multicast Option\r
RFC2347 - TFTP Option Extension\r
RFC2348 - TFTP Blocksize Option\r
RFC2349 - TFTP Timeout Interval and Transfer Size Options\r
- \r
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+\r
+Copyright (c) 2006 - 2018, 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
#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
UINT32 Signature;\r
EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;\r
\r
- BOOLEAN InDestroy;\r
-\r
UINT16 ChildrenNum;\r
LIST_ENTRY Children;\r
\r
- EFI_EVENT Timer; ///< Ticking timer for all the MTFTP clients\r
+ EFI_EVENT Timer; ///< Ticking timer for all the MTFTP clients to handle the packet timeout case.\r
+ EFI_EVENT TimerNotifyLevel; ///< Ticking timer for all the MTFTP clients to calculate the packet live time.\r
EFI_EVENT TimerToGetMap;\r
\r
EFI_HANDLE Controller;\r
//\r
NET_BUF *LastPacket;\r
UINT32 PacketToLive;\r
+ BOOLEAN HasTimeout;\r
UINT32 CurRetry;\r
UINT32 MaxRetry;\r
UINT32 Timeout;\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
\r
/**\r
Start the MTFTP session for upload.\r
- \r
- It will first init some states, then send the WRQ request packet, \r
+\r
+ It will first init some states, then send the WRQ request packet,\r
and start receiving the packet.\r
\r
@param Instance The MTFTP session\r
);\r
\r
/**\r
- Start the MTFTP session to download. \r
- \r
- It will first initialize some of the internal states then build and send a RRQ \r
+ Start the MTFTP session to download.\r
+\r
+ It will first initialize some of the internal states then build and send a RRQ\r
reqeuest packet, at last, it will start receive for the downloading.\r
\r
@param Instance The Mtftp session\r