Lines Matching defs:so
181 unp_solock_peer(struct socket *so)
186 unp = so->so_pcb;
194 if (so < so2)
196 else if (so > so2) {
198 sounlock(so);
200 solock(so);
259 uipc_attach(struct socket *so, int proto, int wait)
264 if (so->so_pcb)
266 if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) {
267 switch (so->so_type) {
270 error = soreserve(so,
276 error = soreserve(so,
282 error = soreserve(so,
298 unp->unp_socket = so;
299 so->so_pcb = unp;
310 uipc_detach(struct socket *so)
312 struct unpcb *unp = sotounpcb(so);
323 uipc_bind(struct socket *so, struct mbuf *nam, struct proc *p)
325 struct unpcb *unp = sotounpcb(so);
416 uipc_listen(struct socket *so)
418 struct unpcb *unp = sotounpcb(so);
428 uipc_connect(struct socket *so, struct mbuf *nam)
430 return unp_connect(so, nam, curproc);
434 uipc_accept(struct socket *so, struct mbuf *nam)
437 struct unpcb *unp = sotounpcb(so);
443 so2 = unp_solock_peer(so);
446 if (so2 != NULL && so2 != so)
452 uipc_disconnect(struct socket *so)
454 struct unpcb *unp = sotounpcb(so);
461 uipc_shutdown(struct socket *so)
463 struct unpcb *unp = sotounpcb(so);
466 socantsendmore(so);
477 uipc_dgram_shutdown(struct socket *so)
479 socantsendmore(so);
484 uipc_rcvd(struct socket *so)
486 struct unpcb *unp = sotounpcb(so);
497 mtx_enter(&so->so_rcv.sb_mtx);
499 so2->so_snd.sb_mbcnt = so->so_rcv.sb_mbcnt;
500 so2->so_snd.sb_cc = so->so_rcv.sb_cc;
502 mtx_leave(&so->so_rcv.sb_mtx);
507 uipc_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
510 struct unpcb *unp = sotounpcb(so);
515 sounlock(so);
517 solock(so);
526 if (so->so_snd.sb_state & SS_CANTSENDMORE) {
547 mtx_enter(&so->so_snd.sb_mtx);
552 mtx_leave(&so->so_snd.sb_mtx);
557 } else if (so->so_type == SOCK_SEQPACKET)
561 so->so_snd.sb_mbcnt = so2->so_rcv.sb_mbcnt;
562 so->so_snd.sb_cc = so2->so_rcv.sb_cc;
565 mtx_leave(&so->so_snd.sb_mtx);
586 uipc_dgram_send(struct socket *so, struct mbuf *m, struct mbuf *nam,
589 struct unpcb *unp = sotounpcb(so);
595 sounlock(so);
597 solock(so);
607 error = unp_connect(so, nam, curproc);
654 uipc_abort(struct socket *so)
656 struct unpcb *unp = sotounpcb(so);
659 sofree(so, 1);
663 uipc_sense(struct socket *so, struct stat *sb)
665 struct unpcb *unp = sotounpcb(so);
667 sb->st_blksize = so->so_snd.sb_hiwat;
685 uipc_sockaddr(struct socket *so, struct mbuf *nam)
687 struct unpcb *unp = sotounpcb(so);
694 uipc_peeraddr(struct socket *so, struct mbuf *nam)
696 struct unpcb *unp = sotounpcb(so);
699 so2 = unp_solock_peer(so);
701 if (so2 != NULL && so2 != so)
707 uipc_connect2(struct socket *so, struct socket *so2)
709 struct unpcb *unp = sotounpcb(so), *unp2;
712 if ((error = unp_connect2(so, so2)))
766 struct socket *so = unp->unp_socket;
778 sounlock(so);
785 solock(so);
799 if (so < so2)
803 sounlock(so);
805 solock(so);
825 sounlock(so);
827 solock(so);
829 soisdisconnected(so);
830 so->so_pcb = NULL;
838 unp_connect(struct socket *so, struct mbuf *nam, struct proc *p)
847 unp = sotounpcb(so);
865 sounlock(so);
883 if (so->so_type != so2->so_type) {
888 if (so->so_proto->pr_flags & PR_CONNREQUIRED) {
904 solock_pair(so, so3);
928 if (so2 != so)
929 solock_pair(so, so2);
931 solock(so);
934 error = unp_connect2(so, so2);
936 sounlock(so);
941 if (so2 != so)
947 solock(so);
952 * when `so' and `vp' are unlocked.
961 unp_connect2(struct socket *so, struct socket *so2)
963 struct unpcb *unp = sotounpcb(so);
966 soassertlocked(so);
969 if (so2->so_type != so->so_type)
973 switch (so->so_type) {
977 soisconnected(so);
983 soisconnected(so);
1031 struct socket *so;
1035 if ((so = fp->f_data) == NULL)
1037 if (so->so_proto->pr_domain != &unixdomain)
1039 return (sotounpcb(so));
1117 * Back out what we've done so far.
1140 * Make the slot reference the descriptor so that
1347 struct socket *so;
1416 so = unp->unp_socket;
1417 mtx_enter(&so->so_rcv.sb_mtx);
1418 unp_scan(so->so_rcv.sb_mb, unp_remove_gcrefs);
1419 mtx_leave(&so->so_rcv.sb_mtx);
1440 so = unp->unp_socket;
1441 mtx_enter(&so->so_rcv.sb_mtx);
1442 unp_scan(so->so_rcv.sb_mb, unp_restore_gcrefs);
1443 mtx_leave(&so->so_rcv.sb_mtx);
1462 * and if so it's `so_rcv' is still