Lines Matching defs:so

256 unp_setpeerlocks(struct socket *so, struct socket *so2)
261 KASSERT(solocked2(so, so2));
269 KASSERT(so->so_head == NULL);
278 lock = so->so_lock;
291 unp = sotounpcb(so);
308 solockreset(so, lock);
316 unp_resetlock(struct socket *so)
321 KASSERT(solocked(so));
323 olock = so->so_lock;
327 unp = sotounpcb(so);
332 solockreset(so, nlock);
384 unp_setaddr(struct socket *so, struct sockaddr *nam, bool peeraddr)
389 KASSERT(solocked(so));
390 unp = sotounpcb(so);
406 unp_rcvd(struct socket *so, int flags, struct lwp *l)
408 struct unpcb *unp = sotounpcb(so);
412 KASSERT(solocked(so));
415 switch (so->so_type) {
423 #define rcv (&so->so_rcv)
428 KASSERT(solocked2(so, so2));
452 unp_recvoob(struct socket *so, struct mbuf *m, int flags)
454 KASSERT(solocked(so));
460 unp_send(struct socket *so, struct mbuf *m, struct sockaddr *nam,
463 struct unpcb *unp = sotounpcb(so);
468 KASSERT(solocked(so));
479 sounlock(so);
481 solock(so);
489 switch (so->so_type) {
492 KASSERT(so->so_lock == uipc_lock);
494 if ((so->so_state & SS_ISCONNECTED) != 0)
506 error = unp_connect(so, nam, l);
509 if ((so->so_state & SS_ISCONNECTED) == 0)
527 #define snd (&so->so_snd)
533 KASSERT(solocked2(so, so2));
561 switch(so->so_type) {
578 (void)chgsbsize(so->so_uidinfo,
598 unp_sendoob(struct socket *so, struct mbuf *m, struct mbuf * control)
600 KASSERT(solocked(so));
612 uipc_ctloutput(int op, struct socket *so, struct sockopt *sopt)
614 struct unpcb *unp = sotounpcb(so);
617 KASSERT(solocked(so));
663 sounlock(so);
691 solock(so);
717 unp_attach(struct socket *so, int proto)
719 struct unpcb *unp = sotounpcb(so);
725 switch (so->so_type) {
729 if (so->so_lock == NULL) {
730 so->so_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_NONE);
731 solock(so);
738 if (so->so_lock == NULL) {
740 so->so_lock = uipc_lock;
741 solock(so);
751 if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) {
752 error = soreserve(so, sndspc, rcvspc);
760 unp->unp_socket = so;
761 so->so_pcb = unp;
763 KASSERT(solocked(so));
768 unp_detach(struct socket *so)
773 unp = sotounpcb(so);
775 KASSERT(solocked(so));
778 sounlock(so);
785 solock(so);
791 KASSERT(solocked2(so, unp->unp_refs->unp_socket));
793 solock(so);
797 soisdisconnected(so);
798 so->so_pcb = NULL;
806 sorflush(so);
814 unp_accept(struct socket *so, struct sockaddr *nam)
816 struct unpcb *unp = sotounpcb(so);
819 KASSERT(solocked(so));
826 KASSERT(so->so_lock == uipc_lock);
837 unp_setaddr(so, nam, true);
842 KASSERT(solocked2(so, so->so_head));
843 KASSERT(solocked2(so2, so->so_head));
851 * is not locked, so when changing so2->so_lock
852 * another thread can grab it while so->so_lock is still
861 unp_setpeerlocks(so2, so);
870 unp_setaddr(so, nam, true);
877 unp_ioctl(struct socket *so, u_long cmd, void *nam, struct ifnet *ifp)
883 unp_stat(struct socket *so, struct stat *ub)
888 KASSERT(solocked(so));
890 unp = sotounpcb(so);
894 ub->st_blksize = so->so_snd.sb_hiwat;
895 switch (so->so_type) {
902 KASSERT(solocked2(so, so2));
913 ub->st_uid = so->so_uidinfo->ui_uid;
914 ub->st_gid = so->so_egid;
919 unp_peeraddr(struct socket *so, struct sockaddr *nam)
921 KASSERT(solocked(so));
922 KASSERT(sotounpcb(so) != NULL);
925 unp_setaddr(so, nam, true);
930 unp_sockaddr(struct socket *so, struct sockaddr *nam)
932 KASSERT(solocked(so));
933 KASSERT(sotounpcb(so) != NULL);
936 unp_setaddr(so, nam, false);
957 unp_bind(struct socket *so, struct sockaddr *nam, struct lwp *l)
969 unp = sotounpcb(so);
971 KASSERT(solocked(so));
985 sounlock(so);
1025 solock(so);
1038 solock(so);
1044 unp_listen(struct socket *so, struct lwp *l)
1046 struct unpcb *unp = sotounpcb(so);
1048 KASSERT(solocked(so));
1055 unp_resetlock(so);
1064 unp_disconnect(struct socket *so)
1066 KASSERT(solocked(so));
1067 KASSERT(sotounpcb(so) != NULL);
1069 unp_disconnect1(sotounpcb(so));
1074 unp_shutdown(struct socket *so)
1076 KASSERT(solocked(so));
1077 KASSERT(sotounpcb(so) != NULL);
1079 socantsendmore(so);
1080 unp_shutdown1(sotounpcb(so));
1085 unp_abort(struct socket *so)
1087 KASSERT(solocked(so));
1088 KASSERT(sotounpcb(so) != NULL);
1090 (void)unp_drop(sotounpcb(so), SET_ERROR(ECONNABORTED));
1091 KASSERT(so->so_head == NULL);
1092 KASSERT(so->so_pcb != NULL);
1093 unp_detach(so);
1098 unp_connect1(struct socket *so, struct socket *so2, struct lwp *l)
1100 struct unpcb *unp = sotounpcb(so);
1103 if (so2->so_type != so->so_type)
1109 * local endpoint (so)
1113 KASSERT(solocked2(so, so2));
1114 KASSERT(so->so_head == NULL);
1123 switch (so->so_type) {
1128 soisconnected(so);
1149 unp_connect(struct socket *so, struct sockaddr *nam, struct lwp *l)
1160 unp = sotounpcb(so);
1169 sounlock(so);
1200 if (so->so_type != so2->so_type) {
1205 solock(so);
1206 unp_resetlock(so);
1208 if ((so->so_proto->pr_flags & PR_CONNREQUIRED) != 0) {
1219 sounlock(so);
1242 * at that time so we can use them now.
1250 error = unp_connect1(so, so2, l);
1252 sounlock(so);
1256 switch (so->so_type) {
1268 soisconnecting(so);
1270 soisconnected(so);
1278 unp_setpeerlocks(so, so2);
1282 sounlock(so);
1287 solock(so);
1293 unp_connect2(struct socket *so, struct socket *so2)
1295 struct unpcb *unp = sotounpcb(so);
1299 KASSERT(solocked2(so, so2));
1301 error = unp_connect1(so, so2, curlwp);
1306 switch (so->so_type) {
1317 soisconnected(so);
1329 struct socket *so;
1334 so = unp->unp_socket;
1335 switch (so->so_type) {
1342 KASSERT(solocked2(so, unp2->unp_socket));
1352 so->so_state &= ~SS_ISCONNECTED;
1357 KASSERT(solocked2(so, unp2->unp_socket));
1358 soisdisconnected(so);
1368 struct socket *so;
1373 if (unp->unp_conn && (so = unp->unp_conn->unp_socket))
1374 socantrcvmore(so);
1384 struct socket *so = unp->unp_socket;
1386 KASSERT(solocked(so));
1388 so->so_error = errno;
1390 if (so->so_head) {
1391 so->so_pcb = NULL;
1393 sofree(so);
1455 * Back out what we've done so far.
1497 * LWP in the process, so we must drop the reference
1517 * Truncate the array so that nobody will try to interpret
1596 * reverse order so that if pointers are bigger than ints, the
1678 struct socket *so, *so1;
1758 (so = fp->f_socket) == NULL ||
1759 so->so_proto->pr_domain != &unixdomain ||
1760 (so->so_proto->pr_flags & PR_RIGHTS) == 0) {
1776 solock(so);
1777 unp_scan(so->so_rcv.sb_mb, unp_mark, 0);
1778 if ((so->so_options & SO_ACCEPTCONN) != 0) {
1779 TAILQ_FOREACH(so1, &so->so_q0, so_qe) {
1782 TAILQ_FOREACH(so1, &so->so_q, so_qe) {
1786 sounlock(so);
1839 so = fp->f_socket;
1840 solock(so);
1841 sorflush(so);
1842 sounlock(so);
1956 * file which can hold references to another file, so just mark