Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/nfsclient/nfs_clport.c
Show First 20 Lines • Show All 1,000 Lines • ▼ Show 20 Lines | if (nmp->nm_nam->sa_family == AF_INET) { | ||||
*isinet6p = 0; | *isinet6p = 0; | ||||
*((struct in_addr *)paddr) = addr; | *((struct in_addr *)paddr) = addr; | ||||
return (u_int8_t *)paddr; | return (u_int8_t *)paddr; | ||||
} | } | ||||
#endif | #endif | ||||
#ifdef INET6 | #ifdef INET6 | ||||
if (nmp->nm_nam->sa_family == AF_INET6) { | if (nmp->nm_nam->sa_family == AF_INET6) { | ||||
struct epoch_tracker et; | |||||
struct sockaddr_in6 *sin6; | struct sockaddr_in6 *sin6; | ||||
int error; | int error; | ||||
sin6 = (struct sockaddr_in6 *)nmp->nm_nam; | sin6 = (struct sockaddr_in6 *)nmp->nm_nam; | ||||
NET_EPOCH_ENTER(et); | |||||
CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); | CURVNET_SET(CRED_TO_VNET(nmp->nm_sockreq.nr_cred)); | ||||
error = in6_selectsrc_addr(fibnum, &sin6->sin6_addr, | error = in6_selectsrc_addr(fibnum, &sin6->sin6_addr, | ||||
sin6->sin6_scope_id, NULL, paddr, NULL); | sin6->sin6_scope_id, NULL, paddr, NULL); | ||||
CURVNET_RESTORE(); | CURVNET_RESTORE(); | ||||
NET_EPOCH_EXIT(et); | |||||
if (error != 0) | if (error != 0) | ||||
return (NULL); | return (NULL); | ||||
if (IN6_IS_ADDR_LOOPBACK(paddr)) | if (IN6_IS_ADDR_LOOPBACK(paddr)) | ||||
return (NULL); | return (NULL); | ||||
/* Scope is embedded in */ | /* Scope is embedded in */ | ||||
*isinet6p = 1; | *isinet6p = 1; | ||||
▲ Show 20 Lines • Show All 395 Lines • Show Last 20 Lines |