65 #define UIP_DS6_DEFRT_NBS 0 66 #ifndef UIP_CONF_DS6_DEFRT_NBU 67 #define UIP_DS6_DEFRT_NBU 2 69 #define UIP_DS6_DEFRT_NBU UIP_CONF_DS6_DEFRT_NBU 71 #define UIP_DS6_DEFRT_NB UIP_DS6_DEFRT_NBS + UIP_DS6_DEFRT_NBU 74 #ifdef UIP_CONF_DS6_DEFAULT_PREFIX 75 #define UIP_DS6_DEFAULT_PREFIX UIP_CONF_DS6_DEFAULT_PREFIX 97 #define UIP_DS6_DEFAULT_PREFIX 0xfd00 100 #define UIP_DS6_DEFAULT_PREFIX_0 ((UIP_DS6_DEFAULT_PREFIX >> 8) & 0xff) 101 #define UIP_DS6_DEFAULT_PREFIX_1 (UIP_DS6_DEFAULT_PREFIX & 0xff) 104 #define UIP_DS6_PREFIX_NBS 1 105 #ifndef UIP_CONF_DS6_PREFIX_NBU 106 #define UIP_DS6_PREFIX_NBU 2 108 #define UIP_DS6_PREFIX_NBU UIP_CONF_DS6_PREFIX_NBU 110 #define UIP_DS6_PREFIX_NB UIP_DS6_PREFIX_NBS + UIP_DS6_PREFIX_NBU 113 #define UIP_DS6_ADDR_NBS 1 114 #ifndef UIP_CONF_DS6_ADDR_NBU 115 #define UIP_DS6_ADDR_NBU 2 117 #define UIP_DS6_ADDR_NBU UIP_CONF_DS6_ADDR_NBU 119 #define UIP_DS6_ADDR_NB UIP_DS6_ADDR_NBS + UIP_DS6_ADDR_NBU 123 #define UIP_DS6_MADDR_NBS 2 + UIP_DS6_ADDR_NB 125 #define UIP_DS6_MADDR_NBS 1 + UIP_DS6_ADDR_NB 127 #ifndef UIP_CONF_DS6_MADDR_NBU 128 #define UIP_DS6_MADDR_NBU 0 130 #define UIP_DS6_MADDR_NBU UIP_CONF_DS6_MADDR_NBU 132 #define UIP_DS6_MADDR_NB UIP_DS6_MADDR_NBS + UIP_DS6_MADDR_NBU 136 #define UIP_DS6_AADDR_NBS UIP_DS6_PREFIX_NB - 1 138 #define UIP_DS6_AADDR_NBS 0 140 #ifndef UIP_CONF_DS6_AADDR_NBU 141 #define UIP_DS6_AADDR_NBU 0 143 #define UIP_DS6_AADDR_NBU UIP_CONF_DS6_AADDR_NBU 145 #define UIP_DS6_AADDR_NB UIP_DS6_AADDR_NBS + UIP_DS6_AADDR_NBU 149 #ifndef UIP_CONF_DS6_LL_NUD 150 #define UIP_DS6_LL_NUD 0 152 #define UIP_DS6_LL_NUD UIP_CONF_DS6_LL_NUD 156 #define ADDR_TENTATIVE 0 157 #define ADDR_PREFERRED 1 158 #define ADDR_DEPRECATED 2 161 #define ADDR_ANYTYPE 0 162 #define ADDR_AUTOCONF 1 164 #define ADDR_MANUAL 3 168 #ifndef UIP_DS6_CONF_PERIOD 169 #define UIP_DS6_PERIOD (60 * CLOCK_SECOND) 171 #define UIP_DS6_PERIOD UIP_DS6_CONF_PERIOD 179 #if UIP_CONF_IPV6_QUEUE_PKT 180 #include "net/ipv6/uip-packetqueue.h" 192 uint8_t l_a_reserved;
212 #if UIP_ND6_DEF_MAXDADNS > 0 213 struct timer dadtimer;
233 uint8_t cur_hop_limit;
234 uint32_t base_reachable_time;
235 uint32_t reachable_time;
236 uint32_t retrans_timer;
258 extern struct etimer uip_ds6_timer_periodic;
263 extern struct etimer uip_ds6_timer_rs;
277 uint16_t elementsize, uip_ipaddr_t *
ipaddr,
288 uint8_t advertise, uint8_t flags,
290 unsigned long ptime);
293 unsigned long interval);
298 uint8_t uip_ds6_is_addr_onlink(uip_ipaddr_t *
ipaddr);
322 unsigned long vlifetime, uint8_t type);
356 #if UIP_ND6_DEF_MAXDADNS >0 370 void uip_ds6_send_ra_sollicited(
void);
373 void uip_ds6_send_ra_periodic(
void);
385 #define uip_ds6_is_my_addr(addr) (uip_ds6_addr_lookup(addr) != NULL) 386 #define uip_ds6_is_my_maddr(addr) (uip_ds6_maddr_lookup(addr) != NULL) 387 #define uip_ds6_is_my_aaddr(addr) (uip_ds6_aaddr_lookup(addr) != NULL) static uip_ipaddr_t ipaddr
Pointer to prefix information option in uip_buf.
struct uip_ds6_addr uip_ds6_addr_t
Unicast address structure.
void uip_ds6_send_rs(void)
Send periodic RS to find router.
static uip_ds6_addr_t * addr
Pointer to a nbr cache entry.
void uip_ds6_init(void)
Initialize data structures.
Generic type for a DS6, to use a common loop though all DS.
IPv6 Neighbor cache (link-layer/IPv6 address mapping)
void uip_ds6_set_lladdr_from_iid(uip_lladdr_t *lladdr, const uip_ipaddr_t *ipaddr)
Build a link-layer address from an IPv6 address based on its UUID64.
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_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 uip_ds6_netif uip_ds6_netif_t
Interface structure (contains all the interface variables)
void uip_ds6_dad(uip_ds6_addr_t *ifaddr)
Perform Duplicate Address Selection on one address.
uip_ds6_prefix_t uip_ds6_prefix_list[UIP_DS6_PREFIX_NB]
Prefix list.
int uip_ds6_dad_failed(uip_ds6_addr_t *ifaddr)
Callback when DAD failed.
struct uip_ds6_element uip_ds6_element_t
Generic type for a DS6, to use a common loop though all DS.
struct uip_ds6_aaddr uip_ds6_aaddr_t
Anycast address.
This header file contains configuration directives for uIPv6 multicast support.
void uip_ds6_set_default_prefix(const uip_ip6addr_t *prefix)
Set the Default IPv6 prefix.
const uip_ip6addr_t * uip_ds6_default_prefix(void)
Retrieve the Default IPv6 prefix.
Second timer library header file.
struct uip_ds6_maddr uip_ds6_maddr_t
A multicast address.
Unicast address structure.
uip_ds6_addr_t * uip_ds6_addr_add(uip_ipaddr_t *ipaddr, unsigned long vlifetime, uint8_t type)
Add a unicast address to the interface.
void uip_ds6_periodic(void)
Periodic processing of data structures.
Header file for the uIP TCP/IP stack.
Header file for IPv6 Neighbor discovery (RFC 4861)
uip_ds6_netif_t uip_ds6_if
The single interface.
Header file for routing table manipulation.
Interface structure (contains all the interface variables)
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_prefix uip_ds6_prefix_t
A prefix list entry.
void uip_ds6_select_src(uip_ipaddr_t *src, uip_ipaddr_t *dst)
Source address selection, see RFC 3484.
uint32_t uip_ds6_compute_reachable_time(void)
Compute the reachable time based on base reachable time, see RFC 4861.