\r
#include "Mtftp6Impl.h"\r
\r
-\r
-\r
/**\r
Build and send a Mtftp6 data packet for upload.\r
\r
**/\r
EFI_STATUS\r
Mtftp6WrqSendBlock (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN UINT16 BlockNum\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN UINT16 BlockNum\r
)\r
{\r
- EFI_MTFTP6_PACKET *Packet;\r
- EFI_MTFTP6_TOKEN *Token;\r
- NET_BUF *UdpPacket;\r
- EFI_STATUS Status;\r
- UINT16 DataLen;\r
- UINT8 *DataBuf;\r
- UINT64 Start;\r
+ EFI_MTFTP6_PACKET *Packet;\r
+ EFI_MTFTP6_TOKEN *Token;\r
+ NET_BUF *UdpPacket;\r
+ EFI_STATUS Status;\r
+ UINT16 DataLen;\r
+ UINT8 *DataBuf;\r
+ UINT64 Start;\r
\r
//\r
// Allocate net buffer to create data packet.\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- Packet = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (\r
- UdpPacket,\r
- MTFTP6_DATA_HEAD_LEN,\r
- FALSE\r
- );\r
+ Packet = (EFI_MTFTP6_PACKET *)NetbufAllocSpace (\r
+ UdpPacket,\r
+ MTFTP6_DATA_HEAD_LEN,\r
+ FALSE\r
+ );\r
ASSERT (Packet != NULL);\r
\r
Packet->Data.OpCode = HTONS (EFI_MTFTP6_OPCODE_DATA);\r
Start = MultU64x32 (BlockNum - 1, Instance->BlkSize);\r
\r
if (Token->BufferSize < Start + Instance->BlkSize) {\r
- DataLen = (UINT16) (Token->BufferSize - Start);\r
+ DataLen = (UINT16)(Token->BufferSize - Start);\r
Instance->LastBlk = BlockNum;\r
Mtftp6SetLastBlockNum (&Instance->BlkList, BlockNum);\r
}\r
\r
if (DataLen > 0) {\r
NetbufAllocSpace (UdpPacket, DataLen, FALSE);\r
- CopyMem (Packet->Data.Data, (UINT8 *) Token->Buffer + Start, DataLen);\r
+ CopyMem (Packet->Data.Data, (UINT8 *)Token->Buffer + Start, DataLen);\r
}\r
-\r
} else {\r
//\r
// Get data from PacketNeeded\r
//\r
DataBuf = NULL;\r
- Status = Token->PacketNeeded (&Instance->Mtftp6, Token, &DataLen, (VOID*) &DataBuf);\r
+ Status = Token->PacketNeeded (&Instance->Mtftp6, Token, &DataLen, (VOID *)&DataBuf);\r
\r
if (EFI_ERROR (Status) || (DataLen > Instance->BlkSize)) {\r
if (DataBuf != NULL) {\r
gBS->FreePool (DataBuf);\r
}\r
+\r
//\r
// The received packet has already been freed.\r
//\r
Mtftp6SendError (\r
Instance,\r
EFI_MTFTP6_ERRORCODE_REQUEST_DENIED,\r
- (UINT8 *) "User aborted the transfer"\r
+ (UINT8 *)"User aborted the transfer"\r
);\r
\r
return EFI_ABORTED;\r
return Mtftp6TransmitPacket (Instance, UdpPacket);\r
}\r
\r
-\r
/**\r
Function to handle received ACK packet. If the ACK number matches the\r
expected block number, with more data pending, send the next\r
**/\r
EFI_STATUS\r
Mtftp6WrqHandleAck (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN EFI_MTFTP6_PACKET *Packet,\r
- IN UINT32 Len,\r
- OUT NET_BUF **UdpPacket,\r
- OUT BOOLEAN *IsCompleted\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN EFI_MTFTP6_PACKET *Packet,\r
+ IN UINT32 Len,\r
+ OUT NET_BUF **UdpPacket,\r
+ OUT BOOLEAN *IsCompleted\r
)\r
{\r
- UINT16 AckNum;\r
- INTN Expected;\r
- UINT64 BlockCounter;\r
+ UINT16 AckNum;\r
+ INTN Expected;\r
+ UINT64 BlockCounter;\r
\r
*IsCompleted = FALSE;\r
AckNum = NTOHS (Packet->Ack.Block[0]);\r
ASSERT (Instance->LastBlk >= 1);\r
*IsCompleted = TRUE;\r
return EFI_SUCCESS;\r
-\r
} else {\r
//\r
// Free the received packet before send new packet in ReceiveNotify,\r
Mtftp6SendError (\r
Instance,\r
EFI_MTFTP6_ERRORCODE_REQUEST_DENIED,\r
- (UINT8 *) "Block number rolls back, not supported, try blksize option"\r
+ (UINT8 *)"Block number rolls back, not supported, try blksize option"\r
);\r
\r
return EFI_TFTP_ERROR;\r
NetbufFree (*UdpPacket);\r
*UdpPacket = NULL;\r
\r
- return Mtftp6WrqSendBlock (Instance, (UINT16) Expected);\r
+ return Mtftp6WrqSendBlock (Instance, (UINT16)Expected);\r
}\r
\r
-\r
/**\r
Check whether the received OACK is valid. The OACK is valid\r
only if:\r
**/\r
BOOLEAN\r
Mtftp6WrqOackValid (\r
- IN MTFTP6_EXT_OPTION_INFO *ReplyInfo,\r
- IN MTFTP6_EXT_OPTION_INFO *RequestInfo\r
+ IN MTFTP6_EXT_OPTION_INFO *ReplyInfo,\r
+ IN MTFTP6_EXT_OPTION_INFO *RequestInfo\r
)\r
{\r
//\r
//\r
if ((((ReplyInfo->BitMap & MTFTP6_OPT_BLKSIZE_BIT) != 0) && (ReplyInfo->BlkSize > RequestInfo->BlkSize)) ||\r
(((ReplyInfo->BitMap & MTFTP6_OPT_TIMEOUT_BIT) != 0) && (ReplyInfo->Timeout != RequestInfo->Timeout))\r
- ) {\r
-\r
+ )\r
+ {\r
return FALSE;\r
}\r
\r
return TRUE;\r
}\r
\r
-\r
/**\r
Process the OACK packet for Wrq.\r
\r
**/\r
EFI_STATUS\r
Mtftp6WrqHandleOack (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN EFI_MTFTP6_PACKET *Packet,\r
- IN UINT32 Len,\r
- OUT NET_BUF **UdpPacket,\r
- OUT BOOLEAN *IsCompleted\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN EFI_MTFTP6_PACKET *Packet,\r
+ IN UINT32 Len,\r
+ OUT NET_BUF **UdpPacket,\r
+ OUT BOOLEAN *IsCompleted\r
)\r
{\r
- EFI_MTFTP6_OPTION *Options;\r
- UINT32 Count;\r
- MTFTP6_EXT_OPTION_INFO ExtInfo;\r
- EFI_MTFTP6_PACKET Dummy;\r
- EFI_STATUS Status;\r
- INTN Expected;\r
+ EFI_MTFTP6_OPTION *Options;\r
+ UINT32 Count;\r
+ MTFTP6_EXT_OPTION_INFO ExtInfo;\r
+ EFI_MTFTP6_PACKET Dummy;\r
+ EFI_STATUS Status;\r
+ INTN Expected;\r
\r
*IsCompleted = FALSE;\r
- Options = NULL;\r
+ Options = NULL;\r
\r
//\r
// Ignore the OACK if already started the upload\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
ASSERT (Options != NULL);\r
\r
Status = Mtftp6ParseExtensionOption (Options, Count, FALSE, Instance->Operation, &ExtInfo);\r
\r
- if (EFI_ERROR(Status) || !Mtftp6WrqOackValid (&ExtInfo, &Instance->ExtInfo)) {\r
+ if (EFI_ERROR (Status) || !Mtftp6WrqOackValid (&ExtInfo, &Instance->ExtInfo)) {\r
//\r
// Don't send a MTFTP error packet when out of resource, it can\r
// only make it worse.\r
Mtftp6SendError (\r
Instance,\r
EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION,\r
- (UINT8 *) "Malformatted OACK packet"\r
+ (UINT8 *)"Malformatted OACK packet"\r
);\r
}\r
\r
);\r
}\r
\r
-\r
/**\r
The packet process callback for Mtftp6 upload.\r
\r
VOID\r
EFIAPI\r
Mtftp6WrqInput (\r
- IN NET_BUF *UdpPacket,\r
- IN UDP_END_POINT *UdpEpt,\r
- IN EFI_STATUS IoStatus,\r
- IN VOID *Context\r
+ IN NET_BUF *UdpPacket,\r
+ IN UDP_END_POINT *UdpEpt,\r
+ IN EFI_STATUS IoStatus,\r
+ IN VOID *Context\r
)\r
{\r
- MTFTP6_INSTANCE *Instance;\r
- EFI_MTFTP6_PACKET *Packet;\r
- BOOLEAN IsCompleted;\r
- EFI_STATUS Status;\r
- UINT32 TotalNum;\r
- UINT32 Len;\r
- UINT16 Opcode;\r
+ MTFTP6_INSTANCE *Instance;\r
+ EFI_MTFTP6_PACKET *Packet;\r
+ BOOLEAN IsCompleted;\r
+ EFI_STATUS Status;\r
+ UINT32 TotalNum;\r
+ UINT32 Len;\r
+ UINT16 Opcode;\r
\r
- Instance = (MTFTP6_INSTANCE *) Context;\r
+ Instance = (MTFTP6_INSTANCE *)Context;\r
\r
NET_CHECK_SIGNATURE (Instance, MTFTP6_INSTANCE_SIGNATURE);\r
\r
goto ON_EXIT;\r
}\r
\r
- NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet);\r
-\r
+ NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet);\r
} else {\r
- Packet = (EFI_MTFTP6_PACKET *) NetbufGetByte (UdpPacket, 0, NULL);\r
+ Packet = (EFI_MTFTP6_PACKET *)NetbufGetByte (UdpPacket, 0, NULL);\r
ASSERT (Packet != NULL);\r
}\r
\r
// Callback to the user's CheckPacket if provided. Abort the transmission\r
// if CheckPacket returns an EFI_ERROR code.\r
//\r
- if (Instance->Token->CheckPacket != NULL &&\r
- (Opcode == EFI_MTFTP6_OPCODE_OACK || Opcode == EFI_MTFTP6_OPCODE_ERROR)\r
- ) {\r
-\r
+ if ((Instance->Token->CheckPacket != NULL) &&\r
+ ((Opcode == EFI_MTFTP6_OPCODE_OACK) || (Opcode == EFI_MTFTP6_OPCODE_ERROR))\r
+ )\r
+ {\r
Status = Instance->Token->CheckPacket (\r
&Instance->Mtftp6,\r
Instance->Token,\r
- (UINT16) Len,\r
+ (UINT16)Len,\r
Packet\r
);\r
\r
Mtftp6SendError (\r
Instance,\r
EFI_MTFTP6_ERRORCODE_REQUEST_DENIED,\r
- (UINT8 *) "User aborted the transfer"\r
+ (UINT8 *)"User aborted the transfer"\r
);\r
}\r
\r
// Switch the process routines by the operation code.\r
//\r
switch (Opcode) {\r
- case EFI_MTFTP6_OPCODE_ACK:\r
- if (Len != MTFTP6_OPCODE_LEN + MTFTP6_BLKNO_LEN) {\r
- goto ON_EXIT;\r
- }\r
- //\r
- // Handle the Ack packet of Wrq.\r
- //\r
- Status = Mtftp6WrqHandleAck (Instance, Packet, Len, &UdpPacket, &IsCompleted);\r
- break;\r
+ case EFI_MTFTP6_OPCODE_ACK:\r
+ if (Len != MTFTP6_OPCODE_LEN + MTFTP6_BLKNO_LEN) {\r
+ goto ON_EXIT;\r
+ }\r
\r
- case EFI_MTFTP6_OPCODE_OACK:\r
- if (Len <= MTFTP6_OPCODE_LEN) {\r
- goto ON_EXIT;\r
- }\r
- //\r
- // Handle the Oack packet of Wrq.\r
- //\r
- Status = Mtftp6WrqHandleOack (Instance, Packet, Len, &UdpPacket, &IsCompleted);\r
- break;\r
+ //\r
+ // Handle the Ack packet of Wrq.\r
+ //\r
+ Status = Mtftp6WrqHandleAck (Instance, Packet, Len, &UdpPacket, &IsCompleted);\r
+ break;\r
\r
- default:\r
- //\r
- // Drop and return eror if received error message.\r
- //\r
- Status = EFI_TFTP_ERROR;\r
- break;\r
+ case EFI_MTFTP6_OPCODE_OACK:\r
+ if (Len <= MTFTP6_OPCODE_LEN) {\r
+ goto ON_EXIT;\r
+ }\r
+\r
+ //\r
+ // Handle the Oack packet of Wrq.\r
+ //\r
+ Status = Mtftp6WrqHandleOack (Instance, Packet, Len, &UdpPacket, &IsCompleted);\r
+ break;\r
+\r
+ default:\r
+ //\r
+ // Drop and return eror if received error message.\r
+ //\r
+ Status = EFI_TFTP_ERROR;\r
+ break;\r
}\r
\r
ON_EXIT:\r
// Free the resources, then if !EFI_ERROR (Status) and not completed,\r
// restart the receive, otherwise end the session.\r
//\r
- if (Packet != NULL && TotalNum > 1) {\r
+ if ((Packet != NULL) && (TotalNum > 1)) {\r
FreePool (Packet);\r
}\r
\r
0\r
);\r
}\r
+\r
//\r
// Clean up the current session if failed to continue.\r
//\r
}\r
}\r
\r
-\r
/**\r
Start the Mtftp6 instance to upload. It will first init some states,\r
then send the WRQ request packet, and start to receive the packet.\r
**/\r
EFI_STATUS\r
Mtftp6WrqStart (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN UINT16 Operation\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN UINT16 Operation\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// The valid block number range are [0, 0xffff]. For example:\r
0\r
);\r
}\r
-\r