icmp.h File Reference

ICMP (Internet Control Message Protocol) More...

#include "core/net.h"

Go to the source code of this file.

Typedefs

struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   char_t   name []
 
   uint8_t   tokenLen: 4
 
   uint8_t   type: 2
 
   uint8_t   version: 2
 
   uint8_t   code
 
   uint16_t   mid
 
   uint8_t   token []
 
   union {
      uint8_t   b [6]
 
      uint16_t   w [3]
 
   } 
 
   uint16_t   srcPort
 
   uint16_t   destPort
 
   uint32_t   seqNum
 
   uint32_t   ackNum
 
   uint8_t   reserved1: 4
 
   uint8_t   dataOffset: 4
 
   uint8_t   flags: 6
 
   uint8_t   reserved2: 2
 
   uint16_t   window
 
   uint16_t   checksum
 
   uint16_t   urgentPointer
 
   uint8_t   options []
 
   uint16_t   length
 
   uint8_t   data []
 
   uint8_t   op
 
   uint8_t   htype
 
   uint8_t   hlen
 
   uint8_t   hops
 
   uint32_t   xid
 
   uint16_t   secs
 
   uint16_t   flags
 
   Ipv4Addr   ciaddr
 
   Ipv4Addr   yiaddr
 
   Ipv4Addr   siaddr
 
   Ipv4Addr   giaddr
 
   MacAddr   chaddr
 
   uint8_t   unused [10]
 
   uint8_t   sname [64]
 
   uint8_t   file [128]
 
   uint32_t   magicCookie
 
   uint16_t   type
 
   uint16_t   hardwareType
 
   uint32_t   time
 
   MacAddr   linkLayerAddr
 
   uint16_t   id
 
   uint8_t   rd: 1
 
   uint8_t   tc: 1
 
   uint8_t   aa: 1
 
   uint8_t   opcode: 4
 
   uint8_t   qr: 1
 
   uint8_t   rcode: 4
 
   uint8_t   z: 3
 
   uint8_t   ra: 1
 
   uint16_t   qdcount
 
   uint16_t   ancount
 
   uint16_t   nscount
 
   uint16_t   arcount
 
   uint8_t   questions []
 
   uint16_t   controlWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bcdUsb
 
   uint8_t   bDeviceClass
 
   uint8_t   bDeviceSubClass
 
   uint8_t   bDeviceProtocol
 
   uint8_t   bMaxPacketSize0
 
   uint16_t   idVendor
 
   uint16_t   idProduct
 
   uint16_t   bcdDevice
 
   uint8_t   iManufacturer
 
   uint8_t   iProduct
 
   uint8_t   iSerialNumber
 
   uint8_t   bNumConfigurations
 
   uint8_t   maxRespTime
 
   Ipv4Addr   groupAddr
 
   uint16_t   hrd
 
   uint16_t   pro
 
   uint8_t   hln
 
   uint8_t   pln
 
   uint16_t   op
 
   MacAddr   sha
 
   Ipv4Addr   spa
 
   MacAddr   tha
 
   Ipv4Addr   tpa
 
   uint8_t   length
 
   uint8_t   value []
 
   uint16_t   first
 
   uint16_t   last
 
   uint16_t   next
 
   union {
      uint8_t   b [16]
 
      uint16_t   w [8]
 
      uint32_t   dw [4]
 
   } 
 
   uint16_t   maxRespDelay
 
   uint16_t   reserved
 
   Ipv6Addr   multicastAddr
 
   uint32_t   reserved
 
   uint16_t   pvid
 
   uint8_t   autoNegSupportStatus
 
   uint16_t   pmdAutoNegAdvCap
 
   uint16_t   operationalMauType
 
   uint16_t   capabilities
 
   uint8_t   deviceType
 
   uint8_t   lengthH: 1
 
   uint8_t   lengthL
 
   uint8_t   t: 1
 
   uint8_t   c: 1
 
   union {
      int32_t   integer
 
      uint8_t   octetString [1]
 
      uint8_t   oid [1]
 
      uint8_t   ipAddr [4]
 
      uint32_t   counter32
 
      uint32_t   gauge32
 
      uint32_t   unsigned32
 
      uint32_t   timeTicks
 
      uint64_t   counter64
 
   } 
 
   uint16_t   transactionId
 
   uint16_t   protocolId
 
   uint8_t   unitId
 
   uint8_t   pdu []
 
   uint8_t   retain: 1
 
   uint8_t   qos: 2
 
   uint8_t   dup: 1
 
   union {
      uint8_t   all
 
      struct {
         uint8_t   topicIdType: 2
 
         uint8_t   cleanSession: 1
 
         uint8_t   will: 1
 
         uint8_t   retain: 1
 
         uint8_t   qos: 2
 
         uint8_t   dup: 1
 
      } 
 
   } 
 
   uint8_t   b: 1
 
   uint8_t   identifier
 
   uint8_t   valueSize
 
   Ipv4Addr   srcIpAddr
 
   Ipv4Addr   destIpAddr
 
   Eui64   interfaceId
 
   uint16_t   mru
 
   uint8_t   peerIdLength
 
   uint8_t   peerId []
 
   uint32_t   seconds
 
   uint32_t   fraction
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint8_t   reserved: 3
 
   uint8_t   fin: 1
 
   uint8_t   payloadLen: 7
 
   uint8_t   mask: 1
 
   uint8_t   extPayloadLen []
 
   uint32_t   length
 
   uint8_t   payload []
 
   uint8_t   protocolVersionId
 
   uint8_t   bpduType
 
   StpBridgeId   rootId
 
   uint32_t   rootPathCost
 
   StpBridgeId   bridgeId
 
   uint16_t   portId
 
   uint16_t   messageAge
 
   uint16_t   maxAge
 
   uint16_t   helloTime
 
   uint16_t   forwardDelay
 
   uint8_t   version1Length
 
   uint16_t   priority
 
   MacAddr   addr
 
