ICMP (Internet Control Message Protocol) More...
#include "core/net.h"Go to the source code of this file.
Macros | |
| #define | ICMP_QUERY_ID_MIN 0 |
| #define | ICMP_QUERY_ID_MAX 32767 |
Enumerations | |
| enum | IcmpType { ICMP_TYPE_ECHO_REPLY = 0, ICMP_TYPE_DEST_UNREACHABLE = 3, ICMP_TYPE_SOURCE_QUENCH = 4, ICMP_TYPE_REDIRECT = 5, ICMP_TYPE_ALTERNATE_HOST_ADDR = 6, ICMP_TYPE_ECHO_REQUEST = 8, ICMP_TYPE_ROUTER_ADV = 9, ICMP_TYPE_ROUTER_SOL = 10, ICMP_TYPE_TIME_EXCEEDED = 11, ICMP_TYPE_PARAM_PROBLEM = 12, ICMP_TYPE_TIMESTAMP_REQUEST = 13, ICMP_TYPE_TIMESTAMP_REPLY = 14, ICMP_TYPE_INFO_REQUEST = 15, ICMP_TYPE_INFO_REPLY = 16, ICMP_TYPE_ADDR_MASK_REQUEST = 17, ICMP_TYPE_ADDR_MASK_REPLY = 18, ICMP_TYPE_TRACEROUTE = 30 } |
| ICMP message type. More... | |
| enum | IcmpDestUnreachableCode { ICMP_CODE_NET_UNREACHABLE = 0, ICMP_CODE_HOST_UNREACHABLE = 1, ICMP_CODE_PROTOCOL_UNREACHABLE = 2, ICMP_CODE_PORT_UNREACHABLE = 3, ICMP_CODE_FRAG_NEEDED_AND_DF_SET = 4, ICMP_CODE_SOURCE_ROUTE_FAILED = 5 } |
| Destination Unreachable message codes. More... | |
| enum | IcmpTimeExceededCode { ICMP_CODE_TTL_EXCEEDED = 0, ICMP_CODE_REASSEMBLY_TIME_EXCEEDED = 1 } |
| Time Exceeded message codes. More... | |
Functions | |
| error_t | icmpEnableEchoRequests (NetInterface *interface, bool_t enable) |
| Enable support for ICMP Echo Request messages. More... | |
| error_t | icmpEnableBroadcastEchoRequests (NetInterface *interface, bool_t enable) |
| Enable support for broadcast ICMP Echo Request messages. More... | |
| void | icmpProcessMessage (NetInterface *interface, const Ipv4PseudoHeader *requestPseudoHeader, const NetBuffer *buffer, size_t offset) |
| Incoming ICMP message processing. More... | |
| void | icmpProcessEchoRequest (NetInterface *interface, const Ipv4PseudoHeader *requestPseudoHeader, const NetBuffer *request, size_t requestOffset) |
| Echo Request message processing. More... | |
| error_t | icmpSendErrorMessage (NetInterface *interface, uint8_t type, uint8_t code, uint8_t parameter, const NetBuffer *ipPacket, size_t ipPacketOffset) |
| Send an ICMP Error message. More... | |
| void | icmpUpdateInStats (uint8_t type) |
| Update ICMP input statistics. More... | |
| void | icmpUpdateOutStats (uint8_t type) |
| Update ICMP output statistics. More... | |
| void | icmpDumpMessage (const IcmpHeader *message) |
| Dump ICMP message for debugging purpose. More... | |
| void | icmpDumpEchoMessage (const IcmpEchoMessage *message) |
| Dump ICMP Echo Request or Echo Reply message. More... | |
| void | icmpDumpErrorMessage (const IcmpErrorMessage *message) |
| Dump generic ICMP Error message. More... | |
Variables | |
| typedef | __packed_struct |
| ICMP header. More... | |
| uint8_t | code |
| uint16_t | checksum |
| uint8_t | data [] |
| IcmpHeader | |
| uint16_t | identifier |
| uint16_t | unused |
| IcmpQueryMessage | |
| uint16_t | sequenceNumber |
| IcmpEchoMessage | |
| uint8_t | parameter |
| IcmpErrorMessage | |
| IcmpDestUnreachableMessage | |
| IcmpTimeExceededMessage | |
| uint8_t | pointer |
| IcmpParamProblemMessage | |
Detailed Description
ICMP (Internet Control Message Protocol)
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2025 Oryx Embedded SARL. All rights reserved.
This file is part of CycloneTCP Open.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- Version
- 2.5.4
Definition in file icmp.h.
Macro Definition Documentation
◆ ICMP_QUERY_ID_MAX
◆ ICMP_QUERY_ID_MIN
Enumeration Type Documentation
◆ IcmpDestUnreachableCode
◆ IcmpTimeExceededCode
| enum IcmpTimeExceededCode |
◆ IcmpType
| enum IcmpType |
ICMP message type.
The type field indicates the type of the message. Its value determines the format of the remaining data
Function Documentation
◆ icmpDumpEchoMessage()
| void icmpDumpEchoMessage | ( | const IcmpEchoMessage * | message | ) |
◆ icmpDumpErrorMessage()
| void icmpDumpErrorMessage | ( | const IcmpErrorMessage * | message | ) |
◆ icmpDumpMessage()
| void icmpDumpMessage | ( | const IcmpHeader * | message | ) |
◆ icmpEnableBroadcastEchoRequests()
| error_t icmpEnableBroadcastEchoRequests | ( | NetInterface * | interface, |
| bool_t | enable | ||
| ) |
Enable support for broadcast ICMP Echo Request messages.
- Parameters
-
[in] interface Underlying network interface [in] enable This flag specifies whether the host will respond to broadcast ICMP Echo Requests. When the flag is set to FALSE, incoming ICMP Echo Request messages destined to a broadcast address will be dropped
- Returns
- Error code
◆ icmpEnableEchoRequests()
| error_t icmpEnableEchoRequests | ( | NetInterface * | interface, |
| bool_t | enable | ||
| ) |
Enable support for ICMP Echo Request messages.
- Parameters
-
[in] interface Underlying network interface [in] enable This flag specifies whether the host will respond to ICMP Echo Requests. When the flag is set to FALSE, incoming ICMP Echo Request messages will be dropped
- Returns
- Error code
◆ icmpProcessEchoRequest()
| void icmpProcessEchoRequest | ( | NetInterface * | interface, |
| const Ipv4PseudoHeader * | requestPseudoHeader, | ||
| const NetBuffer * | request, | ||
| size_t | requestOffset | ||
| ) |
Echo Request message processing.
- Parameters
-
[in] interface Underlying network interface [in] requestPseudoHeader IPv4 pseudo header [in] request Multi-part buffer containing the incoming Echo Request message [in] requestOffset Offset to the first byte of the Echo Request message
◆ icmpProcessMessage()
| void icmpProcessMessage | ( | NetInterface * | interface, |
| const Ipv4PseudoHeader * | requestPseudoHeader, | ||
| const NetBuffer * | buffer, | ||
| size_t | offset | ||
| ) |
◆ icmpSendErrorMessage()
| error_t icmpSendErrorMessage | ( | NetInterface * | interface, |
| uint8_t | type, | ||
| uint8_t | code, | ||
| uint8_t | parameter, | ||
| const NetBuffer * | ipPacket, | ||
| size_t | ipPacketOffset | ||
| ) |
Send an ICMP Error message.
- Parameters
-
[in] interface Underlying network interface [in] type Message type [in] code Specific message code [in] parameter Specific message parameter [in] ipPacket Multi-part buffer that holds the invoking IPv4 packet [in] ipPacketOffset Offset to the first byte of the IPv4 packet
- Returns
- Error code
◆ icmpUpdateInStats()
| void icmpUpdateInStats | ( | uint8_t | type | ) |
◆ icmpUpdateOutStats()
| void icmpUpdateOutStats | ( | uint8_t | type | ) |
Variable Documentation
◆ __packed_struct
| typedef __packed_struct |
