]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Icmp.h
CommitLineData
83cbd279 1/** @file\r
3e8c18da 2 Header file for ICMP protocol.\r
d1102dba
LG
3\r
4Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
83cbd279 6\r
83cbd279 7**/\r
8\r
9#ifndef __EFI_IP4_ICMP_H__\r
10#define __EFI_IP4_ICMP_H__\r
11\r
83cbd279 12 //\r
13 // ICMP type definations\r
14 //\r
f6b7393c 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
83cbd279 26\r
f6b7393c 27#define ICMP_DEFAULT_CODE 0\r
83cbd279 28\r
29 //\r
30 // ICMP code definations for ICMP_DEST_UNREACHABLE\r
31 //\r
f6b7393c 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
83cbd279 45\r
46 //\r
47 // ICMP code definations for ICMP_TIME_EXCEEDED\r
48 //\r
f6b7393c 49#define ICMP_TIMEOUT_IN_TRANSIT 0\r
50#define ICMP_TIMEOUT_REASSEMBLE 1 // Host may generate\r
83cbd279 51\r
52 //\r
53 // ICMP code definations for ICMP_TIME_EXCEEDED\r
54 //\r
f6b7393c 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
83cbd279 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
f6b7393c 64#define ICMP_INVALID_MESSAGE 0\r
65#define ICMP_ERROR_MESSAGE 1\r
66#define ICMP_QUERY_MESSAGE 2\r
83cbd279 67\r
68typedef struct {\r
69 UINT8 IcmpType;\r
70 UINT8 IcmpClass;\r
71} IP4_ICMP_CLASS;\r
72\r
73extern IP4_ICMP_CLASS mIcmpClass[];\r
74extern EFI_IP4_ICMP_TYPE mIp4SupportedIcmp[];\r
75\r
2ff29212 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
1f6729ff 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
2ff29212 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
83cbd279 91EFI_STATUS\r
92Ip4IcmpHandle (\r
2ff29212 93 IN IP4_SERVICE *IpSb,\r
94 IN IP4_HEAD *Head,\r
95 IN NET_BUF *Packet\r
83cbd279 96 );\r
97#endif\r