ICMPv6 (Internet Control Message Protocol Version 6) More...
#include "core/net.h"
Go to the source code of this file.
Functions | |
error_t | icmpv6EnableEchoRequests (NetInterface *interface, bool_t enable) |
Enable support for ICMPv6 Echo Request messages. More... | |
error_t | icmpv6EnableMulticastEchoRequests (NetInterface *interface, bool_t enable) |
Enable support for multicast ICMPv6 Echo Request messages. More... | |
void | icmpv6ProcessMessage (NetInterface *interface, const Ipv6PseudoHeader *pseudoHeader, const NetBuffer *buffer, size_t offset, const NetRxAncillary *ancillary) |
Incoming ICMPv6 message processing. More... | |
void | icmpv6ProcessDestUnreachable (NetInterface *interface, const Ipv6PseudoHeader *pseudoHeader, const NetBuffer *buffer, size_t offset) |
Destination Unreachable message processing. More... | |
void | icmpv6ProcessPacketTooBig (NetInterface *interface, const Ipv6PseudoHeader *pseudoHeader, const NetBuffer *buffer, size_t offset) |
Packet Too Big message processing. More... | |
void | icmpv6ProcessEchoRequest (NetInterface *interface, const Ipv6PseudoHeader *requestPseudoHeader, const NetBuffer *request, size_t requestOffset) |
Echo Request message processing. More... | |
error_t | icmpv6SendErrorMessage (NetInterface *interface, uint8_t type, uint8_t code, uint32_t parameter, const NetBuffer *ipPacket, size_t ipPacketOffset) |
Send an ICMPv6 Error message. More... | |
void | icmpv6DumpMessage (const Icmpv6Header *message) |
Dump ICMPv6 message for debugging purpose. More... | |
void | icmpv6DumpDestUnreachableMessage (const Icmpv6DestUnreachableMessage *message) |
Dump ICMPv6 Destination Unreachable message. More... | |
void | icmpv6DumpPacketTooBigMessage (const Icmpv6PacketTooBigMessage *message) |
Dump ICMPv6 Packet Too Big message. More... | |
void | icmpv6DumpEchoMessage (const Icmpv6EchoMessage *message) |
Dump ICMPv6 Echo Request or Echo Reply message. More... | |
void | icmpv6DumpErrorMessage (const Icmpv6ErrorMessage *message) |
Dump generic ICMPv6 Error message. More... | |
Variables | |
typedef | __packed_struct |
ICMPv6 header. More... | |
uint8_t | code |
uint16_t | checksum |
uint8_t | data [] |
Icmpv6Header | |
uint32_t | parameter |
Icmpv6ErrorMessage | |
uint32_t | unused |
Icmpv6DestUnreachableMessage | |
uint32_t | mtu |
Icmpv6PacketTooBigMessage | |
Icmpv6TimeExceededMessage | |
uint32_t | pointer |
Icmpv6ParamProblemMessage | |
uint16_t | identifier |
uint16_t | sequenceNumber |
Icmpv6EchoMessage | |
Detailed Description
ICMPv6 (Internet Control Message Protocol Version 6)
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 icmpv6.h.
Enumeration Type Documentation
◆ Icmpv6DestUnreachableCode
◆ Icmpv6ParamProblemCode
◆ Icmpv6TimeExceededCode
◆ Icmpv6Type
enum Icmpv6Type |
ICMPv6 message type.
The type field indicates the type of the message. Its value determines the format of the remaining data
Function Documentation
◆ icmpv6DumpDestUnreachableMessage()
void icmpv6DumpDestUnreachableMessage | ( | const Icmpv6DestUnreachableMessage * | message | ) |
◆ icmpv6DumpEchoMessage()
void icmpv6DumpEchoMessage | ( | const Icmpv6EchoMessage * | message | ) |
◆ icmpv6DumpErrorMessage()
void icmpv6DumpErrorMessage | ( | const Icmpv6ErrorMessage * | message | ) |
◆ icmpv6DumpMessage()
void icmpv6DumpMessage | ( | const Icmpv6Header * | message | ) |
◆ icmpv6DumpPacketTooBigMessage()
void icmpv6DumpPacketTooBigMessage | ( | const Icmpv6PacketTooBigMessage * | message | ) |
◆ icmpv6EnableEchoRequests()
error_t icmpv6EnableEchoRequests | ( | NetInterface * | interface, |
bool_t | enable | ||
) |
Enable support for ICMPv6 Echo Request messages.
- Parameters
-
[in] interface Underlying network interface [in] enable This flag specifies whether the host will respond to ICMPv6 Echo Requests. When the flag is set to FALSE, incoming ICMPv6 Echo Request messages will be dropped
- Returns
- Error code
◆ icmpv6EnableMulticastEchoRequests()
error_t icmpv6EnableMulticastEchoRequests | ( | NetInterface * | interface, |
bool_t | enable | ||
) |
Enable support for multicast ICMPv6 Echo Request messages.
- Parameters
-
[in] interface Underlying network interface [in] enable This flag specifies whether the host will respond to multicast ICMPv6 Echo Requests. When the flag is set to FALSE, incoming ICMPv6 Echo Request messages destined to a multicast address will be dropped
- Returns
- Error code
◆ icmpv6ProcessDestUnreachable()
void icmpv6ProcessDestUnreachable | ( | NetInterface * | interface, |
const Ipv6PseudoHeader * | pseudoHeader, | ||
const NetBuffer * | buffer, | ||
size_t | offset | ||
) |
◆ icmpv6ProcessEchoRequest()
void icmpv6ProcessEchoRequest | ( | NetInterface * | interface, |
const Ipv6PseudoHeader * | requestPseudoHeader, | ||
const NetBuffer * | request, | ||
size_t | requestOffset | ||
) |
Echo Request message processing.
- Parameters
-
[in] interface Underlying network interface [in] requestPseudoHeader IPv6 pseudo header [in] request Multi-part buffer containing the incoming ICMPv6 message [in] requestOffset Offset to the first byte of the ICMPv6 message
◆ icmpv6ProcessMessage()
void icmpv6ProcessMessage | ( | NetInterface * | interface, |
const Ipv6PseudoHeader * | pseudoHeader, | ||
const NetBuffer * | buffer, | ||
size_t | offset, | ||
const NetRxAncillary * | ancillary | ||
) |
Incoming ICMPv6 message processing.
- Parameters
-
[in] interface Underlying network interface [in] pseudoHeader IPv6 pseudo header [in] buffer Multi-part buffer containing the incoming ICMPv6 message [in] offset Offset to the first byte of the ICMPv6 message [in] ancillary Additional options passed to the stack along with the packet
◆ icmpv6ProcessPacketTooBig()
void icmpv6ProcessPacketTooBig | ( | NetInterface * | interface, |
const Ipv6PseudoHeader * | pseudoHeader, | ||
const NetBuffer * | buffer, | ||
size_t | offset | ||
) |
◆ icmpv6SendErrorMessage()
error_t icmpv6SendErrorMessage | ( | NetInterface * | interface, |
uint8_t | type, | ||
uint8_t | code, | ||
uint32_t | parameter, | ||
const NetBuffer * | ipPacket, | ||
size_t | ipPacketOffset | ||
) |
Send an ICMPv6 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 IPv6 packet [in] ipPacketOffset Offset to the first byte of the IPv6 packet
- Returns
- Error code
Variable Documentation
◆ __packed_struct
typedef __packed_struct |
ICMPv6 header.
ICMPv6 Echo Request and Echo Reply messages.
ICMPv6 Parameter Problem message.
ICMPv6 Time Exceeded message.
ICMPv6 Packet Too Big message.
ICMPv6 Destination Unreachable message.
ICMPv6 Error message.
A Destination Unreachable message is generated in response to a packet that cannot be delivered to its destination address for reasons other than congestion
A Packet Too Big message is sent by a router in response to a packet that it cannot forward because the packet is larger than the MTU of the outgoing link
A Time Exceeded message is sent by a router when it receives a packet with a Hop Limit of zero
A Parameter Problem message is sent by an IPv6 node when it finds a problem with a field in the IPv6 header or extension headers such that it cannot complete processing the packet
Every node must implement an ICMPv6 Echo responder function that receives Echo Requests and sends corresponding Echo Replies