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.