Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset a26b9e3 in mainline


Ignore:
Timestamp:
2010-10-23T17:43:33Z (11 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
8c780dc
Parents:
626182d
Message:

Cleanup libnet ICMP interfaces.

Location:
uspace/lib/net
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/net/include/icmp_header.h

    r626182d ra26b9e3  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libnet
    3030 *  @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP header definition.
    35  *  Based on the RFC~792.
     34 * ICMP header definition.
     35 * Based on the RFC 792.
    3636 */
    3737
    38 #ifndef __NET_ICMP_HEADER_H__
    39 #define __NET_ICMP_HEADER_H__
     38#ifndef LIBNET_ICMP_HEADER_H_
     39#define LIBNET_ICMP_HEADER_H_
    4040
    4141#include <sys/types.h>
     
    4444#include <net/icmp_codes.h>
    4545
    46 /** ICMP header size in bytes.
    47  */
    48 #define ICMP_HEADER_SIZE                        sizeof(icmp_header_t)
     46/** ICMP header size in bytes. */
     47#define ICMP_HEADER_SIZE        sizeof(icmp_header_t)
    4948
    5049/** Type definition of the echo specific data.
    51  *  @see icmp_echo
     50 * @see icmp_echo
    5251 */
    53 typedef struct icmp_echo        icmp_echo_t;
     52typedef struct icmp_echo icmp_echo_t;
    5453
    5554/** Type definition of the echo specific data pointer.
    56  *  @see icmp_echo
     55 * @see icmp_echo
    5756 */
    58 typedef icmp_echo_t *           icmp_echo_ref;
     57typedef icmp_echo_t *icmp_echo_ref;
    5958
    60 /** Echo specific data.
    61  */
    62 struct icmp_echo{
    63         /** Message idintifier.
    64          */
     59/** Echo specific data. */
     60struct icmp_echo {
     61        /** Message idintifier. */
    6562        icmp_param_t identifier;
    66         /** Message sequence number.
    67          */
     63        /** Message sequence number. */
    6864        icmp_param_t sequence_number;
    6965} __attribute__ ((packed));
    7066
    7167/** Type definition of the internet control message header.
    72  *  @see icmp_header
     68 * @see icmp_header
    7369 */
    74 typedef struct icmp_header      icmp_header_t;
     70typedef struct icmp_header icmp_header_t;
    7571
    7672/** Type definition of the internet control message header pointer.
    77  *  @see icmp_header
     73 * @see icmp_header
    7874 */
    79 typedef icmp_header_t *         icmp_header_ref;
     75typedef icmp_header_t *icmp_header_ref;
    8076
    81 /** Internet control message header.
    82  */
    83 struct icmp_header{
    84         /** The type of the message.
    85          */
     77/** Internet control message header. */
     78struct icmp_header {
     79        /** The type of the message. */
    8680        uint8_t type;
    87         /** The error code for the datagram reported by the ICMP message.
    88          *  The interpretation is dependent on the message type.
     81       
     82        /**
     83         * The error code for the datagram reported by the ICMP message.
     84         * The interpretation is dependent on the message type.
    8985         */
    9086        uint8_t code;
    91         /** The checksum is the 16-bit ones's complement of the one's complement sum of the ICMP message starting with the ICMP Type.
    92      *  For computing the checksum, the checksum field should be zero.
    93          *  If the checksum does not match the contents, the datagram is discarded.
     87       
     88        /**
     89         * The checksum is the 16-bit ones's complement of the one's complement
     90         * sum of the ICMP message starting with the ICMP Type. For computing
     91         * the checksum, the checksum field should be zero. If the checksum does
     92         * not match the contents, the datagram is discarded.
    9493         */
    9594        uint16_t checksum;
    96         /** Message specific data.
    97          */
    98         union{
    99                 /** Echo specific data.
    100                  */
     95
     96        /** Message specific data. */
     97        union {
     98                /** Echo specific data. */
    10199                icmp_echo_t  echo;
    102                 /** Proposed gateway value.
    103                  */
     100                /** Proposed gateway value. */
    104101                in_addr_t gateway;
    105                 /** Fragmentation needed specific data.
    106                  */
    107                 struct{
    108                         /** Reserved field.
    109                          *  Must be zero.
    110                          */
     102               
     103                /** Fragmentation needed specific data. */
     104                struct {
     105                        /** Reserved field. Must be zero. */
    111106                        icmp_param_t reserved;
    112                         /** Proposed MTU.
    113                          */
     107                        /** Proposed MTU. */
    114108                        icmp_param_t mtu;
    115109                } frag;
    116                 /** Parameter problem specific data.
    117                  */
    118                 struct{
    119                         /** Problem pointer.
    120                          */
     110               
     111                /** Parameter problem specific data. */
     112                struct {
     113                        /** Problem pointer. */
    121114                        icmp_param_t pointer;
    122                         /** Reserved field.
    123                          *  Must be zero.
    124                          */
     115                        /** Reserved field. Must be zero. */
    125116                        icmp_param_t reserved;
    126117                } param;
  • uspace/lib/net/include/icmp_interface.h

    r626182d ra26b9e3  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libnet
    3030 *  @{
    3131 */
    3232
    33 #ifndef __NET_ICMP_INTERFACE_H__
    34 #define __NET_ICMP_INTERFACE_H__
     33#ifndef LIBNET_ICMP_INTERFACE_H_
     34#define LIBNET_ICMP_INTERFACE_H_
    3535
    3636#include <net/socket_codes.h>
     
    4646
    4747/** @name ICMP module interface
    48  *  This interface is used by other modules.
     48 * This interface is used by other modules.
    4949 */
    5050/*@{*/
    5151
    52 /** Sends the Destination Unreachable error notification packet.
    53  *  Beginning of the packet is sent as the notification packet data.
    54  *  The source and the destination addresses should be set in the original packet.
    55  *  @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
    56  *  @param[in] code The error specific code.
    57  *  @param[in] mtu The error MTU value.
    58  *  @param[in] packet The original packet.
    59  *  @returns EOK on success.
    60  *  @returns EPERM if the ICMP error notifications are disabled.
    61  *  @returns ENOMEM if there is not enough memory left.
    62  */
    63 extern int icmp_destination_unreachable_msg(int icmp_phone, icmp_code_t code, icmp_param_t mtu, packet_t packet);
    64 
    65 /** Sends the Source Quench error notification packet.
    66  *  Beginning of the packet is sent as the notification packet data.
    67  *  The source and the destination addresses should be set in the original packet.
    68  *  @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
    69  *  @param[in] packet The original packet.
    70  *  @returns EOK on success.
    71  *  @returns EPERM if the ICMP error notifications are disabled.
    72  *  @returns ENOMEM if there is not enough memory left.
    73  */
    74 extern int icmp_source_quench_msg(int icmp_phone, packet_t packet);
    75 
    76 /** Sends the Time Exceeded error notification packet.
    77  *  Beginning of the packet is sent as the notification packet data.
    78  *  The source and the destination addresses should be set in the original packet.
    79  *  @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
    80  *  @param[in] code The error specific code.
    81  *  @param[in] packet The original packet.
    82  *  @returns EOK on success.
    83  *  @returns EPERM if the ICMP error notifications are disabled.
    84  *  @returns ENOMEM if there is not enough memory left.
    85  */
    86 extern int icmp_time_exceeded_msg(int icmp_phone, icmp_code_t code, packet_t packet);
    87 
    88 /** Sends the Parameter Problem error notification packet.
    89  *  Beginning of the packet is sent as the notification packet data.
    90  *  The source and the destination addresses should be set in the original packet.
    91  *  @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
    92  *  @param[in] code The error specific code.
    93  *  @param[in] pointer The problematic parameter offset.
    94  *  @param[in] packet The original packet.
    95  *  @returns EOK on success.
    96  *  @returns EPERM if the ICMP error notifications are disabled.
    97  *  @returns ENOMEM if there is not enough memory left.
    98  */
    99 extern int icmp_parameter_problem_msg(int icmp_phone, icmp_code_t code, icmp_param_t pointer, packet_t packet);
     52extern int icmp_destination_unreachable_msg(int, icmp_code_t, icmp_param_t,
     53    packet_t);
     54extern int icmp_source_quench_msg(int, packet_t);
     55extern int icmp_time_exceeded_msg(int, icmp_code_t, packet_t);
     56extern int icmp_parameter_problem_msg(int, icmp_code_t, icmp_param_t, packet_t);
    10057
    10158/*@}*/
  • uspace/lib/net/tl/icmp_remote.c

    r626182d ra26b9e3  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libnet
    3030 *  @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP interface implementation for remote modules.
    35  *  @see icmp_interface.h
     34 * ICMP interface implementation for remote modules.
     35 * @see icmp_interface.h
    3636 */
     37
     38#include <icmp_interface.h>
     39#include <net/modules.h>
     40#include <packet_client.h>
    3741
    3842#include <async.h>
     
    4347#include <sys/types.h>
    4448
    45 #include <net/modules.h>
    46 #include <icmp_interface.h>
    47 #include <packet_client.h>
    48 
    49 int icmp_destination_unreachable_msg(int icmp_phone, icmp_code_t code, icmp_param_t mtu, packet_t packet){
    50         async_msg_3(icmp_phone, NET_ICMP_DEST_UNREACH, (ipcarg_t) code, (ipcarg_t) packet_get_id(packet), (ipcarg_t) mtu);
     49/** Sends the Destination Unreachable error notification packet.
     50 *
     51 * Beginning of the packet is sent as the notification packet data.
     52 * The source and the destination addresses should be set in the original
     53 * packet.
     54 *
     55 * @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
     56 * @param[in] code      The error specific code.
     57 * @param[in] mtu       The error MTU value.
     58 * @param[in] packet    The original packet.
     59 * @returns             EOK on success.
     60 * @returns             EPERM if the ICMP error notifications are disabled.
     61 * @returns             ENOMEM if there is not enough memory left.
     62 */
     63int
     64icmp_destination_unreachable_msg(int icmp_phone, icmp_code_t code,
     65    icmp_param_t mtu, packet_t packet)
     66{
     67        async_msg_3(icmp_phone, NET_ICMP_DEST_UNREACH, (ipcarg_t) code,
     68            (ipcarg_t) packet_get_id(packet), (ipcarg_t) mtu);
    5169        return EOK;
    5270}
    5371
    54 int icmp_source_quench_msg(int icmp_phone, packet_t packet){
    55         async_msg_2(icmp_phone, NET_ICMP_SOURCE_QUENCH, 0, (ipcarg_t) packet_get_id(packet));
     72/** Sends the Source Quench error notification packet.
     73 *
     74 * Beginning of the packet is sent as the notification packet data.
     75 * The source and the destination addresses should be set in the original
     76 * packet.
     77 *
     78 * @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
     79 * @param[in] packet    The original packet.
     80 * @returns             EOK on success.
     81 * @returns             EPERM if the ICMP error notifications are disabled.
     82 * @returns             ENOMEM if there is not enough memory left.
     83 */
     84int icmp_source_quench_msg(int icmp_phone, packet_t packet)
     85{
     86        async_msg_2(icmp_phone, NET_ICMP_SOURCE_QUENCH, 0,
     87            (ipcarg_t) packet_get_id(packet));
    5688        return EOK;
    5789}
    5890
    59 int icmp_time_exceeded_msg(int icmp_phone, icmp_code_t code, packet_t packet){
    60         async_msg_2(icmp_phone, NET_ICMP_TIME_EXCEEDED, (ipcarg_t) code, (ipcarg_t) packet_get_id(packet));
     91/** Sends the Time Exceeded error notification packet.
     92 *
     93 * Beginning of the packet is sent as the notification packet data.
     94 * The source and the destination addresses should be set in the original
     95 * packet.
     96 *
     97 * @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
     98 * @param[in] code      The error specific code.
     99 * @param[in] packet    The original packet.
     100 * @returns             EOK on success.
     101 * @returns             EPERM if the ICMP error notifications are disabled.
     102 * @returns             ENOMEM if there is not enough memory left.
     103 */
     104int icmp_time_exceeded_msg(int icmp_phone, icmp_code_t code, packet_t packet)
     105{
     106        async_msg_2(icmp_phone, NET_ICMP_TIME_EXCEEDED, (ipcarg_t) code,
     107            (ipcarg_t) packet_get_id(packet));
    61108        return EOK;
    62109}
    63110
    64 int icmp_parameter_problem_msg(int icmp_phone, icmp_code_t code, icmp_param_t pointer, packet_t packet){
    65         async_msg_3(icmp_phone, NET_ICMP_PARAMETERPROB, (ipcarg_t) code, (ipcarg_t) packet_get_id(packet), (ipcarg_t) pointer);
     111/** Sends the Parameter Problem error notification packet.
     112 *
     113 * Beginning of the packet is sent as the notification packet data.
     114 * The source and the destination addresses should be set in the original
     115 * packet.
     116 *
     117 * @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
     118 * @param[in] code      The error specific code.
     119 * @param[in] pointer   The problematic parameter offset.
     120 * @param[in] packet    The original packet.
     121 * @returns             EOK on success.
     122 * @returns             EPERM if the ICMP error notifications are disabled.
     123 * @returns             ENOMEM if there is not enough memory left.
     124 */
     125int icmp_parameter_problem_msg(int icmp_phone, icmp_code_t code,
     126    icmp_param_t pointer, packet_t packet)
     127{
     128        async_msg_3(icmp_phone, NET_ICMP_PARAMETERPROB, (ipcarg_t) code,
     129            (ipcarg_t) packet_get_id(packet), (ipcarg_t) pointer);
    66130        return EOK;
    67131}
     
    69133/** @}
    70134 */
     135
Note: See TracChangeset for help on using the changeset viewer.