IcmpHeader
 ICMP header. More...
 
struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   uint8_t   length: 4
 
   uint8_t   delta: 4
 
   union {
      uint8_t   b [8]
 
      uint16_t   w [4]
 
      uint32_t   dw [2]
 
   } 
 
   uint8_t   kind
 
   uint8_t   value []
 
   uint8_t   code
 
   uint16_t   type
 
   uint32_t   enterpriseNumber
 
   uint8_t   identifier []
 
   uint16_t   qtype
 
   uint16_t   qclass
 
   uint16_t   statusWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   wTotalLength
 
   uint8_t   bNumInterfaces
 
   uint8_t   bConfigurationValue
 
   uint8_t   iConfiguration
 
   uint8_t   bmAttributes
 
   uint8_t   bMaxPower
 
   uint8_t   type
 
   uint16_t   checksum
 
   uint8_t   parameter
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   parameter
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint8_t   curHopLimit
 
   uint8_t   reserved: 2
 
   uint8_t   p: 1
 
   uint8_t   prf: 2
 
   uint8_t   h: 1
 
   uint8_t   o: 1
 
   uint8_t   m: 1
 
   uint16_t   routerLifetime
 
   uint32_t   reachableTime
 
   uint32_t   retransTimer
 
   uint8_t   flags
 
   uint16_t   ppvid
 
   uint8_t   mdiPowerSupport
 
   uint8_t   psePowerPair
 
   uint8_t   powerClass
 
   uint8_t   appType
 
   uint8_t   vlanIdH: 5
 
   uint8_t   x: 1
 
   uint8_t   t: 1
 
   uint8_t   u: 1
 
   uint8_t   l2PriorityH: 1
 
   uint8_t   vlanIdL: 7
 
   uint8_t   dscpValue: 6
 
   uint8_t   l2PriorityL: 2
 
   uint8_t   chassisIdSubtype
 
   uint8_t   chassisId []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfCoils
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint16_t   flags
 
   Ipv4Addr   addr
 
   uint8_t   valueSize
 
   uint16_t   protocol
 
   uint32_t   accm
 
   uint8_t   msgLength
 
   uint8_t   message []
 
   uint8_t   mode: 3
 
   uint8_t   vn: 3
 
   uint8_t   li: 2
 
   uint8_t   stratum
 
   uint8_t   poll
 
   int8_t   precision
 
   uint32_t   rootDelay
 
   uint32_t   rootDispersion
 
   uint32_t   referenceId
 
   NtpTimestamp   referenceTimestamp
 
   NtpTimestamp   originateTimestamp
 
   NtpTimestamp   receiveTimestamp
 
   NtpTimestamp   transmitTimestamp
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint16_t   value []
 
   uint16_t   group
 
   uint8_t   keyExchange []
 
   uint32_t   id
 
   uint32_t   dataLen
 
