Changes in uspace/srv/net/tcp/sock.c [db81577:05bfce7] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tcp/sock.c
rdb81577 r05bfce7 91 91 static void tcp_sock_notify_data(socket_core_t *sock_core) 92 92 { 93 log_msg(L VL_DEBUG, "tcp_sock_notify_data(%d)", sock_core->socket_id);93 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_notify_data(%d)", sock_core->socket_id); 94 94 async_exch_t *exch = async_exchange_begin(sock_core->sess); 95 95 async_msg_5(exch, NET_SOCKET_RECEIVED, (sysarg_t)sock_core->socket_id, … … 100 100 static void tcp_sock_notify_aconn(socket_core_t *lsock_core) 101 101 { 102 log_msg(L VL_DEBUG, "tcp_sock_notify_aconn(%d)", lsock_core->socket_id);102 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_notify_aconn(%d)", lsock_core->socket_id); 103 103 async_exch_t *exch = async_exchange_begin(lsock_core->sess); 104 104 async_msg_5(exch, NET_SOCKET_ACCEPTED, (sysarg_t)lsock_core->socket_id, … … 111 111 tcp_sockdata_t *sock; 112 112 113 log_msg(L VL_DEBUG, "tcp_sock_create()");113 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_create()"); 114 114 *rsock = NULL; 115 115 … … 133 133 static void tcp_sock_uncreate(tcp_sockdata_t *sock) 134 134 { 135 log_msg(L VL_DEBUG, "tcp_sock_uncreate()");135 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_uncreate()"); 136 136 free(sock); 137 137 } … … 142 142 int rc; 143 143 144 log_msg(L VL_DEBUG, "tcp_sock_finish_setup()");144 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_finish_setup()"); 145 145 146 146 sock->recv_fibril = fibril_create(tcp_sock_recv_fibril, sock); … … 171 171 ipc_call_t answer; 172 172 173 log_msg(L VL_DEBUG, "tcp_sock_socket()");173 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_socket()"); 174 174 175 175 rc = tcp_sock_create(client, &sock); … … 203 203 { 204 204 int rc; 205 struct sockaddr *addr;206 size_t addr_ len;205 struct sockaddr_in *addr; 206 size_t addr_size; 207 207 socket_core_t *sock_core; 208 208 tcp_sockdata_t *socket; 209 210 log_msg(LVL_DEBUG, "tcp_sock_bind()"); 211 log_msg(LVL_DEBUG, " - async_data_write_accept"); 212 rc = async_data_write_accept((void **) &addr, false, 0, 0, 0, &addr_len); 209 210 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_bind()"); 211 log_msg(LOG_DEFAULT, LVL_DEBUG, " - async_data_write_accept"); 212 213 addr = NULL; 214 215 rc = async_data_write_accept((void **) &addr, false, 0, 0, 0, &addr_size); 213 216 if (rc != EOK) { 214 217 async_answer_0(callid, rc); 215 return; 216 } 217 218 log_msg(LVL_DEBUG, " - call socket_bind"); 218 goto out; 219 } 220 221 if (addr_size != sizeof(struct sockaddr_in)) { 222 async_answer_0(callid, EINVAL); 223 goto out; 224 } 225 226 log_msg(LOG_DEFAULT, LVL_DEBUG, " - call socket_bind"); 219 227 rc = socket_bind(&client->sockets, &gsock, SOCKET_GET_SOCKET_ID(call), 220 addr, addr_ len, TCP_FREE_PORTS_START, TCP_FREE_PORTS_END,228 addr, addr_size, TCP_FREE_PORTS_START, TCP_FREE_PORTS_END, 221 229 last_used_port); 222 230 if (rc != EOK) { 223 231 async_answer_0(callid, rc); 224 return;225 } 226 227 log_msg(L VL_DEBUG, " - call socket_cores_find");232 goto out; 233 } 234 235 log_msg(LOG_DEFAULT, LVL_DEBUG, " - call socket_cores_find"); 228 236 sock_core = socket_cores_find(&client->sockets, SOCKET_GET_SOCKET_ID(call)); 229 if (sock_core != NULL) { 230 socket = (tcp_sockdata_t *)sock_core->specific_data; 231 /* XXX Anything to do? */ 232 (void) socket; 233 } 234 235 log_msg(LVL_DEBUG, " - success"); 237 if (sock_core == NULL) { 238 async_answer_0(callid, ENOENT); 239 goto out; 240 } 241 242 socket = (tcp_sockdata_t *)sock_core->specific_data; 243 /* XXX Anything to do? */ 244 (void) socket; 245 246 log_msg(LOG_DEFAULT, LVL_DEBUG, " - success"); 236 247 async_answer_0(callid, EOK); 248 249 out: 250 if (addr != NULL) 251 free(addr); 237 252 } 238 253 … … 249 264 tcp_sock_lconn_t *lconn; 250 265 int i; 251 252 log_msg(LVL_DEBUG, "tcp_sock_listen()"); 266 int rc; 267 268 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_listen()"); 253 269 254 270 socket_id = SOCKET_GET_SOCKET_ID(call); … … 268 284 return; 269 285 } 270 271 socket = (tcp_sockdata_t *)sock_core->specific_data; 272 286 287 if (sock_core->port <= 0) { 288 rc = socket_bind_free_port(&gsock, sock_core, 289 TCP_FREE_PORTS_START, TCP_FREE_PORTS_END, 290 last_used_port); 291 if (rc != EOK) { 292 async_answer_0(callid, rc); 293 return; 294 } 295 296 last_used_port = sock_core->port; 297 } 298 299 socket = (tcp_sockdata_t *) sock_core->specific_data; 300 273 301 /* 274 302 * Prepare @c backlog listening connections. 275 303 */ 276 304 fibril_mutex_lock(&socket->lock); 277 305 278 306 socket->backlog = backlog; 279 307 socket->lconn = calloc(backlog, sizeof(tcp_conn_t *)); … … 283 311 return; 284 312 } 285 286 log_msg(L VL_DEBUG, " - open connections");287 313 314 log_msg(LOG_DEFAULT, LVL_DEBUG, " - open connections"); 315 288 316 lsocket.addr.ipv4 = TCP_IPV4_ANY; 289 317 lsocket.port = sock_core->port; 290 318 fsocket.addr.ipv4 = TCP_IPV4_ANY; 291 319 fsocket.port = TCP_PORT_ANY; 292 320 293 321 for (i = 0; i < backlog; i++) { 294 322 … … 337 365 tcp_sock_t fsocket; 338 366 339 log_msg(L VL_DEBUG, "tcp_sock_connect()");367 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_connect()"); 340 368 341 369 rc = async_data_write_accept((void **) &addr, false, 0, 0, 0, &addr_len); … … 362 390 return; 363 391 } 364 392 365 393 last_used_port = sock_core->port; 366 394 } … … 377 405 fibril_mutex_unlock(&socket->lock); 378 406 async_answer_0(callid, rc); 379 log_msg(L VL_DEBUG, "tcp_sock_connect: Failed to "407 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_connect: Failed to " 380 408 "determine local address."); 381 409 return; … … 383 411 384 412 socket->laddr.ipv4 = loc_addr.ipv4; 385 log_msg(L VL_DEBUG, "Local IP address is %x", socket->laddr.ipv4);413 log_msg(LOG_DEFAULT, LVL_DEBUG, "Local IP address is %x", socket->laddr.ipv4); 386 414 } 387 415 … … 431 459 int rc; 432 460 433 log_msg(L VL_DEBUG, "tcp_sock_accept()");461 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_accept()"); 434 462 435 463 socket_id = SOCKET_GET_SOCKET_ID(call); … … 441 469 return; 442 470 } 471 472 if (sock_core->port <= 0) { 473 rc = socket_bind_free_port(&gsock, sock_core, 474 TCP_FREE_PORTS_START, TCP_FREE_PORTS_END, 475 last_used_port); 476 if (rc != EOK) { 477 async_answer_0(callid, rc); 478 return; 479 } 480 481 last_used_port = sock_core->port; 482 } 443 483 444 484 socket = (tcp_sockdata_t *)sock_core->specific_data; 445 485 fibril_mutex_lock(&socket->lock); 446 486 447 log_msg(L VL_DEBUG, " - verify socket->conn");487 log_msg(LOG_DEFAULT, LVL_DEBUG, " - verify socket->conn"); 448 488 if (socket->conn != NULL) { 449 489 fibril_mutex_unlock(&socket->lock); … … 498 538 499 539 asocket->conn = conn; 500 log_msg(L VL_DEBUG, "tcp_sock_accept():create asocket\n");540 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_accept():create asocket\n"); 501 541 502 542 rc = tcp_sock_finish_setup(asocket, &asock_id); … … 510 550 fibril_add_ready(asocket->recv_fibril); 511 551 512 log_msg(L VL_DEBUG, "tcp_sock_accept(): find acore\n");552 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_accept(): find acore\n"); 513 553 514 554 SOCKET_SET_DATA_FRAGMENT_SIZE(answer, TCP_SOCK_FRAGMENT_SIZE); … … 521 561 522 562 /* Push one fragment notification to client's queue */ 523 log_msg(L VL_DEBUG, "tcp_sock_accept(): notify data\n");563 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_accept(): notify data\n"); 524 564 fibril_mutex_unlock(&socket->lock); 525 565 } … … 539 579 int rc; 540 580 541 log_msg(L VL_DEBUG, "tcp_sock_send()");581 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_send()"); 542 582 socket_id = SOCKET_GET_SOCKET_ID(call); 543 583 fragments = SOCKET_GET_DATA_FRAGMENTS(call); … … 611 651 static void tcp_sock_sendto(tcp_client_t *client, ipc_callid_t callid, ipc_call_t call) 612 652 { 613 log_msg(L VL_DEBUG, "tcp_sock_sendto()");653 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_sendto()"); 614 654 async_answer_0(callid, ENOTSUP); 615 655 } … … 629 669 int rc; 630 670 631 log_msg(L VL_DEBUG, "%p: tcp_sock_recv[from]()", client);671 log_msg(LOG_DEFAULT, LVL_DEBUG, "%p: tcp_sock_recv[from]()", client); 632 672 633 673 socket_id = SOCKET_GET_SOCKET_ID(call); … … 651 691 (void)flags; 652 692 653 log_msg(L VL_DEBUG, "tcp_sock_recvfrom(): lock recv_buffer_lock");693 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_recvfrom(): lock recv_buffer_lock"); 654 694 fibril_mutex_lock(&socket->recv_buffer_lock); 655 695 while (socket->recv_buffer_used == 0 && socket->recv_error == TCP_EOK) { 656 log_msg(L VL_DEBUG, "wait for recv_buffer_cv + recv_buffer_used != 0");696 log_msg(LOG_DEFAULT, LVL_DEBUG, "wait for recv_buffer_cv + recv_buffer_used != 0"); 657 697 fibril_condvar_wait(&socket->recv_buffer_cv, 658 698 &socket->recv_buffer_lock); 659 699 } 660 700 661 log_msg(L VL_DEBUG, "Got data in sock recv_buffer");701 log_msg(LOG_DEFAULT, LVL_DEBUG, "Got data in sock recv_buffer"); 662 702 663 703 data_len = socket->recv_buffer_used; … … 679 719 } 680 720 681 log_msg(L VL_DEBUG, "**** recv result -> %d", rc);721 log_msg(LOG_DEFAULT, LVL_DEBUG, "**** recv result -> %d", rc); 682 722 if (rc != EOK) { 683 723 fibril_mutex_unlock(&socket->recv_buffer_lock); … … 694 734 addr.sin_port = host2uint16_t_be(rsock->port); 695 735 696 log_msg(L VL_DEBUG, "addr read receive");736 log_msg(LOG_DEFAULT, LVL_DEBUG, "addr read receive"); 697 737 if (!async_data_read_receive(&rcallid, &addr_length)) { 698 738 fibril_mutex_unlock(&socket->recv_buffer_lock); … … 705 745 addr_length = sizeof(addr); 706 746 707 log_msg(L VL_DEBUG, "addr read finalize");747 log_msg(LOG_DEFAULT, LVL_DEBUG, "addr read finalize"); 708 748 rc = async_data_read_finalize(rcallid, &addr, addr_length); 709 749 if (rc != EOK) { … … 715 755 } 716 756 717 log_msg(L VL_DEBUG, "data read receive");757 log_msg(LOG_DEFAULT, LVL_DEBUG, "data read receive"); 718 758 if (!async_data_read_receive(&rcallid, &length)) { 719 759 fibril_mutex_unlock(&socket->recv_buffer_lock); … … 726 766 length = data_len; 727 767 728 log_msg(L VL_DEBUG, "data read finalize");768 log_msg(LOG_DEFAULT, LVL_DEBUG, "data read finalize"); 729 769 rc = async_data_read_finalize(rcallid, socket->recv_buffer, length); 730 770 731 771 socket->recv_buffer_used -= length; 732 log_msg(L VL_DEBUG, "tcp_sock_recvfrom: %zu left in buffer",772 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_recvfrom: %zu left in buffer", 733 773 socket->recv_buffer_used); 734 774 if (socket->recv_buffer_used > 0) { … … 758 798 int rc; 759 799 760 log_msg(L VL_DEBUG, "tcp_sock_close()");800 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_close()"); 761 801 socket_id = SOCKET_GET_SOCKET_ID(call); 762 802 … … 798 838 static void tcp_sock_getsockopt(tcp_client_t *client, ipc_callid_t callid, ipc_call_t call) 799 839 { 800 log_msg(L VL_DEBUG, "tcp_sock_getsockopt()");840 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_getsockopt()"); 801 841 async_answer_0(callid, ENOTSUP); 802 842 } … … 804 844 static void tcp_sock_setsockopt(tcp_client_t *client, ipc_callid_t callid, ipc_call_t call) 805 845 { 806 log_msg(L VL_DEBUG, "tcp_sock_setsockopt()");846 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_setsockopt()"); 807 847 async_answer_0(callid, ENOTSUP); 808 848 } … … 815 855 tcp_sockdata_t *socket = lconn->socket; 816 856 817 log_msg(L VL_DEBUG, "tcp_sock_cstate_cb()");857 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_cstate_cb()"); 818 858 fibril_mutex_lock(&socket->lock); 819 859 assert(conn == lconn->conn); … … 828 868 list_append(&lconn->ready_list, &socket->ready); 829 869 830 log_msg(L VL_DEBUG, "tcp_sock_cstate_cb(): notify accept");870 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_cstate_cb(): notify accept"); 831 871 832 872 /* Push one accept notification to client's queue */ … … 842 882 tcp_error_t trc; 843 883 844 log_msg(L VL_DEBUG, "tcp_sock_recv_fibril()");884 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_recv_fibril()"); 845 885 846 886 fibril_mutex_lock(&sock->recv_buffer_lock); 847 887 848 888 while (true) { 849 log_msg(L VL_DEBUG, "call tcp_uc_receive()");889 log_msg(LOG_DEFAULT, LVL_DEBUG, "call tcp_uc_receive()"); 850 890 while (sock->recv_buffer_used != 0 && sock->sock_core != NULL) 851 891 fibril_condvar_wait(&sock->recv_buffer_cv, … … 863 903 } 864 904 865 log_msg(L VL_DEBUG, "got data - broadcast recv_buffer_cv");905 log_msg(LOG_DEFAULT, LVL_DEBUG, "got data - broadcast recv_buffer_cv"); 866 906 867 907 sock->recv_buffer_used = data_len; … … 895 935 break; 896 936 897 log_msg(L VL_DEBUG, "tcp_sock_connection: METHOD=%d\n",937 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_connection: METHOD=%d\n", 898 938 (int)IPC_GET_IMETHOD(call)); 899 939 … … 940 980 941 981 /* Clean up */ 942 log_msg(L VL_DEBUG, "tcp_sock_connection: Clean up");982 log_msg(LOG_DEFAULT, LVL_DEBUG, "tcp_sock_connection: Clean up"); 943 983 async_hangup(client.sess); 944 984 socket_cores_release(NULL, &client.sockets, &gsock, tcp_free_sock_data);
Note:
See TracChangeset
for help on using the changeset viewer.