Microchip® Advanced Software Framework

uip-icmp6.h File Reference

    ICMPv6 echo request and error messages (RFC 4443)
Author
Julien Abeille jabei.nosp@m.lle@.nosp@m.cisco.nosp@m..com
Mathilde Durvy mdurv.nosp@m.y@ci.nosp@m.sco.c.nosp@m.om
#include "net/ip/uip.h"
#include "compiler.h"

Data Structures

struct  uip_icmp6_echo_reply_notification
 
struct  uip_icmp6_error
 ICMPv6 Error message constant part. More...
 
struct  uip_icmp6_input_handler
 

Macros

#define UIP_ICMP6_ECHO_REQUEST_LEN   4
 Echo Request constant part length. More...
 
#define UIP_ICMP6_ERROR_LEN   4
 ICMPv6 Error message constant part length. More...
 
ICMPv6 message types
#define ICMP6_DST_UNREACH   1
 dest unreachable More...
 
#define ICMP6_PACKET_TOO_BIG   2
 packet too big More...
 
#define ICMP6_TIME_EXCEEDED   3
 time exceeded More...
 
#define ICMP6_PARAM_PROB   4
 ip6 header bad More...
 
#define ICMP6_ECHO_REQUEST   128
 Echo request. More...
 
#define ICMP6_ECHO_REPLY   129
 Echo reply. More...
 
#define ICMP6_RS   133
 Router Solicitation. More...
 
#define ICMP6_RA   134
 Router Advertisement. More...
 
#define ICMP6_NS   135
 Neighbor Solicitation. More...
 
#define ICMP6_NA   136
 Neighbor advertisement. More...
 
#define ICMP6_REDIRECT   137
 Redirect. More...
 
#define ICMP6_RPL   155
 RPL. More...
 
#define ICMP6_PRIV_EXP_100   100
 Private Experimentation. More...
 
#define ICMP6_PRIV_EXP_101   101
 Private Experimentation. More...
 
#define ICMP6_PRIV_EXP_200   200
 Private Experimentation. More...
 
#define ICMP6_PRIV_EXP_201   201
 Private Experimentation. More...
 
#define ICMP6_ROLL_TM   ICMP6_PRIV_EXP_200
 ROLL Trickle Multicast. More...
 
ICMPv6 Destination Unreachable message codes
#define ICMP6_DST_UNREACH_NOROUTE   0
 no route to destination More...
 
#define ICMP6_DST_UNREACH_ADMIN   1
 administratively prohibited More...
 
#define ICMP6_DST_UNREACH_NOTNEIGHBOR   2
 not a neighbor(obsolete) More...
 
#define ICMP6_DST_UNREACH_BEYONDSCOPE   2
 beyond scope of source address More...
 
#define ICMP6_DST_UNREACH_ADDR   3
 address unreachable More...
 
#define ICMP6_DST_UNREACH_NOPORT   4
 port unreachable More...
 
ICMPv6 Time Exceeded message codes
#define ICMP6_TIME_EXCEED_TRANSIT   0
 ttl==0 in transit More...
 
#define ICMP6_TIME_EXCEED_REASSEMBLY   1
 ttl==0 in reass More...
 
ICMPv6 Parameter Problem message codes
#define ICMP6_PARAMPROB_HEADER   0
 erroneous header field More...
 
#define ICMP6_PARAMPROB_NEXTHEADER   1
 unrecognized next header More...
 
#define ICMP6_PARAMPROB_OPTION   2
 unrecognized option More...
 

Typedefs

typedef struct uip_icmp6_error uip_icmp6_error
 ICMPv6 Error message constant part. More...
 

ICMPv6 RFC4443 Message processing and sending

#define UIP_ICMP6_INPUT_SUCCESS   0
 
#define UIP_ICMP6_INPUT_ERROR   1
 
#define UIP_ICMP6_HANDLER_CODE_ANY   0xFF /* Handle all codes for this type */
 
#define UIP_ICMP6_HANDLER(name, type, code, func)   static uip_icmp6_input_handler_t name = { NULL, type, code, func }
 
typedef void(* uip_icmp6_echo_reply_callback_t )(uip_ipaddr_t *source, uint8_t ttl, uint8_t *data, uint16_t datalen)
 
typedef struct
uip_icmp6_input_handler 
uip_icmp6_input_handler_t
 
void uip_icmp6_error_output (uint8_t type, uint8_t code, uint32_t param)
 Send an icmpv6 error message. More...
 
void uip_icmp6_send (const uip_ipaddr_t *dest, int type, int code, int payload_len)
 Send an icmpv6 message. More...
 
void uip_icmp6_echo_reply_callback_add (struct uip_icmp6_echo_reply_notification *n, uip_icmp6_echo_reply_callback_t c)
 Add a callback function for ping replies. More...
 
void uip_icmp6_echo_reply_callback_rm (struct uip_icmp6_echo_reply_notification *n)
 Remove a callback function for ping replies. More...
 
uint8_t uip_icmp6_input (uint8_t type, uint8_t icode)
 Handle an incoming ICMPv6 message. More...
 
void uip_icmp6_register_input_handler (uip_icmp6_input_handler_t *handler)
 Register a handler which can handle a specific ICMPv6 message type. More...
 
void uip_icmp6_init (void)
 Initialise the uIP ICMPv6 core. More...