Contiki-NG
Macros | Functions | Variables
uip-nd6.c File Reference

Neighbor discovery (RFC 4861) More...

#include <string.h>
#include <inttypes.h>
#include "net/ipv6/uip-icmp6.h"
#include "net/ipv6/uip-nd6.h"
#include "net/ipv6/uip-ds6.h"
#include "net/ipv6/uip-nameserver.h"
#include "lib/random.h"
#include "sys/log.h"

Go to the source code of this file.

Macros

#define UIP_ND6_OPT_HDR_BUF   ((uip_nd6_opt_hdr *)&uip_buf[uip_l2_l3_icmp_hdr_len + nd6_opt_offset])
 Pointer to ND option.
 
Pointers to the header structures.

All pointers except UIP_IP_BUF depend on uip_ext_len, which at packet reception, is the total length of the extension headers.

The pointer to ND6 options header also depends on nd6_opt_offset, which we set in each function.

Care should be taken when manipulating these buffers about the value of these length variables

#define UIP_IP_BUF   ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
 Pointer to IP header.
 
#define UIP_ICMP_BUF   ((struct uip_icmp_hdr *)&uip_buf[uip_l2_l3_hdr_len])
 Pointer to ICMP header.
 
#define UIP_ND6_RS_BUF   ((uip_nd6_rs *)&uip_buf[uip_l2_l3_icmp_hdr_len])
 
#define UIP_ND6_RA_BUF   ((uip_nd6_ra *)&uip_buf[uip_l2_l3_icmp_hdr_len])
 
#define UIP_ND6_NS_BUF   ((uip_nd6_ns *)&uip_buf[uip_l2_l3_icmp_hdr_len])
 
#define UIP_ND6_NA_BUF   ((uip_nd6_na *)&uip_buf[uip_l2_l3_icmp_hdr_len])
 

Functions

static int extract_lladdr_from_llao_aligned (uip_lladdr_t *dest)
 Pointer to a prefix list entry.
 
void uip_nd6_rs_output (void)
 Neighbor Solicitation Processing. More...
 
void ra_input (void)
 Process a Router Advertisement. More...
 
void uip_nd6_init ()
 Initialise the uIP ND core.
 

Variables

static uint8_t * nd6_opt_llao
 Offset from the end of the icmpv6 header to the option in uip_buf.
 
static uip_ds6_nbr_tnbr
 Pointer to llao option in uip_buf.
 
static uip_ds6_addr_taddr
 Pointer to a nbr cache entry.
 
static uip_ds6_defrt_tdefrt
 Pointer to an interface address.
 
static uip_nd6_opt_prefix_infond6_opt_prefix_info
 Pointer to a router list entry.
 
static uip_ipaddr_t ipaddr
 Pointer to prefix information option in uip_buf.
 

Detailed Description

Neighbor discovery (RFC 4861)

Author
Mathilde Durvy mdurv.nosp@m.y@ci.nosp@m.sco.c.nosp@m.om
Julien Abeille jabei.nosp@m.lle@.nosp@m.cisco.nosp@m..com

Definition in file uip-nd6.c.

Function Documentation

◆ ra_input()

void ra_input ( void  )

Process a Router Advertisement.

  • Possible actions when receiving a RA: add router to router list, recalculate reachable time, update link hop limit, update retrans timer.
  • If MTU option: update MTU.
  • If SLLAO option: update entry in neighbor cache
  • If prefix option: start autoconf, add prefix to prefix list

Definition at line 868 of file uip-nd6.c.