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