/** @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
/**\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
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
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
}\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
// 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
Ip4SysPacketSent,\r
NULL\r
);\r
+ if (EFI_ERROR (Status)) {\r
+ NetbufFree (Data);\r
+ }\r
\r
ON_EXIT:\r
NetbufFree (Packet);\r
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
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
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