Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/nd6_nbr.c
Show First 20 Lines • Show All 617 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
struct ifnet *ifp; | struct ifnet *ifp; | ||||
struct ip6_hdr *ip6; | struct ip6_hdr *ip6; | ||||
struct ifaddr *ifa; | struct ifaddr *ifa; | ||||
struct llentry *ln; | struct llentry *ln; | ||||
struct mbuf *chain; | struct mbuf *chain; | ||||
struct nd_neighbor_advert *nd_na; | struct nd_neighbor_advert *nd_na; | ||||
struct in6_addr daddr6, taddr6; | struct in6_addr daddr6, taddr6; | ||||
struct sockaddr_in6 sin6; | |||||
union nd_opts ndopts; | union nd_opts ndopts; | ||||
u_char linkhdr[LLE_MAX_LINKHDR]; | u_char linkhdr[LLE_MAX_LINKHDR]; | ||||
char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; | char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; | ||||
char *lladdr; | char *lladdr; | ||||
size_t linkhdrsize; | size_t linkhdrsize; | ||||
int flags, is_override, is_router, is_solicited; | int flags, is_override, is_router, is_solicited; | ||||
int lladdr_off, lladdrlen, checklink; | int lladdr_off, lladdrlen, checklink; | ||||
▲ Show 20 Lines • Show All 259 Lines • ▼ Show 20 Lines | if (ln->ln_state == ND6_LLINFO_INCOMPLETE) { | ||||
} | } | ||||
ln->ln_router = is_router; | ln->ln_router = is_router; | ||||
} | } | ||||
/* XXX - QL | /* XXX - QL | ||||
* Does this matter? | * Does this matter? | ||||
* rt->rt_flags &= ~RTF_REJECT; | * rt->rt_flags &= ~RTF_REJECT; | ||||
*/ | */ | ||||
ln->la_asked = 0; | ln->la_asked = 0; | ||||
if (ln->la_hold != NULL) { | if (ln->la_hold != NULL) | ||||
memset(&sin6, 0, sizeof(sin6)); | chain = nd6_grab_holdchain(ln); | ||||
nd6_grab_holdchain(ln, &chain, &sin6); | |||||
} | |||||
freeit: | freeit: | ||||
if (ln != NULL) | if (ln != NULL) | ||||
LLE_WUNLOCK(ln); | LLE_WUNLOCK(ln); | ||||
if (chain != NULL) | if (chain != NULL) | ||||
nd6_flush_holdchain(ifp, chain, &sin6); | nd6_flush_holdchain(ifp, ln, chain); | ||||
if (checklink) | if (checklink) | ||||
pfxlist_onlink_check(); | pfxlist_onlink_check(); | ||||
m_freem(m); | m_freem(m); | ||||
return; | return; | ||||
bad: | bad: | ||||
▲ Show 20 Lines • Show All 652 Lines • Show Last 20 Lines |