removed memcpy that cause inconsistency in nbr-table when adding nd6 neighbor with NS/NA.
This commit is contained in:
parent
040bada378
commit
510fc9e51e
|
@ -492,10 +492,11 @@ na_input(void)
|
||||||
} else {
|
} else {
|
||||||
uip_lladdr_t *lladdr;
|
uip_lladdr_t *lladdr;
|
||||||
nbr = uip_ds6_nbr_lookup(&UIP_ND6_NA_BUF->tgtipaddr);
|
nbr = uip_ds6_nbr_lookup(&UIP_ND6_NA_BUF->tgtipaddr);
|
||||||
lladdr = (uip_lladdr_t *)uip_ds6_nbr_get_ll(nbr);
|
|
||||||
if(nbr == NULL) {
|
if(nbr == NULL) {
|
||||||
goto discard;
|
goto discard;
|
||||||
}
|
}
|
||||||
|
lladdr = (uip_lladdr_t *)uip_ds6_nbr_get_ll(nbr);
|
||||||
|
|
||||||
if(nd6_opt_llao != 0) {
|
if(nd6_opt_llao != 0) {
|
||||||
is_llchange =
|
is_llchange =
|
||||||
memcmp(&nd6_opt_llao[UIP_ND6_OPT_DATA_OFFSET], (void *)lladdr,
|
memcmp(&nd6_opt_llao[UIP_ND6_OPT_DATA_OFFSET], (void *)lladdr,
|
||||||
|
@ -505,8 +506,16 @@ na_input(void)
|
||||||
if(nd6_opt_llao == NULL) {
|
if(nd6_opt_llao == NULL) {
|
||||||
goto discard;
|
goto discard;
|
||||||
}
|
}
|
||||||
memcpy(lladdr, &nd6_opt_llao[UIP_ND6_OPT_DATA_OFFSET],
|
|
||||||
UIP_LLADDR_LEN);
|
/* Remove this neighbor - since it has a NULL MAC address */
|
||||||
|
uip_ds6_nbr_rm(nbr);
|
||||||
|
/* Re-add this neighbor - now with a correct MAC address */
|
||||||
|
nbr = uip_ds6_nbr_add(&UIP_ND6_NA_BUF->tgtipaddr,
|
||||||
|
(const uip_lladdr_t *) &nd6_opt_llao[UIP_ND6_OPT_DATA_OFFSET],
|
||||||
|
is_router, NBR_STALE);
|
||||||
|
if(nbr == NULL) {
|
||||||
|
goto discard;
|
||||||
|
}
|
||||||
if(is_solicited) {
|
if(is_solicited) {
|
||||||
nbr->state = NBR_REACHABLE;
|
nbr->state = NBR_REACHABLE;
|
||||||
nbr->nscount = 0;
|
nbr->nscount = 0;
|
||||||
|
|
Loading…
Reference in a new issue