]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.c
BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Icmp.c
index a4d09abd74ec73a50633b3afadbf22741dcd562c..052d6b77f79a08186f11c65f79df674049259760 100644 (file)
@@ -1,13 +1,7 @@
 /** @file\r
 \r
-Copyright (c) 2005 - 2009, 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
-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
+Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -72,7 +66,7 @@ mIp4SupportedIcmp[23] = {
 /**\r
   Process the ICMP redirect. Find the instance then update\r
   its route cache.\r
-  \r
+\r
   All kinds of redirect is treated as host redirect as\r
   specified by RFC1122 3.3.1.2:\r
   "Since the subnet mask appropriate to the destination\r
@@ -80,7 +74,7 @@ mIp4SupportedIcmp[23] = {
   message SHOULD be treated identically to a Host Redirect\r
   message;"\r
 \r
-  @param[in]  IpSb               The IP4 service binding instance that received \r
+  @param[in]  IpSb               The IP4 service binding instance that received\r
                                  the packet.\r
   @param[in]  Head               The IP head of the received ICMPpacket.\r
   @param[in]  Packet             The content of the ICMP redirect packet with IP\r
@@ -158,15 +152,15 @@ Ip4ProcessIcmpRedirect (
   update call Ip4ProcessIcmpRedirect to update the IP instance's\r
   route cache, otherwise, deliver the packet to upper layer.\r
 \r
-  @param[in]  IpSb               The IP service that received the packet.\r
-  @param[in]  Head               The IP head of the ICMP error packet\r
-  @param[in]  Packet             The content of the ICMP error with IP head\r
+  @param[in]  IpSb               The IP4 service that received the packet.\r
+  @param[in]  Head               The IP4 head of the ICMP error packet\r
+  @param[in]  Packet             The content of the ICMP error with IP4 head\r
                                  removed.\r
 \r
   @retval EFI_SUCCESS            The ICMP error is processed successfully.\r
   @retval EFI_INVALID_PARAMETER  The packet is invalid\r
   @retval Others                 Failed to process the packet.\r
-  \r
+\r
 **/\r
 EFI_STATUS\r
 Ip4ProcessIcmpError (\r
@@ -193,16 +187,16 @@ Ip4ProcessIcmpError (
   }\r
 \r
   IP4_GET_CLIP_INFO (Packet)->Status = EFI_ICMP_ERROR;\r
-  return Ip4Demultiplex (IpSb, Head, Packet);\r
+  return Ip4Demultiplex (IpSb, Head, Packet, NULL, 0);\r
 }\r
 \r
 \r
 /**\r
   Replay an ICMP echo request.\r
 \r
-  @param[in]  IpSb               The IP service that receivd the packet\r
-  @param[in]  Head               The IP head of the ICMP error packet\r
-  @param[in]  Packet             The content of the ICMP error with IP head\r
+  @param[in]  IpSb               The IP4 service that receivd the packet\r
+  @param[in]  Head               The IP4 head of the ICMP error packet\r
+  @param[in]  Packet             The content of the ICMP error with IP4 head\r
                                  removed.\r
 \r
   @retval EFI_OUT_OF_RESOURCES   Failed to allocate resource.\r
@@ -240,6 +234,7 @@ Ip4IcmpReplyEcho (
   // update is omitted.\r
   //\r
   Icmp                = (IP4_ICMP_QUERY_HEAD *) NetbufGetByte (Data, 0, NULL);\r
+  ASSERT (Icmp != NULL);\r
   Icmp->Head.Type     = ICMP_ECHO_REPLY;\r
   Icmp->Head.Checksum = 0;\r
   Icmp->Head.Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) Icmp, Data->TotalSize));\r
@@ -266,6 +261,9 @@ Ip4IcmpReplyEcho (
              Ip4SysPacketSent,\r
              NULL\r
              );\r
+  if (EFI_ERROR (Status)) {\r
+    NetbufFree (Data);\r
+  }\r
 \r
 ON_EXIT:\r
   NetbufFree (Packet);\r
@@ -277,9 +275,9 @@ ON_EXIT:
   Process the ICMP query message. If it is an ICMP echo\r
   request, answer it. Otherwise deliver it to upper layer.\r
 \r
-  @param[in]  IpSb               The IP service that receivd the packet\r
-  @param[in]  Head               The IP head of the ICMP query packet\r
-  @param[in]  Packet             The content of the ICMP query with IP head\r
+  @param[in]  IpSb               The IP4 service that receivd the packet\r
+  @param[in]  Head               The IP4 head of the ICMP query packet\r
+  @param[in]  Packet             The content of the ICMP query with IP4 head\r
                                  removed.\r
 \r
   @retval EFI_INVALID_PARAMETER  The packet is invalid\r
@@ -307,7 +305,7 @@ Ip4ProcessIcmpQuery (
     return Ip4IcmpReplyEcho (IpSb, Head, Packet);\r
   }\r
 \r
-  return Ip4Demultiplex (IpSb, Head, Packet);\r
+  return Ip4Demultiplex (IpSb, Head, Packet, NULL, 0);\r
 }\r
 \r
 \r
@@ -316,9 +314,9 @@ Ip4ProcessIcmpQuery (
   then according to the message types, process it as query or\r
   error packet.\r
 \r
-  @param[in]  IpSb               The IP service that receivd the packet\r
-  @param[in]  Head               The IP head of the ICMP query packet\r
-  @param[in]  Packet             The content of the ICMP query with IP head\r
+  @param[in]  IpSb               The IP4 service that receivd the packet.\r
+  @param[in]  Head               The IP4 head of the ICMP query packet.\r
+  @param[in]  Packet             The content of the ICMP query with IP4 head\r
                                  removed.\r
 \r
   @retval EFI_INVALID_PARAMETER  The packet is malformated.\r