Rizky Ardi Maulana / mbed-os
Embed: (wiki syntax)

« Back to documentation index

icmp6.h File Reference

icmp6.h File Reference

IPv6 version of ICMP, as per RFC 4443. More...

Go to the source code of this file.

Data Structures

struct  icmp6_hdr
 This is the standard ICMP6 header. More...
struct  icmp6_echo_hdr
 This is the ICMP6 header adapted for echo req/resp. More...

Enumerations

enum  icmp6_type {
  ICMP6_TYPE_DUR = 1, ICMP6_TYPE_PTB = 2, ICMP6_TYPE_TE = 3, ICMP6_TYPE_PP = 4,
  ICMP6_TYPE_PE1 = 100, ICMP6_TYPE_PE2 = 101, ICMP6_TYPE_RSV_ERR = 127, ICMP6_TYPE_EREQ = 128,
  ICMP6_TYPE_EREP = 129, ICMP6_TYPE_MLQ = 130, ICMP6_TYPE_MLR = 131, ICMP6_TYPE_MLD = 132,
  ICMP6_TYPE_RS = 133, ICMP6_TYPE_RA = 134, ICMP6_TYPE_NS = 135, ICMP6_TYPE_NA = 136,
  ICMP6_TYPE_RD = 137, ICMP6_TYPE_MRA = 151, ICMP6_TYPE_MRS = 152, ICMP6_TYPE_MRT = 153,
  ICMP6_TYPE_PE3 = 200, ICMP6_TYPE_PE4 = 201, ICMP6_TYPE_RSV_INF = 255
}
 

ICMP type.

More...
enum  icmp6_dur_code {
  ICMP6_DUR_NO_ROUTE = 0, ICMP6_DUR_PROHIBITED = 1, ICMP6_DUR_SCOPE = 2, ICMP6_DUR_ADDRESS = 3,
  ICMP6_DUR_PORT = 4, ICMP6_DUR_POLICY = 5, ICMP6_DUR_REJECT_ROUTE = 6
}
 

ICMP destination unreachable codes.

More...
enum  icmp6_te_code { ICMP6_TE_HL = 0, ICMP6_TE_FRAG = 1 }
 

ICMP time exceeded codes.

More...
enum  icmp6_pp_code { ICMP6_PP_FIELD = 0, ICMP6_PP_HEADER = 1, ICMP6_PP_OPTION = 2 }
 

ICMP parameter code.

More...

Functions

PACK_STRUCT_END void icmp6_input (struct pbuf *p, struct netif *inp)
 Process an input ICMPv6 message.
void icmp6_dest_unreach (struct pbuf *p, enum icmp6_dur_code c)
 Send an icmpv6 'destination unreachable' packet.
void icmp6_packet_too_big (struct pbuf *p, u32_t mtu)
 Send an icmpv6 'packet too big' packet.
void icmp6_time_exceeded (struct pbuf *p, enum icmp6_te_code c)
 Send an icmpv6 'time exceeded' packet.
void icmp6_param_problem (struct pbuf *p, enum icmp6_pp_code c, u32_t pointer)
 Send an icmpv6 'parameter problem' packet.

Detailed Description

IPv6 version of ICMP, as per RFC 4443.

Definition in file icmp6.h.


Enumeration Type Documentation

ICMP destination unreachable codes.

Enumerator:
ICMP6_DUR_NO_ROUTE 

No route to destination.

ICMP6_DUR_PROHIBITED 

Communication with destination administratively prohibited.

ICMP6_DUR_SCOPE 

Beyond scope of source address.

ICMP6_DUR_ADDRESS 

Address unreachable.

ICMP6_DUR_PORT 

Port unreachable.

ICMP6_DUR_POLICY 

Source address failed ingress/egress policy.

ICMP6_DUR_REJECT_ROUTE 

Reject route to destination.

Definition at line 106 of file icmp6.h.

ICMP parameter code.

Enumerator:
ICMP6_PP_FIELD 

