Lines Matching refs:sock_id

311 static void tcp_rcv_drain(int sock_id, tcp_t *);
324 uint32_t, int, tcph_t *, int sock_id);
467 tcp_drain_input(tcp_t *tcp, int sock_id, int timeout) in tcp_drain_input() argument
475 dprintf("tcp_drain_input(%d): %s\n", sock_id, in tcp_drain_input()
483 old_timeout = sockets[sock_id].in_timeout; in tcp_drain_input()
484 sockets[sock_id].in_timeout = timeout; in tcp_drain_input()
490 old_in_gram = sockets[sock_id].inq; in tcp_drain_input()
491 sockets[sock_id].inq = NULL; in tcp_drain_input()
495 if (sockets[sock_id].input[i] != NULL) { in tcp_drain_input()
496 if (sockets[sock_id].input[i](sock_id) < 0) { in tcp_drain_input()
497 sockets[sock_id].in_timeout = old_timeout; in tcp_drain_input()
498 if (sockets[sock_id].inq != NULL) in tcp_drain_input()
499 nuke_grams(&sockets[sock_id].inq); in tcp_drain_input()
500 sockets[sock_id].inq = old_in_gram; in tcp_drain_input()
508 while ((in_gram = sockets[sock_id].inq) != NULL) { in tcp_drain_input()
515 del_gram(&sockets[sock_id].inq, in_gram, B_TRUE); in tcp_drain_input()
519 del_gram(&sockets[sock_id].inq, in_gram, B_FALSE); in tcp_drain_input()
521 tcp_rput_data(tcp, mp, sock_id); in tcp_drain_input()
522 sockets[sock_id].in_timeout = old_timeout; in tcp_drain_input()
530 if (sockets[sock_id].pcb == NULL) in tcp_drain_input()
534 if (tcp == NULL || sockets[sock_id].pcb == NULL) { in tcp_drain_input()
535 if (sockets[sock_id].so_error != 0) in tcp_drain_input()
543 sockets[sock_id].in_timeout = old_timeout; in tcp_drain_input()
544 sockets[sock_id].inq = old_in_gram; in tcp_drain_input()
549 tcp_drain_needed(sock_id, tcp); in tcp_drain_input()
560 tcp_input(int sock_id) in tcp_input() argument
568 if ((tcp = sockets[sock_id].pcb) == NULL) in tcp_input()
571 while ((in_gram = sockets[sock_id].inq) != NULL) { in tcp_input()
578 del_gram(&sockets[sock_id].inq, in_gram, B_TRUE); in tcp_input()
582 del_gram(&sockets[sock_id].inq, in_gram, B_FALSE); in tcp_input()
584 tcp_rput_data(tcp, mp, sock_id); in tcp_input()
586 if (sockets[sock_id].pcb == NULL) in tcp_input()
592 tcp_rcv_drain(sock_id, tcp); in tcp_input()
596 sockets[sock_id].so_state |= SS_CANTRCVMORE; in tcp_input()
609 tcp_send(int sock_id, tcp_t *tcp, const void *msg, int len) in tcp_send() argument
676 if (tcp_drain_input(tcp, sock_id, 5) < 0) in tcp_send()
679 tcp_wput_data(tcp, head, sock_id); in tcp_send()
795 tcp_eager_cleanup(tcp_t *listener, boolean_t q0_only, int sock_id) in tcp_eager_cleanup() argument
805 sock_id); in tcp_eager_cleanup()
813 eager, NULL, eager->tcp_snxt, 0, TH_RST, 0, sock_id); in tcp_eager_cleanup()
822 tcp_shutdown(int sock_id) in tcp_shutdown() argument
826 DEBUG_1("tcp_shutdown: sock_id %x\n", sock_id); in tcp_shutdown()
828 if ((tcp = sockets[sock_id].pcb) == NULL) { in tcp_shutdown()
837 if (tcp_drain_input(tcp, sock_id, 5) < 0) { in tcp_shutdown()
842 if (sockets[sock_id].pcb != NULL) in tcp_shutdown()
843 tcp_clean_death(sock_id, tcp, 0); in tcp_shutdown()
861 if (tcp_xmit_end(tcp, sock_id) == 0 && in tcp_shutdown()
862 tcp_state_wait(sock_id, tcp, TCPS_FIN_WAIT_2) < 0) { in tcp_shutdown()
864 if (sockets[sock_id].pcb == NULL) in tcp_shutdown()
879 tcp_close(int sock_id) in tcp_close() argument
885 if ((tcp = sockets[sock_id].pcb) == NULL) { in tcp_close()
896 if (tcp_drain_input(tcp, sock_id, 5) < 0) { in tcp_close()
901 if (sockets[sock_id].pcb != NULL) in tcp_close()
902 tcp_clean_death(sock_id, tcp, 0); in tcp_close()
908 tcp_eager_cleanup(tcp, 0, sock_id); in tcp_close()
957 (void) tcp_xmit_end(tcp, sock_id); in tcp_close()
958 if (sockets[sock_id].pcb == NULL) in tcp_close()
977 if (tcp_drain_input(tcp, sock_id, 5) < 0) { in tcp_close()
978 if (sockets[sock_id].pcb != NULL) { in tcp_close()
979 tcp_clean_death(sock_id, in tcp_close()
987 if (tcp_state_wait(sock_id, tcp, TCPS_TIME_WAIT) < 0) { in tcp_close()
989 if (sockets[sock_id].pcb == NULL) in tcp_close()
1007 sock_id); in tcp_close()
1012 sockets[sock_id].pcb = NULL; in tcp_close()
1018 tcp_listen(int sock_id, int backlog) in tcp_listen() argument
1022 if ((tcp = (tcp_t *)(sockets[sock_id].pcb)) == NULL) { in tcp_listen()
1049 tcp_accept(int sock_id, struct sockaddr *addr, socklen_t *addr_len) in tcp_accept() argument
1058 if ((listener = (tcp_t *)(sockets[sock_id].pcb)) == NULL || in tcp_accept()
1066 if (sockets[sock_id].in_timeout > tcp_accept_timeout) in tcp_accept()
1067 timeout = prom_gettime() + sockets[sock_id].in_timeout; in tcp_accept()
1075 if (tcp_drain_input(listener, sock_id, 5) < 0) { in tcp_accept()
1178 tcp_bind(int sock_id) in tcp_bind() argument
1185 if ((tcp = (tcp_t *)sockets[sock_id].pcb) == NULL) { in tcp_bind()
1196 requested_port = ntohs(sockets[sock_id].bind.sin_port); in tcp_bind()
1199 tcp->tcp_bound_source = sockets[sock_id].bind.sin_addr.s_addr; in tcp_bind()
1212 reuseaddr = sockets[sock_id].so_opt & SO_REUSEADDR; in tcp_bind()
1222 sockets[sock_id].bind.sin_port = tcp->tcp_lport; in tcp_bind()
1259 tcp_connect(int sock_id) in tcp_connect() argument
1268 if ((tcp = (tcp_t *)(sockets[sock_id].pcb)) == NULL) { in tcp_connect()
1275 dstaddr = sockets[sock_id].remote.sin_addr.s_addr; in tcp_connect()
1276 dstport = sockets[sock_id].remote.sin_port; in tcp_connect()
1307 ipv4_getipaddr(&(sockets[sock_id].bind.sin_addr)); in tcp_connect()
1309 if (ntohl(sockets[sock_id].bind.sin_addr.s_addr) == in tcp_connect()
1314 tcp->tcp_bound_source = sockets[sock_id].bind.sin_addr.s_addr; in tcp_connect()
1408 ret = ipv4_tcp_output(sock_id, syn_mp); in tcp_connect()
1420 return (tcp_state_wait(sock_id, tcp, TCPS_ESTABLISHED)); in tcp_connect()
1602 tcp_conn_request(tcp_t *tcp, mblk_t *mp, uint_t sock_id, uint_t ip_hdr_len) in tcp_conn_request() argument
1699 tcp_state_wait(int sock_id, tcp_t *tcp, int state) in tcp_state_wait() argument
1713 timeout = sockets[sock_id].in_timeout; in tcp_state_wait()
1715 sockets[sock_id].in_timeout = tcp->tcp_rto; in tcp_state_wait()
1719 if (sockets[sock_id].inq == NULL) { in tcp_state_wait()
1722 if (sockets[sock_id].input[i] != NULL) { in tcp_state_wait()
1723 if (sockets[sock_id].input[i](sock_id) < 0) { in tcp_state_wait()
1725 sockets[sock_id].in_timeout = in tcp_state_wait()
1734 while ((in_gram = sockets[sock_id].inq) != NULL) { in tcp_state_wait()
1745 del_gram(&sockets[sock_id].inq, in_gram, B_TRUE); in tcp_state_wait()
1749 del_gram(&sockets[sock_id].inq, in_gram, B_FALSE); in tcp_state_wait()
1751 tcp_rput_data(tcp, mp, sock_id); in tcp_state_wait()
1759 if (sockets[sock_id].pcb == NULL) { in tcp_state_wait()
1765 if (tcp == NULL || sockets[sock_id].pcb == NULL) { in tcp_state_wait()
1768 "error %d\n", state, sockets[sock_id].so_error); in tcp_state_wait()
1770 if (sockets[sock_id].so_error != 0) in tcp_state_wait()
1785 tcp_timer(tcp, sock_id); in tcp_state_wait()
1790 sockets[sock_id].in_timeout = timeout; in tcp_state_wait()
1792 tcp_drain_needed(sock_id, tcp); in tcp_state_wait()
1828 tcp_lookup_ipv4(struct ip *iph, tcpha_t *tcph, int min_state, int *sock_id) in tcp_lookup_ipv4() argument
1841 *sock_id = i; in tcp_lookup_ipv4()
1854 *sock_id = -1; in tcp_lookup_ipv4()
1863 tcp_lookup_listener_ipv4(in_addr_t addr, in_port_t port, int *sock_id) in tcp_lookup_listener_ipv4() argument
1874 *sock_id = i; in tcp_lookup_listener_ipv4()
1919 tcp_clean_death(int sock_id, tcp_t *tcp, int err) in tcp_clean_death() argument
1925 if (sock_id >= 0) { in tcp_clean_death()
1926 sockets[sock_id].pcb = NULL; in tcp_clean_death()
1928 sockets[sock_id].so_error = err; in tcp_clean_death()
2490 tcp_sack_rxmit(tcp_t *tcp, int sock_id) in tcp_sack_rxmit() argument
2584 (void) ipv4_tcp_output(sock_id, xmit_mp); in tcp_sack_rxmit()
2611 tcp_rput_data(tcp_t *tcp, mblk_t *mp, int sock_id) in tcp_rput_data() argument
2636 sock_id, mp, mp->b_datap); in tcp_rput_data()
2698 &sock_id)) != NULL || in tcp_rput_data()
2700 tcph->tha_fport, &sock_id)) != NULL) { in tcp_rput_data()
2733 tcp_xmit_listeners_reset(sock_id, mp, ip_hdr_len); in tcp_rput_data()
2742 seg_len, (tcph_t *)tcph, sock_id); in tcp_rput_data()
2762 "pointer\n", sock_id); in tcp_rput_data()
2776 sock_id, mp, seg_ack, 0, TH_RST, in tcp_rput_data()
2788 tcp = tcp_conn_request(tcp, mp, sock_id, ip_hdr_len); in tcp_rput_data()
2819 ip_hdr_len, sock_id); in tcp_rput_data()
2827 tcp_clean_death(sock_id, tcp, ECONNREFUSED); in tcp_rput_data()
2927 (void) ipv4_tcp_output(sock_id, mp1); in tcp_rput_data()
2934 if (tcp_state_wait(sock_id, tcp, TCPS_ALL_ACKED) < 0) { in tcp_rput_data()
3122 tcp_rcv_drain(sock_id, tcp); in tcp_rput_data()
3260 (void) tcp_clean_death(sock_id, tcp, ECONNREFUSED); in tcp_rput_data()
3266 (void) tcp_clean_death(sock_id, tcp, ECONNRESET); in tcp_rput_data()
3270 (void) tcp_clean_death(sock_id, tcp, 0); in tcp_rput_data()
3274 (void) tcp_clean_death(sock_id, tcp, ENXIO); in tcp_rput_data()
3299 seg_seq + 1, TH_RST|TH_ACK, 0, sock_id); in tcp_rput_data()
3301 (void) tcp_clean_death(sock_id, tcp, ECONNRESET); in tcp_rput_data()
3328 tcp, NULL, seg_ack, 0, TH_RST, 0, sock_id); in tcp_rput_data()
3691 (void) ipv4_tcp_output(sock_id, mp); in tcp_rput_data()
3937 tcp->tcp_rnxt, TH_RST|TH_ACK, 0, sock_id); in tcp_rput_data()
4016 (void) tcp_clean_death(sock_id, tcp, 0); in tcp_rput_data()
4090 if (++tcp->tcp_rack_cnt == 2 || sockets[sock_id].inq == NULL) { in tcp_rput_data()
4148 (void) ipv4_tcp_output(sock_id, mp1); in tcp_rput_data()
4153 if (tcp_sack_rxmit(tcp, sock_id) != 0) { in tcp_rput_data()
4164 tcp_wput_data(tcp, NULL, sock_id); in tcp_rput_data()
4166 tcp_ss_rexmit(tcp, sock_id); in tcp_rput_data()
4173 if (sockets[sock_id].pcb == NULL) in tcp_rput_data()
4195 (void) ipv4_tcp_output(sock_id, mp1); in tcp_rput_data()
4210 tcp_ss_rexmit(tcp_t *tcp, int sock_id) in tcp_ss_rexmit() argument
4253 (void) ipv4_tcp_output(sock_id, xmit_mp); in tcp_ss_rexmit()
4284 tcp_wput_data(tcp, NULL, sock_id); in tcp_ss_rexmit()
4294 tcp_timer(tcp_t *tcp, int sock_id) in tcp_timer() argument
4348 DEBUG_1("tcp_timer (%d): zero win", sock_id); in tcp_timer()
4435 tcp_wput_data(tcp, NULL, sock_id); in tcp_timer()
4453 (void) tcp_clean_death(sock_id, tcp, 0); in tcp_timer()
4456 DEBUG_3("tcp_timer (%d): strange state (%d) %s", sock_id, in tcp_timer()
4480 tcp->tcp_rnxt, TH_RST | TH_ACK, 0, sock_id); in tcp_timer()
4482 (void) tcp_clean_death(sock_id, tcp, in tcp_timer()
4572 (void) ipv4_tcp_output(sock_id, mp); in tcp_timer()
4607 tcp_wput_data(tcp_t *tcp, mblk_t *mp, int sock_id) in tcp_wput_data() argument
4626 printf("tcp_wput_data(%d) ##############################\n", sock_id); in tcp_wput_data()
4904 (void) ipv4_tcp_output(sock_id, mp); in tcp_wput_data()
5131 (void) ipv4_tcp_output(sock_id, mp); in tcp_wput_data()
5183 (void) tcp_state_wait(sock_id, tcp, TCPS_ALL_ACKED); in tcp_wput_data()
5202 int sock_id) in tcp_time_wait_processing() argument
5216 if ((sockets[sock_id].pcb == NULL) || (sockets[sock_id].pcb != tcp)) in tcp_time_wait_processing()
5217 sock_id = -1; in tcp_time_wait_processing()
5302 tcp_clean_death(sock_id, tcp, 0); in tcp_time_wait_processing()
5353 (void) tcp_clean_death(sock_id, tcp, 0); in tcp_time_wait_processing()
5514 uint32_t ack, int ctl, uint_t ip_hdr_len, int sock_id) in tcp_xmit_ctl() argument
5542 "ctl 0x%x\n", sock_id, str, seq, ack, ctl); in tcp_xmit_ctl()
5546 dprintf("tcp_xmit_ctl(%d): Cannot allocate memory\n", sock_id); in tcp_xmit_ctl()
5593 (void) ipv4_tcp_output(sock_id, mp); in tcp_xmit_ctl()
6071 tcp_xmit_listeners_reset(int sock_id, mblk_t *mp, uint_t ip_hdr_len) in tcp_xmit_listeners_reset() argument
6092 sock_id, mp, seg_ack, 0, TH_RST, ip_hdr_len); in tcp_xmit_listeners_reset()
6096 tcp_xmit_early_reset("no tcp, reset/ack", sock_id, in tcp_xmit_listeners_reset()
6120 tcp_xmit_early_reset(char *str, int sock_id, mblk_t *mp, uint32_t seq, in tcp_xmit_early_reset() argument
6205 (void) ipv4_tcp_output(sock_id, mp); in tcp_xmit_early_reset()
6738 tcp_rcv_drain(int sock_id, tcp_t *tcp) in tcp_rcv_drain() argument
6746 if (sockets[sock_id].so_rcvbuf <= 0) in tcp_rcv_drain()
6775 add_grams(&sockets[sock_id].inq, in_gram); in tcp_rcv_drain()
6778 sockets[sock_id].so_rcvbuf -= in_mp->b_wptr - in_mp->b_rptr; in tcp_rcv_drain()
6785 if (sockets[sock_id].so_rcvbuf > 0 && in tcp_rcv_drain()
6797 tcp_rcv_drain_sock(int sock_id) in tcp_rcv_drain_sock() argument
6800 if ((tcp = sockets[sock_id].pcb) == NULL) in tcp_rcv_drain_sock()
6802 tcp_rcv_drain(sock_id, tcp); in tcp_rcv_drain_sock()
6811 tcp_drain_needed(int sock_id, tcp_t *tcp) in tcp_drain_needed() argument
6816 sockets[sock_id].inq, tcp->tcp_rcv_list); in tcp_drain_needed()
6818 if ((sockets[sock_id].inq != NULL) || in tcp_drain_needed()
6830 add_grams(&sockets[sock_id].inq, in_gram); in tcp_drain_needed()
6966 tcp_xmit_end(tcp_t *tcp, int sock_id) in tcp_xmit_end() argument
6992 (void) ipv4_tcp_output(sock_id, mp); in tcp_xmit_end()