fixed the case when the lladdr did not change but the LLAO is there and it is not an override.
This commit is contained in:
parent
6f271bf853
commit
223f002676
|
@ -534,9 +534,12 @@ na_input(void)
|
||||||
}
|
}
|
||||||
goto discard;
|
goto discard;
|
||||||
} else {
|
} else {
|
||||||
if(is_override || (!is_override && nd6_opt_llao != NULL && !is_llchange)
|
/**
|
||||||
|| nd6_opt_llao == NULL) {
|
* If this is an cache override, or same lladdr, or no llao -
|
||||||
if(nd6_opt_llao != NULL) {
|
* do updates of nbr states.
|
||||||
|
*/
|
||||||
|
if(is_override || !is_llchange || nd6_opt_llao == NULL) {
|
||||||
|
if(nd6_opt_llao != NULL && is_llchange) {
|
||||||
uip_lladdr_t lladdr_aligned;
|
uip_lladdr_t lladdr_aligned;
|
||||||
extract_lladdr_aligned(&lladdr_aligned);
|
extract_lladdr_aligned(&lladdr_aligned);
|
||||||
|
|
||||||
|
@ -554,10 +557,6 @@ na_input(void)
|
||||||
nbr->state = NBR_REACHABLE;
|
nbr->state = NBR_REACHABLE;
|
||||||
/* reachable time is stored in ms */
|
/* reachable time is stored in ms */
|
||||||
stimer_set(&(nbr->reachable), uip_ds6_if.reachable_time / 1000);
|
stimer_set(&(nbr->reachable), uip_ds6_if.reachable_time / 1000);
|
||||||
} else {
|
|
||||||
if(nd6_opt_llao != NULL && is_llchange) {
|
|
||||||
nbr->state = NBR_STALE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue