ICMPv6 (Internet Control Message Protocol Version 6) More...
#include "core/net.h"
#include "core/ip.h"
#include "ipv6/ipv6.h"
#include "ipv6/ipv6_pmtu.h"
#include "ipv6/ipv6_misc.h"
#include "ipv6/icmpv6.h"
#include "ipv6/ndp.h"
#include "ipv6/ndp_router_adv_misc.h"
#include "mld/mld_node_misc.h"
#include "mibs/ip_mib_module.h"
#include "debug.h"
Go to the source code of this file.
Macros | |
#define | TRACE_LEVEL ICMPV6_TRACE_LEVEL |
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... | |
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.
Description
ICMPv6 is used by IPv6 nodes to report errors encountered in processing packets, and to perform other Internet-layer functions. ICMPv6 is an integral part of IPv6 and must be fully implemented by every IPv6 node. Refer to the RFC 2463 for more details
- Version
- 2.4.4
Definition in file icmpv6.c.
Macro Definition Documentation
◆ TRACE_LEVEL
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