]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
ShellPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / ShellPkg / Library / UefiShellNetwork1CommandsLib / Ping.c
index bec9535a8b436338c91e94290fde58a900e43804..23567fa2c1bb27229a572ffa01cffda63eaa8800 100644 (file)
@@ -2,16 +2,10 @@
   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
-  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.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -24,25 +18,25 @@ UINT64          mCurrentTick = 0;
 //\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
@@ -52,7 +46,7 @@ EFI_STATUS
   );\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
@@ -70,7 +64,7 @@ typedef union {
 \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
@@ -119,7 +113,7 @@ typedef struct _PING_PRIVATE_DATA {
   EFI_EVENT                   Timer;\r
 \r
   UINT32                      TimerPeriod;\r
-  UINT32                      RttTimerTick;   \r
+  UINT32                      RttTimerTick;\r
   EFI_EVENT                   RttTimer;\r
 \r
   EFI_STATUS                  Status;\r
@@ -149,7 +143,7 @@ typedef struct _PING_PRIVATE_DATA {
   @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
@@ -325,7 +319,7 @@ PingInitRttTimer (
   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
@@ -370,7 +364,7 @@ PingFreeRttTimer (
 \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
@@ -563,7 +557,7 @@ Ping6OnEchoReplyReceived (
     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
@@ -574,7 +568,7 @@ Ping6OnEchoReplyReceived (
   } 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
@@ -583,7 +577,7 @@ Ping6OnEchoReplyReceived (
       goto ON_EXIT;\r
     }\r
   }\r
-  \r
+\r
 \r
   if (PayLoad != Private->BufferSize) {\r
     goto ON_EXIT;\r
@@ -689,7 +683,7 @@ PingGenerateToken (
   //\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
@@ -784,14 +778,17 @@ PingSendEchoRequest (
   }\r
 \r
   ASSERT(Private->ProtocolPointers.Transmit != NULL);\r
+\r
+  InsertTailList (&Private->TxList, &TxInfo->Link);\r
+\r
   Status = Private->ProtocolPointers.Transmit (Private->IpProtocol, TxInfo->Token);\r
 \r
   if (EFI_ERROR (Status)) {\r
+    RemoveEntryList (&TxInfo->Link);\r
     PingDestroyTxInfo (TxInfo, Private->IpChoice);\r
     return Status;\r
   }\r
 \r
-  InsertTailList (&Private->TxList, &TxInfo->Link);\r
   Private->TxCount++;\r
 \r
   return EFI_SUCCESS;\r
@@ -1000,11 +997,11 @@ PingCreateIpInstance (
   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
@@ -1017,12 +1014,12 @@ PingCreateIpInstance (
   } 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
@@ -1084,7 +1081,7 @@ PingCreateIpInstance (
                          NULL\r
                          );\r
     }\r
-    \r
+\r
     //\r
     // Skip the ones not in current use.\r
     //\r
@@ -1157,7 +1154,7 @@ PingCreateIpInstance (
       }\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
@@ -1180,7 +1177,7 @@ PingCreateIpInstance (
   //\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
@@ -1278,7 +1275,7 @@ PingCreateIpInstance (
     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
@@ -1429,7 +1426,7 @@ ShellPing (
     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
@@ -1444,7 +1441,7 @@ ShellPing (
     } 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
@@ -1559,7 +1556,7 @@ ON_EXIT:
 \r
   @retval SHELL_SUCCESS  The ping processed successfullly.\r
   @retval others         The ping processed unsuccessfully.\r
-  \r
+\r
 **/\r
 SHELL_STATUS\r
 EFIAPI\r
@@ -1581,7 +1578,7 @@ ShellCommandRunPing (
   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
@@ -1614,7 +1611,7 @@ ShellCommandRunPing (
     // 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
@@ -1632,7 +1629,7 @@ ShellCommandRunPing (
     // 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
@@ -1650,7 +1647,7 @@ ShellCommandRunPing (
   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
@@ -1659,7 +1656,7 @@ ShellCommandRunPing (
       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
@@ -1669,12 +1666,12 @@ ShellCommandRunPing (
   //\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
@@ -1687,7 +1684,7 @@ ShellCommandRunPing (
       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