53 ICMPV6_TYPE_DEST_UNREACHABLE = 1,
54 ICMPV6_TYPE_PACKET_TOO_BIG = 2,
55 ICMPV6_TYPE_TIME_EXCEEDED = 3,
56 ICMPV6_TYPE_PARAM_PROBLEM = 4,
57 ICMPV6_TYPE_ECHO_REQUEST = 128,
58 ICMPV6_TYPE_ECHO_REPLY = 129,
59 ICMPV6_TYPE_MULTICAST_LISTENER_QUERY = 130,
60 ICMPV6_TYPE_MULTICAST_LISTENER_REPORT_V1 = 131,
61 ICMPV6_TYPE_MULTICAST_LISTENER_DONE_V1 = 132,
62 ICMPV6_TYPE_ROUTER_SOL = 133,
63 ICMPV6_TYPE_ROUTER_ADV = 134,
64 ICMPV6_TYPE_NEIGHBOR_SOL = 135,
65 ICMPV6_TYPE_NEIGHBOR_ADV = 136,
66 ICMPV6_TYPE_REDIRECT = 137,
67 ICMPV6_TYPE_MULTICAST_LISTENER_REPORT_V2 = 143
77 ICMPV6_CODE_NO_ROUTE_TO_DEST = 0,
78 ICMPV6_CODE_ADMIN_PROHIBITED = 1,
79 ICMPV6_CODE_BEYOND_SCOPE_OF_SRC_ADDR = 2,
80 ICMPV6_CODE_ADDR_UNREACHABLE = 3,
81 ICMPV6_CODE_PORT_UNREACHABLE = 4
91 ICMPV6_CODE_HOP_LIMIT_EXCEEDED = 0,
92 ICMPV6_CODE_REASSEMBLY_TIME_EXCEEDED = 1
101 ICMPV6_CODE_INVALID_HEADER_FIELD = 0,
102 ICMPV6_CODE_UNKNOWN_NEXT_HEADER = 1,
103 ICMPV6_CODE_UNKNOWN_IPV6_OPTION = 2
108#if defined(__CWCC__) || defined(_WIN32)
109 #pragma pack(push, 1)
156} Icmpv6DestUnreachableMessage;
175} Icmpv6PacketTooBigMessage;
193} Icmpv6TimeExceededMessage;
212} Icmpv6ParamProblemMessage;
229 uint16_t sequenceNumber;
235#if defined(__CWCC__) || defined(_WIN32)
240error_t icmpv6EnableEchoRequests(NetInterface *interface, bool_t enable);
242error_t icmpv6EnableMulticastEchoRequests(NetInterface *interface,
245void icmpv6ProcessMessage(NetInterface *interface,
246 const Ipv6PseudoHeader *pseudoHeader,
const NetBuffer *buffer,
247 size_t offset, uint8_t hopLimit);
249void icmpv6ProcessDestUnreachable(NetInterface *interface,
250 const Ipv6PseudoHeader *pseudoHeader,
const NetBuffer *buffer,
253void icmpv6ProcessPacketTooBig(NetInterface *interface,
254 const Ipv6PseudoHeader *pseudoHeader,
const NetBuffer *buffer,
257void icmpv6ProcessEchoRequest(NetInterface *interface,
258 const Ipv6PseudoHeader *requestPseudoHeader,
const NetBuffer *request,
259 size_t requestOffset);
261error_t icmpv6SendErrorMessage(NetInterface *interface, uint8_t type,
262 uint8_t code, uint32_t parameter,
const NetBuffer *ipPacket,
263 size_t ipPacketOffset);
265void icmpv6DumpMessage(
const Icmpv6Header *message);
266void icmpv6DumpDestUnreachableMessage(
const Icmpv6DestUnreachableMessage *message);
267void icmpv6DumpPacketTooBigMessage(
const Icmpv6PacketTooBigMessage *message);
268void icmpv6DumpEchoMessage(
const Icmpv6EchoMessage *message);
269void icmpv6DumpErrorMessage(
const Icmpv6ErrorMessage *message);
error_t
Error codes.
Definition error.h:43
Icmpv6Type
ICMPv6 message type.
Definition icmpv6.h:52
Icmpv6DestUnreachableCode
Destination Unreachable message codes.
Definition icmpv6.h:76
Icmpv6ParamProblemCode
Parameter Problem message codes.
Definition icmpv6.h:100
typedef __packed_struct
ICMPv6 header.
Definition icmpv6.h:118
Icmpv6TimeExceededCode
Time Exceeded message codes.
Definition icmpv6.h:90
Structure describing a buffer that spans multiple chunks.
Definition net_mem.h:89