icmpv6.h File Reference

ICMPv6 (Internet Control Message Protocol Version 6) 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
 
Icmpv6Header
 ICMPv6 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
 
Icmpv6ErrorMessage
 ICMPv6 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 []
 
Icmpv6DestUnreachableMessage
 ICMPv6 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 []
 
Icmpv6PacketTooBigMessage
 ICMPv6 Packet Too Big 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 []
 
Icmpv6TimeExceededMessage
 ICMPv6 Time Exceeded 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 []
 
Icmpv6ParamProblemMessage
 ICMPv6 Parameter Problem message. More...
 
struct {
   uint32_t   iaId
 
   uint32_t   t1
 
   uint32_t   t2
 
   uint8_t   options []
 
   uint8_t   bFunctionLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bDescriptorSubtype
 
   uint8_t   bmCapabilities
 
   uint8_t   bDataInterface
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint16_t   identifier
 
   uint16_t   sequenceNumber
 
   uint8_t   data []
 
   uint8_t   length
 
   MacAddr   linkLayerAddr
 
   uint16_t   pdRequestedPowerA
 
   uint16_t   pdRequestedPowerB
 
   uint16_t   pseAllocatedPowerA
 
   uint16_t   pseAllocatedPowerB
 
   uint16_t   powerStatus
 
   uint8_t   systemSetup
 
   uint16_t   pseMaxAvailablePower
 
   uint8_t   autoclass
 
   uint8_t   powerDown [3]
 
   uint8_t   ifNumSubtype
 
   uint32_t   ifNum
 
   uint8_t   oidLen
 
   uint8_t   oid []
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint16_t   regValue []
 
   MqttSnFlags   flags
 
   uint8_t   protocolId
 
   uint16_t   duration
 
   char_t   clientId []
 
   Ipv4Addr   ipAddr
 
   uint16_t   length
 
