Lines Matching refs:so
185 sosctp_init(struct sonode *so, struct sonode *pso, struct cred *cr, int flags) in sosctp_init() argument
192 ss = SOTOSSO(so); in sosctp_init()
200 ASSERT(so->so_type == SOCK_STREAM); in sosctp_init()
204 so->so_state |= (SS_ISBOUND | SS_ISCONNECTED | in sosctp_init()
207 so->so_proto_props = pso->so_proto_props; in sosctp_init()
208 so->so_mode = pso->so_mode; in sosctp_init()
217 if (so->so_type == SOCK_STREAM) { in sosctp_init()
218 so->so_proto_handle = (sock_lower_handle_t)sctp_create(so, in sosctp_init()
219 NULL, so->so_family, so->so_type, SCTP_CAN_BLOCK, in sosctp_init()
221 so->so_mode = SM_CONNREQUIRED; in sosctp_init()
223 ASSERT(so->so_type == SOCK_SEQPACKET); in sosctp_init()
224 so->so_proto_handle = (sock_lower_handle_t)sctp_create(ss, in sosctp_init()
225 NULL, so->so_family, so->so_type, SCTP_CAN_BLOCK, in sosctp_init()
229 if (so->so_proto_handle == NULL) in sosctp_init()
232 so->so_rcvbuf = sbl.sbl_rxbuf; in sosctp_init()
233 so->so_rcvlowat = sbl.sbl_rxlowat; in sosctp_init()
234 so->so_sndbuf = sbl.sbl_txbuf; in sosctp_init()
235 so->so_sndlowat = sbl.sbl_txlowat; in sosctp_init()
245 sosctp_accept(struct sonode *so, int fflag, struct cred *cr, in sosctp_accept() argument
250 if ((so->so_state & SS_ACCEPTCONN) == 0) in sosctp_accept()
253 error = so_acceptq_dequeue(so, (fflag & (FNONBLOCK|FNDELAY)), nsop); in sosctp_accept()
263 sosctp_bind(struct sonode *so, struct sockaddr *name, socklen_t namelen, in sosctp_bind() argument
269 mutex_enter(&so->so_lock); in sosctp_bind()
270 so_lock_single(so); /* Set SOLOCKED */ in sosctp_bind()
272 ASSERT(MUTEX_HELD(&so->so_lock)); in sosctp_bind()
278 if (so->so_state & SS_CANTSENDMORE) { in sosctp_bind()
287 mutex_exit(&so->so_lock); in sosctp_bind()
289 error = sctp_bind((struct sctp_s *)so->so_proto_handle, name, namelen); in sosctp_bind()
291 mutex_enter(&so->so_lock); in sosctp_bind()
293 so->so_state |= SS_ISBOUND; in sosctp_bind()
295 eprintsoline(so, error); in sosctp_bind()
299 so_unlock_single(so, SOLOCKED); in sosctp_bind()
300 mutex_exit(&so->so_lock); in sosctp_bind()
303 ASSERT(MUTEX_HELD(&so->so_lock)); in sosctp_bind()
304 ASSERT(so->so_flag & SOLOCKED); in sosctp_bind()
315 sosctp_listen(struct sonode *so, int backlog, struct cred *cr) in sosctp_listen() argument
319 mutex_enter(&so->so_lock); in sosctp_listen()
320 so_lock_single(so); in sosctp_listen()
326 if (so->so_state & (SS_ISCONNECTING | SS_ISCONNECTED | in sosctp_listen()
329 eprintsoline(so, error); in sosctp_listen()
341 if (so->so_state & SS_ACCEPTCONN) { in sosctp_listen()
342 so->so_backlog = backlog; in sosctp_listen()
346 mutex_exit(&so->so_lock); in sosctp_listen()
347 error = sctp_listen((struct sctp_s *)so->so_proto_handle); in sosctp_listen()
348 mutex_enter(&so->so_lock); in sosctp_listen()
350 so->so_state |= (SS_ACCEPTCONN|SS_ISBOUND); in sosctp_listen()
351 so->so_backlog = backlog; in sosctp_listen()
353 eprintsoline(so, error); in sosctp_listen()
356 so_unlock_single(so, SOLOCKED); in sosctp_listen()
357 mutex_exit(&so->so_lock); in sosctp_listen()
367 sosctp_connect(struct sonode *so, struct sockaddr *name, in sosctp_connect() argument
373 ASSERT(so->so_type == SOCK_STREAM); in sosctp_connect()
375 mutex_enter(&so->so_lock); in sosctp_connect()
376 so_lock_single(so); in sosctp_connect()
382 if (so->so_state & (SS_ACCEPTCONN|SS_ISCONNECTED|SS_ISCONNECTING)) { in sosctp_connect()
383 if (so->so_state & SS_ISCONNECTED) { in sosctp_connect()
385 } else if (so->so_state & SS_ISCONNECTING) { in sosctp_connect()
390 eprintsoline(so, error); in sosctp_connect()
397 if (so->so_error != 0) { in sosctp_connect()
398 error = sogeterr(so, B_TRUE); in sosctp_connect()
399 eprintsoline(so, error); in sosctp_connect()
408 if (so->so_state & (SS_ISDISCONNECTING|SS_CANTRCVMORE| in sosctp_connect()
411 eprintsoline(so, error); in sosctp_connect()
417 eprintsoline(so, error); in sosctp_connect()
421 soisconnecting(so); in sosctp_connect()
422 mutex_exit(&so->so_lock); in sosctp_connect()
424 error = sctp_connect((struct sctp_s *)so->so_proto_handle, in sosctp_connect()
427 mutex_enter(&so->so_lock); in sosctp_connect()
432 error = sowaitconnected(so, fflag, 0); in sosctp_connect()
435 so_unlock_single(so, SOLOCKED); in sosctp_connect()
436 mutex_exit(&so->so_lock); in sosctp_connect()
447 sosctp_seq_connect(struct sonode *so, struct sockaddr *name, in sosctp_seq_connect() argument
454 ASSERT(so->so_type == SOCK_SEQPACKET); in sosctp_seq_connect()
456 mutex_enter(&so->so_lock); in sosctp_seq_connect()
457 so_lock_single(so); in sosctp_seq_connect()
461 eprintsoline(so, error); in sosctp_seq_connect()
465 ss = SOTOSSO(so); in sosctp_seq_connect()
479 so_unlock_single(so, SOLOCKED); in sosctp_seq_connect()
480 mutex_exit(&so->so_lock); in sosctp_seq_connect()
489 sosctp_recvmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in sosctp_recvmsg() argument
492 struct sctp_sonode *ss = SOTOSSO(so); in sosctp_recvmsg()
510 if (so->so_type == SOCK_STREAM) { in sosctp_recvmsg()
511 if (!(so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING| in sosctp_recvmsg()
525 if (so->so_rcv_q_head == NULL && so->so_rcv_head == NULL && in sosctp_recvmsg()
526 ss->ss_assoccnt == 0 && !(so->so_state & SS_ACCEPTCONN)) { in sosctp_recvmsg()
554 mutex_enter(&so->so_lock); in sosctp_recvmsg()
559 error = so_lock_read_intr(so, in sosctp_recvmsg()
562 mutex_exit(&so->so_lock); in sosctp_recvmsg()
565 mutex_exit(&so->so_lock); in sosctp_recvmsg()
567 error = so_dequeue_msg(so, &mp, uiop, &rval, flags | MSG_DUPCTRL); in sosctp_recvmsg()
569 if (so->so_type == SOCK_SEQPACKET) { in sosctp_recvmsg()
622 mutex_enter(&so->so_lock); in sosctp_recvmsg()
623 count = so->so_rcvbuf - so->so_rcv_queued; in sosctp_recvmsg()
625 ASSERT(so->so_rcv_q_head != NULL || in sosctp_recvmsg()
626 so->so_rcv_head != NULL || in sosctp_recvmsg()
627 so->so_rcv_queued == 0); in sosctp_recvmsg()
629 so_unlock_read(so); in sosctp_recvmsg()
637 mutex_exit(&so->so_lock); in sosctp_recvmsg()
638 sctp_recvd((struct sctp_s *)so->so_proto_handle, count); in sosctp_recvmsg()
640 mutex_exit(&so->so_lock); in sosctp_recvmsg()
650 mutex_enter(&so->so_lock); in sosctp_recvmsg()
652 count = so->so_rcvbuf - ssa->ssa_rcv_queued; in sosctp_recvmsg()
654 so_unlock_read(so); in sosctp_recvmsg()
657 ssa->ssa_rcv_queued < so->so_rcvlowat) { in sosctp_recvmsg()
663 mutex_exit(&so->so_lock); in sosctp_recvmsg()
665 mutex_enter(&so->so_lock); in sosctp_recvmsg()
674 mutex_exit(&so->so_lock); in sosctp_recvmsg()
734 sosctp_sendmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in sosctp_sendmsg() argument
744 ASSERT(so->so_type == SOCK_STREAM); in sosctp_sendmsg()
760 eprintsoline(so, EINVAL); in sosctp_sendmsg()
768 eprintsoline(so, EINVAL); in sosctp_sendmsg()
776 eprintsoline(so, EINVAL); in sosctp_sendmsg()
784 mutex_enter(&so->so_lock); in sosctp_sendmsg()
785 so_lock_single(so); in sosctp_sendmsg()
786 socantsendmore(so); in sosctp_sendmsg()
787 cv_broadcast(&so->so_snd_cv); in sosctp_sendmsg()
788 so->so_state |= SS_ISDISCONNECTING; in sosctp_sendmsg()
789 mutex_exit(&so->so_lock); in sosctp_sendmsg()
791 pollwakeup(&so->so_poll_list, POLLOUT); in sosctp_sendmsg()
792 sctp_recvd((struct sctp_s *)so->so_proto_handle, in sosctp_sendmsg()
793 so->so_rcvbuf); in sosctp_sendmsg()
795 (struct sctp_s *)so->so_proto_handle); in sosctp_sendmsg()
797 mutex_enter(&so->so_lock); in sosctp_sendmsg()
798 so_unlock_single(so, SOLOCKED); in sosctp_sendmsg()
799 mutex_exit(&so->so_lock); in sosctp_sendmsg()
807 mutex_enter(&so->so_lock); in sosctp_sendmsg()
809 if (so->so_state & SS_CANTSENDMORE) { in sosctp_sendmsg()
810 mutex_exit(&so->so_lock); in sosctp_sendmsg()
814 if (so->so_error != 0) { in sosctp_sendmsg()
815 error = sogeterr(so, B_TRUE); in sosctp_sendmsg()
816 mutex_exit(&so->so_lock); in sosctp_sendmsg()
820 if (!so->so_snd_qfull) in sosctp_sendmsg()
823 if (so->so_state & SS_CLOSING) { in sosctp_sendmsg()
824 mutex_exit(&so->so_lock); in sosctp_sendmsg()
832 mutex_exit(&so->so_lock); in sosctp_sendmsg()
838 error = cv_wait_sig(&so->so_snd_cv, &so->so_lock); in sosctp_sendmsg()
840 mutex_exit(&so->so_lock); in sosctp_sendmsg()
849 if (msglen > so->so_sndbuf) { in sosctp_sendmsg()
850 mutex_exit(&so->so_lock); in sosctp_sendmsg()
857 if (!(so->so_state & (SS_ISCONNECTING | SS_ISCONNECTED))) { in sosctp_sendmsg()
868 if ((so->so_state & SS_ACCEPTCONN) || in sosctp_sendmsg()
870 mutex_exit(&so->so_lock); in sosctp_sendmsg()
874 mutex_exit(&so->so_lock); in sosctp_sendmsg()
879 error = sosctp_connect(so, msg->msg_name, msg->msg_namelen, in sosctp_sendmsg()
880 fflag, (so->so_version == SOV_XPG4_2) * _SOCONNECT_XPG4_2, in sosctp_sendmsg()
893 mutex_exit(&so->so_lock); in sosctp_sendmsg()
904 if ((error = sosctp_uiomove(mctl, count, so->so_proto_props.sopp_maxblk, in sosctp_sendmsg()
905 so->so_proto_props.sopp_wroff, uiop, flags)) != 0) { in sosctp_sendmsg()
908 error = sctp_sendmsg((struct sctp_s *)so->so_proto_handle, mctl, 0); in sosctp_sendmsg()
915 mutex_enter(&so->so_lock); in sosctp_sendmsg()
916 if ((error == EPIPE) && (so->so_state & SS_CANTSENDMORE)) { in sosctp_sendmsg()
921 mutex_exit(&so->so_lock); in sosctp_sendmsg()
924 mutex_exit(&so->so_lock); in sosctp_sendmsg()
933 sosctp_seq_sendmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in sosctp_seq_sendmsg() argument
947 ASSERT(so->so_type == SOCK_SEQPACKET); in sosctp_seq_sendmsg()
957 eprintsoline(so, EINVAL); in sosctp_seq_sendmsg()
965 ss = SOTOSSO(so); in sosctp_seq_sendmsg()
974 mutex_enter(&so->so_lock); in sosctp_seq_sendmsg()
988 eprintsoline(so, error); in sosctp_seq_sendmsg()
995 so_lock_single(so); in sosctp_seq_sendmsg()
999 if ((so->so_version == SOV_XPG4_2) && in sosctp_seq_sendmsg()
1009 eprintsoline(so, error); in sosctp_seq_sendmsg()
1010 so_unlock_single(so, SOLOCKED); in sosctp_seq_sendmsg()
1019 so_unlock_single(so, SOLOCKED); in sosctp_seq_sendmsg()
1022 eprintsoline(so, error); in sosctp_seq_sendmsg()
1042 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1044 sctp_recvd(ssa->ssa_conn, so->so_rcvbuf); in sosctp_seq_sendmsg()
1046 mutex_enter(&so->so_lock); in sosctp_seq_sendmsg()
1054 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1066 if (so->so_state & SS_CLOSING) { in sosctp_seq_sendmsg()
1078 error = cv_wait_sig(&so->so_snd_cv, &so->so_lock); in sosctp_seq_sendmsg()
1089 if (msglen > so->so_sndbuf) { in sosctp_seq_sendmsg()
1097 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1113 mutex_enter(&so->so_lock); in sosctp_seq_sendmsg()
1122 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1130 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1139 sosctp_getpeername(struct sonode *so, struct sockaddr *addr, socklen_t *addrlen, in sosctp_getpeername() argument
1142 return (sctp_getpeername((struct sctp_s *)so->so_proto_handle, addr, in sosctp_getpeername()
1151 sosctp_getsockname(struct sonode *so, struct sockaddr *addr, socklen_t *addrlen, in sosctp_getsockname() argument
1154 return (sctp_getsockname((struct sctp_s *)so->so_proto_handle, addr, in sosctp_getsockname()
1163 sosctp_shutdown(struct sonode *so, int how, struct cred *cr) in sosctp_shutdown() argument
1169 mutex_enter(&so->so_lock); in sosctp_shutdown()
1175 state_change = so->so_state; in sosctp_shutdown()
1179 socantrcvmore(so); in sosctp_shutdown()
1182 socantsendmore(so); in sosctp_shutdown()
1185 socantsendmore(so); in sosctp_shutdown()
1186 socantrcvmore(so); in sosctp_shutdown()
1189 mutex_exit(&so->so_lock); in sosctp_shutdown()
1193 state_change = so->so_state & ~state_change; in sosctp_shutdown()
1196 if (so->so_rcv_q_head == NULL) { in sosctp_shutdown()
1197 cv_signal(&so->so_rcv_cv); in sosctp_shutdown()
1201 socket_sendsig(so, SOCKETSIG_READ); in sosctp_shutdown()
1204 cv_broadcast(&so->so_snd_cv); in sosctp_shutdown()
1207 so->so_state |= SS_ISDISCONNECTING; in sosctp_shutdown()
1209 mutex_exit(&so->so_lock); in sosctp_shutdown()
1211 pollwakeup(&so->so_poll_list, wakesig); in sosctp_shutdown()
1214 sctp_recvd((struct sctp_s *)so->so_proto_handle, so->so_rcvbuf); in sosctp_shutdown()
1215 error = sctp_disconnect((struct sctp_s *)so->so_proto_handle); in sosctp_shutdown()
1232 sosctp_getsockopt(struct sonode *so, int level, int option_name, in sosctp_getsockopt() argument
1248 eprintsoline(so, ENOPROTOOPT); in sosctp_getsockopt()
1251 error = socket_getopt_common(so, level, option_name, in sosctp_getsockopt()
1276 error = sctp_get_opt((struct sctp_s *)so->so_proto_handle, level, in sosctp_getsockopt()
1280 eprintsoline(so, error); in sosctp_getsockopt()
1303 sosctp_setsockopt(struct sonode *so, int level, int option_name, in sosctp_setsockopt() argument
1306 struct sctp_sonode *ss = SOTOSSO(so); in sosctp_setsockopt()
1312 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1318 if (so->so_type == SOCK_STREAM) { in sosctp_setsockopt()
1319 conn = so->so_proto_handle; in sosctp_setsockopt()
1338 eprintsoline(so, error); in sosctp_setsockopt()
1346 eprintsoline(so, error); in sosctp_setsockopt()
1356 conn = so->so_proto_handle; in sosctp_setsockopt()
1364 eprintsoline(so, error); in sosctp_setsockopt()
1374 conn = so->so_proto_handle; in sosctp_setsockopt()
1386 eprintsoline(so, error); in sosctp_setsockopt()
1393 (void *)ss, so->so_type, (void *)conn, level, option_name, id)); in sosctp_setsockopt()
1397 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1400 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1416 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1417 error = sctp_set_opt((struct sctp_s *)so->so_proto_handle, in sosctp_setsockopt()
1419 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1423 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1426 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1434 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1440 sosctp_ioctl(struct sonode *so, int cmd, intptr_t arg, int mode, in sosctp_ioctl() argument
1455 ss = SOTOSSO(so); in sosctp_ioctl()
1464 mutex_enter(&so->so_lock); in sosctp_ioctl()
1466 so->so_state |= SS_NDELAY; in sosctp_ioctl()
1468 so->so_state &= ~SS_NDELAY; in sosctp_ioctl()
1470 mutex_exit(&so->so_lock); in sosctp_ioctl()
1478 mutex_enter(&so->so_lock); in sosctp_ioctl()
1482 so->so_state |= SS_ASYNC; in sosctp_ioctl()
1485 so->so_state &= ~SS_ASYNC; in sosctp_ioctl()
1487 mutex_exit(&so->so_lock); in sosctp_ioctl()
1496 mutex_enter(&so->so_lock); in sosctp_ioctl()
1498 error = (pid != so->so_pgrp) ? socket_chgpgrp(so, pid) : 0; in sosctp_ioctl()
1499 mutex_exit(&so->so_lock); in sosctp_ioctl()
1504 if (so_copyout(&so->so_pgrp, (void *)arg, in sosctp_ioctl()
1517 intval = (so->so_state & SS_ACCEPTCONN) ? 0 : in sosctp_ioctl()
1518 MIN(so->so_rcv_queued, INT_MAX); in sosctp_ioctl()
1539 mutex_enter(&so->so_lock); in sosctp_ioctl()
1540 if ((so->so_mode & SM_CONNREQUIRED) == 0) { in sosctp_ioctl()
1542 } else if ((so->so_state & SS_ISCONNECTED) == 0) { in sosctp_ioctl()
1544 } else if (so->so_peercred != NULL) { in sosctp_ioctl()
1546 kp->pc_cr = so->so_peercred; in sosctp_ioctl()
1547 kp->pc_cpid = so->so_cpid; in sosctp_ioctl()
1548 crhold(so->so_peercred); in sosctp_ioctl()
1552 mutex_exit(&so->so_lock); in sosctp_ioctl()
1570 mutex_enter(&so->so_lock); in sosctp_ioctl()
1571 if ((so->so_type == SOCK_SEQPACKET) && intval) { in sosctp_ioctl()
1573 mutex_exit(&so->so_lock); in sosctp_ioctl()
1579 conn = so->so_proto_handle; in sosctp_ioctl()
1582 mutex_exit(&so->so_lock); in sosctp_ioctl()
1593 mutex_enter(&so->so_lock); in sosctp_ioctl()
1595 mutex_exit(&so->so_lock); in sosctp_ioctl()
1604 mutex_enter(&so->so_lock); in sosctp_ioctl()
1606 mutex_exit(&so->so_lock); in sosctp_ioctl()
1638 mutex_enter(&so->so_lock); in sosctp_ioctl()
1641 mutex_exit(&so->so_lock); in sosctp_ioctl()
1647 conn = so->so_proto_handle; in sosctp_ioctl()
1650 mutex_exit(&so->so_lock); in sosctp_ioctl()
1657 mutex_enter(&so->so_lock); in sosctp_ioctl()
1659 mutex_exit(&so->so_lock); in sosctp_ioctl()
1668 mutex_enter(&so->so_lock); in sosctp_ioctl()
1670 mutex_exit(&so->so_lock); in sosctp_ioctl()
1685 if (so->so_type != SOCK_SEQPACKET) { in sosctp_ioctl()
1700 error = solookup(so->so_family, SOCK_STREAM, so->so_protocol, in sosctp_ioctl()
1709 eprintsoline(so, EMFILE); in sosctp_ioctl()
1722 mutex_enter(&so->so_lock); in sosctp_ioctl()
1731 mutex_exit(&so->so_lock); in sosctp_ioctl()
1737 nso = socksctp_create(sp, so->so_family, SOCK_STREAM, in sosctp_ioctl()
1738 so->so_protocol, so->so_version, SOCKET_NOSLEEP, in sosctp_ioctl()
1742 mutex_exit(&so->so_lock); in sosctp_ioctl()
1746 so_lock_single(so); in sosctp_ioctl()
1747 mutex_exit(&so->so_lock); in sosctp_ioctl()
1750 (void) sosctp_init(nso, so, CRED(), 0); in sosctp_ioctl()
1785 mutex_enter(&so->so_lock); in sosctp_ioctl()
1794 so_unlock_single(so, SOLOCKED); in sosctp_ioctl()
1795 mutex_exit(&so->so_lock); in sosctp_ioctl()
1802 eprintsoline(so, error); in sosctp_ioctl()
1807 mutex_enter(&so->so_lock); in sosctp_ioctl()
1810 so_unlock_single(so, SOLOCKED); in sosctp_ioctl()
1812 mutex_exit(&so->so_lock); in sosctp_ioctl()
1817 eprintsoline(so, error); in sosctp_ioctl()
1827 sosctp_close(struct sonode *so, int flag, struct cred *cr) in sosctp_close() argument
1834 ss = SOTOSSO(so); in sosctp_close()
1840 sctp_recvd((struct sctp_s *)so->so_proto_handle, in sosctp_close()
1841 so->so_rcvbuf - so->so_rcv_queued); in sosctp_close()
1842 (void) sctp_disconnect((struct sctp_s *)so->so_proto_handle); in sosctp_close()
1849 mutex_enter(&so->so_lock); in sosctp_close()
1855 mutex_exit(&so->so_lock); in sosctp_close()
1857 sctp_recvd(ssa->ssa_conn, so->so_rcvbuf - in sosctp_close()
1861 mutex_enter(&so->so_lock); in sosctp_close()
1865 mutex_exit(&so->so_lock); in sosctp_close()
1876 sosctp_fini(struct sonode *so, struct cred *cr) in sosctp_fini() argument
1883 ss = SOTOSSO(so); in sosctp_fini()
1885 ASSERT(so->so_ops == &sosctp_sonodeops || in sosctp_fini()
1886 so->so_ops == &sosctp_seq_sonodeops); in sosctp_fini()
1889 mutex_enter(&so->so_lock); in sosctp_fini()
1892 so_acceptq_flush(so, B_TRUE); in sosctp_fini()
1898 mutex_exit(&so->so_lock); in sosctp_fini()
1902 mutex_enter(&so->so_lock); in sosctp_fini()
1912 mutex_exit(&so->so_lock); in sosctp_fini()
1914 if (so->so_proto_handle) in sosctp_fini()
1915 sctp_close((struct sctp_s *)so->so_proto_handle); in sosctp_fini()
1916 so->so_proto_handle = NULL; in sosctp_fini()
1923 mutex_enter(&so->so_lock); in sosctp_fini()
1924 so_rcv_flush(so); in sosctp_fini()
1925 mutex_exit(&so->so_lock); in sosctp_fini()
1927 sonode_fini(so); in sosctp_fini()
2002 struct sonode *so = &ssa->ssa_sonode->ss_so; in sctp_assoc_connected() local
2004 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_connected()
2007 mutex_enter(&so->so_lock); in sctp_assoc_connected()
2009 mutex_exit(&so->so_lock); in sctp_assoc_connected()
2017 struct sonode *so = &ssa->ssa_sonode->ss_so; in sctp_assoc_disconnected() local
2020 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_disconnected()
2023 mutex_enter(&so->so_lock); in sctp_assoc_disconnected()
2031 SSA_REFRELE(SOTOSSO(so), ssa); in sctp_assoc_disconnected()
2033 cv_broadcast(&so->so_snd_cv); in sctp_assoc_disconnected()
2035 mutex_exit(&so->so_lock); in sctp_assoc_disconnected()
2046 struct sonode *so = &ssa->ssa_sonode->ss_so; in sctp_assoc_disconnecting() local
2048 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_disconnecting()
2052 mutex_enter(&so->so_lock); in sctp_assoc_disconnecting()
2054 mutex_exit(&so->so_lock); in sctp_assoc_disconnecting()
2064 struct sonode *so = &ss->ss_so; in sctp_assoc_recv() local
2072 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_recv()
2088 mutex_enter(&so->so_lock); in sctp_assoc_recv()
2162 space_available = so->so_rcvbuf - ssa->ssa_rcv_queued; in sctp_assoc_recv()
2166 so_enqueue_msg(so, mp, len); in sctp_assoc_recv()
2169 so_notify_data(so, len); in sctp_assoc_recv()
2200 struct sonode *so; in sctp_assoc_get_vnode() local
2203 so = &ssa->ssa_sonode->ss_so; in sctp_assoc_get_vnode()
2205 so = &((struct sctp_sonode *)handle)->ss_so; in sctp_assoc_get_vnode()
2207 return (so_get_vnode((sock_upper_handle_t)so)); in sctp_assoc_get_vnode()
2215 struct sonode *so; in sctp_assoc_properties() local
2218 so = &ssa->ssa_sonode->ss_so; in sctp_assoc_properties()
2220 mutex_enter(&so->so_lock); in sctp_assoc_properties()
2228 so = &((struct sctp_sonode *)handle)->ss_so; in sctp_assoc_properties()
2229 mutex_enter(&so->so_lock); in sctp_assoc_properties()
2232 so->so_proto_props.sopp_wroff = soppp->sopp_wroff; in sctp_assoc_properties()
2234 so->so_proto_props.sopp_maxblk = soppp->sopp_maxblk; in sctp_assoc_properties()
2238 so->so_rcvbuf = soppp->sopp_rxhiwat; in sctp_assoc_properties()
2245 if (so->so_rcvlowat > lowat) { in sctp_assoc_properties()
2248 so->so_rcvlowat = soppp->sopp_rxhiwat; in sctp_assoc_properties()
2250 so->so_rcvlowat = lowat; in sctp_assoc_properties()
2254 mutex_exit(&so->so_lock); in sctp_assoc_properties()