Contiki-Inga 3.x
Data Structures | Macros | Typedefs | Functions | Variables
Network interface and stateless autoconfiguration (RFC 4862)

Data Structures

struct  uip_ds6_prefix
 A prefix list entry. More...
 
struct  uip_ds6_addr
 Unicast address structure. More...
 
struct  uip_ds6_aaddr
 Anycast address. More...
 
struct  uip_ds6_maddr
 A multicast address. More...
 
struct  uip_ds6_netif
 Interface structure (contains all the interface variables) More...
 
struct  uip_ds6_element
 Generic type for a DS6, to use a common loop though all DS. More...
 

Macros

#define UIP_DS6_DEFRT_NBS   0
 Configuration. More...
 

Typedefs

typedef struct uip_ds6_prefix uip_ds6_prefix_t
 A prefix list entry.
 
typedef struct uip_ds6_addr uip_ds6_addr_t
 Unicast address structure.
 
typedef struct uip_ds6_aaddr uip_ds6_aaddr_t
 Anycast address.
 
typedef struct uip_ds6_maddr uip_ds6_maddr_t
 A multicast address.
 
typedef struct uip_ds6_netif uip_ds6_netif_t
 Interface structure (contains all the interface variables)
 
typedef struct uip_ds6_element uip_ds6_element_t
 Generic type for a DS6, to use a common loop though all DS.
 

Functions

void uip_ds6_init (void)
 Initialize data structures.
 
void uip_ds6_periodic (void)
 Periodic processing of data structures.
 
uint8_t uip_ds6_list_loop (uip_ds6_element_t *list, uint8_t size, uint16_t elementsize, uip_ipaddr_t *ipaddr, uint8_t ipaddrlen, uip_ds6_element_t **out_element)
 Generic loop routine on an abstract data structure, which generalizes all data structures used in DS6.
 
void uip_ds6_set_addr_iid (uip_ipaddr_t *ipaddr, uip_lladdr_t *lladdr)
 set the last 64 bits of an IP address based on the MAC address
 
uint8_t get_match_length (uip_ipaddr_t *src, uip_ipaddr_t *dst)
 Get the number of matching bits of two addresses.
 
void uip_ds6_select_src (uip_ipaddr_t *src, uip_ipaddr_t *dst)
 Source address selection, see RFC 3484.
 
void uip_ds6_send_rs (void)
 Send periodic RS to find router.
 
uint32_t uip_ds6_compute_reachable_time (void)
 Compute the reachable time based on base reachable time, see RFC 4861.
 

Variables

struct etimer uip_ds6_timer_rs
 Timer for maintenance of data structures.
 

Possible states for the an address (RFC 4862)

#define ADDR_TENTATIVE   0
 
#define ADDR_PREFERRED   1
 
#define ADDR_DEPRECATED   2
 

How the address was acquired: Autoconf, DHCP or manually

#define ADDR_ANYTYPE   0
 
#define ADDR_AUTOCONF   1
 
#define ADDR_DHCP   2
 
#define ADDR_MANUAL   3
 

General DS6 definitions

#define UIP_DS6_PERIOD   (CLOCK_SECOND/10) /** Period for uip-ds6 periodic task*/
 
#define FOUND   0
 
#define FREESPACE   1
 
#define NOSPACE   2
 

Prefix list basic routines

uip_ds6_prefix_tuip_ds6_prefix_add (uip_ipaddr_t *ipaddr, uint8_t length, unsigned long interval)
 
void uip_ds6_prefix_rm (uip_ds6_prefix_t *prefix)
 
uip_ds6_prefix_tuip_ds6_prefix_lookup (uip_ipaddr_t *ipaddr, uint8_t ipaddrlen)
 
uint8_t uip_ds6_is_addr_onlink (uip_ipaddr_t *ipaddr)
 

Unicast address list basic routines

uip_ds6_addr_tuip_ds6_addr_add (uip_ipaddr_t *ipaddr, unsigned long vlifetime, uint8_t type)
 
void uip_ds6_addr_rm (uip_ds6_addr_t *addr)
 
uip_ds6_addr_tuip_ds6_addr_lookup (uip_ipaddr_t *ipaddr)
 
uip_ds6_addr_tuip_ds6_get_link_local (int8_t state)
 
uip_ds6_addr_tuip_ds6_get_global (int8_t state)
 

Multicast address list basic routines

uip_ds6_maddr_tuip_ds6_maddr_add (const uip_ipaddr_t *ipaddr)
 
void uip_ds6_maddr_rm (uip_ds6_maddr_t *maddr)
 
uip_ds6_maddr_tuip_ds6_maddr_lookup (const uip_ipaddr_t *ipaddr)
 

Anycast address list basic routines

uip_ds6_aaddr_tuip_ds6_aaddr_add (uip_ipaddr_t *ipaddr)
 
void uip_ds6_aaddr_rm (uip_ds6_aaddr_t *aaddr)
 
uip_ds6_aaddr_tuip_ds6_aaddr_lookup (uip_ipaddr_t *ipaddr)
 

Macros to check if an IP address (unicast, multicast or anycast) is mine

compute random reachable timer

#define uip_ds6_is_my_addr(addr)   (uip_ds6_addr_lookup(addr) != NULL)
 Checks if IP address is mine. More...
 
#define uip_ds6_is_my_maddr(addr)   (uip_ds6_maddr_lookup(addr) != NULL)
 Checks if IP multicaste address is mine. More...
 
#define uip_ds6_is_my_aaddr(addr)   (uip_ds6_aaddr_lookup(addr) != NULL)
 Checks if IP anycast address is mine. More...
 

Detailed Description

Macro Definition Documentation

#define UIP_DS6_DEFRT_NBS   0

Configuration.

For all tables (Neighbor cache, Prefix List, Routing Table, Default Router List, Unicast address list, multicast address list, anycast address list), we define:

  • the number of elements requested by the user in contiki configuration (name suffixed by _NBU)
  • the number of elements assigned by the system (name suffixed by _NBS)
  • the total number of elements is the sum (name suffixed by _NB)

Definition at line 65 of file uip-ds6.h.

#define uip_ds6_is_my_aaddr (   addr)    (uip_ds6_aaddr_lookup(addr) != NULL)

Checks if IP anycast address is mine.

Definition at line 352 of file uip-ds6.h.

#define uip_ds6_is_my_addr (   addr)    (uip_ds6_addr_lookup(addr) != NULL)

Checks if IP address is mine.

Definition at line 348 of file uip-ds6.h.

Referenced by tcpip_ipv6_output(), uip_nd6_ns_input(), uip_nd6_ns_output(), and uip_process().

#define uip_ds6_is_my_maddr (   addr)    (uip_ds6_maddr_lookup(addr) != NULL)

Checks if IP multicaste address is mine.

Definition at line 350 of file uip-ds6.h.

Referenced by uip_process().