49 #include "net/ipv6/uip-ds6-route.h"
62 #define UIP_DS6_DEFRT_NBS 0
63 #ifndef UIP_CONF_DS6_DEFRT_NBU
64 #define UIP_DS6_DEFRT_NBU 2
66 #define UIP_DS6_DEFRT_NBU UIP_CONF_DS6_DEFRT_NBU
68 #define UIP_DS6_DEFRT_NB UIP_DS6_DEFRT_NBS + UIP_DS6_DEFRT_NBU
71 #define UIP_DS6_PREFIX_NBS 1
72 #ifndef UIP_CONF_DS6_PREFIX_NBU
73 #define UIP_DS6_PREFIX_NBU 2
75 #define UIP_DS6_PREFIX_NBU UIP_CONF_DS6_PREFIX_NBU
77 #define UIP_DS6_PREFIX_NB UIP_DS6_PREFIX_NBS + UIP_DS6_PREFIX_NBU
80 #define UIP_DS6_ADDR_NBS 1
81 #ifndef UIP_CONF_DS6_ADDR_NBU
82 #define UIP_DS6_ADDR_NBU 2
84 #define UIP_DS6_ADDR_NBU UIP_CONF_DS6_ADDR_NBU
86 #define UIP_DS6_ADDR_NB UIP_DS6_ADDR_NBS + UIP_DS6_ADDR_NBU
90 #define UIP_DS6_MADDR_NBS 2 + UIP_DS6_ADDR_NB
92 #define UIP_DS6_MADDR_NBS 1 + UIP_DS6_ADDR_NB
94 #ifndef UIP_CONF_DS6_MADDR_NBU
95 #define UIP_DS6_MADDR_NBU 0
97 #define UIP_DS6_MADDR_NBU UIP_CONF_DS6_MADDR_NBU
99 #define UIP_DS6_MADDR_NB UIP_DS6_MADDR_NBS + UIP_DS6_MADDR_NBU
103 #define UIP_DS6_AADDR_NBS UIP_DS6_PREFIX_NB - 1
105 #define UIP_DS6_AADDR_NBS 0
107 #ifndef UIP_CONF_DS6_AADDR_NBU
108 #define UIP_DS6_AADDR_NBU 0
110 #define UIP_DS6_AADDR_NBU UIP_CONF_DS6_AADDR_NBU
112 #define UIP_DS6_AADDR_NB UIP_DS6_AADDR_NBS + UIP_DS6_AADDR_NBU
116 #ifndef UIP_CONF_DS6_LL_NUD
117 #define UIP_DS6_LL_NUD 0
119 #define UIP_DS6_LL_NUD UIP_CONF_DS6_LL_NUD
123 #define ADDR_TENTATIVE 0
124 #define ADDR_PREFERRED 1
125 #define ADDR_DEPRECATED 2
128 #define ADDR_ANYTYPE 0
129 #define ADDR_AUTOCONF 1
131 #define ADDR_MANUAL 3
135 #ifndef UIP_DS6_CONF_PERIOD
136 #define UIP_DS6_PERIOD (CLOCK_SECOND/10)
138 #define UIP_DS6_PERIOD UIP_DS6_CONF_PERIOD
146 #if UIP_CONF_IPV6_QUEUE_PKT
147 #include "net/ip/uip-packetqueue.h"
159 uint8_t l_a_reserved;
179 #if UIP_ND6_DEF_MAXDADNS > 0
180 struct timer dadtimer;
198 #if UIP_CONF_IPV6_RPL
199 #ifndef UIP_CONF_DS6_NEIGHBOR_STATE_CHANGED
200 #define UIP_CONF_DS6_NEIGHBOR_STATE_CHANGED rpl_ipv6_neighbor_callback
204 #if UIP_CONF_IPV6_RPL
205 #ifndef UIP_CONF_DS6_LINK_NEIGHBOR_CALLBACK
206 #define UIP_CONF_DS6_LINK_NEIGHBOR_CALLBACK rpl_link_neighbor_callback
214 uint8_t cur_hop_limit;
215 uint32_t base_reachable_time;
216 uint32_t reachable_time;
217 uint32_t retrans_timer;
233 extern struct etimer uip_ds6_timer_periodic;
252 uint16_t elementsize, uip_ipaddr_t *ipaddr,
263 uint8_t advertise, uint8_t flags,
265 unsigned long ptime);
268 unsigned long interval);
273 uint8_t uip_ds6_is_addr_onlink(uip_ipaddr_t *ipaddr);
280 unsigned long vlifetime, uint8_t type);
311 #if UIP_ND6_DEF_MAXDADNS >0
325 void uip_ds6_send_ra_sollicited(
void);
328 void uip_ds6_send_ra_periodic(
void);
340 #define uip_ds6_is_my_addr(addr) (uip_ds6_addr_lookup(addr) != NULL)
341 #define uip_ds6_is_my_maddr(addr) (uip_ds6_maddr_lookup(addr) != NULL)
342 #define uip_ds6_is_my_aaddr(addr) (uip_ds6_aaddr_lookup(addr) != NULL)
struct uip_ds6_addr uip_ds6_addr_t
Unicast address structure.
Second timer library header file.
struct uip_ds6_element uip_ds6_element_t
Generic type for a DS6, to use a common loop though all DS.
Neighbor discovery (RFC 4861)
struct uip_ds6_netif uip_ds6_netif_t
Interface structure (contains all the interface variables)
struct uip_ds6_prefix uip_ds6_prefix_t
A prefix list entry.
Unicast address structure.
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...
struct uip_ds6_aaddr uip_ds6_aaddr_t
Anycast address.
Header file for the uIP TCP/IP stack.
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
struct etimer uip_ds6_timer_rs
Timer for maintenance of data structures.
void uip_ds6_periodic(void)
Periodic processing of data structures.
uip_ds6_prefix_t uip_ds6_prefix_list[UIP_DS6_PREFIX_NB]
The single interface.
Generic type for a DS6, to use a common loop though all DS.
struct uip_ds6_maddr uip_ds6_maddr_t
A multicast address.
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.
Interface structure (contains all the interface variables)
IPv6 Neighbor cache (link-layer/IPv6 address mapping)
void uip_ds6_init(void)
Initialize data structures.
uint32_t uip_ds6_compute_reachable_time(void)
Compute the reachable time based on base reachable time, see RFC 4861.
uint8_t get_match_length(uip_ipaddr_t *src, uip_ipaddr_t *dst)
Get the number of matching bits of two addresses.