]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h
BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Icmp.h
index 7999b2e306463ddbbb80946c11c91e9d2feefa0b..922886a96e67a61886405779b77bb4c3631885f6 100644 (file)
@@ -1,86 +1,69 @@
 /** @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
-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
-};\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
@@ -90,10 +73,25 @@ typedef struct {
 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