The implementation for Ping shell command.\r
\r
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
\r
This program and the accompanying materials\r
//\r
// Function templates to match the IPv4 and IPv6 commands that we use.\r
//\r
-typedef \r
+typedef\r
EFI_STATUS\r
(EFIAPI *PING_IPX_POLL)(\r
IN VOID *This\r
- ); \r
+ );\r
\r
-typedef \r
+typedef\r
EFI_STATUS\r
(EFIAPI *PING_IPX_TRANSMIT)(\r
IN VOID *This,\r
IN VOID *Token\r
);\r
\r
-typedef \r
+typedef\r
EFI_STATUS\r
(EFIAPI *PING_IPX_RECEIVE)(\r
IN VOID *This,\r
IN VOID *Token\r
- ); \r
+ );\r
\r
typedef\r
EFI_STATUS\r
);\r
\r
///\r
-/// A set of pointers to either IPv6 or IPv4 functions. \r
+/// A set of pointers to either IPv6 or IPv4 functions.\r
/// Unknown which one to the ping command.\r
///\r
typedef struct {\r
\r
//\r
// PING_IPX_COMPLETION_TOKEN\r
-// structures are used for both transmit and receive operations. \r
+// structures are used for both transmit and receive operations.\r
// This version is IP-unaware.\r
//\r
typedef struct {\r
EFI_EVENT Timer;\r
\r
UINT32 TimerPeriod;\r
- UINT32 RttTimerTick; \r
+ UINT32 RttTimerTick;\r
EFI_EVENT RttTimer;\r
\r
EFI_STATUS Status;\r
@param[in] Packet Buffer which contains the data to be checksummed.\r
@param[in] Length Length to be checksummed.\r
\r
- @retval Checksum Returns the 16 bit ones complement of \r
+ @retval Checksum Returns the 16 bit ones complement of\r
ones complement sum of 16 bit words\r
**/\r
UINT16\r
if (Private->TimerPeriod == 0) {\r
return EFI_ABORTED;\r
}\r
- \r
+\r
Private->RttTimerTick = 0;\r
Status = gBS->CreateEvent (\r
EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
\r
/**\r
Read the current time.\r
- \r
+\r
@param[in] Private The pointer to PING_PRIVATE_DATA.\r
\r
@retval the current tick value.\r
if (((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->NextHeader != IP6_ICMP) {\r
goto ON_EXIT;\r
}\r
- if (!IP6_IS_MULTICAST ((EFI_IPv6_ADDRESS*)&Private->DstAddress) && \r
+ if (!IP6_IS_MULTICAST ((EFI_IPv6_ADDRESS*)&Private->DstAddress) &&\r
!EFI_IP6_EQUAL (&((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->SourceAddress, (EFI_IPv6_ADDRESS*)&Private->DstAddress)) {\r
goto ON_EXIT;\r
}\r
} else {\r
Reply = ((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->FragmentTable[0].FragmentBuffer;\r
PayLoad = ((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->DataLength;\r
- if (!IP4_IS_MULTICAST (EFI_IP4(*(EFI_IPv4_ADDRESS*)Private->DstAddress)) && \r
+ if (!IP4_IS_MULTICAST (EFI_IP4(*(EFI_IPv4_ADDRESS*)Private->DstAddress)) &&\r
!EFI_IP4_EQUAL (&((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->SourceAddress, (EFI_IPv4_ADDRESS*)&Private->DstAddress)) {\r
goto ON_EXIT;\r
}\r
goto ON_EXIT;\r
}\r
}\r
- \r
+\r
\r
if (PayLoad != Private->BufferSize) {\r
goto ON_EXIT;\r
//\r
Request->Type = (UINT8)(Private->IpChoice==PING_IP_CHOICE_IP6?ICMP_V6_ECHO_REQUEST:ICMP_V4_ECHO_REQUEST);\r
Request->Code = 0;\r
- Request->SequenceNum = SequenceNum; \r
+ Request->SequenceNum = SequenceNum;\r
Request->Identifier = 0;\r
Request->Checksum = 0;\r
\r
if (Private->IpChoice == PING_IP_CHOICE_IP6 ? NetIp6IsUnspecifiedAddr ((EFI_IPv6_ADDRESS*)&Private->SrcAddress) : \\r
PingNetIp4IsUnspecifiedAddr ((EFI_IPv4_ADDRESS*)&Private->SrcAddress)) {\r
//\r
- // SrcAddress is unspecified. So, both connected and configured interface will be automatic selected. \r
+ // SrcAddress is unspecified. So, both connected and configured interface will be automatic selected.\r
//\r
UnspecifiedSrc = TRUE;\r
}\r
- \r
+\r
//\r
// Source address is required when pinging a link-local address.\r
//\r
} else {\r
ASSERT(Private->IpChoice == PING_IP_CHOICE_IP4);\r
if (PingNetIp4IsLinkLocalAddr ((EFI_IPv4_ADDRESS*)&Private->DstAddress) && UnspecifiedSrc) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_INVALID_SOURCE), gShellNetwork1HiiHandle); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_INVALID_SOURCE), gShellNetwork1HiiHandle);\r
Status = EFI_INVALID_PARAMETER;\r
goto ON_ERROR;\r
}\r
}\r
- \r
+\r
//\r
// For each ip6 protocol, check interface addresses list.\r
//\r
NULL\r
);\r
}\r
- \r
+\r
//\r
// Skip the ones not in current use.\r
//\r
}\r
} else {\r
if (UnspecifiedSrc) {\r
- if (!PingNetIp4IsUnspecifiedAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO*)IpXInterfaceInfo)->StationAddress) && \r
+ if (!PingNetIp4IsUnspecifiedAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO*)IpXInterfaceInfo)->StationAddress) &&\r
!PingNetIp4IsLinkLocalAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO*)IpXInterfaceInfo)->StationAddress)) {\r
//\r
// Select the interface automatically.\r
//\r
\r
if (HandleIndex == HandleNum) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_CONFIGD_NIC_NF), gShellNetwork1HiiHandle, L"ping"); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_CONFIGD_NIC_NF), gShellNetwork1HiiHandle, L"ping");\r
Status = EFI_NOT_FOUND;\r
goto ON_ERROR;\r
}\r
Private->ProtocolPointers.Transmit = (PING_IPX_TRANSMIT )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Transmit;\r
Private->ProtocolPointers.Receive = (PING_IPX_RECEIVE )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Receive;\r
Private->ProtocolPointers.Cancel = (PING_IPX_CANCEL )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Cancel;\r
- Private->ProtocolPointers.Poll = (PING_IPX_POLL )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Poll; \r
+ Private->ProtocolPointers.Poll = (PING_IPX_POLL )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Poll;\r
}\r
\r
if (HandleBuffer != NULL) {\r
ShellStatus = SHELL_ACCESS_DENIED;\r
goto ON_EXIT;\r
}\r
- \r
+\r
//\r
// Create a ipv6 token to send the first icmp6 echo request packet.\r
//\r
} else if (Status == RETURN_NO_MAPPING) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_NOROUTE_FOUND), gShellNetwork1HiiHandle, mDstString, mSrcString);\r
} else {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_NETWORK_ERROR), gShellNetwork1HiiHandle, L"ping", Status); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_NETWORK_ERROR), gShellNetwork1HiiHandle, L"ping", Status);\r
}\r
\r
goto ON_EXIT;\r
\r
@retval SHELL_SUCCESS The ping processed successfullly.\r
@retval others The ping processed unsuccessfully.\r
- \r
+\r
**/\r
SHELL_STATUS\r
EFIAPI\r
CHAR16 *ProblemParam;\r
\r
//\r
- // we use IPv6 buffers to hold items... \r
+ // we use IPv6 buffers to hold items...\r
// make sure this is enough space!\r
//\r
ASSERT(sizeof(EFI_IPv4_ADDRESS ) <= sizeof(EFI_IPv6_ADDRESS ));\r
// ShellStrToUintn will return 0 when input is 0 or an invalid input string.\r
//\r
if ((SendNumber == 0) || (SendNumber > MAX_SEND_NUMBER)) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
// ShellStrToUintn will return 0 when input is 0 or an invalid input string.\r
//\r
if ((BufferSize < 16) || (BufferSize > MAX_BUFFER_SIZE)) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
if (ValueStr == NULL) {\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-_s");\r
}\r
- \r
+\r
if (ValueStr != NULL) {\r
mSrcString = ValueStr;\r
if (IpChoice == PING_IP_CHOICE_IP6) {\r
Status = NetLibStrToIp4 (ValueStr, (EFI_IPv4_ADDRESS*)&SrcAddress);\r
}\r
if (EFI_ERROR (Status)) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
//\r
NonOptionCount = ShellCommandLineGetCount(ParamPackage);\r
if (NonOptionCount < 2) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellNetwork1HiiHandle, L"ping"); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellNetwork1HiiHandle, L"ping");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
if (NonOptionCount > 2) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellNetwork1HiiHandle, L"ping"); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellNetwork1HiiHandle, L"ping");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
Status = NetLibStrToIp4 (ValueStr, (EFI_IPv4_ADDRESS*)&DstAddress);\r
}\r
if (EFI_ERROR (Status)) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr); \r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r