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