\r
#include "Mtftp6Impl.h"\r
\r
-\r
/**\r
Allocate a MTFTP block range, then init it to the range of [Start, End].\r
\r
**/\r
MTFTP6_BLOCK_RANGE *\r
Mtftp6AllocateRange (\r
- IN UINT16 Start,\r
- IN UINT16 End\r
+ IN UINT16 Start,\r
+ IN UINT16 End\r
)\r
{\r
- MTFTP6_BLOCK_RANGE *Range;\r
+ MTFTP6_BLOCK_RANGE *Range;\r
\r
Range = AllocateZeroPool (sizeof (MTFTP6_BLOCK_RANGE));\r
\r
}\r
\r
InitializeListHead (&Range->Link);\r
- Range->Start = Start;\r
- Range->End = End;\r
- Range->Bound = End;\r
+ Range->Start = Start;\r
+ Range->End = End;\r
+ Range->Bound = End;\r
\r
return Range;\r
}\r
\r
-\r
/**\r
Initialize the block range for either RRQ or WRQ. RRQ and WRQ have\r
different requirements for Start and End. For example, during startup,\r
**/\r
EFI_STATUS\r
Mtftp6InitBlockRange (\r
- IN LIST_ENTRY *Head,\r
- IN UINT16 Start,\r
- IN UINT16 End\r
+ IN LIST_ENTRY *Head,\r
+ IN UINT16 Start,\r
+ IN UINT16 End\r
)\r
{\r
- MTFTP6_BLOCK_RANGE *Range;\r
+ MTFTP6_BLOCK_RANGE *Range;\r
\r
Range = Mtftp6AllocateRange (Start, End);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Get the first valid block number on the range list.\r
\r
**/\r
INTN\r
Mtftp6GetNextBlockNum (\r
- IN LIST_ENTRY *Head\r
+ IN LIST_ENTRY *Head\r
)\r
{\r
MTFTP6_BLOCK_RANGE *Range;\r
return Range->Start;\r
}\r
\r
-\r
/**\r
Set the last block number of the block range list. It\r
removes all the blocks after the Last. MTFTP initialize the\r
**/\r
VOID\r
Mtftp6SetLastBlockNum (\r
- IN LIST_ENTRY *Head,\r
- IN UINT16 Last\r
+ IN LIST_ENTRY *Head,\r
+ IN UINT16 Last\r
)\r
{\r
- MTFTP6_BLOCK_RANGE *Range;\r
+ MTFTP6_BLOCK_RANGE *Range;\r
\r
//\r
// Iterate from the tail to head to remove the block number\r
if (Range->End > Last) {\r
Range->End = Last;\r
}\r
- return ;\r
+\r
+ return;\r
}\r
}\r
\r
-\r
/**\r
Remove the block number from the block range list.\r
\r
**/\r
EFI_STATUS\r
Mtftp6RemoveBlockNum (\r
- IN LIST_ENTRY *Head,\r
- IN UINT16 Num,\r
- IN BOOLEAN Completed,\r
- OUT UINT64 *BlockCounter\r
+ IN LIST_ENTRY *Head,\r
+ IN UINT16 Num,\r
+ IN BOOLEAN Completed,\r
+ OUT UINT64 *BlockCounter\r
)\r
{\r
- MTFTP6_BLOCK_RANGE *Range;\r
- MTFTP6_BLOCK_RANGE *NewRange;\r
- LIST_ENTRY *Entry;\r
+ MTFTP6_BLOCK_RANGE *Range;\r
+ MTFTP6_BLOCK_RANGE *NewRange;\r
+ LIST_ENTRY *Entry;\r
\r
NET_LIST_FOR_EACH (Entry, Head) {\r
-\r
//\r
// Each block represents a hole [Start, End] in the file,\r
// skip to the first range with End >= Num\r
//\r
if (Range->Start > Num) {\r
return EFI_NOT_FOUND;\r
-\r
} else if (Range->Start == Num) {\r
Range->Start++;\r
\r
// wrap to zero, because this is the simplest to implement. Here we choose\r
// this solution.\r
//\r
- *BlockCounter = Num;\r
+ *BlockCounter = Num;\r
\r
if (Range->Round > 0) {\r
*BlockCounter += Range->Bound + MultU64x32 (Range->Round - 1, (UINT32)(Range->Bound + 1)) + 1;\r
\r
if (Range->Start > Range->Bound) {\r
Range->Start = 0;\r
- Range->Round ++;\r
+ Range->Round++;\r
}\r
\r
if ((Range->Start > Range->End) || Completed) {\r
}\r
\r
return EFI_SUCCESS;\r
-\r
} else {\r
if (Range->End == Num) {\r
Range->End--;\r
} else {\r
- NewRange = Mtftp6AllocateRange ((UINT16) (Num + 1), (UINT16) Range->End);\r
+ NewRange = Mtftp6AllocateRange ((UINT16)(Num + 1), (UINT16)Range->End);\r
\r
if (NewRange == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
return EFI_NOT_FOUND;\r
}\r
\r
-\r
/**\r
Configure the opened Udp6 instance until the corresponding Ip6 instance\r
has been configured.\r
**/\r
EFI_STATUS\r
Mtftp6GetMapping (\r
- IN UDP_IO *UdpIo,\r
- IN EFI_UDP6_CONFIG_DATA *UdpCfgData\r
+ IN UDP_IO *UdpIo,\r
+ IN EFI_UDP6_CONFIG_DATA *UdpCfgData\r
)\r
{\r
- EFI_IP6_MODE_DATA Ip6Mode;\r
- EFI_UDP6_PROTOCOL *Udp6;\r
- EFI_STATUS Status;\r
- EFI_EVENT Event;\r
+ EFI_IP6_MODE_DATA Ip6Mode;\r
+ EFI_UDP6_PROTOCOL *Udp6;\r
+ EFI_STATUS Status;\r
+ EFI_EVENT Event;\r
\r
- Event = NULL;\r
- Udp6 = UdpIo->Protocol.Udp6;\r
+ Event = NULL;\r
+ Udp6 = UdpIo->Protocol.Udp6;\r
\r
//\r
// Create a timer to check whether the Ip6 instance configured or not.\r
// Check the Ip6 mode data till timeout.\r
//\r
while (EFI_ERROR (gBS->CheckEvent (Event))) {\r
-\r
Udp6->Poll (Udp6);\r
\r
Status = Udp6->GetModeData (Udp6, NULL, &Ip6Mode, NULL, NULL);\r
FreePool (Ip6Mode.IcmpTypeList);\r
}\r
\r
- if (Ip6Mode.IsConfigured) {\r
+ if (Ip6Mode.IsConfigured) {\r
//\r
// Continue to configure the Udp6 instance.\r
//\r
return Status;\r
}\r
\r
-\r
/**\r
The dummy configure routine for create a new Udp6 Io.\r
\r
EFI_STATUS\r
EFIAPI\r
Mtftp6ConfigDummyUdpIo (\r
- IN UDP_IO *UdpIo,\r
- IN VOID *Context\r
+ IN UDP_IO *UdpIo,\r
+ IN VOID *Context\r
)\r
{\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
The configure routine for Mtftp6 instance to transmit/receive.\r
\r
**/\r
EFI_STATUS\r
Mtftp6ConfigUdpIo (\r
- IN UDP_IO *UdpIo,\r
- IN EFI_IPv6_ADDRESS *ServerIp,\r
- IN UINT16 ServerPort,\r
- IN EFI_IPv6_ADDRESS *LocalIp,\r
- IN UINT16 LocalPort\r
+ IN UDP_IO *UdpIo,\r
+ IN EFI_IPv6_ADDRESS *ServerIp,\r
+ IN UINT16 ServerPort,\r
+ IN EFI_IPv6_ADDRESS *LocalIp,\r
+ IN UINT16 LocalPort\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_UDP6_PROTOCOL *Udp6;\r
- EFI_UDP6_CONFIG_DATA *Udp6Cfg;\r
+ EFI_STATUS Status;\r
+ EFI_UDP6_PROTOCOL *Udp6;\r
+ EFI_UDP6_CONFIG_DATA *Udp6Cfg;\r
\r
Udp6 = UdpIo->Protocol.Udp6;\r
Udp6Cfg = &(UdpIo->Config.Udp6);\r
Status = Udp6->Configure (Udp6, Udp6Cfg);\r
\r
if (Status == EFI_NO_MAPPING) {\r
-\r
return Mtftp6GetMapping (UdpIo, Udp6Cfg);\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Build and transmit the request packet for the Mtftp6 instance.\r
\r
**/\r
EFI_STATUS\r
Mtftp6SendRequest (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN UINT16 Operation\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN UINT16 Operation\r
)\r
{\r
- EFI_MTFTP6_PACKET *Packet;\r
- EFI_MTFTP6_OPTION *Options;\r
- EFI_MTFTP6_TOKEN *Token;\r
- RETURN_STATUS Status;\r
- NET_BUF *Nbuf;\r
- UINT8 *Mode;\r
- UINT8 *Cur;\r
- UINTN Index;\r
- UINT32 BufferLength;\r
- UINTN FileNameLength;\r
- UINTN ModeLength;\r
- UINTN OptionStrLength;\r
- UINTN ValueStrLength;\r
+ EFI_MTFTP6_PACKET *Packet;\r
+ EFI_MTFTP6_OPTION *Options;\r
+ EFI_MTFTP6_TOKEN *Token;\r
+ RETURN_STATUS Status;\r
+ NET_BUF *Nbuf;\r
+ UINT8 *Mode;\r
+ UINT8 *Cur;\r
+ UINTN Index;\r
+ UINT32 BufferLength;\r
+ UINTN FileNameLength;\r
+ UINTN ModeLength;\r
+ UINTN OptionStrLength;\r
+ UINTN ValueStrLength;\r
\r
Token = Instance->Token;\r
Options = Token->OptionList;\r
Mode = Token->ModeStr;\r
\r
if (Mode == NULL) {\r
- Mode = (UINT8 *) "octet";\r
+ Mode = (UINT8 *)"octet";\r
}\r
\r
//\r
//\r
// Compute the size of new Mtftp6 packet.\r
//\r
- FileNameLength = AsciiStrLen ((CHAR8 *) Token->Filename);\r
- ModeLength = AsciiStrLen ((CHAR8 *) Mode);\r
- BufferLength = (UINT32) FileNameLength + (UINT32) ModeLength + 4;\r
+ FileNameLength = AsciiStrLen ((CHAR8 *)Token->Filename);\r
+ ModeLength = AsciiStrLen ((CHAR8 *)Mode);\r
+ BufferLength = (UINT32)FileNameLength + (UINT32)ModeLength + 4;\r
\r
for (Index = 0; Index < Token->OptionCount; Index++) {\r
- OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);\r
- ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr);\r
- BufferLength += (UINT32) OptionStrLength + (UINT32) ValueStrLength + 2;\r
+ OptionStrLength = AsciiStrLen ((CHAR8 *)Options[Index].OptionStr);\r
+ ValueStrLength = AsciiStrLen ((CHAR8 *)Options[Index].ValueStr);\r
+ BufferLength += (UINT32)OptionStrLength + (UINT32)ValueStrLength + 2;\r
}\r
\r
//\r
//\r
// Copy the opcode, filename and mode into packet.\r
//\r
- Packet = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (Nbuf, BufferLength, FALSE);\r
+ Packet = (EFI_MTFTP6_PACKET *)NetbufAllocSpace (Nbuf, BufferLength, FALSE);\r
ASSERT (Packet != NULL);\r
\r
Packet->OpCode = HTONS (Operation);\r
BufferLength -= sizeof (Packet->OpCode);\r
\r
- Cur = Packet->Rrq.Filename;\r
- Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Token->Filename);\r
+ Cur = Packet->Rrq.Filename;\r
+ Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Token->Filename);\r
ASSERT_EFI_ERROR (Status);\r
- BufferLength -= (UINT32) (FileNameLength + 1);\r
- Cur += FileNameLength + 1;\r
- Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Mode);\r
+ BufferLength -= (UINT32)(FileNameLength + 1);\r
+ Cur += FileNameLength + 1;\r
+ Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Mode);\r
ASSERT_EFI_ERROR (Status);\r
- BufferLength -= (UINT32) (ModeLength + 1);\r
- Cur += ModeLength + 1;\r
+ BufferLength -= (UINT32)(ModeLength + 1);\r
+ Cur += ModeLength + 1;\r
\r
//\r
// Copy all the extension options into the packet.\r
//\r
for (Index = 0; Index < Token->OptionCount; ++Index) {\r
- OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);\r
- ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr);\r
+ OptionStrLength = AsciiStrLen ((CHAR8 *)Options[Index].OptionStr);\r
+ ValueStrLength = AsciiStrLen ((CHAR8 *)Options[Index].ValueStr);\r
\r
- Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].OptionStr);\r
+ Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Options[Index].OptionStr);\r
ASSERT_EFI_ERROR (Status);\r
- BufferLength -= (UINT32) (OptionStrLength + 1);\r
- Cur += OptionStrLength + 1;\r
+ BufferLength -= (UINT32)(OptionStrLength + 1);\r
+ Cur += OptionStrLength + 1;\r
\r
- Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].ValueStr);\r
+ Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Options[Index].ValueStr);\r
ASSERT_EFI_ERROR (Status);\r
- BufferLength -= (UINT32) (ValueStrLength + 1);\r
- Cur += ValueStrLength + 1;\r
-\r
+ BufferLength -= (UINT32)(ValueStrLength + 1);\r
+ Cur += ValueStrLength + 1;\r
}\r
\r
//\r
return Mtftp6TransmitPacket (Instance, Nbuf);\r
}\r
\r
-\r
/**\r
Build and send an error packet.\r
\r
**/\r
EFI_STATUS\r
Mtftp6SendError (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN UINT16 ErrCode,\r
- IN UINT8* ErrInfo\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN UINT16 ErrCode,\r
+ IN UINT8 *ErrInfo\r
)\r
{\r
- NET_BUF *Nbuf;\r
- EFI_MTFTP6_PACKET *TftpError;\r
- UINT32 Len;\r
+ NET_BUF *Nbuf;\r
+ EFI_MTFTP6_PACKET *TftpError;\r
+ UINT32 Len;\r
\r
//\r
// Allocate a packet then copy the data.\r
//\r
- Len = (UINT32) (AsciiStrLen ((CHAR8 *) ErrInfo) + sizeof (EFI_MTFTP6_ERROR_HEADER));\r
+ Len = (UINT32)(AsciiStrLen ((CHAR8 *)ErrInfo) + sizeof (EFI_MTFTP6_ERROR_HEADER));\r
Nbuf = NetbufAlloc (Len);\r
\r
if (Nbuf == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- TftpError = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (Nbuf, Len, FALSE);\r
+ TftpError = (EFI_MTFTP6_PACKET *)NetbufAllocSpace (Nbuf, Len, FALSE);\r
\r
if (TftpError == NULL) {\r
NetbufFree (Nbuf);\r
TftpError->OpCode = HTONS (EFI_MTFTP6_OPCODE_ERROR);\r
TftpError->Error.ErrorCode = HTONS (ErrCode);\r
\r
- AsciiStrCpyS ((CHAR8 *) TftpError->Error.ErrorMessage, AsciiStrLen ((CHAR8 *) ErrInfo) + 1 , (CHAR8 *) ErrInfo);\r
+ AsciiStrCpyS ((CHAR8 *)TftpError->Error.ErrorMessage, AsciiStrLen ((CHAR8 *)ErrInfo) + 1, (CHAR8 *)ErrInfo);\r
\r
//\r
// Save the packet buf for retransmit\r
return Mtftp6TransmitPacket (Instance, Nbuf);\r
}\r
\r
-\r
/**\r
The callback function called when the packet is transmitted.\r
\r
VOID\r
EFIAPI\r
Mtftp6OnPacketSent (\r
- IN NET_BUF *Packet,\r
- IN UDP_END_POINT *UdpEpt,\r
- IN EFI_STATUS IoStatus,\r
- IN VOID *Context\r
+ IN NET_BUF *Packet,\r
+ IN UDP_END_POINT *UdpEpt,\r
+ IN EFI_STATUS IoStatus,\r
+ IN VOID *Context\r
)\r
{\r
NetbufFree (Packet);\r
- *(BOOLEAN *) Context = TRUE;\r
+ *(BOOLEAN *)Context = TRUE;\r
}\r
\r
-\r
/**\r
Send the packet for the Mtftp6 instance.\r
\r
**/\r
EFI_STATUS\r
Mtftp6TransmitPacket (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN NET_BUF *Packet\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN NET_BUF *Packet\r
)\r
{\r
- EFI_UDP6_PROTOCOL *Udp6;\r
- EFI_UDP6_CONFIG_DATA Udp6CfgData;\r
- EFI_STATUS Status;\r
- UINT16 *Temp;\r
- UINT16 Value;\r
- UINT16 OpCode;\r
-\r
- ZeroMem (&Udp6CfgData, sizeof(EFI_UDP6_CONFIG_DATA));\r
+ EFI_UDP6_PROTOCOL *Udp6;\r
+ EFI_UDP6_CONFIG_DATA Udp6CfgData;\r
+ EFI_STATUS Status;\r
+ UINT16 *Temp;\r
+ UINT16 Value;\r
+ UINT16 OpCode;\r
+\r
+ ZeroMem (&Udp6CfgData, sizeof (EFI_UDP6_CONFIG_DATA));\r
Udp6 = Instance->UdpIo->Protocol.Udp6;\r
\r
//\r
//\r
Instance->PacketToLive = Instance->IsMaster ? Instance->Timeout : (Instance->Timeout * 2);\r
\r
- Temp = (UINT16 *) NetbufGetByte (Packet, 0, NULL);\r
+ Temp = (UINT16 *)NetbufGetByte (Packet, 0, NULL);\r
ASSERT (Temp != NULL);\r
\r
Value = *Temp;\r
OpCode = NTOHS (Value);\r
\r
- if (OpCode == EFI_MTFTP6_OPCODE_RRQ || OpCode == EFI_MTFTP6_OPCODE_DIR || OpCode == EFI_MTFTP6_OPCODE_WRQ) {\r
+ if ((OpCode == EFI_MTFTP6_OPCODE_RRQ) || (OpCode == EFI_MTFTP6_OPCODE_DIR) || (OpCode == EFI_MTFTP6_OPCODE_WRQ)) {\r
//\r
// For the Rrq, Dir, Wrq requests of the operation, configure the Udp6Io as\r
// (serverip, 69, localip, localport) to send.\r
}\r
\r
if (Udp6CfgData.RemotePort != Instance->ServerDataPort) {\r
-\r
Status = Udp6->Configure (Udp6, NULL);\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
-\r
/**\r
Check packet for GetInfo callback routine.\r
\r
EFI_STATUS\r
EFIAPI\r
Mtftp6CheckPacket (\r
- IN EFI_MTFTP6_PROTOCOL *This,\r
- IN EFI_MTFTP6_TOKEN *Token,\r
- IN UINT16 PacketLen,\r
- IN EFI_MTFTP6_PACKET *Packet\r
+ IN EFI_MTFTP6_PROTOCOL *This,\r
+ IN EFI_MTFTP6_TOKEN *Token,\r
+ IN UINT16 PacketLen,\r
+ IN EFI_MTFTP6_PACKET *Packet\r
)\r
{\r
- MTFTP6_GETINFO_CONTEXT *Context;\r
- UINT16 OpCode;\r
+ MTFTP6_GETINFO_CONTEXT *Context;\r
+ UINT16 OpCode;\r
\r
- Context = (MTFTP6_GETINFO_CONTEXT *) Token->Context;\r
+ Context = (MTFTP6_GETINFO_CONTEXT *)Token->Context;\r
OpCode = NTOHS (Packet->OpCode);\r
\r
//\r
// Set the GetInfo's return status according to the OpCode.\r
//\r
switch (OpCode) {\r
- case EFI_MTFTP6_OPCODE_ERROR:\r
- Context->Status = EFI_TFTP_ERROR;\r
- break;\r
+ case EFI_MTFTP6_OPCODE_ERROR:\r
+ Context->Status = EFI_TFTP_ERROR;\r
+ break;\r
\r
- case EFI_MTFTP6_OPCODE_OACK:\r
- Context->Status = EFI_SUCCESS;\r
- break;\r
+ case EFI_MTFTP6_OPCODE_OACK:\r
+ Context->Status = EFI_SUCCESS;\r
+ break;\r
\r
- default:\r
- Context->Status = EFI_PROTOCOL_ERROR;\r
+ default:\r
+ Context->Status = EFI_PROTOCOL_ERROR;\r
}\r
\r
//\r
return EFI_ABORTED;\r
}\r
\r
-\r
/**\r
Clean up the current Mtftp6 operation.\r
\r
**/\r
VOID\r
Mtftp6OperationClean (\r
- IN MTFTP6_INSTANCE *Instance,\r
- IN EFI_STATUS Result\r
+ IN MTFTP6_INSTANCE *Instance,\r
+ IN EFI_STATUS Result\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- MTFTP6_BLOCK_RANGE *Block;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ MTFTP6_BLOCK_RANGE *Block;\r
\r
//\r
// Clean up the current token and event.\r
if (Instance->Token->Event != NULL) {\r
gBS->SignalEvent (Instance->Token->Event);\r
}\r
+\r
Instance->Token = NULL;\r
}\r
\r
Instance->IsMaster = TRUE;\r
}\r
\r
-\r
/**\r
Start the Mtftp6 instance to perform the operation, such as read file,\r
write file, and read directory.\r
**/\r
EFI_STATUS\r
Mtftp6OperationStart (\r
- IN EFI_MTFTP6_PROTOCOL *This,\r
- IN EFI_MTFTP6_TOKEN *Token,\r
- IN UINT16 OpCode\r
+ IN EFI_MTFTP6_PROTOCOL *This,\r
+ IN EFI_MTFTP6_TOKEN *Token,\r
+ IN UINT16 OpCode\r
)\r
{\r
- MTFTP6_INSTANCE *Instance;\r
- EFI_STATUS Status;\r
-\r
- if (This == NULL ||\r
- Token == NULL ||\r
- Token->Filename == NULL ||\r
- (Token->OptionCount != 0 && Token->OptionList == NULL) ||\r
- (Token->OverrideData != NULL && !NetIp6IsValidUnicast (&Token->OverrideData->ServerIp))\r
- ) {\r
+ MTFTP6_INSTANCE *Instance;\r
+ EFI_STATUS Status;\r
+\r
+ if ((This == NULL) ||\r
+ (Token == NULL) ||\r
+ (Token->Filename == NULL) ||\r
+ ((Token->OptionCount != 0) && (Token->OptionList == NULL)) ||\r
+ ((Token->OverrideData != NULL) && !NetIp6IsValidUnicast (&Token->OverrideData->ServerIp))\r
+ )\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// At least define one method to collect the data for download.\r
//\r
- if ((OpCode == EFI_MTFTP6_OPCODE_RRQ || OpCode == EFI_MTFTP6_OPCODE_DIR) &&\r
- Token->Buffer == NULL &&\r
- Token->CheckPacket == NULL\r
- ) {\r
+ if (((OpCode == EFI_MTFTP6_OPCODE_RRQ) || (OpCode == EFI_MTFTP6_OPCODE_DIR)) &&\r
+ (Token->Buffer == NULL) &&\r
+ (Token->CheckPacket == NULL)\r
+ )\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// At least define one method to provide the data for upload.\r
//\r
- if (OpCode == EFI_MTFTP6_OPCODE_WRQ && Token->Buffer == NULL && Token->PacketNeeded == NULL) {\r
+ if ((OpCode == EFI_MTFTP6_OPCODE_WRQ) && (Token->Buffer == NULL) && (Token->PacketNeeded == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
// Parse the extension options in the request packet.\r
//\r
if (Token->OptionCount != 0) {\r
-\r
Status = Mtftp6ParseExtensionOption (\r
Token->OptionList,\r
Token->OptionCount,\r
//\r
// Initialize runtime data from config data or override data.\r
//\r
- Instance->Token = Token;\r
- Instance->ServerCmdPort = Instance->Config->InitialServerPort;\r
- Instance->ServerDataPort = 0;\r
- Instance->MaxRetry = Instance->Config->TryCount;\r
- Instance->Timeout = Instance->Config->TimeoutValue;\r
- Instance->IsMaster = TRUE;\r
+ Instance->Token = Token;\r
+ Instance->ServerCmdPort = Instance->Config->InitialServerPort;\r
+ Instance->ServerDataPort = 0;\r
+ Instance->MaxRetry = Instance->Config->TryCount;\r
+ Instance->Timeout = Instance->Config->TimeoutValue;\r
+ Instance->IsMaster = TRUE;\r
\r
CopyMem (\r
&Instance->ServerIp,\r
if (Instance->ServerCmdPort == 0) {\r
Instance->ServerCmdPort = MTFTP6_DEFAULT_SERVER_CMD_PORT;\r
}\r
+\r
if (Instance->BlkSize == 0) {\r
Instance->BlkSize = MTFTP6_DEFAULT_BLK_SIZE;\r
}\r
+\r
if (Instance->WindowSize == 0) {\r
Instance->WindowSize = MTFTP6_DEFAULT_WINDOWSIZE;\r
}\r
+\r
if (Instance->MaxRetry == 0) {\r
Instance->MaxRetry = MTFTP6_DEFAULT_MAX_RETRY;\r
}\r
+\r
if (Instance->Timeout == 0) {\r
Instance->Timeout = MTFTP6_DEFAULT_TIMEOUT;\r
}\r
// Switch the routines by the operation code.\r
//\r
switch (OpCode) {\r
- case EFI_MTFTP6_OPCODE_RRQ:\r
- Status = Mtftp6RrqStart (Instance, OpCode);\r
- break;\r
+ case EFI_MTFTP6_OPCODE_RRQ:\r
+ Status = Mtftp6RrqStart (Instance, OpCode);\r
+ break;\r
\r
- case EFI_MTFTP6_OPCODE_DIR:\r
- Status = Mtftp6RrqStart (Instance, OpCode);\r
- break;\r
+ case EFI_MTFTP6_OPCODE_DIR:\r
+ Status = Mtftp6RrqStart (Instance, OpCode);\r
+ break;\r
\r
- case EFI_MTFTP6_OPCODE_WRQ:\r
- Status = Mtftp6WrqStart (Instance, OpCode);\r
- break;\r
+ case EFI_MTFTP6_OPCODE_WRQ:\r
+ Status = Mtftp6WrqStart (Instance, OpCode);\r
+ break;\r
\r
- default:\r
- Status = EFI_DEVICE_ERROR;\r
- goto ON_ERROR;\r
+ default:\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto ON_ERROR;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
while (Token->Status == EFI_NOT_READY) {\r
This->Poll (This);\r
}\r
+\r
return Token->Status;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
The timer ticking routine for the Mtftp6 instance.\r
\r
VOID\r
EFIAPI\r
Mtftp6OnTimerTick (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- MTFTP6_SERVICE *Service;\r
- MTFTP6_INSTANCE *Instance;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- EFI_MTFTP6_TOKEN *Token;\r
- EFI_STATUS Status;\r
+ MTFTP6_SERVICE *Service;\r
+ MTFTP6_INSTANCE *Instance;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ EFI_MTFTP6_TOKEN *Token;\r
+ EFI_STATUS Status;\r
\r
- Service = (MTFTP6_SERVICE *) Context;\r
+ Service = (MTFTP6_SERVICE *)Context;\r
\r
//\r
// Iterate through all the children of the Mtftp service instance. Time\r
// out the packet. If maximum retries reached, clean the session up.\r
//\r
NET_LIST_FOR_EACH_SAFE (Entry, Next, &Service->Children) {\r
-\r
Instance = NET_LIST_USER_STRUCT (Entry, MTFTP6_INSTANCE, Link);\r
\r
if (Instance->Token == NULL) {\r
\r
if (EFI_ERROR (Status)) {\r
Mtftp6SendError (\r
- Instance,\r
- EFI_MTFTP6_ERRORCODE_REQUEST_DENIED,\r
- (UINT8 *) "User aborted the transfer in time out"\r
- );\r
+ Instance,\r
+ EFI_MTFTP6_ERRORCODE_REQUEST_DENIED,\r
+ (UINT8 *)"User aborted the transfer in time out"\r
+ );\r
Mtftp6OperationClean (Instance, EFI_ABORTED);\r
continue;\r
}\r