Changes in uspace/srv/net/udp/service.c [5a6cc679:b752a31] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/udp/service.c
r5a6cc679 rb752a31 331 331 * Handle client request to create callback session. 332 332 * 333 * @param client UDP client 334 * @param iid Async request ID 335 * @param icall Async request data 336 */ 337 static void udp_callback_create_srv(udp_client_t *client, ipc_callid_t iid, 333 * @param client UDP client 334 * @param icall_handle Async request call handle 335 * @param icall Async request data 336 */ 337 static void 338 udp_callback_create_srv(udp_client_t *client, cap_call_handle_t icall_handle, 338 339 ipc_call_t *icall) 339 340 { … … 342 343 async_sess_t *sess = async_callback_receive(EXCHANGE_SERIALIZE); 343 344 if (sess == NULL) { 344 async_answer_0(i id, ENOMEM);345 async_answer_0(icall_handle, ENOMEM); 345 346 return; 346 347 } 347 348 348 349 client->sess = sess; 349 async_answer_0(i id, EOK);350 async_answer_0(icall_handle, EOK); 350 351 } 351 352 … … 354 355 * Handle client request to create association. 355 356 * 356 * @param client UDP client 357 * @param iid Async request ID 358 * @param icall Async request data 359 */ 360 static void udp_assoc_create_srv(udp_client_t *client, ipc_callid_t iid, 357 * @param client UDP client 358 * @param icall_handle Async request call handle 359 * @param icall Async request data 360 */ 361 static 362 void udp_assoc_create_srv(udp_client_t *client, cap_call_handle_t icall_handle, 361 363 ipc_call_t *icall) 362 364 { 363 ipc_callid_t callid;365 cap_call_handle_t chandle; 364 366 size_t size; 365 367 inet_ep2_t epp; … … 369 371 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_assoc_create_srv()"); 370 372 371 if (!async_data_write_receive(&c allid, &size)) {372 async_answer_0(c allid, EREFUSED);373 async_answer_0(i id, EREFUSED);373 if (!async_data_write_receive(&chandle, &size)) { 374 async_answer_0(chandle, EREFUSED); 375 async_answer_0(icall_handle, EREFUSED); 374 376 return; 375 377 } 376 378 377 379 if (size != sizeof(inet_ep2_t)) { 378 async_answer_0(c allid, EINVAL);379 async_answer_0(i id, EINVAL);380 return; 381 } 382 383 rc = async_data_write_finalize(c allid, &epp, size);384 if (rc != EOK) { 385 async_answer_0(c allid, rc);386 async_answer_0(i id, rc);380 async_answer_0(chandle, EINVAL); 381 async_answer_0(icall_handle, EINVAL); 382 return; 383 } 384 385 rc = async_data_write_finalize(chandle, &epp, size); 386 if (rc != EOK) { 387 async_answer_0(chandle, rc); 388 async_answer_0(icall_handle, rc); 387 389 return; 388 390 } … … 390 392 rc = udp_assoc_create_impl(client, &epp, &assoc_id); 391 393 if (rc != EOK) { 392 async_answer_0(i id, rc);393 return; 394 } 395 396 async_answer_1(i id, EOK, assoc_id);394 async_answer_0(icall_handle, rc); 395 return; 396 } 397 398 async_answer_1(icall_handle, EOK, assoc_id); 397 399 } 398 400 … … 401 403 * Handle client request to destroy association. 402 404 * 403 * @param client UDP client 404 * @param iid Async request ID 405 * @param icall Async request data 406 */ 407 static void udp_assoc_destroy_srv(udp_client_t *client, ipc_callid_t iid, 405 * @param client UDP client 406 * @param icall_handle Async request call handle 407 * @param icall Async request data 408 */ 409 static void 410 udp_assoc_destroy_srv(udp_client_t *client, cap_call_handle_t icall_handle, 408 411 ipc_call_t *icall) 409 412 { … … 415 418 assoc_id = IPC_GET_ARG1(*icall); 416 419 rc = udp_assoc_destroy_impl(client, assoc_id); 417 async_answer_0(i id, rc);420 async_answer_0(icall_handle, rc); 418 421 } 419 422 … … 422 425 * Handle client request to set no local address flag. 423 426 * 424 * @param client UDP client 425 * @param iid Async request ID 426 * @param icall Async request data 427 */ 428 static void udp_assoc_set_nolocal_srv(udp_client_t *client, ipc_callid_t iid, 427 * @param client UDP client 428 * @param icall_handle Async request call handle 429 * @param icall Async request data 430 */ 431 static void 432 udp_assoc_set_nolocal_srv(udp_client_t *client, cap_call_handle_t icall_handle, 429 433 ipc_call_t *icall) 430 434 { … … 436 440 assoc_id = IPC_GET_ARG1(*icall); 437 441 rc = udp_assoc_set_nolocal_impl(client, assoc_id); 438 async_answer_0(i id, rc);442 async_answer_0(icall_handle, rc); 439 443 } 440 444 … … 443 447 * Handle client request to send message. 444 448 * 445 * @param client UDP client 446 * @param iid Async request ID 447 * @param icall Async request data 448 */ 449 static void udp_assoc_send_msg_srv(udp_client_t *client, ipc_callid_t iid, 449 * @param client UDP client 450 * @param icall_handle Async request call handle 451 * @param icall Async request data 452 */ 453 static void 454 udp_assoc_send_msg_srv(udp_client_t *client, cap_call_handle_t icall_handle, 450 455 ipc_call_t *icall) 451 456 { 452 ipc_callid_t callid;457 cap_call_handle_t chandle; 453 458 size_t size; 454 459 inet_ep_t dest; … … 461 466 /* Receive dest */ 462 467 463 if (!async_data_write_receive(&c allid, &size)) {464 async_answer_0(c allid, EREFUSED);465 async_answer_0(i id, EREFUSED);468 if (!async_data_write_receive(&chandle, &size)) { 469 async_answer_0(chandle, EREFUSED); 470 async_answer_0(icall_handle, EREFUSED); 466 471 return; 467 472 } 468 473 469 474 if (size != sizeof(inet_ep_t)) { 470 async_answer_0(c allid, EINVAL);471 async_answer_0(i id, EINVAL);472 return; 473 } 474 475 rc = async_data_write_finalize(c allid, &dest, size);476 if (rc != EOK) { 477 async_answer_0(c allid, rc);478 async_answer_0(i id, rc);475 async_answer_0(chandle, EINVAL); 476 async_answer_0(icall_handle, EINVAL); 477 return; 478 } 479 480 rc = async_data_write_finalize(chandle, &dest, size); 481 if (rc != EOK) { 482 async_answer_0(chandle, rc); 483 async_answer_0(icall_handle, rc); 479 484 return; 480 485 } … … 482 487 /* Receive message data */ 483 488 484 if (!async_data_write_receive(&c allid, &size)) {485 async_answer_0(c allid, EREFUSED);486 async_answer_0(i id, EREFUSED);489 if (!async_data_write_receive(&chandle, &size)) { 490 async_answer_0(chandle, EREFUSED); 491 async_answer_0(icall_handle, EREFUSED); 487 492 return; 488 493 } 489 494 490 495 if (size > MAX_MSG_SIZE) { 491 async_answer_0(c allid, EINVAL);492 async_answer_0(i id, EINVAL);496 async_answer_0(chandle, EINVAL); 497 async_answer_0(icall_handle, EINVAL); 493 498 return; 494 499 } … … 496 501 data = malloc(size); 497 502 if (data == NULL) { 498 async_answer_0(c allid, ENOMEM);499 async_answer_0(i id, ENOMEM);500 } 501 502 rc = async_data_write_finalize(c allid, data, size);503 if (rc != EOK) { 504 async_answer_0(c allid, rc);505 async_answer_0(i id, rc);503 async_answer_0(chandle, ENOMEM); 504 async_answer_0(icall_handle, ENOMEM); 505 } 506 507 rc = async_data_write_finalize(chandle, data, size); 508 if (rc != EOK) { 509 async_answer_0(chandle, rc); 510 async_answer_0(icall_handle, rc); 506 511 free(data); 507 512 return; … … 512 517 rc = udp_assoc_send_msg_impl(client, assoc_id, &dest, data, size); 513 518 if (rc != EOK) { 514 async_answer_0(i id, rc);519 async_answer_0(icall_handle, rc); 515 520 free(data); 516 521 return; 517 522 } 518 523 519 async_answer_0(i id, EOK);524 async_answer_0(icall_handle, EOK); 520 525 free(data); 521 526 } … … 541 546 * Handle client request to get information on received message. 542 547 * 543 * @param client UDP client 544 * @param iid Async request ID 545 * @param icall Async request data 546 */ 547 static void udp_rmsg_info_srv(udp_client_t *client, ipc_callid_t iid, 548 * @param client UDP client 549 * @param icall_handle Async request call handle 550 * @param icall Async request data 551 */ 552 static void 553 udp_rmsg_info_srv(udp_client_t *client, cap_call_handle_t icall_handle, 548 554 ipc_call_t *icall) 549 555 { 550 ipc_callid_t callid;556 cap_call_handle_t chandle; 551 557 size_t size; 552 558 udp_crcv_queue_entry_t *enext; … … 557 563 enext = udp_rmsg_get_next(client); 558 564 559 if (!async_data_read_receive(&c allid, &size)) {560 async_answer_0(c allid, EREFUSED);561 async_answer_0(i id, EREFUSED);565 if (!async_data_read_receive(&chandle, &size)) { 566 async_answer_0(chandle, EREFUSED); 567 async_answer_0(icall_handle, EREFUSED); 562 568 return; 563 569 } 564 570 565 571 if (enext == NULL) { 566 async_answer_0(c allid, ENOENT);567 async_answer_0(i id, ENOENT);568 return; 569 } 570 571 rc = async_data_read_finalize(c allid, &enext->epp.remote,572 async_answer_0(chandle, ENOENT); 573 async_answer_0(icall_handle, ENOENT); 574 return; 575 } 576 577 rc = async_data_read_finalize(chandle, &enext->epp.remote, 572 578 max(size, (size_t)sizeof(inet_ep_t))); 573 579 if (rc != EOK) { 574 async_answer_0(i id, rc);580 async_answer_0(icall_handle, rc); 575 581 return; 576 582 } … … 581 587 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_rmsg_info_srv(): assoc_id=%zu, " 582 588 "size=%zu", assoc_id, size); 583 async_answer_2(i id, EOK, assoc_id, size);589 async_answer_2(icall_handle, EOK, assoc_id, size); 584 590 } 585 591 … … 588 594 * Handle client request to read data from first received message. 589 595 * 590 * @param client UDP client 591 * @param iid Async request ID 592 * @param icall Async request data 593 */ 594 static void udp_rmsg_read_srv(udp_client_t *client, ipc_callid_t iid, 596 * @param client UDP client 597 * @param icall_handle Async request call handle 598 * @param icall Async request data 599 */ 600 static void 601 udp_rmsg_read_srv(udp_client_t *client, cap_call_handle_t icall_handle, 595 602 ipc_call_t *icall) 596 603 { 597 ipc_callid_t callid;604 cap_call_handle_t chandle; 598 605 size_t msg_size; 599 606 udp_crcv_queue_entry_t *enext; … … 608 615 enext = udp_rmsg_get_next(client); 609 616 610 if (!async_data_read_receive(&c allid, &size)) {611 async_answer_0(c allid, EREFUSED);612 async_answer_0(i id, EREFUSED);617 if (!async_data_read_receive(&chandle, &size)) { 618 async_answer_0(chandle, EREFUSED); 619 async_answer_0(icall_handle, EREFUSED); 613 620 return; 614 621 } 615 622 616 623 if (enext == NULL) { 617 async_answer_0(c allid, ENOENT);618 async_answer_0(i id, ENOENT);624 async_answer_0(chandle, ENOENT); 625 async_answer_0(icall_handle, ENOENT); 619 626 return; 620 627 } … … 624 631 625 632 if (off > msg_size) { 626 async_answer_0(c allid, EINVAL);627 async_answer_0(i id, EINVAL);628 return; 629 } 630 631 rc = async_data_read_finalize(c allid, data, min(msg_size - off, size));632 if (rc != EOK) { 633 async_answer_0(i id, rc);634 return; 635 } 636 637 async_answer_0(i id, EOK);633 async_answer_0(chandle, EINVAL); 634 async_answer_0(icall_handle, EINVAL); 635 return; 636 } 637 638 rc = async_data_read_finalize(chandle, data, min(msg_size - off, size)); 639 if (rc != EOK) { 640 async_answer_0(icall_handle, rc); 641 return; 642 } 643 644 async_answer_0(icall_handle, EOK); 638 645 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_rmsg_read_srv(): OK"); 639 646 } … … 644 651 * to the next one. 645 652 * 646 * @param client UDP client 647 * @param iid Async request ID 648 * @param icall Async request data 649 */ 650 static void udp_rmsg_discard_srv(udp_client_t *client, ipc_callid_t iid, 653 * @param client UDP client 654 * @param icall_handle Async request call handle 655 * @param icall Async request data 656 */ 657 static void 658 udp_rmsg_discard_srv(udp_client_t *client, cap_call_handle_t icall_handle, 651 659 ipc_call_t *icall) 652 660 { … … 658 666 if (enext == NULL) { 659 667 log_msg(LOG_DEFAULT, LVL_DEBUG, "usg_rmsg_discard_srv: enext==NULL"); 660 async_answer_0(i id, ENOENT);668 async_answer_0(icall_handle, ENOENT); 661 669 return; 662 670 } … … 665 673 udp_msg_delete(enext->msg); 666 674 free(enext); 667 async_answer_0(i id, EOK);675 async_answer_0(icall_handle, EOK); 668 676 } 669 677 670 678 /** Handle UDP client connection. 671 679 * 672 * @param iid Connect call ID 673 * @param icall Connect call data 674 * @param arg Connection argument 675 */ 676 static void udp_client_conn(ipc_callid_t iid, ipc_call_t *icall, void *arg) 680 * @param icall_handle Connect call handle 681 * @param icall Connect call data 682 * @param arg Connection argument 683 */ 684 static void udp_client_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, 685 void *arg) 677 686 { 678 687 udp_client_t client; … … 680 689 681 690 /* Accept the connection */ 682 async_answer_0(i id, EOK);691 async_answer_0(icall_handle, EOK); 683 692 684 693 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_client_conn()"); … … 691 700 log_msg(LOG_DEFAULT, LVL_DEBUG, "udp_client_conn: wait req"); 692 701 ipc_call_t call; 693 ipc_callid_t callid= async_get_call(&call);702 cap_call_handle_t chandle = async_get_call(&call); 694 703 sysarg_t method = IPC_GET_IMETHOD(call); 695 704 … … 698 707 if (!method) { 699 708 /* The other side has hung up */ 700 async_answer_0(c allid, EOK);709 async_answer_0(chandle, EOK); 701 710 break; 702 711 } … … 704 713 switch (method) { 705 714 case UDP_CALLBACK_CREATE: 706 udp_callback_create_srv(&client, c allid, &call);715 udp_callback_create_srv(&client, chandle, &call); 707 716 break; 708 717 case UDP_ASSOC_CREATE: 709 udp_assoc_create_srv(&client, c allid, &call);718 udp_assoc_create_srv(&client, chandle, &call); 710 719 break; 711 720 case UDP_ASSOC_DESTROY: 712 udp_assoc_destroy_srv(&client, c allid, &call);721 udp_assoc_destroy_srv(&client, chandle, &call); 713 722 break; 714 723 case UDP_ASSOC_SET_NOLOCAL: 715 udp_assoc_set_nolocal_srv(&client, c allid, &call);724 udp_assoc_set_nolocal_srv(&client, chandle, &call); 716 725 break; 717 726 case UDP_ASSOC_SEND_MSG: 718 udp_assoc_send_msg_srv(&client, c allid, &call);727 udp_assoc_send_msg_srv(&client, chandle, &call); 719 728 break; 720 729 case UDP_RMSG_INFO: 721 udp_rmsg_info_srv(&client, c allid, &call);730 udp_rmsg_info_srv(&client, chandle, &call); 722 731 break; 723 732 case UDP_RMSG_READ: 724 udp_rmsg_read_srv(&client, c allid, &call);733 udp_rmsg_read_srv(&client, chandle, &call); 725 734 break; 726 735 case UDP_RMSG_DISCARD: 727 udp_rmsg_discard_srv(&client, c allid, &call);736 udp_rmsg_discard_srv(&client, chandle, &call); 728 737 break; 729 738 default: 730 async_answer_0(c allid, ENOTSUP);739 async_answer_0(chandle, ENOTSUP); 731 740 break; 732 741 }
Note:
See TracChangeset
for help on using the changeset viewer.