Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet6/nd6.c
Show First 20 Lines • Show All 2,026 Lines • ▼ Show 20 Lines | if (ln == NULL) { | ||||
/* Prefer any existing lle over newly-created one */ | /* Prefer any existing lle over newly-created one */ | ||||
ln_tmp = nd6_lookup(from, LLE_EXCLUSIVE, ifp); | ln_tmp = nd6_lookup(from, LLE_EXCLUSIVE, ifp); | ||||
if (ln_tmp == NULL) | if (ln_tmp == NULL) | ||||
lltable_link_entry(LLTABLE6(ifp), ln); | lltable_link_entry(LLTABLE6(ifp), ln); | ||||
IF_AFDATA_WUNLOCK(ifp); | IF_AFDATA_WUNLOCK(ifp); | ||||
if (ln_tmp == NULL) { | if (ln_tmp == NULL) { | ||||
/* No existing lle, mark as new entry (6,7) */ | /* No existing lle, mark as new entry (6,7) */ | ||||
is_newentry = 1; | is_newentry = 1; | ||||
if (lladdr != NULL) { /* (7) */ | |||||
nd6_llinfo_setstate(ln, ND6_LLINFO_STALE); | nd6_llinfo_setstate(ln, ND6_LLINFO_STALE); | ||||
if (lladdr != NULL) /* (7) */ | |||||
EVENTHANDLER_INVOKE(lle_event, ln, | EVENTHANDLER_INVOKE(lle_event, ln, | ||||
LLENTRY_RESOLVED); | LLENTRY_RESOLVED); | ||||
} | |||||
} else { | } else { | ||||
lltable_free_entry(LLTABLE6(ifp), ln); | lltable_free_entry(LLTABLE6(ifp), ln); | ||||
ln = ln_tmp; | ln = ln_tmp; | ||||
ln_tmp = NULL; | ln_tmp = NULL; | ||||
} | } | ||||
} | } | ||||
/* do nothing if static ndp is set */ | /* do nothing if static ndp is set */ | ||||
if ((ln->la_flags & LLE_STATIC)) { | if ((ln->la_flags & LLE_STATIC)) { | ||||
▲ Show 20 Lines • Show All 714 Lines • Show Last 20 Lines |