Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/in6.c
Show First 20 Lines • Show All 2,329 Lines • ▼ Show 20 Lines | KASSERT(l3addr->sa_family == AF_INET6, | ||||
("sin_family %d", l3addr->sa_family)); | ("sin_family %d", l3addr->sa_family)); | ||||
KASSERT((flags & (LLE_UNLOCKED | LLE_EXCLUSIVE)) != | KASSERT((flags & (LLE_UNLOCKED | LLE_EXCLUSIVE)) != | ||||
(LLE_UNLOCKED | LLE_EXCLUSIVE), | (LLE_UNLOCKED | LLE_EXCLUSIVE), | ||||
("wrong lle request flags: %#x", flags)); | ("wrong lle request flags: %#x", flags)); | ||||
lle = in6_lltable_find_dst(llt, &sin6->sin6_addr); | lle = in6_lltable_find_dst(llt, &sin6->sin6_addr); | ||||
if (lle == NULL) | if (lle == NULL) | ||||
return (NULL); | return (NULL); | ||||
int family = flags >> 16; | |||||
if (__predict_false(family != AF_INET6)) | |||||
lle = llentry_lookup_family(lle, family); | |||||
if (flags & LLE_UNLOCKED) | if (flags & LLE_UNLOCKED) | ||||
return (lle); | return (lle); | ||||
if (flags & LLE_EXCLUSIVE) | if (flags & LLE_EXCLUSIVE) | ||||
LLE_WLOCK(lle); | LLE_WLOCK(lle); | ||||
else | else | ||||
LLE_RLOCK(lle); | LLE_RLOCK(lle); | ||||
▲ Show 20 Lines • Show All 233 Lines • Show Last 20 Lines |