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