Lines Matching refs:so

155 tcp_usr_attach(struct socket *so, __unused int proto, struct proc *p)  in tcp_usr_attach()  argument
158 struct inpcb *inp = sotoinpcb(so); in tcp_usr_attach()
166 error = tcp_attach(so, p); in tcp_usr_attach()
171 if ((so->so_options & SO_LINGER) && so->so_linger == 0) { in tcp_usr_attach()
172 so->so_linger = (short)(TCP_LINGERTIME * hz); in tcp_usr_attach()
174 so->so_snd.sb_flags |= SB_SENDHEAD; in tcp_usr_attach()
175 so->so_snd.sb_sendhead = NULL; in tcp_usr_attach()
176 so->so_snd.sb_sendoff = 0; in tcp_usr_attach()
178 tp = sototcpcb(so); in tcp_usr_attach()
191 tcp_usr_detach(struct socket *so) in tcp_usr_detach() argument
194 struct inpcb *inp = sotoinpcb(so); in tcp_usr_detach()
200 socket_lock_assert_owned(so); in tcp_usr_detach()
252 tcp_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p) in tcp_usr_bind() argument
255 struct inpcb *inp = sotoinpcb(so); in tcp_usr_bind()
261 inp_enter_bind_in_progress(so); in tcp_usr_bind()
288 socket_unlock(so, 0); in tcp_usr_bind()
289 necp_client_assign_from_socket(so->last_pid, inp->necp_client_uuid, inp); in tcp_usr_bind()
290 socket_lock(so, 0); in tcp_usr_bind()
297 inp_exit_bind_in_progress(so); in tcp_usr_bind()
303 tcp6_usr_bind(struct socket *so, struct sockaddr *nam, struct proc *p) in tcp6_usr_bind() argument
306 struct inpcb *inp = sotoinpcb(so); in tcp6_usr_bind()
313 inp_enter_bind_in_progress(so); in tcp6_usr_bind()
363 inp_exit_bind_in_progress(so); in tcp6_usr_bind()
382 tcp_usr_listen(struct socket *so, struct proc *p) in tcp_usr_listen() argument
385 struct inpcb *inp = sotoinpcb(so); in tcp_usr_listen()
390 inp_enter_bind_in_progress(so); in tcp_usr_listen()
394 inp_exit_bind_in_progress(so); in tcp_usr_listen()
408 tcp6_usr_listen(struct socket *so, struct proc *p) in tcp6_usr_listen() argument
411 struct inpcb *inp = sotoinpcb(so); in tcp6_usr_listen()
416 inp_enter_bind_in_progress(so); in tcp6_usr_listen()
424 inp_exit_bind_in_progress(so); in tcp6_usr_listen()
438 tcp_connect_complete(struct socket *so) in tcp_connect_complete() argument
440 struct tcpcb *tp = sototcpcb(so); in tcp_connect_complete()
441 struct inpcb *inp = sotoinpcb(so); in tcp_connect_complete()
445 if (so->so_flags1 & SOF1_PRECONNECT_DATA) { in tcp_connect_complete()
446 if (!necp_socket_is_allowed_to_send_recv(sotoinpcb(so), NULL, 0, NULL, NULL, NULL, NULL)) { in tcp_connect_complete()
464 socket_unlock(so, 0); in tcp_connect_complete()
465 necp_client_assign_from_socket(so->last_pid, inp->necp_client_uuid, inp); in tcp_connect_complete()
466 socket_lock(so, 0); in tcp_connect_complete()
496 tcp_usr_connect_common(struct socket *so, struct tcpcb *tp, struct sockaddr *nam, in tcp_usr_connect_common() argument
500 struct inpcb *inp = sotoinpcb(so); in tcp_usr_connect_common()
502 inp_enter_bind_in_progress(so); in tcp_usr_connect_common()
615 error = tcp_connect_complete(so); in tcp_usr_connect_common()
622 inp_exit_bind_in_progress(so); in tcp_usr_connect_common()
635 tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p) in tcp_usr_connect() argument
638 struct inpcb *inp = sotoinpcb(so); in tcp_usr_connect()
644 if (so->so_error) { in tcp_usr_connect()
645 error = so->so_error; in tcp_usr_connect()
646 so->so_error = 0; in tcp_usr_connect()
654 error = cfil_sock_attach(so, NULL, nam, CFS_CONNECTION_DIR_OUT); in tcp_usr_connect()
661 error = flow_divert_pcb_init(so); in tcp_usr_connect()
663 error = flow_divert_connect_out(so, nam, p); in tcp_usr_connect()
667 so->so_flags1 |= SOF1_FLOW_DIVERT_SKIP; in tcp_usr_connect()
675 error = tcp_usr_connect_common(so, tp, nam, p, false, true); in tcp_usr_connect()
684 tcp_usr_connectx_common(struct socket *so, int af, in tcp_usr_connectx_common() argument
691 struct inpcb *inp = sotoinpcb(so); in tcp_usr_connectx_common()
708 if ((so->so_flags1 & SOF1_DATA_IDEMPOTENT) && in tcp_usr_connectx_common()
710 sototcpcb(so)->t_flagsext |= TF_FASTOPEN; in tcp_usr_connectx_common()
721 error = sobindlock(so, src, 0); /* already locked */ in tcp_usr_connectx_common()
729 error = tcp_usr_connect(so, dst, p); in tcp_usr_connectx_common()
732 error = tcp6_usr_connect(so, dst, p); in tcp_usr_connectx_common()
745 socket_unlock(so, 0); in tcp_usr_connectx_common()
750 error = so->so_proto->pr_usrreqs->pru_sosend(so, NULL, in tcp_usr_connectx_common()
752 socket_lock(so, 0); in tcp_usr_connectx_common()
776 so->so_flags1 &= ~SOF1_PRECONNECT_DATA; in tcp_usr_connectx_common()
784 tcp_usr_connectx(struct socket *so, struct sockaddr *src, in tcp_usr_connectx() argument
789 return tcp_usr_connectx_common(so, AF_INET, src, dst, p, ifscope, aid, in tcp_usr_connectx()
794 tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct proc *p) in tcp6_usr_connect() argument
797 struct inpcb *inp = sotoinpcb(so); in tcp6_usr_connect()
803 if (so->so_error) { in tcp6_usr_connect()
804 error = so->so_error; in tcp6_usr_connect()
805 so->so_error = 0; in tcp6_usr_connect()
813 error = cfil_sock_attach(so, NULL, nam, CFS_CONNECTION_DIR_OUT); in tcp6_usr_connect()
820 error = flow_divert_pcb_init(so); in tcp6_usr_connect()
822 error = flow_divert_connect_out(so, nam, p); in tcp6_usr_connect()
826 so->so_flags1 |= SOF1_FLOW_DIVERT_SKIP; in tcp6_usr_connect()
835 error = tcp_usr_connect_common(so, tp, nam, p, true, true); in tcp6_usr_connect()
845 tcp6_usr_connectx(struct socket *so, struct sockaddr*src, in tcp6_usr_connectx() argument
850 return tcp_usr_connectx_common(so, AF_INET6, src, dst, p, ifscope, aid, in tcp6_usr_connectx()
866 tcp_usr_disconnect(struct socket *so) in tcp_usr_disconnect() argument
869 struct inpcb *inp = sotoinpcb(so); in tcp_usr_disconnect()
872 socket_lock_assert_owned(so); in tcp_usr_disconnect()
886 tcp_usr_disconnectx(struct socket *so, sae_associd_t aid, sae_connid_t cid) in tcp_usr_disconnectx() argument
893 return tcp_usr_disconnect(so); in tcp_usr_disconnectx()
902 tcp_usr_accept(struct socket *so, struct sockaddr **nam) in tcp_usr_accept() argument
905 struct inpcb *inp = sotoinpcb(so); in tcp_usr_accept()
908 in_getpeeraddr(so, nam); in tcp_usr_accept()
910 if (so->so_state & SS_ISDISCONNECTED) { in tcp_usr_accept()
934 tcp6_usr_accept(struct socket *so, struct sockaddr **nam) in tcp6_usr_accept() argument
937 struct inpcb *inp = sotoinpcb(so); in tcp6_usr_accept()
940 if (so->so_state & SS_ISDISCONNECTED) { in tcp6_usr_accept()
960 in6_mapped_peeraddr(so, nam); in tcp6_usr_accept()
982 tcp_usr_shutdown(struct socket *so) in tcp_usr_shutdown() argument
985 struct inpcb *inp = sotoinpcb(so); in tcp_usr_shutdown()
992 socantsendmore(so); in tcp_usr_shutdown()
1016 if ((so->so_flags & SOF_MP_SUBFLOW) && in tcp_usr_shutdown()
1023 if (tp && !(so->so_state & SS_ISDISCONNECTED) && in tcp_usr_shutdown()
1024 cfil_sock_data_pending(&so->so_snd)) { in tcp_usr_shutdown()
1038 tcp_usr_rcvd(struct socket *so, int flags) in tcp_usr_rcvd() argument
1041 struct inpcb *inp = sotoinpcb(so); in tcp_usr_rcvd()
1049 tcp_sbrcv_trim(tp, &so->so_rcv); in tcp_usr_rcvd()
1065 cfil_sock_buf_update(&so->so_rcv); in tcp_usr_rcvd()
1073 tcp_send_implied_connect(struct socket *so, struct tcpcb *tp, struct sockaddr *nam, in tcp_send_implied_connect() argument
1078 error = tcp_usr_connect_common(so, tp, nam, p, isipv6, false); in tcp_send_implied_connect()
1096 mpkl_tcp_send(struct socket *so, struct tcpcb *tp, uint32_t mpkl_seq, uint32_t mpkl_len, in mpkl_tcp_send() argument
1116 so->last_pid, in mpkl_tcp_send()
1117 so->so_log_seqn++); in mpkl_tcp_send()
1153 tcp_usr_send(struct socket *so, int flags, struct mbuf *m, in tcp_usr_send() argument
1157 struct inpcb *inp = sotoinpcb(so); in tcp_usr_send()
1200 mpkl_seq = tp->snd_una + so->so_snd.sb_cc; in tcp_usr_send()
1204 if (so->so_flags1 & SOF1_MPKL_SEND_INFO) { in tcp_usr_send()
1205 uuid_copy(mpkl_send_info.mpkl_uuid, so->so_mpkl_send_uuid); in tcp_usr_send()
1206 mpkl_send_info.mpkl_proto = so->so_mpkl_send_proto; in tcp_usr_send()
1237 VERIFY(!(so->so_flags & SOF_MP_SUBFLOW) || in tcp_usr_send()
1238 (so->so_snd.sb_flags & SB_NOCOMPRESS)); in tcp_usr_send()
1240 if (!(flags & PRUS_OOB) || (so->so_flags1 & SOF1_PRECONNECT_DATA)) { in tcp_usr_send()
1241 sbappendstream(&so->so_snd, m); in tcp_usr_send()
1247 error = tcp_send_implied_connect(so, tp, nam, p, isipv6); in tcp_usr_send()
1260 socantsendmore(so); in tcp_usr_send()
1275 if (sbspace(&so->so_snd) == 0) { in tcp_usr_send()
1290 sbappendstream(&so->so_snd, m); in tcp_usr_send()
1298 error = tcp_send_implied_connect(so, tp, nam, p, isipv6); in tcp_usr_send()
1303 tp->snd_up = tp->snd_una + so->so_snd.sb_cc; in tcp_usr_send()
1312 mpkl_tcp_send(so, tp, mpkl_seq, mpkl_len, &mpkl_send_info); in tcp_usr_send()
1319 if (so->so_state & SS_ISCONNECTING) { in tcp_usr_send()
1320 if (so->so_state & SS_NBIO) { in tcp_usr_send()
1323 error = sbwait(&so->so_snd); in tcp_usr_send()
1335 tcp_usr_abort(struct socket *so) in tcp_usr_abort() argument
1338 struct inpcb *inp = sotoinpcb(so); in tcp_usr_abort()
1347 VERIFY(so->so_usecount > 0); in tcp_usr_abort()
1348 so->so_usecount--; in tcp_usr_abort()
1361 tcp_usr_rcvoob(struct socket *so, struct mbuf *m, int flags) in tcp_usr_rcvoob() argument
1364 struct inpcb *inp = sotoinpcb(so); in tcp_usr_rcvoob()
1368 if ((so->so_oobmark == 0 && in tcp_usr_rcvoob()
1369 (so->so_state & SS_RCVATMARK) == 0) || in tcp_usr_rcvoob()
1370 so->so_options & SO_OOBINLINE || in tcp_usr_rcvoob()
1381 so->so_state &= ~SS_RCVATMARK; in tcp_usr_rcvoob()
1389 tcp_usr_preconnect(struct socket *so) in tcp_usr_preconnect() argument
1391 struct inpcb *inp = sotoinpcb(so); in tcp_usr_preconnect()
1404 error = tcp_output(sototcpcb(so)); in tcp_usr_preconnect()
1406 soclearfastopen(so); in tcp_usr_preconnect()
1486 struct socket *so = inp->inp_socket; in tcp_connect() local
1590 tcp_set_max_rwinscale(tp, so); in tcp_connect()
1592 soisconnecting(so); in tcp_connect()
1619 struct socket *so = inp->inp_socket; in tcp6_connect() local
1724 tcp_set_max_rwinscale(tp, so); in tcp6_connect()
1726 soisconnecting(so); in tcp6_connect()
1938 struct socket *so; in tcp_fill_info_for_info_tuple() local
1985 if ((so = inp->inp_socket) == NULL) { in tcp_fill_info_for_info_tuple()
1988 socket_lock(so, 0); in tcp_fill_info_for_info_tuple()
1990 socket_unlock(so, 0); in tcp_fill_info_for_info_tuple()
1996 socket_unlock(so, 0); in tcp_fill_info_for_info_tuple()
2134 tcp_lookup_peer_pid_locked(struct socket *so, pid_t *out_pid) in tcp_lookup_peer_pid_locked() argument
2138 if ((so->so_state & SS_ISCONNECTED) == 0) { in tcp_lookup_peer_pid_locked()
2142 struct inpcb *inp = (struct inpcb*)so->so_pcb; in tcp_lookup_peer_pid_locked()
2160 socket_unlock(so, 0); in tcp_lookup_peer_pid_locked()
2172 socket_lock(so, 0); in tcp_lookup_peer_pid_locked()
2178 tcp_getconninfo(struct socket *so, struct conninfo_tcp *tcp_ci) in tcp_getconninfo() argument
2180 tcp_fill_info(sototcpcb(so), &tcp_ci->tcpci_tcp_info); in tcp_getconninfo()
2184 tcp_clear_keep_alive_offload(struct socket *so) in tcp_clear_keep_alive_offload() argument
2189 inp = sotoinpcb(so); in tcp_clear_keep_alive_offload()
2202 __func__, so, inp); in tcp_clear_keep_alive_offload()
2209 __func__, so, inp, ifp); in tcp_clear_keep_alive_offload()
2218 tcp_set_keep_alive_offload(struct socket *so, struct proc *proc) in tcp_set_keep_alive_offload() argument
2224 inp = sotoinpcb(so); in tcp_set_keep_alive_offload()
2275 tcp_ctloutput(struct socket *so, struct sockopt *sopt) in tcp_ctloutput() argument
2281 inp = sotoinpcb(so); in tcp_ctloutput()
2293 if (SOCK_CHECK_DOM(so, PF_INET6)) { in tcp_ctloutput()
2294 error = ip6_ctloutput(so, sopt); in tcp_ctloutput()
2296 error = ip_ctloutput(so, sopt); in tcp_ctloutput()
2304 if (SOCK_CHECK_DOM(so, PF_INET6)) { in tcp_ctloutput()
2305 error = ip6_ctloutput(so, sopt); in tcp_ctloutput()
2307 error = ip_ctloutput(so, sopt); in tcp_ctloutput()
2531 error = tcp_set_keep_alive_offload(so, in tcp_ctloutput()
2534 tcp_clear_keep_alive_offload(so); in tcp_ctloutput()
2573 so->so_flags &= ~(SOF_NOTSENT_LOWAT); in tcp_ctloutput()
2576 so->so_flags |= SOF_NOTSENT_LOWAT; in tcp_ctloutput()
2749 tcp_set_foreground_cc(so); in tcp_ctloutput()
2770 if ((error = tcp_notify_ack_id_valid(tp, so, in tcp_ctloutput()
2792 socket_set_traffic_mgt_flags_locked(so, in tcp_ctloutput()
2795 socket_clear_traffic_mgt_flags_locked(so, in tcp_ctloutput()
2937 if ((so->so_flags & SOF_NOTSENT_LOWAT) != 0) { in tcp_ctloutput()
2959 error = tcp_lookup_peer_pid_locked(so, &pid); in tcp_ctloutput()
2972 optval = (so->so_flags1 & in tcp_ctloutput()
3081 tcp_attach(struct socket *so, struct proc *p) in tcp_attach() argument
3086 int isipv6 = SOCK_CHECK_DOM(so, PF_INET6) != 0; in tcp_attach()
3088 if (so->so_snd.sb_hiwat == 0 || so->so_rcv.sb_hiwat == 0) { in tcp_attach()
3089 error = soreserve(so, tcp_sendspace, tcp_recvspace); in tcp_attach()
3095 error = in_pcballoc(so, &tcbinfo, p); in tcp_attach()
3100 inp = sotoinpcb(so); in tcp_attach()
3102 if (so->so_snd.sb_preconn_hiwat == 0) { in tcp_attach()
3103 soreserve_preconnect(so, 2048); in tcp_attach()
3106 if ((so->so_rcv.sb_flags & SB_USRSIZE) == 0) { in tcp_attach()
3107 so->so_rcv.sb_flags |= SB_AUTOSIZE; in tcp_attach()
3109 if ((so->so_snd.sb_flags & SB_USRSIZE) == 0) { in tcp_attach()
3110 so->so_snd.sb_flags |= SB_AUTOSIZE; in tcp_attach()
3121 short nofd = so->so_state & SS_NOFDREF; /* XXX */ in tcp_attach()
3123 so->so_state &= ~SS_NOFDREF; /* don't free the socket yet */ in tcp_attach()
3129 so->so_state |= nofd; in tcp_attach()
3151 struct socket *so = tp->t_inpcb->inp_socket; in tcp_disconnect() local
3153 if (so->so_rcv.sb_cc != 0 || tp->t_reassqlen != 0 || in tcp_disconnect()
3154 so->so_flags1 & SOF1_DEFUNCTINPROG) { in tcp_disconnect()
3160 } else if ((so->so_options & SO_LINGER) && so->so_linger == 0) { in tcp_disconnect()
3163 soisdisconnecting(so); in tcp_disconnect()
3164 sbflush(&so->so_rcv); in tcp_disconnect()
3168 if ((so->so_flags & SOF_MP_SUBFLOW) && in tcp_disconnect()