BaseTools:Change the path of the file that Binary Cache
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Icmp.h
1 /** @file\r
2   Header file for ICMP protocol.\r
3 \r
4 Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6 \r
7 **/\r
8 \r
9 #ifndef __EFI_IP4_ICMP_H__\r
10 #define __EFI_IP4_ICMP_H__\r
11 \r
12   //\r
13   // ICMP type definations\r
14   //\r
15 #define ICMP_ECHO_REPLY            0\r
16 #define ICMP_DEST_UNREACHABLE      3\r
17 #define ICMP_SOURCE_QUENCH         4\r
18 #define ICMP_REDIRECT              5\r
19 #define ICMP_ECHO_REQUEST          8\r
20 #define ICMP_TIME_EXCEEDED         11\r
21 #define ICMP_PARAMETER_PROBLEM     12\r
22 #define ICMP_TIMESTAMP             13\r
23 #define ICMP_INFO_REQUEST          15\r
24 #define ICMP_INFO_REPLY            16\r
25 #define ICMP_TYPE_MAX              ICMP_INFO_REPLY\r
26 \r
27 #define ICMP_DEFAULT_CODE          0\r
28 \r
29   //\r
30   // ICMP code definations for ICMP_DEST_UNREACHABLE\r
31   //\r
32 #define ICMP_NET_UNREACHABLE       0\r
33 #define ICMP_HOST_UNREACHABLE      1\r
34 #define ICMP_PROTO_UNREACHABLE     2  // Host may generate\r
35 #define ICMP_PORT_UNREACHABLE      3  // Host may generate\r
36 #define ICMP_FRAGMENT_FAILED       4\r
37 #define ICMP_SOURCEROUTE_FAILED    5  // Host may generate\r
38 #define ICMP_NET_UNKNOWN           6\r
39 #define ICMP_HOST_UNKNOWN          7\r
40 #define ICMP_SOURCE_ISOLATED       8\r
41 #define ICMP_NET_PROHIBITED        9\r
42 #define ICMP_HOST_PROHIBITED       10\r
43 #define ICMP_NET_UNREACHABLE_TOS   11\r
44 #define ICMP_HOST_UNREACHABLE_TOS  12\r
45 \r
46   //\r
47   // ICMP code definations for ICMP_TIME_EXCEEDED\r
48   //\r
49 #define ICMP_TIMEOUT_IN_TRANSIT    0\r
50 #define ICMP_TIMEOUT_REASSEMBLE    1  // Host may generate\r
51 \r
52   //\r
53   // ICMP code definations for ICMP_TIME_EXCEEDED\r
54   //\r
55 #define ICMP_NET_REDIRECT          0\r
56 #define ICMP_HOST_REDIRECT         1\r
57 #define ICMP_NET_TOS_REDIRECT      2\r
58 #define ICMP_HOST_TOS_REDIRECT     3\r
59 \r
60   //\r
61   // ICMP message classes, each class of ICMP message shares\r
62   // a common message format. INVALID_MESSAGE is only a flag.\r
63   //\r
64 #define ICMP_INVALID_MESSAGE       0\r
65 #define ICMP_ERROR_MESSAGE         1\r
66 #define ICMP_QUERY_MESSAGE         2\r
67 \r
68 typedef struct {\r
69   UINT8                   IcmpType;\r
70   UINT8                   IcmpClass;\r
71 } IP4_ICMP_CLASS;\r
72 \r
73 extern IP4_ICMP_CLASS     mIcmpClass[];\r
74 extern EFI_IP4_ICMP_TYPE  mIp4SupportedIcmp[];\r
75 \r
76 /**\r
77   Handle the ICMP packet. First validate the message format,\r
78   then according to the message types, process it as query or\r
79   error packet.\r
80 \r
81   @param[in]  IpSb               The IP4 service that receivd the packet.\r
82   @param[in]  Head               The IP4 head of the ICMP query packet.\r
83   @param[in]  Packet             The content of the ICMP query with IP4 head\r
84                                  removed.\r
85 \r
86   @retval EFI_INVALID_PARAMETER  The packet is malformated.\r
87   @retval EFI_SUCCESS            The ICMP message is successfully processed.\r
88   @retval Others                 Failed to handle ICMP packet.\r
89 \r
90 **/\r
91 EFI_STATUS\r
92 Ip4IcmpHandle (\r
93   IN IP4_SERVICE            *IpSb,\r
94   IN IP4_HEAD               *Head,\r
95   IN NET_BUF                *Packet\r
96   );\r
97 #endif\r