factored out function for getting link local address in ds6 and made use of it in rpl for checking state of lladdress as DIOs should not be sent when tentative
This commit is contained in:
parent
1696e9f70f
commit
adb00ed932
3 changed files with 34 additions and 10 deletions
|
@ -586,6 +586,24 @@ uip_ds6_addr_lookup(uip_ipaddr_t * ipaddr)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/*
|
||||
* get a link local address -
|
||||
* state = -1 => any address is ok. Otherwise state = desired state of addr.
|
||||
* (TENTATIVE, PREFERRED, DEPRECATED)
|
||||
*/
|
||||
uip_ds6_addr_t *
|
||||
uip_ds6_get_link_local(int8_t state) {
|
||||
for(locaddr = uip_ds6_if.addr_list;
|
||||
locaddr < uip_ds6_if.addr_list + UIP_DS6_ADDR_NB; locaddr++) {
|
||||
if((locaddr->isused) && (state == - 1 || locaddr->state == state)
|
||||
&& (uip_is_addr_link_local(&locaddr->ipaddr))) {
|
||||
return locaddr;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
uip_ds6_maddr_t *
|
||||
uip_ds6_maddr_add(uip_ipaddr_t * ipaddr)
|
||||
|
@ -763,15 +781,7 @@ uip_ds6_select_src(uip_ipaddr_t *src, uip_ipaddr_t *dst)
|
|||
}
|
||||
}
|
||||
} else {
|
||||
// use link local
|
||||
for(locaddr = uip_ds6_if.addr_list;
|
||||
locaddr < uip_ds6_if.addr_list + UIP_DS6_ADDR_NB; locaddr++) {
|
||||
if((locaddr->isused) && (locaddr->state == ADDR_PREFERRED)
|
||||
&& (uip_is_addr_link_local(&locaddr->ipaddr))) {
|
||||
matchaddr = locaddr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
matchaddr = uip_ds6_get_link_local(ADDR_PREFERRED);
|
||||
}
|
||||
|
||||
uip_ipaddr_copy(src, &matchaddr->ipaddr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue