icmp.c File Reference

ICMP (Internet Control Message Protocol) More...

#include "core/net.h"
#include "core/ip.h"
#include "ipv4/ipv4.h"
#include "ipv4/ipv4_misc.h"
#include "ipv4/icmp.h"
#include "mibs/mib2_module.h"
#include "mibs/ip_mib_module.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   ICMP_TRACE_LEVEL
 

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...
 

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.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file icmp.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   ICMP_TRACE_LEVEL

Definition at line 32 of file icmp.c.

Function Documentation

◆ icmpDumpEchoMessage()

void icmpDumpEchoMessage ( const IcmpEchoMessage message)

Dump ICMP Echo Request or Echo Reply message.

Parameters
[in]messagePointer to the ICMP message

Definition at line 609 of file icmp.c.

◆ icmpDumpErrorMessage()

void icmpDumpErrorMessage ( const IcmpErrorMessage message)

Dump generic ICMP Error message.

Parameters
[in]messagePointer to the ICMP message

Definition at line 625 of file icmp.c.

◆ icmpDumpMessage()

void icmpDumpMessage ( const IcmpHeader message)

Dump ICMP message for debugging purpose.

Parameters
[in]messagePointer to the ICMP message

Definition at line 595 of file icmp.c.

◆ icmpEnableBroadcastEchoRequests()

error_t icmpEnableBroadcastEchoRequests ( NetInterface interface,
bool_t  enable 
)

Enable support for broadcast ICMP Echo Request messages.

Parameters
[in]interfaceUnderlying network interface
[in]enableThis 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

Definition at line 84 of file icmp.c.

◆ icmpEnableEchoRequests()

error_t icmpEnableEchoRequests ( NetInterface interface,
bool_t  enable 
)

Enable support for ICMP Echo Request messages.

Parameters
[in]interfaceUnderlying network interface
[in]enableThis 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

Definition at line 57 of file icmp.c.

◆ icmpProcessEchoRequest()

void icmpProcessEchoRequest ( NetInterface interface,
const Ipv4PseudoHeader requestPseudoHeader,
const NetBuffer request,
size_t  requestOffset 
)

Echo Request message processing.

Parameters
[in]interfaceUnderlying network interface
[in]requestPseudoHeaderIPv4 pseudo header
[in]requestMulti-part buffer containing the incoming Echo Request message
[in]requestOffsetOffset to the first byte of the Echo Request message

Definition at line 193 of file icmp.c.

◆ icmpProcessMessage()

void icmpProcessMessage ( NetInterface interface,
const Ipv4PseudoHeader requestPseudoHeader,
const NetBuffer buffer,
size_t  offset 
)

Incoming ICMP message processing.

Parameters
[in]interfaceUnderlying network interface
[in]requestPseudoHeaderIPv4 pseudo header
[in]bufferMulti-part buffer containing the incoming ICMP message
[in]offsetOffset to the first byte of the ICMP message

Definition at line 111 of file icmp.c.

◆ 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]interfaceUnderlying network interface
[in]typeMessage type
[in]codeSpecific message code
[in]parameterSpecific message parameter
[in]ipPacketMulti-part buffer that holds the invoking IPv4 packet
[in]ipPacketOffsetOffset to the first byte of the IPv4 packet
Returns
Error code

Definition at line 338 of file icmp.c.

◆ icmpUpdateInStats()

void icmpUpdateInStats ( uint8_t  type)

Update ICMP input statistics.

Parameters
[in]typeICMP message type

Definition at line 441 of file icmp.c.

◆ icmpUpdateOutStats()

void icmpUpdateOutStats ( uint8_t  type)

Update ICMP output statistics.

Parameters
[in]typeICMPv6 message type

Definition at line 516 of file icmp.c.