Erroneous header field encountered.

ICMP6_PP_HEADER 

Unrecognized next header type encountered.

ICMP6_PP_OPTION 

Unrecognized IPv6 option encountered.

Definition at line 132 of file icmp6.h.

ICMP time exceeded codes.

Enumerator:
ICMP6_TE_HL 

Hop limit exceeded in transit.

ICMP6_TE_FRAG 

Fragment reassembly time exceeded.

Definition at line 124 of file icmp6.h.

enum icmp6_type

ICMP type.

Enumerator:
ICMP6_TYPE_DUR 

Destination unreachable.

ICMP6_TYPE_PTB 

Packet too big.

ICMP6_TYPE_TE 

Time exceeded.

ICMP6_TYPE_PP 

Parameter problem.

ICMP6_TYPE_PE1 

Private experimentation.

ICMP6_TYPE_PE2 

Private experimentation.

ICMP6_TYPE_RSV_ERR 

Reserved for expansion of error messages.

ICMP6_TYPE_EREQ 

Echo request.

ICMP6_TYPE_EREP 

Echo reply.

ICMP6_TYPE_MLQ 

Multicast listener query.

ICMP6_TYPE_MLR 

Multicast listener report.

ICMP6_TYPE_MLD 

Multicast listener done.

ICMP6_TYPE_RS 

Router solicitation.

ICMP6_TYPE_RA 

Router advertisement.

ICMP6_TYPE_NS 

Neighbor solicitation.

ICMP6_TYPE_NA 

Neighbor advertisement.

ICMP6_TYPE_RD 

Redirect.

ICMP6_TYPE_MRA 

Multicast router advertisement.

ICMP6_TYPE_MRS 

Multicast router solicitation.

ICMP6_TYPE_MRT 

Multicast router termination.

ICMP6_TYPE_PE3 

Private experimentation.

ICMP6_TYPE_PE4 

Private experimentation.

ICMP6_TYPE_RSV_INF 

Reserved for expansion of informational messages.

Definition at line 55 of file icmp6.h.


Function Documentation

void icmp6_dest_unreach ( struct pbuf p,
enum icmp6_dur_code  c 
)

Send an icmpv6 'destination unreachable' packet.

Parameters:
pthe input packet for which the 'unreachable' should be sent, p->payload pointing to the IPv6 header
cICMPv6 code for the unreachable type

Definition at line 216 of file lwip_icmp6.c.

PACK_STRUCT_END void icmp6_input ( struct pbuf p,
struct netif inp 
)

Process an input ICMPv6 message.

Called by ip6_input.

Will generate a reply for echo requests. Other messages are forwarded to nd6_input, or mld6_input.

Parameters:
pthe mld packet, p->payload pointing to the icmpv6 header
inpthe netif on which this packet was received

Definition at line 80 of file lwip_icmp6.c.

void icmp6_packet_too_big ( struct pbuf p,
u32_t  mtu 
)

Send an icmpv6 'packet too big' packet.

Parameters:
pthe input packet for which the 'packet too big' should be sent, p->payload pointing to the IPv6 header
mtuthe maximum mtu that we can accept

Definition at line 229 of file lwip_icmp6.c.

void icmp6_param_problem ( struct pbuf p,
enum icmp6_pp_code  c,
u32_t  pointer 
)

Send an icmpv6 'parameter problem' packet.

Parameters:
pthe input packet for which the 'param problem' should be sent, p->payload pointing to the IP header
cICMPv6 code for the param problem type
pointerthe pointer to the byte where the parameter is found

Definition at line 256 of file lwip_icmp6.c.

void icmp6_time_exceeded ( struct pbuf p,
enum icmp6_te_code  c 
)

Send an icmpv6 'time exceeded' packet.

Parameters:
pthe input packet for which the 'unreachable' should be sent, p->payload pointing to the IPv6 header
cICMPv6 code for the time exceeded type

Definition at line 242 of file lwip_icmp6.c.