Lines Matching full:so
95 static void sdp_stop_keepalive_timer(struct socket *so);
191 sdp_getsockaddr(struct socket *so, struct sockaddr *sa) in sdp_getsockaddr() argument
193 struct sdp_sock *ssk = sdp_sk(so); in sdp_getsockaddr()
208 sdp_getpeeraddr(struct socket *so, struct sockaddr *sa) in sdp_getpeeraddr() argument
210 struct sdp_sock *ssk = sdp_sk(so); in sdp_getpeeraddr()
263 struct socket *so; in sdp_closed() local
268 so = ssk->socket; in sdp_closed()
269 soisdisconnected(so); in sdp_closed()
273 sorele(so); in sdp_closed()
299 /* We have to clear this so sdp_detach() will call pcbfree(). */ in sdp_shutdown_task()
411 sdp_attach(struct socket *so, int proto, struct thread *td) in sdp_attach() argument
416 ssk = sdp_sk(so); in sdp_attach()
417 KASSERT(ssk == NULL, ("sdp_attach: ssk already set on so %p", so)); in sdp_attach()
418 if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { in sdp_attach()
419 error = soreserve(so, sdp_sendspace, sdp_recvspace); in sdp_attach()
423 so->so_rcv.sb_flags |= SB_AUTOSIZE; in sdp_attach()
424 so->so_snd.sb_flags |= SB_AUTOSIZE; in sdp_attach()
429 ssk->socket = so; in sdp_attach()
430 ssk->cred = crhold(so->so_cred); in sdp_attach()
431 so->so_pcb = (caddr_t)ssk; in sdp_attach()
432 sdp_init_sock(so); in sdp_attach()
450 sdp_detach(struct socket *so) in sdp_detach() argument
454 ssk = sdp_sk(so); in sdp_detach()
471 sdp_bind(struct socket *so, struct sockaddr *nam, struct thread *td) in sdp_bind() argument
485 ssk = sdp_sk(so); in sdp_bind()
502 sdp_listen(struct socket *so, int backlog, struct thread *td) in sdp_listen() argument
507 ssk = sdp_sk(so); in sdp_listen()
515 SOCK_LOCK(so); in sdp_listen()
517 error = solisten_proto_check(so); in sdp_listen()
519 solisten_proto(so, backlog); in sdp_listen()
522 SOCK_UNLOCK(so); in sdp_listen()
538 struct socket *so; in sdp_start_connect() local
541 so = ssk->socket; in sdp_start_connect()
554 soisconnecting(so); in sdp_start_connect()
569 sdp_connect(struct socket *so, struct sockaddr *nam, struct thread *td) in sdp_connect() argument
584 ssk = sdp_sk(so); in sdp_connect()
602 struct socket *so; in sdp_drop() local
605 so = ssk->socket; in sdp_drop()
610 so->so_error = errno; in sdp_drop()
693 struct socket *so; in sdp_start_disconnect() local
696 so = ssk->socket; in sdp_start_disconnect()
698 sdp_stop_keepalive_timer(so); in sdp_start_disconnect()
707 } else if ((so->so_options & SO_LINGER) && so->so_linger == 0) { in sdp_start_disconnect()
712 soisdisconnecting(so); in sdp_start_disconnect()
713 unread = sbused(&so->so_rcv); in sdp_start_disconnect()
714 sbflush(&so->so_rcv); in sdp_start_disconnect()
729 sdp_disconnect(struct socket *so) in sdp_disconnect() argument
734 ssk = sdp_sk(so); in sdp_disconnect()
761 sdp_accept(struct socket *so, struct sockaddr *sa) in sdp_accept() argument
766 if (so->so_state & SS_ISDISCONNECTED) in sdp_accept()
770 ssk = sdp_sk(so); in sdp_accept()
790 sdp_shutdown(struct socket *so, enum shutdown_how how) in sdp_shutdown() argument
792 struct sdp_sock *ssk = sdp_sk(so); in sdp_shutdown()
795 SOCK_LOCK(so); in sdp_shutdown()
796 if ((so->so_state & in sdp_shutdown()
798 SOCK_UNLOCK(so); in sdp_shutdown()
801 if (SOLISTENING(so)) { in sdp_shutdown()
803 so->so_error = ECONNABORTED; in sdp_shutdown()
804 solisten_wakeup(so); /* unlocks so */ in sdp_shutdown()
806 SOCK_UNLOCK(so); in sdp_shutdown()
809 SOCK_UNLOCK(so); in sdp_shutdown()
813 socantrcvmore(so); in sdp_shutdown()
814 sbrelease(so, SO_RCV); in sdp_shutdown()
817 socantrcvmore(so); in sdp_shutdown()
818 sbrelease(so, SO_RCV); in sdp_shutdown()
827 socantsendmore(so); in sdp_shutdown()
833 wakeup(&so->so_timeo); in sdp_shutdown()
906 sdp_send(struct socket *so, int flags, struct mbuf *m, in sdp_send() argument
930 ssk = sdp_sk(so); in sdp_send()
968 SOCKBUF_LOCK(&so->so_snd); in sdp_send()
969 sdp_append(ssk, &so->so_snd, m, cnt); in sdp_send()
970 SOCKBUF_UNLOCK(&so->so_snd); in sdp_send()
984 socantsendmore(so); in sdp_send()
994 SOCKBUF_LOCK(&so->so_snd); in sdp_send()
995 if (sbspace(&so->so_snd) < -512) { in sdp_send()
996 SOCKBUF_UNLOCK(&so->so_snd); in sdp_send()
1010 sdp_append(ssk, &so->so_snd, m, cnt); in sdp_send()
1011 SOCKBUF_UNLOCK(&so->so_snd); in sdp_send()
1043 sdp_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio, in sdp_sosend() argument
1077 if (resid < 0 || (so->so_type == SOCK_STREAM && (flags & MSG_EOR))) { in sdp_sosend()
1084 ssk = sdp_sk(so); in sdp_sosend()
1085 error = SOCK_IO_SEND_LOCK(so, SBLOCKWAIT(flags)); in sdp_sosend()
1091 SOCKBUF_LOCK(&so->so_snd); in sdp_sosend()
1092 if (so->so_snd.sb_state & SBS_CANTSENDMORE) { in sdp_sosend()
1093 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1097 if (so->so_error) { in sdp_sosend()
1098 error = so->so_error; in sdp_sosend()
1099 so->so_error = 0; in sdp_sosend()
1100 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1103 if ((so->so_state & SS_ISCONNECTED) == 0 && addr == NULL) { in sdp_sosend()
1104 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1108 space = sbspace(&so->so_snd); in sdp_sosend()
1112 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1117 (atomic || space < so->so_snd.sb_lowat)) { in sdp_sosend()
1118 if ((so->so_state & SS_NBIO) || in sdp_sosend()
1120 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1124 error = sbwait(so, SO_SND); in sdp_sosend()
1125 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1130 SOCKBUF_UNLOCK(&so->so_snd); in sdp_sosend()
1160 error = sdp_send(so, (flags & MSG_OOB) ? PRUS_OOB : in sdp_sosend()
1176 SOCK_IO_SEND_UNLOCK(so); in sdp_sosend()
1192 soreceive_rcvoob(struct socket *so, struct uio *uio, int flags) in soreceive_rcvoob() argument
1194 struct protosw *pr = so->so_proto; in soreceive_rcvoob()
1201 error = pr->pr_rcvoob(so, m, flags & MSG_PEEK); in soreceive_rcvoob()
1219 sdp_sorecv(struct socket *so, struct sockaddr **psa, struct uio *uio, in sdp_sorecv() argument
1228 if (so->so_type != SOCK_STREAM) in sdp_sorecv()
1239 return (soreceive_rcvoob(so, uio, flags)); in sdp_sorecv()
1243 sb = &so->so_rcv; in sdp_sorecv()
1244 ssk = sdp_sk(so); in sdp_sorecv()
1247 error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags)); in sdp_sorecv()
1260 if (!(so->so_state & (SS_ISCONNECTED|SS_ISDISCONNECTED))) { in sdp_sorecv()
1264 if (!(so->so_state & SS_ISDISCONNECTED)) in sdp_sorecv()
1271 ((so->so_state & SS_NBIO) || (flags & (MSG_DONTWAIT|MSG_NBIO)))) { in sdp_sorecv()
1277 SOCKBUF_LOCK_ASSERT(&so->so_rcv); in sdp_sorecv()
1280 if (so->so_error) { in sdp_sorecv()
1285 error = so->so_error; in sdp_sorecv()
1287 so->so_error = 0; in sdp_sorecv()
1301 ((so->so_state & SS_NBIO) || in sdp_sorecv()
1318 error = sbwait(so, SO_RCV); in sdp_sorecv()
1324 SOCKBUF_LOCK_ASSERT(&so->so_rcv); in sdp_sorecv()
1406 SOCK_IO_RECV_UNLOCK(so); in sdp_sorecv()
1415 sdp_abort(struct socket *so) in sdp_abort() argument
1419 ssk = sdp_sk(so); in sdp_abort()
1436 sdp_close(struct socket *so) in sdp_close() argument
1440 ssk = sdp_sk(so); in sdp_close()
1455 soref(so); in sdp_close()
1464 sdp_rcvoob(struct socket *so, struct mbuf *m, int flags) in sdp_rcvoob() argument
1469 ssk = sdp_sk(so); in sdp_rcvoob()
1479 if ((so->so_oobmark == 0 && in sdp_rcvoob()
1480 (so->so_rcv.sb_state & SBS_RCVATMARK) == 0) || in sdp_rcvoob()
1481 so->so_options & SO_OOBINLINE || in sdp_rcvoob()
1504 struct socket *so; in sdp_urg() local
1506 so = ssk->socket; in sdp_urg()
1507 if (so == NULL) in sdp_urg()
1510 so->so_oobmark = sbused(&so->so_rcv) + mb->m_pkthdr.len - 1; in sdp_urg()
1511 sohasoutofband(so); in sdp_urg()
1513 if (!(so->so_options & SO_OOBINLINE)) { in sdp_urg()
1574 sdp_start_keepalive_timer(struct socket *so) in sdp_start_keepalive_timer() argument
1578 ssk = sdp_sk(so); in sdp_start_keepalive_timer()
1585 sdp_stop_keepalive_timer(struct socket *so) in sdp_stop_keepalive_timer() argument
1589 ssk = sdp_sk(so); in sdp_stop_keepalive_timer()
1608 sdp_ctloutput(struct socket *so, struct sockopt *sopt) in sdp_ctloutput() argument
1614 ssk = sdp_sk(so); in sdp_ctloutput()
1617 if (so->so_options & SO_KEEPALIVE) in sdp_ctloutput()
1618 sdp_start_keepalive_timer(so); in sdp_ctloutput()
1620 sdp_stop_keepalive_timer(so); in sdp_ctloutput()