IcmpErrorMessage
 ICMP Error message. More...
 
struct {
   uint32_t   totalSize
 
   ResRootEntry   rootEntry
 
   MacAddr   destAddr
 
   MacAddr   srcAddr
 
   uint16_t   type
 
   uint8_t   data []
 
   uint16_t   hardwareType
 
   MacAddr   linkLayerAddr
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata []
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bInterfaceNumber
 
   uint8_t   bAlternateSetting
 
   uint8_t   bNumEndpoints
 
   uint8_t   bInterfaceClass
 
   uint8_t   bInterfaceSubClass
 
   uint8_t   bInterfaceProtocol
 
   uint8_t   iInterface
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint32_t   unused
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint32_t   reserved
 
   Ipv6Addr   targetAddr
 
   uint16_t   vlanId
 
   uint8_t   vlanNameLen
 
   char_t   vlanName []
 
   uint8_t   aggregationStatus
 
   uint32_t   aggregatedPortId
 
   uint8_t   locationDataFormat
 
   uint8_t   locationId []
 
   uint8_t   portIdSubtype
 
   uint8_t   portId []
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint8_t   coilStatus []
 
   uint8_t   prefix
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint8_t   identifier
 
   uint8_t   message []
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint16_t   protocol
 
   uint8_t   msgLength
 
   uint8_t   rejectedPacket []
 
   uint32_t   keyId
 
   uint8_t   messageDigest [16]
 
   uint16_t   opcode
 
   uint16_t   block
 
   uint16_t   value []
 
   uint8_t   value []
 
IcmpDestUnreachableMessage
 ICMP Destination Unreachable message. More...
 
struct {
   uint8_t   dsap
 
   uint8_t   ssap
 
   uint8_t   control
 
   uint8_t   msgType
 
   uint8_t   transactionId [3]
 
   uint8_t   options []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata [4]
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bEndpointAddress
 
   uint8_t   bmAttributes
 
   uint16_t   wMaxPacketSize
 
   uint8_t   bInterval
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint32_t   unused
 
   uint8_t   data []
 
   uint32_t   mtu
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   routingType
 
   uint8_t   segmentsLeft
 
   uint32_t   reserved
 
   Ipv6Addr   address []
 
   uint8_t   reserved1: 5
 
   uint8_t   o: 1
 
   uint8_t   s: 1
 
   uint8_t   r: 1
 
   uint8_t   reserved2 [3]
 
   Ipv6Addr   targetAddr
 
   uint8_t   protocolIdLen
 
   uint8_t   protocolId []
 
   uint16_t   maxFrameSize
 
   uint8_t   powerPriority: 4
 
   uint8_t   powerSource: 2
 
   uint8_t   powerType: 2
 
   uint16_t   powerValue
 
   uint16_t   ttl
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfInputs
 
   uint8_t   gwId
 
   uint16_t   duration
 
   uint8_t   identifier
 
   uint16_t   length
 
   uint8_t   message []
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint16_t   protocol
 
   uint16_t   rejectedProtocol
 
   uint8_t   rejectedInfo []
 
   uint16_t   opcode
 
   uint16_t   block
 
   uint16_t   version
 
   uint16_t   epoch
 
   DtlsSequenceNumber   seqNum
 
   uint8_t   hash
 
   uint8_t   signature
 
   uint8_t   value []
 
IcmpTimeExceededMessage
 ICMP Time Exceeded message. More...
 
struct {
   uint16_t   tci
 
   uint16_t   type
 
   uint8_t   msgType
 
   uint8_t   hopCount
 
