]>
Commit | Line | Data |
---|---|---|
83cbd279 | 1 | /** @file\r |
3e8c18da | 2 | Header file for ICMP protocol.\r |
d1102dba LG |
3 | \r |
4 | Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r | |
9d510e61 | 5 | SPDX-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 |
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 | |
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 | 91 | EFI_STATUS\r |
92 | Ip4IcmpHandle (\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 |