Changeset 32eceb4f in mainline for uspace/srv/net/tl/icmp/icmp.c


Ignore:
Timestamp:
2010-11-20T22:30:36Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cb59f787
Parents:
1b22bd4 (diff), 7e1f9b7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tl/icmp/icmp.c

    r1b22bd4 r32eceb4f  
    100100 * @param[in,out] header The ICMP datagram header.
    101101 * @param[in] length    The total datagram length.
    102  * @returns             The computed checksum.
     102 * @return              The computed checksum.
    103103 */
    104104#define ICMP_CHECKSUM(header, length) \
     
    112112 * @param[in] id        The message identifier.
    113113 * @param[in] sequence  The message sequence number.
    114  * @returns             The computed ICMP reply data key.
     114 * @return              The computed ICMP reply data key.
    115115 */
    116116#define ICMP_GET_REPLY_KEY(id, sequence) \
     
    128128 * @param[in] packet    The packet queue to be released.
    129129 * @param[in] result    The result to be returned.
    130  * @returns             The result parameter.
    131  */
    132 static int icmp_release_and_return(packet_t packet, int result)
     130 * @return              The result parameter.
     131 */
     132static int icmp_release_and_return(packet_t *packet, int result)
    133133{
    134134        pq_release_remote(icmp_globals.net_phone, packet_get_id(packet));
     
    152152 * @param[in] dont_fragment The value indicating whether the datagram must not
    153153 *                      be fragmented. Is used as a MTU discovery.
    154  * @returns             EOK on success.
    155  * @returns             EPERM if the error message is not allowed.
    156  */
    157 static int icmp_send_packet(icmp_type_t type, icmp_code_t code, packet_t packet,
    158     icmp_header_ref header, services_t error, ip_ttl_t ttl, ip_tos_t tos,
     154 * @return              EOK on success.
     155 * @return              EPERM if the error message is not allowed.
     156 */
     157static int icmp_send_packet(icmp_type_t type, icmp_code_t code, packet_t *packet,
     158    icmp_header_t *header, services_t error, ip_ttl_t ttl, ip_tos_t tos,
    159159    int dont_fragment)
    160160{
     
    186186 *
    187187 * @param[in,out] packet The original packet.
    188  * @returns The prefixed ICMP header.
    189  * @returns NULL on errors.
    190  */
    191 static icmp_header_ref icmp_prepare_packet(packet_t packet)
    192 {
    193         icmp_header_ref header;
     188 * @return The prefixed ICMP header.
     189 * @return NULL on errors.
     190 */
     191static icmp_header_t *icmp_prepare_packet(packet_t *packet)
     192{
     193        icmp_header_t *header;
    194194        size_t header_length;
    195195        size_t total_length;
     
    234234 * @param[in] addr      The target host address.
    235235 * @param[in] addrlen   The torget host address length.
    236  * @returns             ICMP_ECHO on success.
    237  * @returns             ETIMEOUT if the reply has not arrived before the
     236 * @return              ICMP_ECHO on success.
     237 * @return              ETIMEOUT if the reply has not arrived before the
    238238 *                      timeout.
    239  * @returns             ICMP type of the received error notification.
    240  * @returns             EINVAL if the addrlen parameter is less or equal to
     239 * @return              ICMP type of the received error notification.
     240 * @return              EINVAL if the addrlen parameter is less or equal to
    241241 *                      zero.
    242  * @returns             ENOMEM if there is not enough memory left.
    243  * @returns             EPARTY if there was an internal error.
     242 * @return              ENOMEM if there is not enough memory left.
     243 * @return              EPARTY if there was an internal error.
    244244 */
    245245static int icmp_echo(icmp_param_t id, icmp_param_t sequence, size_t size,
     
    247247    const struct sockaddr * addr, socklen_t addrlen)
    248248{
    249         icmp_header_ref header;
    250         packet_t packet;
     249        icmp_header_t *header;
     250        packet_t *packet;
    251251        size_t length;
    252252        uint8_t *data;
    253         icmp_reply_ref reply;
     253        icmp_reply_t *reply;
    254254        int reply_key;
    255255        int index;
     
    340340
    341341static int icmp_destination_unreachable_msg_local(int icmp_phone,
    342     icmp_code_t code, icmp_param_t mtu, packet_t packet)
    343 {
    344         icmp_header_ref header;
     342    icmp_code_t code, icmp_param_t mtu, packet_t *packet)
     343{
     344        icmp_header_t *header;
    345345
    346346        header = icmp_prepare_packet(packet);
     
    355355}
    356356
    357 static int icmp_source_quench_msg_local(int icmp_phone, packet_t packet)
    358 {
    359         icmp_header_ref header;
     357static int icmp_source_quench_msg_local(int icmp_phone, packet_t *packet)
     358{
     359        icmp_header_t *header;
    360360
    361361        header = icmp_prepare_packet(packet);
     
    368368
    369369static int icmp_time_exceeded_msg_local(int icmp_phone, icmp_code_t code,
    370     packet_t packet)
    371 {
    372         icmp_header_ref header;
     370    packet_t *packet)
     371{
     372        icmp_header_t *header;
    373373
    374374        header = icmp_prepare_packet(packet);
     
    381381
    382382static int icmp_parameter_problem_msg_local(int icmp_phone, icmp_code_t code,
    383     icmp_param_t pointer, packet_t packet)
    384 {
    385         icmp_header_ref header;
     383    icmp_param_t pointer, packet_t *packet)
     384{
     385        icmp_header_t *header;
    386386
    387387        header = icmp_prepare_packet(packet);
     
    398398 * @param[in] client_connection The client connection processing function. The
    399399 *                      module skeleton propagates its own one.
    400  * @returns             EOK on success.
    401  * @returns             ENOMEM if there is not enough memory left.
     400 * @return              EOK on success.
     401 * @return              ENOMEM if there is not enough memory left.
    402402 */
    403403int icmp_initialize(async_client_conn_t client_connection)
     
    413413                }
    414414        };
    415         measured_string_ref configuration;
     415        measured_string_t *configuration;
    416416        size_t count = sizeof(names) / sizeof(measured_string_t);
    417417        char *data;
     
    479479 * @param[in] code      The received reply message code.
    480480 */
    481 static void  icmp_process_echo_reply(packet_t packet, icmp_header_ref header,
     481static void  icmp_process_echo_reply(packet_t *packet, icmp_header_t *header,
    482482    icmp_type_t type, icmp_code_t code)
    483483{
    484484        int reply_key;
    485         icmp_reply_ref reply;
     485        icmp_reply_t *reply;
    486486
    487487        /* Compute the reply key */
     
    507507 * @param[in] error     The packet error reporting service. Prefixes the
    508508 *                      received packet.
    509  * @returns             EOK on success.
    510  * @returns             EINVAL if the packet is not valid.
    511  * @returns             EINVAL if the stored packet address is not the an_addr_t.
    512  * @returns             EINVAL if the packet does not contain any data.
    513  * @returns             NO_DATA if the packet content is shorter than the user
     509 * @return              EOK on success.
     510 * @return              EINVAL if the packet is not valid.
     511 * @return              EINVAL if the stored packet address is not the an_addr_t.
     512 * @return              EINVAL if the packet does not contain any data.
     513 * @return              NO_DATA if the packet content is shorter than the user
    514514 *                      datagram header.
    515  * @returns             ENOMEM if there is not enough memory left.
    516  * @returns             EADDRNOTAVAIL if the destination socket does not exist.
    517  * @returns             Other error codes as defined for the
     515 * @return              ENOMEM if there is not enough memory left.
     516 * @return              EADDRNOTAVAIL if the destination socket does not exist.
     517 * @return              Other error codes as defined for the
    518518 *                      ip_client_process_packet() function.
    519519 */
    520 static int icmp_process_packet(packet_t packet, services_t error)
     520static int icmp_process_packet(packet_t *packet, services_t error)
    521521{
    522522        size_t length;
     
    525525        int result;
    526526        void *data;
    527         icmp_header_ref header;
     527        icmp_header_t *header;
    528528        icmp_type_t type;
    529529        icmp_code_t code;
     
    567567
    568568        /* Get ICMP header */
    569         header = (icmp_header_ref) data;
     569        header = (icmp_header_t *) data;
    570570
    571571        if (header->checksum) {
     
    654654 * @param[in] error     The packet error reporting service. Prefixes the
    655655 *                      received packet.
    656  * @returns             EOK on success.
    657  * @returns             Other error codes as defined for the
     656 * @return              EOK on success.
     657 * @return              Other error codes as defined for the
    658658 *                      icmp_process_packet() function.
    659659 */
    660 static int icmp_received_msg_local(device_id_t device_id, packet_t packet,
     660static int icmp_received_msg_local(device_id_t device_id, packet_t *packet,
    661661    services_t receiver, services_t error)
    662662{
     
    673673 *
    674674 * @param[in] call      The message parameters.
    675  * @returns             EOK on success.
    676  * @returns             ENOTSUP if the message is not known.
    677  * @returns             Other error codes as defined for the packet_translate()
     675 * @return              EOK on success.
     676 * @return              ENOTSUP if the message is not known.
     677 * @return              Other error codes as defined for the packet_translate()
    678678 *                      function.
    679  * @returns             Other error codes as defined for the
     679 * @return              Other error codes as defined for the
    680680 *                      icmp_destination_unreachable_msg_local() function.
    681  * @returns             Other error codes as defined for the
     681 * @return              Other error codes as defined for the
    682682 *                      icmp_source_quench_msg_local() function.
    683  * @returns             Other error codes as defined for the
     683 * @return              Other error codes as defined for the
    684684 *                      icmp_time_exceeded_msg_local() function.
    685  * @returns             Other error codes as defined for the
     685 * @return              Other error codes as defined for the
    686686 *                      icmp_parameter_problem_msg_local() function.
    687687 *
     
    690690static int icmp_process_message(ipc_call_t *call)
    691691{
    692         packet_t packet;
     692        packet_t *packet;
    693693        int rc;
    694694
     
    731731 *
    732732 * @param[in,out] echo_data The echo data to be bound.
    733  * @returns             Index of the inserted echo data.
    734  * @returns             EBADMEM if the echo_data parameter is NULL.
    735  * @returns             ENOTCONN if no free identifier have been found.
    736  */
    737 static int icmp_bind_free_id(icmp_echo_ref echo_data)
     733 * @return              Index of the inserted echo data.
     734 * @return              EBADMEM if the echo_data parameter is NULL.
     735 * @return              ENOTCONN if no free identifier have been found.
     736 */
     737static int icmp_bind_free_id(icmp_echo_t *echo_data)
    738738{
    739739        icmp_param_t index;
     
    778778 * @param[in] callid    The message identifier.
    779779 * @param[in] call      The message parameters.
    780  * @returns EOK.
     780 * @return EOK.
    781781 *
    782782 * @see icmp_interface.h
     
    791791        struct sockaddr *addr;
    792792        ipc_callid_t data_callid;
    793         icmp_echo_ref echo_data;
     793        icmp_echo_t *echo_data;
    794794        int rc = EOK;
    795795
     
    800800        answer_count = 0;
    801801
    802         echo_data = (icmp_echo_ref) malloc(sizeof(*echo_data));
     802        echo_data = (icmp_echo_t *) malloc(sizeof(*echo_data));
    803803        if (!echo_data)
    804804                return ENOMEM;
     
    887887 * @param[out] answer_count The last parameter for the actual answer in the
    888888 *                      answer parameter.
    889  * @returns             EOK on success.
    890  * @returns             ENOTSUP if the message is not known.
     889 * @return              EOK on success.
     890 * @return              ENOTSUP if the message is not known.
    891891 *
    892892 * @see icmp_interface.h
     
    896896    ipc_call_t *answer, int *answer_count)
    897897{
    898         packet_t packet;
     898        packet_t *packet;
    899899        int rc;
    900900
     
    964964/** Starts the module.
    965965 *
    966  * @returns             EOK on success.
    967  * @returns             Other error codes as defined for each specific module
     966 * @return              EOK on success.
     967 * @return              Other error codes as defined for each specific module
    968968 *                      start function.
    969969 */
Note: See TracChangeset for help on using the changeset viewer.