/** @file\r
-\r
-Copyright (c) 2005 - 2006, Intel Corporation\r
-All rights reserved. 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
-\r
-\r
-Module Name:\r
-\r
- Ip4Icmp.h\r
-\r
-Abstract:\r
-\r
Header file for ICMP protocol.\r
\r
+Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#ifndef __EFI_IP4_ICMP_H__\r
#define __EFI_IP4_ICMP_H__\r
\r
-typedef enum {\r
//\r
// ICMP type definations\r
//\r
- ICMP_ECHO_REPLY = 0,\r
- ICMP_DEST_UNREACHABLE = 3,\r
- ICMP_SOURCE_QUENCH = 4,\r
- ICMP_REDIRECT = 5,\r
- ICMP_ECHO_REQUEST = 8,\r
- ICMP_TIME_EXCEEDED = 11,\r
- ICMP_PARAMETER_PROBLEM = 12,\r
- ICMP_TIMESTAMP = 13,\r
- ICMP_INFO_REQUEST = 15,\r
- ICMP_INFO_REPLY = 16,\r
- ICMP_TYPE_MAX = ICMP_INFO_REPLY,\r
-\r
- ICMP_DEFAULT_CODE = 0,\r
+#define ICMP_ECHO_REPLY 0\r
+#define ICMP_DEST_UNREACHABLE 3\r
+#define ICMP_SOURCE_QUENCH 4\r
+#define ICMP_REDIRECT 5\r
+#define ICMP_ECHO_REQUEST 8\r
+#define ICMP_TIME_EXCEEDED 11\r
+#define ICMP_PARAMETER_PROBLEM 12\r
+#define ICMP_TIMESTAMP 13\r
+#define ICMP_INFO_REQUEST 15\r
+#define ICMP_INFO_REPLY 16\r
+#define ICMP_TYPE_MAX ICMP_INFO_REPLY\r
+\r
+#define ICMP_DEFAULT_CODE 0\r
\r
//\r
// ICMP code definations for ICMP_DEST_UNREACHABLE\r
//\r
- ICMP_NET_UNREACHABLE = 0,\r
- ICMP_HOST_UNREACHABLE = 1,\r
- ICMP_PROTO_UNREACHABLE = 2, // Host may generate\r
- ICMP_PORT_UNREACHABLE = 3, // Host may generate\r
- ICMP_FRAGMENT_FAILED = 4,\r
- ICMP_SOURCEROUTE_FAILED = 5, // Host may generate\r
- ICMP_NET_UNKNOWN = 6,\r
- ICMP_HOST_UNKNOWN = 7,\r
- ICMP_SOURCE_ISOLATED = 8,\r
- ICMP_NET_PROHIBITED = 9,\r
- ICMP_HOST_PROHIBITED = 10,\r
- ICMP_NET_UNREACHABLE_TOS = 11,\r
- ICMP_HOST_UNREACHABLE_TOS = 12,\r
+#define ICMP_NET_UNREACHABLE 0\r
+#define ICMP_HOST_UNREACHABLE 1\r
+#define ICMP_PROTO_UNREACHABLE 2 // Host may generate\r
+#define ICMP_PORT_UNREACHABLE 3 // Host may generate\r
+#define ICMP_FRAGMENT_FAILED 4\r
+#define ICMP_SOURCEROUTE_FAILED 5 // Host may generate\r
+#define ICMP_NET_UNKNOWN 6\r
+#define ICMP_HOST_UNKNOWN 7\r
+#define ICMP_SOURCE_ISOLATED 8\r
+#define ICMP_NET_PROHIBITED 9\r
+#define ICMP_HOST_PROHIBITED 10\r
+#define ICMP_NET_UNREACHABLE_TOS 11\r
+#define ICMP_HOST_UNREACHABLE_TOS 12\r
\r
//\r
// ICMP code definations for ICMP_TIME_EXCEEDED\r
//\r
- ICMP_TIMEOUT_IN_TRANSIT = 0,\r
- ICMp_TIMEOUT_REASSEMBLE = 1, // Host may generate\r
+#define ICMP_TIMEOUT_IN_TRANSIT 0\r
+#define ICMP_TIMEOUT_REASSEMBLE 1 // Host may generate\r
\r
//\r
// ICMP code definations for ICMP_TIME_EXCEEDED\r
//\r
- ICMP_NET_REDIRECT = 0,\r
- ICMP_HOST_REDIRECT = 1,\r
- ICMP_NET_TOS_REDIRECT = 2,\r
- ICMP_HOST_TOS_REDIRECT = 3,\r
+#define ICMP_NET_REDIRECT 0\r
+#define ICMP_HOST_REDIRECT 1\r
+#define ICMP_NET_TOS_REDIRECT 2\r
+#define ICMP_HOST_TOS_REDIRECT 3\r
\r
//\r
// ICMP message classes, each class of ICMP message shares\r
// a common message format. INVALID_MESSAGE is only a flag.\r
//\r
- ICMP_INVALID_MESSAGE = 0,\r
- ICMP_ERROR_MESSAGE = 1,\r
- ICMP_QUERY_MESSAGE = 2\r
-} ICMP_ENUM_TYPES;\r
+#define ICMP_INVALID_MESSAGE 0\r
+#define ICMP_ERROR_MESSAGE 1\r
+#define ICMP_QUERY_MESSAGE 2\r
\r
typedef struct {\r
UINT8 IcmpType;\r
extern IP4_ICMP_CLASS mIcmpClass[];\r
extern EFI_IP4_ICMP_TYPE mIp4SupportedIcmp[];\r
\r
+/**\r
+ Handle the ICMP packet. First validate the message format,\r
+ then according to the message types, process it as query or\r
+ error packet.\r
+\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
+ @retval EFI_SUCCESS The ICMP message is successfully processed.\r
+ @retval Others Failed to handle ICMP packet.\r
+\r
+**/\r
EFI_STATUS\r
Ip4IcmpHandle (\r
- IN IP4_SERVICE *IpSb,\r
- IN IP4_HEAD *Header,\r
- IN NET_BUF *Packet\r
+ IN IP4_SERVICE *IpSb,\r
+ IN IP4_HEAD *Head,\r
+ IN NET_BUF *Packet\r
);\r
#endif\r