ICMP (Internet Control Message Protocol) More...
#include "core/net.h"
Go to the source code of this file.
Enumerations | |
enum | IcmpType { ICMP_TYPE_ECHO_REPLY = 0, ICMP_TYPE_DEST_UNREACHABLE = 3, ICMP_TYPE_SOURCE_QUENCH = 4, ICMP_TYPE_REDIRECT = 5, ICMP_TYPE_ECHO_REQUEST = 8, 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 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 | |
uint8_t | parameter |
uint8_t | unused [3] |
IcmpErrorMessage | |
IcmpDestUnreachableMessage | |
IcmpTimeExceededMessage | |
uint8_t | pointer |
IcmpParamProblemMessage | |
uint16_t | identifier |
uint16_t | sequenceNumber |
IcmpEchoMessage | |
Detailed Description
ICMP (Internet Control Message Protocol)
License
SPDX-License-Identifier: GPL-2.0-or-later
Copyright (C) 2010-2024 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.4.4
Definition in file icmp.h.
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 |