]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h
code scrub fix
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Icmp.h
CommitLineData
83cbd279 1/** @file\r
3e8c18da 2 Header file for ICMP protocol.\r
3 \r
4Copyright (c) 2005 - 2006, Intel Corporation.<BR>\r
83cbd279 5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
83cbd279 13**/\r
14\r
15#ifndef __EFI_IP4_ICMP_H__\r
16#define __EFI_IP4_ICMP_H__\r
17\r
5405e9a6 18typedef enum {\r
83cbd279 19 //\r
20 // ICMP type definations\r
21 //\r
22 ICMP_ECHO_REPLY = 0,\r
23 ICMP_DEST_UNREACHABLE = 3,\r
24 ICMP_SOURCE_QUENCH = 4,\r
25 ICMP_REDIRECT = 5,\r
26 ICMP_ECHO_REQUEST = 8,\r
27 ICMP_TIME_EXCEEDED = 11,\r
28 ICMP_PARAMETER_PROBLEM = 12,\r
29 ICMP_TIMESTAMP = 13,\r
30 ICMP_INFO_REQUEST = 15,\r
31 ICMP_INFO_REPLY = 16,\r
32 ICMP_TYPE_MAX = ICMP_INFO_REPLY,\r
33\r
34 ICMP_DEFAULT_CODE = 0,\r
35\r
36 //\r
37 // ICMP code definations for ICMP_DEST_UNREACHABLE\r
38 //\r
39 ICMP_NET_UNREACHABLE = 0,\r
40 ICMP_HOST_UNREACHABLE = 1,\r
41 ICMP_PROTO_UNREACHABLE = 2, // Host may generate\r
42 ICMP_PORT_UNREACHABLE = 3, // Host may generate\r
43 ICMP_FRAGMENT_FAILED = 4,\r
44 ICMP_SOURCEROUTE_FAILED = 5, // Host may generate\r
45 ICMP_NET_UNKNOWN = 6,\r
46 ICMP_HOST_UNKNOWN = 7,\r
47 ICMP_SOURCE_ISOLATED = 8,\r
48 ICMP_NET_PROHIBITED = 9,\r
49 ICMP_HOST_PROHIBITED = 10,\r
50 ICMP_NET_UNREACHABLE_TOS = 11,\r
51 ICMP_HOST_UNREACHABLE_TOS = 12,\r
52\r
53 //\r
54 // ICMP code definations for ICMP_TIME_EXCEEDED\r
55 //\r
56 ICMP_TIMEOUT_IN_TRANSIT = 0,\r
57 ICMp_TIMEOUT_REASSEMBLE = 1, // Host may generate\r
58\r
59 //\r
60 // ICMP code definations for ICMP_TIME_EXCEEDED\r
61 //\r
62 ICMP_NET_REDIRECT = 0,\r
63 ICMP_HOST_REDIRECT = 1,\r
64 ICMP_NET_TOS_REDIRECT = 2,\r
65 ICMP_HOST_TOS_REDIRECT = 3,\r
66\r
67 //\r
68 // ICMP message classes, each class of ICMP message shares\r
69 // a common message format. INVALID_MESSAGE is only a flag.\r
70 //\r
71 ICMP_INVALID_MESSAGE = 0,\r
72 ICMP_ERROR_MESSAGE = 1,\r
73 ICMP_QUERY_MESSAGE = 2\r
5405e9a6 74} ICMP_ENUM_TYPES;\r
83cbd279 75\r
76typedef struct {\r
77 UINT8 IcmpType;\r
78 UINT8 IcmpClass;\r
79} IP4_ICMP_CLASS;\r
80\r
81extern IP4_ICMP_CLASS mIcmpClass[];\r
82extern EFI_IP4_ICMP_TYPE mIp4SupportedIcmp[];\r
83\r
2ff29212 84/**\r
85 Handle the ICMP packet. First validate the message format,\r
86 then according to the message types, process it as query or\r
87 error packet.\r
88\r
3e8c18da 89 @param[in] IpSb The IP service that receivd the packet\r
90 @param[in] Head The IP head of the ICMP query packet\r
91 @param[in] Packet The content of the ICMP query with IP head\r
2ff29212 92 removed.\r
93\r
94 @retval EFI_INVALID_PARAMETER The packet is malformated.\r
95 @retval EFI_SUCCESS The ICMP message is successfully processed.\r
96 @retval Others Failed to handle ICMP packet.\r
97\r
98**/\r
83cbd279 99EFI_STATUS\r
100Ip4IcmpHandle (\r
2ff29212 101 IN IP4_SERVICE *IpSb,\r
102 IN IP4_HEAD *Head,\r
103 IN NET_BUF *Packet\r
83cbd279 104 );\r
105#endif\r