]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Icmp.h
synced function header
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Icmp.h
CommitLineData
83cbd279 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
5405e9a6 27typedef enum {\r
83cbd279 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
5405e9a6 83} ICMP_ENUM_TYPES;\r
83cbd279 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
2ff29212 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
83cbd279 108EFI_STATUS\r
109Ip4IcmpHandle (\r
2ff29212 110 IN IP4_SERVICE *IpSb,\r
111 IN IP4_HEAD *Head,\r
112 IN NET_BUF *Packet\r
83cbd279 113 );\r
114#endif\r