Similar to the INET case, do not destroy the nd6 entries for

interface addresses until those addresses are removed. I already
made the patch in INET but forgot to bring the code over for
INET6.
This commit is contained in:
Qing Li 2008-12-22 07:11:15 +00:00
parent 388600e803
commit ebf1c74403

View File

@ -2204,12 +2204,14 @@ in6_lltable_lookup(struct lltable *llt, u_int flags,
lle->lle_head = lleh;
LIST_INSERT_HEAD(lleh, lle, lle_next);
} else if (flags & LLE_DELETE) {
if (!(lle->la_flags & LLE_IFADDR) || (flags & LLE_IFADDR)) {
LLE_WLOCK(lle);
lle->la_flags = LLE_DELETED;
LLE_WUNLOCK(lle);
#ifdef DIAGNOSTICS
log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
#endif
}
lle = (void *)-1;
}
if (LLE_IS_VALID(lle)) {