Lines Matching refs:so
175 sosctp_init(struct sonode *so, struct sonode *pso, struct cred *cr, int flags) in sosctp_init() argument
182 ss = SOTOSSO(so); in sosctp_init()
190 ASSERT(so->so_type == SOCK_STREAM); in sosctp_init()
194 so->so_state |= (SS_ISBOUND | SS_ISCONNECTED | in sosctp_init()
197 so->so_proto_props = pso->so_proto_props; in sosctp_init()
198 so->so_mode = pso->so_mode; in sosctp_init()
207 if (so->so_type == SOCK_STREAM) { in sosctp_init()
208 so->so_proto_handle = (sock_lower_handle_t)sctp_create(so, in sosctp_init()
209 NULL, so->so_family, so->so_type, SCTP_CAN_BLOCK, in sosctp_init()
211 so->so_mode = SM_CONNREQUIRED; in sosctp_init()
213 ASSERT(so->so_type == SOCK_SEQPACKET); in sosctp_init()
214 so->so_proto_handle = (sock_lower_handle_t)sctp_create(ss, in sosctp_init()
215 NULL, so->so_family, so->so_type, SCTP_CAN_BLOCK, in sosctp_init()
219 if (so->so_proto_handle == NULL) in sosctp_init()
222 so->so_rcvbuf = sbl.sbl_rxbuf; in sosctp_init()
223 so->so_rcvlowat = sbl.sbl_rxlowat; in sosctp_init()
224 so->so_sndbuf = sbl.sbl_txbuf; in sosctp_init()
225 so->so_sndlowat = sbl.sbl_txlowat; in sosctp_init()
235 sosctp_accept(struct sonode *so, int fflag, struct cred *cr, in sosctp_accept() argument
240 if ((so->so_state & SS_ACCEPTCONN) == 0) in sosctp_accept()
243 error = so_acceptq_dequeue(so, (fflag & (FNONBLOCK|FNDELAY)), nsop); in sosctp_accept()
253 sosctp_bind(struct sonode *so, struct sockaddr *name, socklen_t namelen, in sosctp_bind() argument
259 mutex_enter(&so->so_lock); in sosctp_bind()
260 so_lock_single(so); /* Set SOLOCKED */ in sosctp_bind()
262 ASSERT(MUTEX_HELD(&so->so_lock)); in sosctp_bind()
268 if (so->so_state & SS_CANTSENDMORE) { in sosctp_bind()
277 mutex_exit(&so->so_lock); in sosctp_bind()
279 error = sctp_bind((struct sctp_s *)so->so_proto_handle, name, namelen); in sosctp_bind()
281 mutex_enter(&so->so_lock); in sosctp_bind()
283 so->so_state |= SS_ISBOUND; in sosctp_bind()
285 eprintsoline(so, error); in sosctp_bind()
289 so_unlock_single(so, SOLOCKED); in sosctp_bind()
290 mutex_exit(&so->so_lock); in sosctp_bind()
293 ASSERT(MUTEX_HELD(&so->so_lock)); in sosctp_bind()
294 ASSERT(so->so_flag & SOLOCKED); in sosctp_bind()
305 sosctp_listen(struct sonode *so, int backlog, struct cred *cr) in sosctp_listen() argument
309 mutex_enter(&so->so_lock); in sosctp_listen()
310 so_lock_single(so); in sosctp_listen()
316 if (so->so_state & (SS_ISCONNECTING | SS_ISCONNECTED | in sosctp_listen()
319 eprintsoline(so, error); in sosctp_listen()
331 if (so->so_state & SS_ACCEPTCONN) { in sosctp_listen()
332 so->so_backlog = backlog; in sosctp_listen()
336 mutex_exit(&so->so_lock); in sosctp_listen()
337 error = sctp_listen((struct sctp_s *)so->so_proto_handle); in sosctp_listen()
338 mutex_enter(&so->so_lock); in sosctp_listen()
340 so->so_state |= (SS_ACCEPTCONN|SS_ISBOUND); in sosctp_listen()
341 so->so_backlog = backlog; in sosctp_listen()
343 eprintsoline(so, error); in sosctp_listen()
346 so_unlock_single(so, SOLOCKED); in sosctp_listen()
347 mutex_exit(&so->so_lock); in sosctp_listen()
357 sosctp_connect(struct sonode *so, struct sockaddr *name, in sosctp_connect() argument
363 ASSERT(so->so_type == SOCK_STREAM); in sosctp_connect()
365 mutex_enter(&so->so_lock); in sosctp_connect()
366 so_lock_single(so); in sosctp_connect()
372 if (so->so_state & (SS_ACCEPTCONN|SS_ISCONNECTED|SS_ISCONNECTING)) { in sosctp_connect()
373 if (so->so_state & SS_ISCONNECTED) { in sosctp_connect()
375 } else if (so->so_state & SS_ISCONNECTING) { in sosctp_connect()
380 eprintsoline(so, error); in sosctp_connect()
387 if (so->so_error != 0) { in sosctp_connect()
388 error = sogeterr(so, B_TRUE); in sosctp_connect()
389 eprintsoline(so, error); in sosctp_connect()
398 if (so->so_state & (SS_ISDISCONNECTING|SS_CANTRCVMORE| in sosctp_connect()
401 eprintsoline(so, error); in sosctp_connect()
406 mutex_exit(&so->so_lock); in sosctp_connect()
408 eprintsoline(so, error); in sosctp_connect()
412 soisconnecting(so); in sosctp_connect()
413 mutex_exit(&so->so_lock); in sosctp_connect()
415 error = sctp_connect((struct sctp_s *)so->so_proto_handle, in sosctp_connect()
418 mutex_enter(&so->so_lock); in sosctp_connect()
423 error = sowaitconnected(so, fflag, 0); in sosctp_connect()
426 so_unlock_single(so, SOLOCKED); in sosctp_connect()
427 mutex_exit(&so->so_lock); in sosctp_connect()
438 sosctp_seq_connect(struct sonode *so, struct sockaddr *name, in sosctp_seq_connect() argument
445 ASSERT(so->so_type == SOCK_SEQPACKET); in sosctp_seq_connect()
447 mutex_enter(&so->so_lock); in sosctp_seq_connect()
448 so_lock_single(so); in sosctp_seq_connect()
452 eprintsoline(so, error); in sosctp_seq_connect()
456 ss = SOTOSSO(so); in sosctp_seq_connect()
470 so_unlock_single(so, SOLOCKED); in sosctp_seq_connect()
471 mutex_exit(&so->so_lock); in sosctp_seq_connect()
480 sosctp_recvmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in sosctp_recvmsg() argument
483 struct sctp_sonode *ss = SOTOSSO(so); in sosctp_recvmsg()
501 if (so->so_type == SOCK_STREAM) { in sosctp_recvmsg()
502 if (!(so->so_state & (SS_ISCONNECTED|SS_ISCONNECTING| in sosctp_recvmsg()
516 if (so->so_rcv_q_head == NULL && so->so_rcv_head == NULL && in sosctp_recvmsg()
517 ss->ss_assoccnt == 0 && !(so->so_state & SS_ACCEPTCONN)) { in sosctp_recvmsg()
545 mutex_enter(&so->so_lock); in sosctp_recvmsg()
550 error = so_lock_read_intr(so, in sosctp_recvmsg()
553 mutex_exit(&so->so_lock); in sosctp_recvmsg()
556 mutex_exit(&so->so_lock); in sosctp_recvmsg()
558 error = so_dequeue_msg(so, &mp, uiop, &rval, flags | MSG_DUPCTRL); in sosctp_recvmsg()
560 if (so->so_type == SOCK_SEQPACKET) { in sosctp_recvmsg()
613 mutex_enter(&so->so_lock); in sosctp_recvmsg()
614 count = so->so_rcvbuf - so->so_rcv_queued; in sosctp_recvmsg()
616 ASSERT(so->so_rcv_q_head != NULL || in sosctp_recvmsg()
617 so->so_rcv_head != NULL || in sosctp_recvmsg()
618 so->so_rcv_queued == 0); in sosctp_recvmsg()
620 so_unlock_read(so); in sosctp_recvmsg()
628 mutex_exit(&so->so_lock); in sosctp_recvmsg()
629 sctp_recvd((struct sctp_s *)so->so_proto_handle, count); in sosctp_recvmsg()
631 mutex_exit(&so->so_lock); in sosctp_recvmsg()
641 mutex_enter(&so->so_lock); in sosctp_recvmsg()
643 count = so->so_rcvbuf - ssa->ssa_rcv_queued; in sosctp_recvmsg()
645 so_unlock_read(so); in sosctp_recvmsg()
648 ssa->ssa_rcv_queued < so->so_rcvlowat) { in sosctp_recvmsg()
654 mutex_exit(&so->so_lock); in sosctp_recvmsg()
656 mutex_enter(&so->so_lock); in sosctp_recvmsg()
665 mutex_exit(&so->so_lock); in sosctp_recvmsg()
725 sosctp_sendmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in sosctp_sendmsg() argument
735 ASSERT(so->so_type == SOCK_STREAM); in sosctp_sendmsg()
751 eprintsoline(so, EINVAL); in sosctp_sendmsg()
759 eprintsoline(so, EINVAL); in sosctp_sendmsg()
767 eprintsoline(so, EINVAL); in sosctp_sendmsg()
775 mutex_enter(&so->so_lock); in sosctp_sendmsg()
776 so_lock_single(so); in sosctp_sendmsg()
777 socantsendmore(so); in sosctp_sendmsg()
778 cv_broadcast(&so->so_snd_cv); in sosctp_sendmsg()
779 so->so_state |= SS_ISDISCONNECTING; in sosctp_sendmsg()
780 mutex_exit(&so->so_lock); in sosctp_sendmsg()
782 pollwakeup(&so->so_poll_list, POLLOUT); in sosctp_sendmsg()
783 sctp_recvd((struct sctp_s *)so->so_proto_handle, in sosctp_sendmsg()
784 so->so_rcvbuf); in sosctp_sendmsg()
786 (struct sctp_s *)so->so_proto_handle); in sosctp_sendmsg()
788 mutex_enter(&so->so_lock); in sosctp_sendmsg()
789 so_unlock_single(so, SOLOCKED); in sosctp_sendmsg()
790 mutex_exit(&so->so_lock); in sosctp_sendmsg()
798 mutex_enter(&so->so_lock); in sosctp_sendmsg()
800 if (so->so_state & SS_CANTSENDMORE) { in sosctp_sendmsg()
801 mutex_exit(&so->so_lock); in sosctp_sendmsg()
805 if (so->so_error != 0) { in sosctp_sendmsg()
806 error = sogeterr(so, B_TRUE); in sosctp_sendmsg()
807 mutex_exit(&so->so_lock); in sosctp_sendmsg()
811 if (!so->so_snd_qfull) in sosctp_sendmsg()
814 if (so->so_state & SS_CLOSING) { in sosctp_sendmsg()
815 mutex_exit(&so->so_lock); in sosctp_sendmsg()
823 mutex_exit(&so->so_lock); in sosctp_sendmsg()
829 error = cv_wait_sig(&so->so_snd_cv, &so->so_lock); in sosctp_sendmsg()
831 mutex_exit(&so->so_lock); in sosctp_sendmsg()
840 if (msglen > so->so_sndbuf) { in sosctp_sendmsg()
841 mutex_exit(&so->so_lock); in sosctp_sendmsg()
848 if (!(so->so_state & (SS_ISCONNECTING | SS_ISCONNECTED))) { in sosctp_sendmsg()
859 if ((so->so_state & SS_ACCEPTCONN) || in sosctp_sendmsg()
861 mutex_exit(&so->so_lock); in sosctp_sendmsg()
865 mutex_exit(&so->so_lock); in sosctp_sendmsg()
870 error = sosctp_connect(so, msg->msg_name, msg->msg_namelen, in sosctp_sendmsg()
871 fflag, (so->so_version == SOV_XPG4_2) * _SOCONNECT_XPG4_2, in sosctp_sendmsg()
884 mutex_exit(&so->so_lock); in sosctp_sendmsg()
895 if ((error = sosctp_uiomove(mctl, count, so->so_proto_props.sopp_maxblk, in sosctp_sendmsg()
896 so->so_proto_props.sopp_wroff, uiop, flags)) != 0) { in sosctp_sendmsg()
899 error = sctp_sendmsg((struct sctp_s *)so->so_proto_handle, mctl, 0); in sosctp_sendmsg()
906 mutex_enter(&so->so_lock); in sosctp_sendmsg()
907 if ((error == EPIPE) && (so->so_state & SS_CANTSENDMORE)) { in sosctp_sendmsg()
912 mutex_exit(&so->so_lock); in sosctp_sendmsg()
915 mutex_exit(&so->so_lock); in sosctp_sendmsg()
924 sosctp_seq_sendmsg(struct sonode *so, struct nmsghdr *msg, struct uio *uiop, in sosctp_seq_sendmsg() argument
938 ASSERT(so->so_type == SOCK_SEQPACKET); in sosctp_seq_sendmsg()
948 eprintsoline(so, EINVAL); in sosctp_seq_sendmsg()
956 ss = SOTOSSO(so); in sosctp_seq_sendmsg()
965 mutex_enter(&so->so_lock); in sosctp_seq_sendmsg()
979 eprintsoline(so, error); in sosctp_seq_sendmsg()
986 so_lock_single(so); in sosctp_seq_sendmsg()
990 if ((so->so_version == SOV_XPG4_2) && in sosctp_seq_sendmsg()
1000 eprintsoline(so, error); in sosctp_seq_sendmsg()
1001 so_unlock_single(so, SOLOCKED); in sosctp_seq_sendmsg()
1010 so_unlock_single(so, SOLOCKED); in sosctp_seq_sendmsg()
1013 eprintsoline(so, error); in sosctp_seq_sendmsg()
1033 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1035 sctp_recvd(ssa->ssa_conn, so->so_rcvbuf); in sosctp_seq_sendmsg()
1037 mutex_enter(&so->so_lock); in sosctp_seq_sendmsg()
1045 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1057 if (so->so_state & SS_CLOSING) { in sosctp_seq_sendmsg()
1069 error = cv_wait_sig(&so->so_snd_cv, &so->so_lock); in sosctp_seq_sendmsg()
1080 if (msglen > so->so_sndbuf) { in sosctp_seq_sendmsg()
1088 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1104 mutex_enter(&so->so_lock); in sosctp_seq_sendmsg()
1113 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1121 mutex_exit(&so->so_lock); in sosctp_seq_sendmsg()
1130 sosctp_getpeername(struct sonode *so, struct sockaddr *addr, socklen_t *addrlen, in sosctp_getpeername() argument
1133 return (sctp_getpeername((struct sctp_s *)so->so_proto_handle, addr, in sosctp_getpeername()
1142 sosctp_getsockname(struct sonode *so, struct sockaddr *addr, socklen_t *addrlen, in sosctp_getsockname() argument
1145 return (sctp_getsockname((struct sctp_s *)so->so_proto_handle, addr, in sosctp_getsockname()
1154 sosctp_shutdown(struct sonode *so, int how, struct cred *cr) in sosctp_shutdown() argument
1160 mutex_enter(&so->so_lock); in sosctp_shutdown()
1166 state_change = so->so_state; in sosctp_shutdown()
1170 socantrcvmore(so); in sosctp_shutdown()
1173 socantsendmore(so); in sosctp_shutdown()
1176 socantsendmore(so); in sosctp_shutdown()
1177 socantrcvmore(so); in sosctp_shutdown()
1180 mutex_exit(&so->so_lock); in sosctp_shutdown()
1184 state_change = so->so_state & ~state_change; in sosctp_shutdown()
1187 if (so->so_rcv_q_head == NULL) { in sosctp_shutdown()
1188 cv_signal(&so->so_rcv_cv); in sosctp_shutdown()
1192 socket_sendsig(so, SOCKETSIG_READ); in sosctp_shutdown()
1195 cv_broadcast(&so->so_snd_cv); in sosctp_shutdown()
1198 so->so_state |= SS_ISDISCONNECTING; in sosctp_shutdown()
1200 mutex_exit(&so->so_lock); in sosctp_shutdown()
1202 pollwakeup(&so->so_poll_list, wakesig); in sosctp_shutdown()
1205 sctp_recvd((struct sctp_s *)so->so_proto_handle, so->so_rcvbuf); in sosctp_shutdown()
1206 error = sctp_disconnect((struct sctp_s *)so->so_proto_handle); in sosctp_shutdown()
1223 sosctp_getsockopt(struct sonode *so, int level, int option_name, in sosctp_getsockopt() argument
1239 eprintsoline(so, ENOPROTOOPT); in sosctp_getsockopt()
1242 error = socket_getopt_common(so, level, option_name, in sosctp_getsockopt()
1267 error = sctp_get_opt((struct sctp_s *)so->so_proto_handle, level, in sosctp_getsockopt()
1271 eprintsoline(so, error); in sosctp_getsockopt()
1294 sosctp_setsockopt(struct sonode *so, int level, int option_name, in sosctp_setsockopt() argument
1297 struct sctp_sonode *ss = SOTOSSO(so); in sosctp_setsockopt()
1303 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1309 if (so->so_type == SOCK_STREAM) { in sosctp_setsockopt()
1310 conn = so->so_proto_handle; in sosctp_setsockopt()
1329 eprintsoline(so, error); in sosctp_setsockopt()
1337 eprintsoline(so, error); in sosctp_setsockopt()
1347 conn = so->so_proto_handle; in sosctp_setsockopt()
1355 eprintsoline(so, error); in sosctp_setsockopt()
1365 conn = so->so_proto_handle; in sosctp_setsockopt()
1377 eprintsoline(so, error); in sosctp_setsockopt()
1384 (void *)ss, so->so_type, (void *)conn, level, option_name, id)); in sosctp_setsockopt()
1388 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1391 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1407 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1408 error = sctp_set_opt((struct sctp_s *)so->so_proto_handle, in sosctp_setsockopt()
1410 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1414 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1417 mutex_enter(&so->so_lock); in sosctp_setsockopt()
1425 mutex_exit(&so->so_lock); in sosctp_setsockopt()
1431 sosctp_ioctl(struct sonode *so, int cmd, intptr_t arg, int mode, in sosctp_ioctl() argument
1446 ss = SOTOSSO(so); in sosctp_ioctl()
1455 mutex_enter(&so->so_lock); in sosctp_ioctl()
1457 so->so_state |= SS_NDELAY; in sosctp_ioctl()
1459 so->so_state &= ~SS_NDELAY; in sosctp_ioctl()
1461 mutex_exit(&so->so_lock); in sosctp_ioctl()
1469 mutex_enter(&so->so_lock); in sosctp_ioctl()
1473 so->so_state |= SS_ASYNC; in sosctp_ioctl()
1476 so->so_state &= ~SS_ASYNC; in sosctp_ioctl()
1478 mutex_exit(&so->so_lock); in sosctp_ioctl()
1487 mutex_enter(&so->so_lock); in sosctp_ioctl()
1489 error = (pid != so->so_pgrp) ? socket_chgpgrp(so, pid) : 0; in sosctp_ioctl()
1490 mutex_exit(&so->so_lock); in sosctp_ioctl()
1495 if (so_copyout(&so->so_pgrp, (void *)arg, in sosctp_ioctl()
1508 intval = (so->so_state & SS_ACCEPTCONN) ? 0 : in sosctp_ioctl()
1509 MIN(so->so_rcv_queued, INT_MAX); in sosctp_ioctl()
1530 mutex_enter(&so->so_lock); in sosctp_ioctl()
1531 if ((so->so_mode & SM_CONNREQUIRED) == 0) { in sosctp_ioctl()
1533 } else if ((so->so_state & SS_ISCONNECTED) == 0) { in sosctp_ioctl()
1535 } else if (so->so_peercred != NULL) { in sosctp_ioctl()
1537 kp->pc_cr = so->so_peercred; in sosctp_ioctl()
1538 kp->pc_cpid = so->so_cpid; in sosctp_ioctl()
1539 crhold(so->so_peercred); in sosctp_ioctl()
1543 mutex_exit(&so->so_lock); in sosctp_ioctl()
1561 mutex_enter(&so->so_lock); in sosctp_ioctl()
1562 if ((so->so_type == SOCK_SEQPACKET) && intval) { in sosctp_ioctl()
1564 mutex_exit(&so->so_lock); in sosctp_ioctl()
1570 conn = so->so_proto_handle; in sosctp_ioctl()
1573 mutex_exit(&so->so_lock); in sosctp_ioctl()
1584 mutex_enter(&so->so_lock); in sosctp_ioctl()
1586 mutex_exit(&so->so_lock); in sosctp_ioctl()
1595 mutex_enter(&so->so_lock); in sosctp_ioctl()
1597 mutex_exit(&so->so_lock); in sosctp_ioctl()
1629 mutex_enter(&so->so_lock); in sosctp_ioctl()
1632 mutex_exit(&so->so_lock); in sosctp_ioctl()
1638 conn = so->so_proto_handle; in sosctp_ioctl()
1641 mutex_exit(&so->so_lock); in sosctp_ioctl()
1648 mutex_enter(&so->so_lock); in sosctp_ioctl()
1650 mutex_exit(&so->so_lock); in sosctp_ioctl()
1659 mutex_enter(&so->so_lock); in sosctp_ioctl()
1661 mutex_exit(&so->so_lock); in sosctp_ioctl()
1676 if (so->so_type != SOCK_SEQPACKET) { in sosctp_ioctl()
1691 error = solookup(so->so_family, SOCK_STREAM, so->so_protocol, in sosctp_ioctl()
1700 eprintsoline(so, EMFILE); in sosctp_ioctl()
1713 mutex_enter(&so->so_lock); in sosctp_ioctl()
1722 mutex_exit(&so->so_lock); in sosctp_ioctl()
1728 nso = socksctp_create(sp, so->so_family, SOCK_STREAM, in sosctp_ioctl()
1729 so->so_protocol, so->so_version, SOCKET_NOSLEEP, in sosctp_ioctl()
1733 mutex_exit(&so->so_lock); in sosctp_ioctl()
1737 so_lock_single(so); in sosctp_ioctl()
1738 mutex_exit(&so->so_lock); in sosctp_ioctl()
1741 (void) sosctp_init(nso, so, CRED(), 0); in sosctp_ioctl()
1776 mutex_enter(&so->so_lock); in sosctp_ioctl()
1785 so_unlock_single(so, SOLOCKED); in sosctp_ioctl()
1786 mutex_exit(&so->so_lock); in sosctp_ioctl()
1793 eprintsoline(so, error); in sosctp_ioctl()
1798 mutex_enter(&so->so_lock); in sosctp_ioctl()
1801 so_unlock_single(so, SOLOCKED); in sosctp_ioctl()
1803 mutex_exit(&so->so_lock); in sosctp_ioctl()
1808 eprintsoline(so, error); in sosctp_ioctl()
1818 sosctp_close(struct sonode *so, int flag, struct cred *cr) in sosctp_close() argument
1825 ss = SOTOSSO(so); in sosctp_close()
1831 sctp_recvd((struct sctp_s *)so->so_proto_handle, in sosctp_close()
1832 so->so_rcvbuf - so->so_rcv_queued); in sosctp_close()
1833 (void) sctp_disconnect((struct sctp_s *)so->so_proto_handle); in sosctp_close()
1840 mutex_enter(&so->so_lock); in sosctp_close()
1846 mutex_exit(&so->so_lock); in sosctp_close()
1848 sctp_recvd(ssa->ssa_conn, so->so_rcvbuf - in sosctp_close()
1852 mutex_enter(&so->so_lock); in sosctp_close()
1856 mutex_exit(&so->so_lock); in sosctp_close()
1867 sosctp_fini(struct sonode *so, struct cred *cr) in sosctp_fini() argument
1874 ss = SOTOSSO(so); in sosctp_fini()
1876 ASSERT(so->so_ops == &sosctp_sonodeops || in sosctp_fini()
1877 so->so_ops == &sosctp_seq_sonodeops); in sosctp_fini()
1880 mutex_enter(&so->so_lock); in sosctp_fini()
1883 so_acceptq_flush(so, B_TRUE); in sosctp_fini()
1889 mutex_exit(&so->so_lock); in sosctp_fini()
1893 mutex_enter(&so->so_lock); in sosctp_fini()
1903 mutex_exit(&so->so_lock); in sosctp_fini()
1905 if (so->so_proto_handle) in sosctp_fini()
1906 sctp_close((struct sctp_s *)so->so_proto_handle); in sosctp_fini()
1907 so->so_proto_handle = NULL; in sosctp_fini()
1914 mutex_enter(&so->so_lock); in sosctp_fini()
1915 so_rcv_flush(so); in sosctp_fini()
1916 mutex_exit(&so->so_lock); in sosctp_fini()
1918 sonode_fini(so); in sosctp_fini()
1993 struct sonode *so = &ssa->ssa_sonode->ss_so; in sctp_assoc_connected() local
1995 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_connected()
1998 mutex_enter(&so->so_lock); in sctp_assoc_connected()
2000 mutex_exit(&so->so_lock); in sctp_assoc_connected()
2008 struct sonode *so = &ssa->ssa_sonode->ss_so; in sctp_assoc_disconnected() local
2011 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_disconnected()
2014 mutex_enter(&so->so_lock); in sctp_assoc_disconnected()
2022 SSA_REFRELE(SOTOSSO(so), ssa); in sctp_assoc_disconnected()
2024 cv_broadcast(&so->so_snd_cv); in sctp_assoc_disconnected()
2026 mutex_exit(&so->so_lock); in sctp_assoc_disconnected()
2037 struct sonode *so = &ssa->ssa_sonode->ss_so; in sctp_assoc_disconnecting() local
2039 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_disconnecting()
2043 mutex_enter(&so->so_lock); in sctp_assoc_disconnecting()
2045 mutex_exit(&so->so_lock); in sctp_assoc_disconnecting()
2055 struct sonode *so = &ss->ss_so; in sctp_assoc_recv() local
2063 ASSERT(so->so_type == SOCK_SEQPACKET); in sctp_assoc_recv()
2079 mutex_enter(&so->so_lock); in sctp_assoc_recv()
2153 space_available = so->so_rcvbuf - ssa->ssa_rcv_queued; in sctp_assoc_recv()
2157 so_enqueue_msg(so, mp, len); in sctp_assoc_recv()
2160 so_notify_data(so, len); in sctp_assoc_recv()
2192 struct sonode *so; in sctp_assoc_properties() local
2195 so = &ssa->ssa_sonode->ss_so; in sctp_assoc_properties()
2197 mutex_enter(&so->so_lock); in sctp_assoc_properties()
2205 so = &((struct sctp_sonode *)handle)->ss_so; in sctp_assoc_properties()
2206 mutex_enter(&so->so_lock); in sctp_assoc_properties()
2209 so->so_proto_props.sopp_wroff = soppp->sopp_wroff; in sctp_assoc_properties()
2211 so->so_proto_props.sopp_maxblk = soppp->sopp_maxblk; in sctp_assoc_properties()
2215 so->so_rcvbuf = soppp->sopp_rxhiwat; in sctp_assoc_properties()
2222 if (so->so_rcvlowat > lowat) { in sctp_assoc_properties()
2225 so->so_rcvlowat = soppp->sopp_rxhiwat; in sctp_assoc_properties()
2227 so->so_rcvlowat = lowat; in sctp_assoc_properties()
2231 mutex_exit(&so->so_lock); in sctp_assoc_properties()