lwIP 2.0.0  lwIP 2.0.0
LightweightIPstack
icmp6.h File Reference
#include "lwip/opt.h"
#include "lwip/pbuf.h"
#include "lwip/ip6_addr.h"
#include "lwip/netif.h"

Data Structures

struct  icmp6_hdr
 
struct  icmp6_echo_hdr
 

Enumerations

Functions

void icmp6_input (struct pbuf *p, struct netif *inp)
 
void icmp6_dest_unreach (struct pbuf *p, enum icmp6_dur_code c)
 
void icmp6_packet_too_big (struct pbuf *p, u32_t mtu)
 
void icmp6_time_exceeded (struct pbuf *p, enum icmp6_te_code c)
 
void icmp6_param_problem (struct pbuf *p, enum icmp6_pp_code c, u32_t pointer)
 

Detailed Description

IPv6 version of ICMP, as per RFC 4443.

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

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

ICMP time exceeded codes

Enumerator
ICMP6_TE_HL 

Hop limit exceeded in transit

ICMP6_TE_FRAG 

Fragment reassembly time exceeded

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

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