   Ipv6Addr   linkAddress
 
   Ipv6Addr   peerAddress
 
   uint8_t   options []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata [16]
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bString []
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint8_t   pointer
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   unused
 
   uint8_t   nextHeader
 
   uint8_t   payloadLen
 
   uint16_t   reserved
 
   uint32_t   securityParamIndex
 
   uint32_t   sequenceNumber
 
   uint8_t   authData []
 
   uint32_t   reserved
 
   Ipv6Addr   targetAddr
 
   Ipv6Addr   destAddr
 
   uint8_t   measurements [20]
 
   uint16_t   psePowerPriceIndex
 
   uint16_t   supportedCap
 
   uint16_t   enabledCap
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint8_t   inputStatus []
 
   uint8_t   radius
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint32_t   magicNumber
 
   uint8_t   identifier
 
   uint16_t   length
 
   uint16_t   opcode
 
   uint16_t   errorCode
 
   char_t   errorMsg []
 
   uint16_t   msgSeq
 
   uint8_t   fragOffset [3]
 
   uint8_t   fragLength [3]
 
   TlsSignHashAlgo   value []
 
   uint8_t   value []
 
IcmpParamProblemMessage
 ICMP Parameter Problem message. More...
 
struct {
   uint16_t   code
 
   uint16_t   length
 
   uint8_t   value []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint16_t   priority
 
   uint16_t   weight
 
   uint16_t   port
 
   uint8_t   target []
 
   uint8_t   bFunctionLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bDescriptorSubtype
 
   uint16_t   bcdCdc
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint16_t   identifier
 
   uint16_t   sequenceNumber
 
   uint8_t   data []
 
   uint32_t   pointer
 
   uint32_t   securityParamIndex
 
   uint32_t   sequenceNumber
 
   uint8_t   payloadData []
 
   uint8_t   length
 
   uint8_t   powerPriority: 2
 
   uint8_t   pd4pid: 1
 
   uint8_t   reserved: 1
 
   uint8_t   powerSource: 2
 
   uint8_t   powerType: 2
 
   uint16_t   pdRequestedPower
 
   uint16_t   pseAllocatedPower
 
   uint8_t   mgmtAddrLen
 
   uint8_t   mgmtAddrSubtype
 
   uint8_t   mgmtAddr []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfRegs
 
   uint8_t   gwId
 
   uint8_t   gwAdd []
 
   Ipv4Addr   ipAddr
 
   uint8_t   identifier
 
   uint32_t   magicNumber
 
   uint16_t   serverVersion
 
   uint8_t   cookieLength
 
