Lines Matching refs:nso

375 	struct nfs_socket *nso = arg;  in nfs_connect_upcall()  local
380 if (nso->nso_flags & NSO_CONNECTING) { in nfs_connect_upcall()
381 NFS_SOCK_DBG("nfs connect - socket %p upcall - connecting flags = %8.8x\n", nso, nso->nso_flags); in nfs_connect_upcall()
382 wakeup(nso->nso_wake); in nfs_connect_upcall()
386 lck_mtx_lock(&nso->nso_lock); in nfs_connect_upcall()
387 …if ((nso->nso_flags & (NSO_UPCALL | NSO_DISCONNECTING | NSO_DEAD)) || !(nso->nso_flags & NSO_PINGI… in nfs_connect_upcall()
388 NFS_SOCK_DBG("nfs connect - socket %p upcall - nevermind\n", nso); in nfs_connect_upcall()
389 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_upcall()
392 NFS_SOCK_DBG("nfs connect - socket %p upcall %8.8x\n", nso, nso->nso_flags); in nfs_connect_upcall()
393 nso->nso_flags |= NSO_UPCALL; in nfs_connect_upcall()
398 if (nso->nso_flags & (NSO_DISCONNECTING | NSO_DEAD)) { in nfs_connect_upcall()
401 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_upcall()
403 if (nso->nso_sotype == SOCK_STREAM) { in nfs_connect_upcall()
404 error = nfs_rpc_record_read(so, &nso->nso_rrs, MSG_DONTWAIT, &recv, &m); in nfs_connect_upcall()
411 lck_mtx_lock(&nso->nso_lock); in nfs_connect_upcall()
422 if (!error && ((reply != RPC_REPLY) || (rxid != nso->nso_pingxid))) { in nfs_connect_upcall()
440 …NFS_SOCK_DBG("Recevied accepted_status of %d nso_version = %d\n", accepted_status, nso->nso_versi… in nfs_connect_upcall()
441 if ((accepted_status == RPC_PROGMISMATCH) && !nso->nso_version) { in nfs_connect_upcall()
446 if (nso->nso_protocol == PMAPPROG) { in nfs_connect_upcall()
449 } else if ((nso->nso_saddr->sa_family == AF_INET) && in nfs_connect_upcall()
451 nso->nso_version = PMAPVERS; in nfs_connect_upcall()
452 } else if (nso->nso_saddr->sa_family == AF_INET6) { in nfs_connect_upcall()
454 nso->nso_version = RPCBVERS4; in nfs_connect_upcall()
456 nso->nso_version = RPCBVERS3; in nfs_connect_upcall()
459 } else if (nso->nso_protocol == NFS_PROG) { in nfs_connect_upcall()
472 for (vers = nso->nso_nfs_max_vers; vers >= (int)nso->nso_nfs_min_vers; vers--) { in nfs_connect_upcall()
477 nso->nso_version = (vers < (int)nso->nso_nfs_min_vers) ? 0 : vers; in nfs_connect_upcall()
479 if (!error && nso->nso_version) { in nfs_connect_upcall()
507 nso->nso_flags &= ~NSO_PINGING; in nfs_connect_upcall()
510 nso->nso_protocol, nso->nso_version, error); in nfs_connect_upcall()
511 nso->nso_error = error; in nfs_connect_upcall()
512 nso->nso_flags |= NSO_DEAD; in nfs_connect_upcall()
514 nso->nso_flags |= NSO_VERIFIED; in nfs_connect_upcall()
518 wakeup(nso->nso_wake); in nfs_connect_upcall()
523 nso->nso_flags &= ~NSO_UPCALL; in nfs_connect_upcall()
527 nso->nso_error = error ? error : EPIPE; in nfs_connect_upcall()
528 nso->nso_flags |= NSO_DEAD; in nfs_connect_upcall()
529 wakeup(nso->nso_wake); in nfs_connect_upcall()
531 if (nso->nso_flags & NSO_DISCONNECTING) { in nfs_connect_upcall()
532 wakeup(&nso->nso_flags); in nfs_connect_upcall()
534 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_upcall()
551 struct nfs_socket *nso; in nfs_socket_create() local
595 nso = kalloc_type(struct nfs_socket, Z_WAITOK | Z_ZERO | Z_NOFAIL); in nfs_socket_create()
596 nso->nso_saddr = (struct sockaddr *)alloc_sockaddr(sa->sa_len, Z_WAITOK | Z_NOFAIL); in nfs_socket_create()
598 lck_mtx_init(&nso->nso_lock, &nfs_request_grp, LCK_ATTR_NULL); in nfs_socket_create()
599 nso->nso_sotype = sotype; in nfs_socket_create()
600 if (nso->nso_sotype == SOCK_STREAM) { in nfs_socket_create()
601 nfs_rpc_record_state_init(&nso->nso_rrs); in nfs_socket_create()
604 nso->nso_timestamp = now.tv_sec; in nfs_socket_create()
605 bcopy(sa, nso->nso_saddr, sa->sa_len); in nfs_socket_create()
610 ((struct sockaddr_in*)nso->nso_saddr)->sin_port = htons(port); in nfs_socket_create()
612 ((struct sockaddr_in6*)nso->nso_saddr)->sin6_port = htons(port); in nfs_socket_create()
618 nso->nso_protocol = protocol; in nfs_socket_create()
619 nso->nso_version = vers; in nfs_socket_create()
620 nso->nso_nfs_min_vers = PVER2MAJOR(nmp->nm_min_vers); in nfs_socket_create()
621 nso->nso_nfs_max_vers = PVER2MAJOR(nmp->nm_max_vers); in nfs_socket_create()
623 error = sock_socket(sa->sa_family, nso->nso_sotype, 0, NULL, NULL, &nso->nso_so); in nfs_socket_create()
632 error = sock_setsockopt(nso->nso_so, level, optname, &portrange, sizeof(portrange)); in nfs_socket_create()
646 error = sock_bind(nso->nso_so, (struct sockaddr*)&ss); in nfs_socket_create()
653 vfs_statfs(nmp->nm_mountp)->f_mntfromname, error, nso, naddr, sotype, in nfs_socket_create()
655 nfs_socket_destroy(nso); in nfs_socket_create()
658 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, naddr, in nfs_socket_create()
660 *nsop = nso; in nfs_socket_create()
669 nfs_socket_destroy(struct nfs_socket *nso) in nfs_socket_destroy() argument
673 …NFS_SOCK_DBG("Destoring socket %p flags = %8.8x error = %d\n", nso, nso->nso_flags, nso->nso_error… in nfs_socket_destroy()
674 lck_mtx_lock(&nso->nso_lock); in nfs_socket_destroy()
675 nso->nso_flags |= NSO_DISCONNECTING; in nfs_socket_destroy()
676 if (nso->nso_flags & NSO_UPCALL) { /* give upcall a chance to complete */ in nfs_socket_destroy()
677 msleep(&nso->nso_flags, &nso->nso_lock, PZERO - 1, "nfswaitupcall", &ts); in nfs_socket_destroy()
679 lck_mtx_unlock(&nso->nso_lock); in nfs_socket_destroy()
680 sock_shutdown(nso->nso_so, SHUT_RDWR); in nfs_socket_destroy()
681 sock_close(nso->nso_so); in nfs_socket_destroy()
682 if (nso->nso_sotype == SOCK_STREAM) { in nfs_socket_destroy()
683 nfs_rpc_record_state_cleanup(&nso->nso_rrs); in nfs_socket_destroy()
685 lck_mtx_destroy(&nso->nso_lock, &nfs_request_grp); in nfs_socket_destroy()
687 free_sockaddr(nso->nso_saddr); in nfs_socket_destroy()
688 free_sockaddr(nso->nso_saddr2); in nfs_socket_destroy()
690 NFS_SOCK_DBG("nfs connect - socket %p destroyed\n", nso); in nfs_socket_destroy()
691 kfree_type(struct nfs_socket, nso); in nfs_socket_destroy()
698 nfs_socket_options(struct nfsmount *nmp, struct nfs_socket *nso) in nfs_socket_options() argument
712 sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_RCVTIMEO, &timeo, sizeof(timeo)); in nfs_socket_options()
713 sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_SNDTIMEO, &timeo, sizeof(timeo)); in nfs_socket_options()
714 if (nso->nso_sotype == SOCK_STREAM) { in nfs_socket_options()
716 sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)); in nfs_socket_options()
718 sock_gettype(nso->nso_so, NULL, NULL, &proto); in nfs_socket_options()
720 sock_setsockopt(nso->nso_so, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); in nfs_socket_options()
725 …reserve = (nso->nso_sotype == SOCK_DGRAM) ? NFS_UDPSOCKBUF : MAX(nfs_tcp_sockbuf, nmp->nm_wsize * … in nfs_socket_options()
726 error = sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_SNDBUF, &reserve, sizeof(reserve)); in nfs_socket_options()
731 …reserve = (nso->nso_sotype == SOCK_DGRAM) ? NFS_UDPSOCKBUF : MAX(nfs_tcp_sockbuf, nmp->nm_rsize * … in nfs_socket_options()
732 error = sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_RCVBUF, &reserve, sizeof(reserve)); in nfs_socket_options()
738 sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_NOADDRERR, &on, sizeof(on)); in nfs_socket_options()
740 sock_setsockopt(nso->nso_so, SOL_SOCKET, SO_UPCALLCLOSEWAIT, &on, sizeof(on)); in nfs_socket_options()
743 sock_nointerrupt(nso->nso_so, 1); in nfs_socket_options()
753 struct nfs_socket *nso, *nsonext; in nfs_socket_search_cleanup() local
755 TAILQ_FOREACH_SAFE(nso, &nss->nss_socklist, nso_link, nsonext) { in nfs_socket_search_cleanup()
756 TAILQ_REMOVE(&nss->nss_socklist, nso, nso_link); in nfs_socket_search_cleanup()
758 nfs_socket_destroy(nso); in nfs_socket_search_cleanup()
829 struct nfs_socket *nso; in nfs_connect_search_new_socket() local
888 ((nss->nss_protocol == NFS_PROG) && NMFLAG(nmp, RESVPORT)), &nso); in nfs_connect_search_new_socket()
893 nso->nso_location = nss->nss_nextloc; in nfs_connect_search_new_socket()
894 nso->nso_wake = nss; in nfs_connect_search_new_socket()
895 error = sock_setupcall(nso->nso_so, nfs_connect_upcall, nso); in nfs_connect_search_new_socket()
897 …NFS_SOCK_DBG("sock_setupcall failed for socket %p setting nfs_connect_upcall error = %d\n", nso, e… in nfs_connect_search_new_socket()
898 lck_mtx_lock(&nso->nso_lock); in nfs_connect_search_new_socket()
899 nso->nso_error = error; in nfs_connect_search_new_socket()
900 nso->nso_flags |= NSO_DEAD; in nfs_connect_search_new_socket()
901 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_new_socket()
904 TAILQ_INSERT_TAIL(&nss->nss_socklist, nso, nso_link); in nfs_connect_search_new_socket()
926 nfs_connect_search_socket_connect(struct nfsmount *nmp, struct nfs_socket *nso, int verbose) in nfs_connect_search_socket_connect() argument
930 if ((nso->nso_sotype != SOCK_STREAM) && NMFLAG(nmp, NOCONNECT)) { in nfs_connect_search_socket_connect()
933 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso); in nfs_connect_search_socket_connect()
934 nso->nso_flags |= NSO_CONNECTED; in nfs_connect_search_socket_connect()
935 nfs_socket_options(nmp, nso); in nfs_connect_search_socket_connect()
937 } else if (!(nso->nso_flags & NSO_CONNECTING)) { in nfs_connect_search_socket_connect()
939 nso->nso_flags |= NSO_CONNECTING; in nfs_connect_search_socket_connect()
940 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_socket_connect()
942 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, in nfs_connect_search_socket_connect()
943 nso->nso_saddr->sa_family == AF_LOCAL ? ((struct sockaddr_un*)nso->nso_saddr)->sun_path : ""); in nfs_connect_search_socket_connect()
944 error = sock_connect(nso->nso_so, nso->nso_saddr, MSG_DONTWAIT); in nfs_connect_search_socket_connect()
947 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, error); in nfs_connect_search_socket_connect()
949 lck_mtx_lock(&nso->nso_lock); in nfs_connect_search_socket_connect()
951 nso->nso_error = error; in nfs_connect_search_socket_connect()
952 nso->nso_flags |= NSO_DEAD; in nfs_connect_search_socket_connect()
956 if (nso->nso_flags & NSO_CONNECTING) { in nfs_connect_search_socket_connect()
958 if (sock_isconnected(nso->nso_so)) { in nfs_connect_search_socket_connect()
960 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso); in nfs_connect_search_socket_connect()
961 nso->nso_flags &= ~NSO_CONNECTING; in nfs_connect_search_socket_connect()
962 nso->nso_flags |= NSO_CONNECTED; in nfs_connect_search_socket_connect()
963 nfs_socket_options(nmp, nso); in nfs_connect_search_socket_connect()
968 sock_getsockopt(nso->nso_so, SOL_SOCKET, SO_ERROR, &error, &optlen); in nfs_connect_search_socket_connect()
971 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, error); in nfs_connect_search_socket_connect()
976 nso->nso_error = error; in nfs_connect_search_socket_connect()
977 nso->nso_flags |= NSO_DEAD; in nfs_connect_search_socket_connect()
990 nfs_connect_search_ping(struct nfsmount *nmp, struct nfs_socket *nso, struct timeval *now) in nfs_connect_search_ping() argument
993 uint64_t xid = nso->nso_pingxid; in nfs_connect_search_ping()
997 uint32_t vers = nso->nso_version; in nfs_connect_search_ping()
1001 if (nso->nso_protocol == PMAPPROG) { in nfs_connect_search_ping()
1002 vers = (nso->nso_saddr->sa_family == AF_INET) ? PMAPVERS : RPCBVERS4; in nfs_connect_search_ping()
1003 } else if (nso->nso_protocol == NFS_PROG) { in nfs_connect_search_ping()
1007 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_ping()
1008 NFS_SOCK_DBG("Pinging socket %p %d %d %d\n", nso, nso->nso_sotype, nso->nso_protocol, vers); in nfs_connect_search_ping()
1009 error = nfsm_rpchead2(nmp, nso->nso_sotype, nso->nso_protocol, vers, 0, RPCAUTH_SYS, in nfs_connect_search_ping()
1011 lck_mtx_lock(&nso->nso_lock); in nfs_connect_search_ping()
1013 nso->nso_flags |= NSO_PINGING; in nfs_connect_search_ping()
1014 nso->nso_pingxid = R_XID32(xid); in nfs_connect_search_ping()
1015 nso->nso_reqtimestamp = now->tv_sec; in nfs_connect_search_ping()
1017 if ((nso->nso_sotype != SOCK_STREAM) && !sock_isconnected(nso->nso_so)) { in nfs_connect_search_ping()
1018 msg.msg_name = nso->nso_saddr; in nfs_connect_search_ping()
1019 msg.msg_namelen = nso->nso_saddr->sa_len; in nfs_connect_search_ping()
1024 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_ping()
1026 error = sock_sendmbuf(nso->nso_so, &msg, mreq, 0, &sentlen); in nfs_connect_search_ping()
1028 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, error); in nfs_connect_search_ping()
1029 lck_mtx_lock(&nso->nso_lock); in nfs_connect_search_ping()
1035 nso->nso_error = error; in nfs_connect_search_ping()
1036 nso->nso_flags |= NSO_DEAD; in nfs_connect_search_ping()
1048 …ct_search_socket_found(struct nfsmount *nmp, struct nfs_socket_search *nss, struct nfs_socket *nso) in nfs_connect_search_socket_found() argument
1051 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso); in nfs_connect_search_socket_found()
1052 if (!nso->nso_version) { in nfs_connect_search_socket_found()
1054 if (nso->nso_protocol == PMAPPROG) { in nfs_connect_search_socket_found()
1055 nso->nso_version = (nso->nso_saddr->sa_family == AF_INET) ? PMAPVERS : RPCBVERS4; in nfs_connect_search_socket_found()
1057 if (nso->nso_protocol == NFS_PROG) { in nfs_connect_search_socket_found()
1058 nso->nso_version = PVER2MAJOR(nmp->nm_max_vers); in nfs_connect_search_socket_found()
1061 TAILQ_REMOVE(&nss->nss_socklist, nso, nso_link); in nfs_connect_search_socket_found()
1063 nss->nss_sock = nso; in nfs_connect_search_socket_found()
1073 struct nfs_socket *nso, *nsonext; in nfs_connect_search_socket_reap() local
1075 TAILQ_FOREACH_SAFE(nso, &nss->nss_socklist, nso_link, nsonext) { in nfs_connect_search_socket_reap()
1076 lck_mtx_lock(&nso->nso_lock); in nfs_connect_search_socket_reap()
1077 if (now->tv_sec >= (nso->nso_timestamp + nss->nss_timeo)) { in nfs_connect_search_socket_reap()
1080 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso); in nfs_connect_search_socket_reap()
1081 nso->nso_error = ETIMEDOUT; in nfs_connect_search_socket_reap()
1082 nso->nso_flags |= NSO_DEAD; in nfs_connect_search_socket_reap()
1084 if (!(nso->nso_flags & NSO_DEAD)) { in nfs_connect_search_socket_reap()
1085 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_socket_reap()
1088 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_socket_reap()
1090 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, nso->nso_error, nso->nso_flags); in nfs_connect_search_socket_reap()
1091 nfs_socket_search_update_error(nss, nso->nso_error); in nfs_connect_search_socket_reap()
1092 TAILQ_REMOVE(&nss->nss_socklist, nso, nso_link); in nfs_connect_search_socket_reap()
1094 nfs_socket_destroy(nso); in nfs_connect_search_socket_reap()
1137 struct nfs_socket *nso; in nfs_connect_search_loop() local
1154 TAILQ_FOREACH(nso, &nss->nss_socklist, nso_link) { in nfs_connect_search_loop()
1155 lck_mtx_lock(&nso->nso_lock); in nfs_connect_search_loop()
1158 if (!(nso->nso_flags & NSO_CONNECTED)) { in nfs_connect_search_loop()
1159 if (!nfs_connect_search_socket_connect(nmp, nso, verbose)) { in nfs_connect_search_loop()
1160 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_loop()
1166 if (!(nso->nso_flags & (NSO_PINGING | NSO_VERIFIED)) || in nfs_connect_search_loop()
1167 ((nso->nso_sotype == SOCK_DGRAM) && (now.tv_sec >= nso->nso_reqtimestamp + 2))) { in nfs_connect_search_loop()
1168 if (!nfs_connect_search_ping(nmp, nso, &now)) { in nfs_connect_search_loop()
1169 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_loop()
1175 if (nso->nso_flags & NSO_VERIFIED) { in nfs_connect_search_loop()
1177 nfs_connect_search_socket_found(nmp, nss, nso); in nfs_connect_search_loop()
1178 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_loop()
1181 lck_mtx_unlock(&nso->nso_lock); in nfs_connect_search_loop()
1223 struct nfs_socket *nso, *nsonfs; in nfs_connect() local
1429 nso = nss.nss_sock; in nfs_connect()
1433 if (nso->nso_saddr->sa_family == AF_INET) { in nfs_connect()
1434 port = ntohs(((struct sockaddr_in*)nso->nso_saddr)->sin_port); in nfs_connect()
1435 } else if (nso->nso_saddr->sa_family == AF_INET6) { in nfs_connect()
1436 port = ntohs(((struct sockaddr_in6*)nso->nso_saddr)->sin6_port); in nfs_connect()
1437 } else if (nso->nso_saddr->sa_family == AF_LOCAL) { in nfs_connect()
1438 if (nso->nso_protocol == PMAPPROG) { in nfs_connect()
1446 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso); in nfs_connect()
1449 sock_setupcall(nso->nso_so, NULL, NULL); in nfs_connect()
1452 bcopy(nso->nso_saddr, &ss, nso->nso_saddr->sa_len); in nfs_connect()
1471 if (nfsvers == NFS_VER4 && nso->nso_sotype == SOCK_DGRAM) { in nfs_connect()
1483 nso->nso_so, NFS_PROG, nfsvers, nso->nso_sotype, timeo); in nfs_connect()
1511 nfs_socket_destroy(nso); in nfs_connect()
1525 error = nfs_socket_create(nmp, (struct sockaddr*)&ss, nso->nso_sotype, port, in nfs_connect()
1529 nfs_socket_destroy(nso); in nfs_connect()
1533 nsonfs->nso_location = nso->nso_location; in nfs_connect()
1539 nfs_socket_destroy(nso); in nfs_connect()
1548 bcopy(nso->nso_saddr, &ss, nso->nso_saddr->sa_len); in nfs_connect()
1563 …int mntproto = (NM_OMFLAG(nmp, MNTUDP) || (nso->nso_sotype == SOCK_DGRAM)) ? IPPROTO_UDP : IPPROTO… in nfs_connect()
1564 NFS_SOCK_DBG("Looking up mount port with socket %p\n", nso->nso_so); in nfs_connect()
1566nso->nso_so, RPCPROG_MNT, mntvers, mntproto == IPPROTO_UDP ? SOCK_DGRAM : SOCK_STREAM, timeo); in nfs_connect()
1595 NFS_SOCK_DBG("Destroying socket %p so %p\n", nso, nso->nso_so); in nfs_connect()
1596 nfs_socket_destroy(nso); in nfs_connect()
1601 NFS_SOCK_DBG("nfs connect %s got NFS socket %p\n", vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso); in nfs_connect()
1604 nfsvers = nmp->nm_vers ? nmp->nm_vers : (int)nso->nso_version; in nfs_connect()
1609 saddr = nso->nso_saddr2; in nfs_connect()
1613 bcopy(nso->nso_saddr, &ss, nso->nso_saddr->sa_len); in nfs_connect()
1626 int so_type = NM_OMFLAG(nmp, MNTUDP) ? SOCK_DGRAM : nso->nso_sotype; in nfs_connect()
1644 error = nfs3_check_lockmode(nmp, saddr, nso->nso_sotype, timeo); in nfs_connect()
1647 nfs_socket_destroy(nso); in nfs_connect()
1668 nfs_socket_destroy(nso); in nfs_connect()
1671 nfs_location_mntfromname(&nmp->nm_locations, nso->nso_location, path, MAXPATHLEN, 1); in nfs_connect()
1672 error = nfs3_mount_rpc(nmp, saddr, nso->nso_sotype, nfsvers, in nfs_connect()
1675 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, error); in nfs_connect()
1733 nfs_socket_destroy(nso); in nfs_connect()
1745 upcall = (nso->nso_sotype == SOCK_STREAM) ? nfs_tcp_rcv : nfs_udp_rcv; in nfs_connect()
1746 error = sock_setupcall(nso->nso_so, upcall, nmp); in nfs_connect()
1749 nfs_socket_destroy(nso); in nfs_connect()
1756 nfs_location_mntfromname(&nmp->nm_locations, nso->nso_location, in nfs_connect()
1762 nmp->nm_sotype = nso->nso_sotype; in nfs_connect()
1769 if (nso->nso_saddr->sa_family == AF_INET) { in nfs_connect()
1770 port = ((struct sockaddr_in*)nso->nso_saddr)->sin_port = htons(port); in nfs_connect()
1771 } else if (nso->nso_saddr->sa_family == AF_INET6) { in nfs_connect()
1772 port = ((struct sockaddr_in6*)nso->nso_saddr)->sin6_port = htons(port); in nfs_connect()
1800 if (nso->nso_sotype == SOCK_DGRAM) { in nfs_connect()
1803 } else if (nso->nso_sotype == SOCK_STREAM) { in nfs_connect()
1809 nmp->nm_nso = nso; in nfs_connect()
1811 nmp->nm_saddr = nso->nso_saddr; in nfs_connect()
1822 vfs_statfs(nmp->nm_mountp)->f_mntfromname, nso, error); in nfs_connect()
1848 nfs_socket_destroy(nso); in nfs_connect()
1854 (nmp->nm_locations.nl_current.nli_serv != nso->nso_location.nli_serv)) { in nfs_connect()
1858 nmp->nm_locations.nl_current = nso->nso_location; in nfs_connect()
2021 struct nfs_socket *nso; in nfs_disconnect() local
2038 nso = nmp->nm_nso; in nfs_disconnect()
2040 if (nso->nso_saddr == nmp->nm_saddr) { in nfs_disconnect()
2041 nso->nso_saddr = NULL; in nfs_disconnect()
2044 nfs_socket_destroy(nso); in nfs_disconnect()
3346 struct nfs_socket *nso; in nfs_send() local
3450 nso = nmp->nm_nso; in nfs_send()
3454 if (!nso) { in nfs_send()
3538 if ((sotype != SOCK_STREAM) && !sock_isconnected(nso->nso_so) && ((sendnam = nmp->nm_saddr))) { in nfs_send()
3543 error = sock_sendmbuf(nso->nso_so, &msg, mreqcopy, 0, &sentlen); in nfs_send()
3598 (error != EWOULDBLOCK) && (error != EIO) && (nso == nmp->nm_nso)) { in nfs_send()
3600 sock_getsockopt(nso->nso_so, SOL_SOCKET, SO_ERROR, &clearerror, &optlen); in nfs_send()
3634 if (needrecon && (nso == nmp->nm_nso)) { /* mark socket as needing reconnect */ in nfs_send()
3700 struct nfs_socket *nso = nmp->nm_nso; in nfs_udp_rcv() local
3711 if (!nso || (nso->nso_so != so)) { in nfs_udp_rcv()
3735 struct nfs_socket *nso = nmp->nm_nso; in nfs_tcp_rcv() local
3748 nso = nmp->nm_nso; in nfs_tcp_rcv()
3749 if (!nso || (nso->nso_so != so) || (nmp->nm_sockflags & (NMSOCK_DISCONNECTING))) { in nfs_tcp_rcv()
3756 lck_mtx_lock(&nso->nso_lock); in nfs_tcp_rcv()
3757 if (nso->nso_flags & (NSO_UPCALL | NSO_DISCONNECTING | NSO_DEAD)) { in nfs_tcp_rcv()
3758 lck_mtx_unlock(&nso->nso_lock); in nfs_tcp_rcv()
3761 nso->nso_flags |= NSO_UPCALL; in nfs_tcp_rcv()
3762 nrrs = nso->nso_rrs; in nfs_tcp_rcv()
3763 lck_mtx_unlock(&nso->nso_lock); in nfs_tcp_rcv()
3774 lck_mtx_lock(&nso->nso_lock); in nfs_tcp_rcv()
3775 nso->nso_rrs = nrrs; in nfs_tcp_rcv()
3776 if (nso->nso_flags & NSO_DISCONNECTING) { in nfs_tcp_rcv()
3779 nso->nso_flags &= ~NSO_UPCALL; in nfs_tcp_rcv()
3780 lck_mtx_unlock(&nso->nso_lock); in nfs_tcp_rcv()
3782 wakeup(&nso->nso_flags); in nfs_tcp_rcv()