Lines Matching full:so
314 nl_pru_attach(struct socket *so, int proto, struct thread *td)
328 so, is_linux ? "(linux) " : "", curproc->p_pid,
337 MPASS(sotonlpcb(so) == NULL);
340 error = soreserve(so, nl_sendspace, nl_recvspace);
345 TAILQ_INIT(&so->so_rcv.nl_queue);
346 TAILQ_INIT(&so->so_snd.nl_queue);
347 so->so_pcb = nlp;
348 nlp->nl_socket = so;
350 nlp->nl_cred = so->so_cred;
354 nlp->nl_unconstrained_vnet = !jailed_without_vnet(so->so_cred);
370 soisconnected(so);
376 nl_pru_bind(struct socket *so, struct sockaddr *sa, struct thread *td)
379 struct nlpcb *nlp = sotonlpcb(so);
383 NL_LOG(LOG_DEBUG3, "socket %p, PID %d", so, curproc->p_pid);
385 NL_LOG(LOG_DEBUG, "socket %p, wrong sizeof(), ignoring bind()", so);
395 NL_LOG(LOG_DEBUG2, "socket %p, bind() to %u, groups %u, error %d", so,
453 nl_pru_connect(struct socket *so, struct sockaddr *sa, struct thread *td)
458 NL_LOG(LOG_DEBUG3, "socket %p, PID %d", so, curproc->p_pid);
460 NL_LOG(LOG_DEBUG, "socket %p, wrong sizeof(), ignoring bind()", so);
464 nlp = sotonlpcb(so);
468 NL_LOG(LOG_DEBUG, "socket %p, nl_autobind() failed: %d", so, error);
473 soisconnected(so);
475 NL_LOG(LOG_DEBUG2, "socket %p, connect to %u", so, snl->nl_pid);
492 nl_close(struct socket *so)
495 MPASS(sotonlpcb(so) != NULL);
499 NL_LOG(LOG_DEBUG2, "detaching socket %p, PID %d", so, curproc->p_pid);
500 nlp = sotonlpcb(so);
502 /* Mark as inactive so no new work can be enqueued */
515 NL_LOG(LOG_DEBUG3, "socket %p, unlinking bound pid %u", so, nlp->nl_port);
522 so->so_pcb = NULL;
524 while ((nb = TAILQ_FIRST(&so->so_snd.nl_queue)) != NULL) {
525 TAILQ_REMOVE(&so->so_snd.nl_queue, nb, tailq);
528 while ((nb = TAILQ_FIRST(&so->so_rcv.nl_queue)) != NULL) {
529 TAILQ_REMOVE(&so->so_rcv.nl_queue, nb, tailq);
533 NL_LOG(LOG_DEBUG3, "socket %p, detached", so);
540 nl_pru_disconnect(struct socket *so)
542 NL_LOG(LOG_DEBUG3, "socket %p, PID %d", so, curproc->p_pid);
543 MPASS(sotonlpcb(so) != NULL);
548 nl_sockaddr(struct socket *so, struct sockaddr *sa)
555 .nl_pid = sotonlpcb(so)->nl_port,
562 nl_sosend(struct socket *so, struct sockaddr *addr, struct uio *uio,
565 struct nlpcb *nlp = sotonlpcb(so);
566 struct sockbuf *sb = &so->so_snd;
588 error = SOCK_IO_SEND_LOCK(so, SBLOCKWAIT(flags));
601 SOCK_SENDBUF_LOCK(so);
608 } else if ((so->so_state & SS_NBIO) ||
610 SOCK_SENDBUF_UNLOCK(so);
614 if ((error = sbwait(so, SO_SND)) != 0) {
615 SOCK_SENDBUF_UNLOCK(so);
620 SOCK_SENDBUF_UNLOCK(so);
630 SOCK_IO_SEND_UNLOCK(so);
661 nl_soreceive(struct socket *so, struct sockaddr **psa, struct uio *uio,
669 struct sockbuf *sb = &so->so_rcv;
670 struct nlpcb *nlp = sotonlpcb(so);
679 NL_LOG(LOG_DEBUG3, "socket %p, PID %d", so, curproc->p_pid);
690 nonblock = (so->so_state & SS_NBIO) ||
694 error = SOCK_IO_RECV_LOCK(so, SBLOCKWAIT(flags));
703 SOCK_RECVBUF_LOCK(so);
706 SOCK_RECVBUF_UNLOCK(so);
707 SOCK_IO_RECV_UNLOCK(so);
710 error = sbwait(so, SO_RCV);
712 SOCK_RECVBUF_UNLOCK(so);
713 SOCK_IO_RECV_UNLOCK(so);
803 SOCK_RECVBUF_UNLOCK(so);
828 SOCK_IO_RECV_UNLOCK(so);
830 nl_on_transmit(sotonlpcb(so));
853 nl_ctloutput(struct socket *so, struct sockopt *sopt)
856 struct nlpcb *nlp = sotonlpcb(so);
862 so, sopt->sopt_name);
956 nl_setsbopt(struct socket *so, struct sockopt *sopt)
962 return (sbsetopt(so, sopt));
969 NL_LOG(LOG_DEBUG2, "socket %p, PID %d, SO_RCVBUF=%d", so, curproc->p_pid, optval);
975 SOCK_RECVBUF_LOCK(so);
976 result = sbreserve_locked_limit(so, SO_RCV, optval, nl_maxsockbuf, curthread);
977 SOCK_RECVBUF_UNLOCK(so);