   uint8_t   value []
 
Icmpv6EchoMessage
 ICMPv6 Echo Request and Echo Reply messages. More...
 

Enumerations

enum  Icmpv6Type {
  ICMPV6_TYPE_DEST_UNREACHABLE = 1, ICMPV6_TYPE_PACKET_TOO_BIG = 2, ICMPV6_TYPE_TIME_EXCEEDED = 3, ICMPV6_TYPE_PARAM_PROBLEM = 4,
  ICMPV6_TYPE_ECHO_REQUEST = 128, ICMPV6_TYPE_ECHO_REPLY = 129, ICMPV6_TYPE_MULTICAST_LISTENER_QUERY = 130, ICMPV6_TYPE_MULTICAST_LISTENER_REPORT_V1 = 131,
  ICMPV6_TYPE_MULTICAST_LISTENER_DONE_V1 = 132, ICMPV6_TYPE_ROUTER_SOL = 133, ICMPV6_TYPE_ROUTER_ADV = 134, ICMPV6_TYPE_NEIGHBOR_SOL = 135,
  ICMPV6_TYPE_NEIGHBOR_ADV = 136, ICMPV6_TYPE_REDIRECT = 137, ICMPV6_TYPE_MULTICAST_LISTENER_REPORT_V2 = 143
}
 ICMPv6 message type. More...
 
enum  Icmpv6DestUnreachableCode {
  ICMPV6_CODE_NO_ROUTE_TO_DEST = 0, ICMPV6_CODE_ADMIN_PROHIBITED = 1, ICMPV6_CODE_BEYOND_SCOPE_OF_SRC_ADDR = 2, ICMPV6_CODE_ADDR_UNREACHABLE = 3,
  ICMPV6_CODE_PORT_UNREACHABLE = 4
}
 Destination Unreachable message codes. More...
 
enum  Icmpv6TimeExceededCode { ICMPV6_CODE_HOP_LIMIT_EXCEEDED = 0, ICMPV6_CODE_REASSEMBLY_TIME_EXCEEDED = 1 }
 Time Exceeded message codes. More...
 
enum  Icmpv6ParamProblemCode { ICMPV6_CODE_INVALID_HEADER_FIELD = 0, ICMPV6_CODE_UNKNOWN_NEXT_HEADER = 1, ICMPV6_CODE_UNKNOWN_IPV6_OPTION = 2 }
 Parameter Problem message codes. More...
 

Functions

error_t icmpv6EnableEchoRequest (NetInterface *interface, bool_t enable)
 Enable support for Echo Request messages. More...
 
error_t icmpv6EnableMulticastEchoRequest (NetInterface *interface, bool_t enable)
 Enable support for multicast Echo Request messages. More...
 
void icmpv6ProcessMessage (NetInterface *interface, Ipv6PseudoHeader *pseudoHeader, const NetBuffer *buffer, size_t offset, uint8_t hopLimit)
 Incoming ICMPv6 message processing. More...
 
void icmpv6ProcessDestUnreachable (NetInterface *interface, Ipv6PseudoHeader *pseudoHeader, const NetBuffer *buffer, size_t offset)
 Destination Unreachable message processing. More...
 
void icmpv6ProcessPacketTooBig (NetInterface *interface, Ipv6PseudoHeader *pseudoHeader, const NetBuffer *buffer, size_t offset)
 Packet Too Big message processing. More...
 
void icmpv6ProcessEchoRequest (NetInterface *interface, 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-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 icmpv6.h.

Typedef Documentation

◆ Icmpv6DestUnreachableMessage

ICMPv6 Destination Unreachable 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

◆ Icmpv6EchoMessage

typedef { ... } Icmpv6EchoMessage

ICMPv6 Echo Request and Echo Reply messages.

Every node must implement an ICMPv6 Echo responder function that receives Echo Requests and sends corresponding Echo Replies

◆ Icmpv6ErrorMessage

typedef { ... } Icmpv6ErrorMessage

ICMPv6 Error message.

◆ Icmpv6Header

typedef { ... } Icmpv6Header

ICMPv6 header.

◆ Icmpv6PacketTooBigMessage

typedef { ... } Icmpv6PacketTooBigMessage

ICMPv6 Packet Too Big message.

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

◆ Icmpv6ParamProblemMessage

typedef { ... } Icmpv6ParamProblemMessage

ICMPv6 Parameter Problem message.

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

◆ Icmpv6TimeExceededMessage

typedef { ... } Icmpv6TimeExceededMessage

ICMPv6 Time Exceeded message.

A Time Exceeded message is sent by a router when it receives a packet with a Hop Limit of zero

Enumeration Type Documentation

◆ Icmpv6DestUnreachableCode

Destination Unreachable message codes.

Enumerator
ICMPV6_CODE_NO_ROUTE_TO_DEST 
ICMPV6_CODE_ADMIN_PROHIBITED 
ICMPV6_CODE_BEYOND_SCOPE_OF_SRC_ADDR 
ICMPV6_CODE_ADDR_UNREACHABLE 
ICMPV6_CODE_PORT_UNREACHABLE 

Definition at line 75 of file icmpv6.h.

◆ Icmpv6ParamProblemCode

Parameter Problem message codes.

Enumerator
ICMPV6_CODE_INVALID_HEADER_FIELD 
ICMPV6_CODE_UNKNOWN_NEXT_HEADER 
ICMPV6_CODE_UNKNOWN_IPV6_OPTION 

Definition at line 99 of file icmpv6.h.

◆ Icmpv6TimeExceededCode

Time Exceeded message codes.

Enumerator
ICMPV6_CODE_HOP_LIMIT_EXCEEDED 
ICMPV6_CODE_REASSEMBLY_TIME_EXCEEDED 

Definition at line 89 of file icmpv6.h.

◆ Icmpv6Type

enum Icmpv6Type

ICMPv6 message type.

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

Enumerator
ICMPV6_TYPE_DEST_UNREACHABLE 
ICMPV6_TYPE_PACKET_TOO_BIG 
ICMPV6_TYPE_TIME_EXCEEDED 
ICMPV6_TYPE_PARAM_PROBLEM 
ICMPV6_TYPE_ECHO_REQUEST 
ICMPV6_TYPE_ECHO_REPLY 
ICMPV6_TYPE_MULTICAST_LISTENER_QUERY 
ICMPV6_TYPE_MULTICAST_LISTENER_REPORT_V1 
ICMPV6_TYPE_MULTICAST_LISTENER_DONE_V1 
ICMPV6_TYPE_ROUTER_SOL 
ICMPV6_TYPE_ROUTER_ADV 
ICMPV6_TYPE_NEIGHBOR_SOL 
ICMPV6_TYPE_NEIGHBOR_ADV 
ICMPV6_TYPE_REDIRECT 
ICMPV6_TYPE_MULTICAST_LISTENER_REPORT_V2 

Definition at line 51 of file icmpv6.h.

Function Documentation

◆ icmpv6DumpDestUnreachableMessage()

void icmpv6DumpDestUnreachableMessage ( const Icmpv6DestUnreachableMessage message)

Dump ICMPv6 Destination Unreachable message.

Parameters
[in]messagePointer to the ICMPv6 message

Definition at line 685 of file icmpv6.c.

◆ icmpv6DumpEchoMessage()

void icmpv6DumpEchoMessage ( const Icmpv6EchoMessage message)

Dump ICMPv6 Echo Request or Echo Reply message.

Parameters
[in]messagePointer to the ICMPv6 message

Definition at line 714 of file icmpv6.c.

◆ icmpv6DumpErrorMessage()

void icmpv6DumpErrorMessage ( const Icmpv6ErrorMessage message)

Dump generic ICMPv6 Error message.

Parameters
[in]messagePointer to the ICMPv6 message

Definition at line 730 of file icmpv6.c.

◆ icmpv6DumpMessage()

void icmpv6DumpMessage ( const Icmpv6Header message)

Dump ICMPv6 message for debugging purpose.

Parameters
[in]messagePointer to the ICMP message

Definition at line 671 of file icmpv6.c.

◆ icmpv6DumpPacketTooBigMessage()

void icmpv6DumpPacketTooBigMessage ( const Icmpv6PacketTooBigMessage message)

Dump ICMPv6 Packet Too Big message.

Parameters
[in]messagePointer to the ICMPv6 message

Definition at line 699 of file icmpv6.c.

◆ icmpv6EnableEchoRequest()

error_t icmpv6EnableEchoRequest ( 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 68 of file icmpv6.c.

◆ icmpv6EnableMulticastEchoRequest()

error_t icmpv6EnableMulticastEchoRequest ( NetInterface interface,
bool_t  enable 
)

Enable support for multicast Echo Request messages.

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

Definition at line 95 of file icmpv6.c.

◆ icmpv6ProcessDestUnreachable()

void icmpv6ProcessDestUnreachable ( NetInterface interface,
Ipv6PseudoHeader pseudoHeader,
const NetBuffer buffer,
size_t  offset 
)

Destination Unreachable message processing.

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

Definition at line 268 of file icmpv6.c.

◆ icmpv6ProcessEchoRequest()

void icmpv6ProcessEchoRequest ( NetInterface interface,
Ipv6PseudoHeader requestPseudoHeader,
const NetBuffer request,
size_t  requestOffset 
)

Echo Request message processing.

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

Definition at line 367 of file icmpv6.c.

◆ icmpv6ProcessMessage()

void icmpv6ProcessMessage ( NetInterface interface,
Ipv6PseudoHeader pseudoHeader,
const NetBuffer buffer,
size_t  offset,
uint8_t  hopLimit 
)

Incoming ICMPv6 message processing.

Parameters
[in]interfaceUnderlying network interface
[in]pseudoHeaderIPv6 pseudo header
[in]bufferMulti-part buffer containing the incoming ICMPv6 message
[in]offsetOffset to the first byte of the ICMPv6 message
[in]hopLimitHop Limit field from IPv6 header

Definition at line 123 of file icmpv6.c.

◆ icmpv6ProcessPacketTooBig()

void icmpv6ProcessPacketTooBig ( NetInterface interface,
Ipv6PseudoHeader pseudoHeader,
const NetBuffer buffer,
size_t  offset 
)

Packet Too Big message processing.

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

Definition at line 303 of file icmpv6.c.

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

Definition at line 505 of file icmpv6.c.

Variable Documentation

◆ checksum

uint16_t checksum

Definition at line 121 of file icmpv6.h.

◆ code

uint8_t code

Definition at line 120 of file icmpv6.h.

◆ data

uint8_t data[]

Definition at line 122 of file icmpv6.h.

◆ identifier

uint16_t identifier

Definition at line 228 of file icmpv6.h.

◆ mtu

uint32_t mtu

Definition at line 173 of file icmpv6.h.

◆ parameter

uint32_t parameter

Definition at line 135 of file icmpv6.h.

◆ pointer

uint32_t pointer

Definition at line 210 of file icmpv6.h.

◆ sequenceNumber

uint16_t sequenceNumber

Definition at line 229 of file icmpv6.h.

◆ type

uint8_t type

Definition at line 119 of file icmpv6.h.

◆ unused

uint32_t unused

Definition at line 154 of file icmpv6.h.