   uint8_t   cookie []
 
IcmpEchoMessage
 ICMP Echo Request and Echo Reply messages. More...
 

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 icmpEnableEchoRequest (NetInterface *interface, bool_t enable)
 Enable support for Echo Request messages. More...
 
error_t icmpEnableBroadcastEchoRequest (NetInterface *interface, bool_t enable)
 Enable support for broadcast Echo Request messages. More...
 
void icmpProcessMessage (NetInterface *interface, Ipv4PseudoHeader *requestPseudoHeader, const NetBuffer *buffer, size_t offset)
 Incoming ICMP message processing. More...
 
void icmpProcessEchoRequest (NetInterface *interface, 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-2023 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.2.4

Definition in file icmp.h.

Typedef Documentation

◆ IcmpDestUnreachableMessage

typedef { ... } IcmpDestUnreachableMessage

ICMP Destination Unreachable message.

◆ IcmpEchoMessage

typedef { ... } IcmpEchoMessage

ICMP Echo Request and Echo Reply messages.

◆ IcmpErrorMessage

typedef { ... } IcmpErrorMessage

ICMP Error message.

◆ IcmpHeader

typedef { ... } IcmpHeader

ICMP header.

◆ IcmpParamProblemMessage

typedef { ... } IcmpParamProblemMessage

ICMP Parameter Problem message.

◆ IcmpTimeExceededMessage

typedef { ... } IcmpTimeExceededMessage

ICMP Time Exceeded message.

Enumeration Type Documentation

◆ IcmpDestUnreachableCode

Destination Unreachable message codes.

Enumerator
ICMP_CODE_NET_UNREACHABLE 
ICMP_CODE_HOST_UNREACHABLE 
ICMP_CODE_PROTOCOL_UNREACHABLE 
ICMP_CODE_PORT_UNREACHABLE 
ICMP_CODE_FRAG_NEEDED_AND_DF_SET 
ICMP_CODE_SOURCE_ROUTE_FAILED 

Definition at line 73 of file icmp.h.

◆ IcmpTimeExceededCode

Time Exceeded message codes.

Enumerator
ICMP_CODE_TTL_EXCEEDED 
ICMP_CODE_REASSEMBLY_TIME_EXCEEDED 

Definition at line 88 of file icmp.h.

◆ IcmpType

enum IcmpType

ICMP message type.

The type field indicates the type of the message. Its value determines the format of the remaining data

Enumerator
ICMP_TYPE_ECHO_REPLY 
ICMP_TYPE_DEST_UNREACHABLE 
ICMP_TYPE_SOURCE_QUENCH 
ICMP_TYPE_REDIRECT 
ICMP_TYPE_ECHO_REQUEST 
ICMP_TYPE_TIME_EXCEEDED 
ICMP_TYPE_PARAM_PROBLEM 
ICMP_TYPE_TIMESTAMP_REQUEST 
ICMP_TYPE_TIMESTAMP_REPLY 
ICMP_TYPE_INFO_REQUEST 
ICMP_TYPE_INFO_REPLY 
ICMP_TYPE_ADDR_MASK_REQUEST 
ICMP_TYPE_ADDR_MASK_REPLY 

Definition at line 51 of file icmp.h.

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 607 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 623 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 593 of file icmp.c.

◆ icmpEnableBroadcastEchoRequest()

error_t icmpEnableBroadcastEchoRequest ( NetInterface interface,
bool_t  enable 
)

Enable support for broadcast Echo Request messages.

Parameters
[in]interfaceUnderlying network interface
[in]enableWhen the flag is set to TRUE, the host will respond to broadcast Echo Requests. When the flag is set to FALSE, incoming Echo Request messages destined to a broadcast address will be dropped
Returns
Error code

Definition at line 85 of file icmp.c.

◆ icmpEnableEchoRequest()

error_t icmpEnableEchoRequest ( NetInterface interface,
bool_t  enable 
)

Enable support for Echo Request messages.

Parameters
[in]interfaceUnderlying network interface
[in]enableWhen the flag is set to TRUE, the host will respond to Echo Requests. When the flag is set to FALSE, incoming Echo Request messages will be dropped
Returns
Error code

Definition at line 58 of file icmp.c.

◆ icmpProcessEchoRequest()

void icmpProcessEchoRequest ( NetInterface interface,
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 192 of file icmp.c.

◆ icmpProcessMessage()

void icmpProcessMessage ( NetInterface interface,
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 337 of file icmp.c.

◆ icmpUpdateInStats()

void icmpUpdateInStats ( uint8_t  type)

Update ICMP input statistics.

Parameters
[in]typeICMP message type

Definition at line 439 of file icmp.c.

◆ icmpUpdateOutStats()

void icmpUpdateOutStats ( uint8_t  type)

Update ICMP output statistics.

Parameters
[in]typeICMPv6 message type

Definition at line 514 of file icmp.c.

Variable Documentation

◆ checksum

uint16_t checksum

Definition at line 109 of file icmp.h.

◆ code

uint8_t code

Definition at line 108 of file icmp.h.

◆ data

uint8_t data[]

Definition at line 110 of file icmp.h.

◆ identifier

uint16_t identifier

Definition at line 181 of file icmp.h.

◆ parameter

uint8_t parameter

Definition at line 123 of file icmp.h.

◆ pointer

uint8_t pointer

Definition at line 166 of file icmp.h.

◆ sequenceNumber

uint16_t sequenceNumber

Definition at line 182 of file icmp.h.

◆ type

uint8_t type

Definition at line 107 of file icmp.h.

◆ unused

uint8_t unused[3]

Definition at line 124 of file icmp.h.