Contiki 2.6

uip-ds6.h File Reference

Network interface and stateless autoconfiguration (RFC 4862) More...

#include "net/uip.h"
#include "sys/stimer.h"
#include "net/uip-nd6.h"

Go to the source code of this file.

Data Structures

struct  uip_ds6_nbr
 An entry in the nbr cache. More...
struct  uip_ds6_defrt
 An entry in the default router list. More...
struct  uip_ds6_prefix
 A prefix list entry. More...
struct  uip_ds6_addr
 * More...
struct  uip_ds6_aaddr
 Anycast address. More...
struct  uip_ds6_maddr
 A multicast address. More...
struct  uip_ds6_route
 An entry in the routing table. 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...

Defines

#define UIP_DS6_NBR_NBS   0
 Configuration.
#define NBR_INCOMPLETE   0
 Possible states for the nbr cache entries.
#define ADDR_TENTATIVE   0
 Possible states for the an address (RFC 4862)
#define ADDR_ANYTYPE   0
 How the address was acquired: Autoconf, DHCP or manually.
#define UIP_DS6_PERIOD   (CLOCK_SECOND/10)
 General DS6 definitions.
#define UIP_DS6_ROUTE_STATE_TYPE   rpl_route_entry_t
 define some additional RPL related route state and neighbor callback for RPL - if not a DS6_ROUTE_STATE is already set
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)
#define uip_ds6_is_my_maddr(addr)   (uip_ds6_maddr_lookup(addr) != NULL)
#define uip_ds6_is_my_aaddr(addr)   (uip_ds6_aaddr_lookup(addr) != NULL)

Typedefs

typedef struct uip_ds6_nbr uip_ds6_nbr_t
 An entry in the nbr cache.
typedef struct uip_ds6_defrt uip_ds6_defrt_t
 An entry in the default router list.
typedef struct uip_ds6_prefix uip_ds6_prefix_t
 A prefix list entry.
typedef struct uip_ds6_addr uip_ds6_addr_t
 *
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_route uip_ds6_route_t
 An entry in the routing table.
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.
Neighbor Cache basic routines
uip_ds6_nbr_tuip_ds6_nbr_add (uip_ipaddr_t *ipaddr, uip_lladdr_t *lladdr, uint8_t isrouter, uint8_t state)
void uip_ds6_nbr_rm (uip_ds6_nbr_t *nbr)
uip_ds6_nbr_tuip_ds6_nbr_lookup (uip_ipaddr_t *ipaddr)
uip_ds6_nbr_tuip_ds6_nbr_ll_lookup (uip_lladdr_t *lladdr)
Default router list basic routines
uip_ds6_defrt_tuip_ds6_defrt_add (uip_ipaddr_t *ipaddr, unsigned long interval)
void uip_ds6_defrt_rm (uip_ds6_defrt_t *defrt)
uip_ds6_defrt_tuip_ds6_defrt_lookup (uip_ipaddr_t *ipaddr)
uip_ipaddr_tuip_ds6_defrt_choose (void)
Prefix list basic routines
uip_ds6_prefix_tuip_ds6_prefix_add (uip_ipaddr_t *ipaddr, uint8_t ipaddrlen, 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 (uip_ipaddr_t *ipaddr)
void uip_ds6_maddr_rm (uip_ds6_maddr_t *maddr)
uip_ds6_maddr_tuip_ds6_maddr_lookup (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)
Routing Table basic routines
uip_ds6_route_tuip_ds6_route_lookup (uip_ipaddr_t *destipaddr)
uip_ds6_route_tuip_ds6_route_add (uip_ipaddr_t *ipaddr, uint8_t length, uip_ipaddr_t *nexthop, uint8_t metric)
void uip_ds6_route_rm (uip_ds6_route_t *route)
void uip_ds6_route_rm_by_nexthop (uip_ipaddr_t *nexthop)

Variables

uip_ds6_netif_t uip_ds6_if
struct etimer uip_ds6_timer_rs
 Timer for maintenance of data structures.

Detailed Description

Network interface and stateless autoconfiguration (RFC 4862)

Author:
Mathilde Durvy <mdurvy@cisco.com>
Julien Abeille <jabeille@cisco.com>

Definition in file uip-ds6.h.