Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/nd6.c
Show First 20 Lines • Show All 900 Lines • ▼ Show 20 Lines | |||||
done: | done: | ||||
if (ln != NULL) | if (ln != NULL) | ||||
ND6_RUNLOCK(); | ND6_RUNLOCK(); | ||||
if (send_ns != 0) { | if (send_ns != 0) { | ||||
nd6_llinfo_settimer_locked(ln, (long)ndi->retrans * hz / 1000); | nd6_llinfo_settimer_locked(ln, (long)ndi->retrans * hz / 1000); | ||||
psrc = nd6_llinfo_get_holdsrc(ln, &src); | psrc = nd6_llinfo_get_holdsrc(ln, &src); | ||||
LLE_FREE_LOCKED(ln); | LLE_FREE_LOCKED(ln); | ||||
ln = NULL; | ln = NULL; | ||||
nd6_ns_output(ifp, psrc, pdst, dst, NULL); | nd6_ns_output_fib(ifp, psrc, pdst, dst, NULL, ifp->if_fib); | ||||
} | } | ||||
if (ln != NULL) | if (ln != NULL) | ||||
LLE_FREE_LOCKED(ln); | LLE_FREE_LOCKED(ln); | ||||
NET_EPOCH_EXIT(et); | NET_EPOCH_EXIT(et); | ||||
CURVNET_RESTORE(); | CURVNET_RESTORE(); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,500 Lines • ▼ Show 20 Lines | if (lle->la_asked == 0) { | ||||
lle->la_asked++; | lle->la_asked++; | ||||
send_ns = 1; | send_ns = 1; | ||||
psrc = nd6_llinfo_get_holdsrc(lle, &src); | psrc = nd6_llinfo_get_holdsrc(lle, &src); | ||||
nd6_llinfo_setstate(lle, ND6_LLINFO_INCOMPLETE); | nd6_llinfo_setstate(lle, ND6_LLINFO_INCOMPLETE); | ||||
} | } | ||||
LLE_WUNLOCK(lle); | LLE_WUNLOCK(lle); | ||||
if (send_ns != 0) | if (send_ns != 0) | ||||
nd6_ns_output(ifp, psrc, NULL, &dst->sin6_addr, NULL); | nd6_ns_output_fib(ifp, psrc, NULL, &dst->sin6_addr, NULL, ifp->if_fib); | ||||
return (EWOULDBLOCK); | return (EWOULDBLOCK); | ||||
} | } | ||||
/* | /* | ||||
* Do L2 address resolution for @sa_dst address. Stores found | * Do L2 address resolution for @sa_dst address. Stores found | ||||
* address in @desten buffer. Copy of lle ln_flags can be also | * address in @desten buffer. Copy of lle ln_flags can be also | ||||
* saved in @pflags if @pflags is non-NULL. | * saved in @pflags if @pflags is non-NULL. | ||||
▲ Show 20 Lines • Show All 228 Lines • Show Last 20 Lines |