Changeset 10056483 in mainline


Ignore:
Timestamp:
2010-10-13T22:48:25Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ef689ef0
Parents:
b278b4e (diff), 753bca3 (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 from lp:~jakub/helenos/net.

Location:
uspace
Files:
2 added
2 deleted
25 edited
5 moved

Legend:

Unmodified
Added
Removed
  • uspace/app/netecho/print_error.c

    rb278b4e r10056483  
    3838#include <errno.h>
    3939
    40 #include <icmp_codes.h>
     40#include <net/icmp_codes.h>
    4141
    4242#include "print_error.h"
  • uspace/app/ping/ping.c

    rb278b4e r10056483  
    4545#include <arg_parse.h>
    4646
    47 #include <icmp_api.h>
     47#include <net/icmp_api.h>
    4848#include <net/in.h>
    4949#include <net/in6.h>
    5050#include <net/inet.h>
    5151#include <net/socket_parse.h>
    52 #include <ip_codes.h>
     52#include <net/ip_codes.h>
    5353
    5454#include "print_error.h"
  • uspace/lib/c/Makefile

    rb278b4e r10056483  
    100100        generic/vfs/canonify.c \
    101101        generic/net/inet.c \
     102        generic/net/icmp_common.c \
     103        generic/net/icmp_api.c \
    102104        generic/net/modules.c \
    103105        generic/net/packet.c \
  • uspace/lib/c/generic/net/icmp_common.c

    rb278b4e r10056483  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libc
    3030 *  @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP common interface implementation.
    35  *  @see icmp_common.h
     34 * ICMP common interface implementation.
     35 * @see icmp_common.h
    3636 */
    3737
     38#include <net/modules.h>
     39#include <net/icmp_common.h>
     40
     41#include <ipc/services.h>
     42#include <ipc/icmp.h>
     43
     44#include <sys/time.h>
    3845#include <async.h>
    39 #include <ipc/services.h>
    4046
    41 #include <net/modules.h>
    42 #include <icmp_common.h>
    43 #include <icmp_messages.h>
    44 
    45 int icmp_connect_module(services_t service, suseconds_t timeout){
     47/** Connects to the ICMP module.
     48 *
     49 * @param service       The ICMP module service. Ignored parameter.
     50 * @param[in] timeout   The connection timeout in microseconds. No timeout if
     51 *                      set to zero.
     52 * @returns             The ICMP module phone on success.
     53 * @returns             ETIMEOUT if the connection timeouted.
     54 */
     55int icmp_connect_module(services_t service, suseconds_t timeout)
     56{
    4657        int phone;
    4758
    4859        phone = connect_to_service_timeout(SERVICE_ICMP, timeout);
    49         if(phone >= 0){
     60        if (phone >= 0)
    5061                async_req_0_0(phone, NET_ICMP_INIT);
    51         }
     62
    5263        return phone;
    5364}
  • uspace/lib/c/include/ipc/icmp.h

    rb278b4e r10056483  
    2727 */
    2828
    29 /** @addtogroup icmp
    30  *  @{
     29/** @addtogroup libc
     30 * @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP module messages.
    35  *  @see icmp_interface.h
     34 * ICMP module messages.
     35 * @see icmp_interface.h
    3636 */
    3737
    38 #ifndef __NET_ICMP_MESSAGES__
    39 #define __NET_ICMP_MESSAGES__
     38#ifndef LIBC_ICMP_MESSAGES_
     39#define LIBC_ICMP_MESSAGES_
    4040
    4141#include <ipc/ipc.h>
    4242#include <ipc/net.h>
    4343#include <sys/types.h>
     44#include <sys/time.h>
    4445
    45 #include <icmp_codes.h>
     46#include <net/icmp_codes.h>
    4647
    47 /** ICMP module messages.
    48  */
    49 typedef enum{
    50         /** Sends echo request.
    51          *  @see icmp_echo()
    52          */
     48/** ICMP module messages. */
     49typedef enum {
     50        /** Sends echo request. @see icmp_echo() */
    5351        NET_ICMP_ECHO = NET_ICMP_FIRST,
    54         /** Sends destination unreachable error message.
    55          *  @see icmp_destination_unreachable_msg()
     52       
     53        /**
     54         * Sends destination unreachable error message.
     55         * @see icmp_destination_unreachable_msg()
    5656         */
    5757        NET_ICMP_DEST_UNREACH,
    58         /** Sends source quench error message.
    59          *  @see icmp_source_quench_msg()
     58       
     59        /**
     60         * Sends source quench error message.
     61         * @see icmp_source_quench_msg()
    6062         */
    6163        NET_ICMP_SOURCE_QUENCH,
    62         /** Sends time exceeded error message.
    63          *  @see icmp_time_exceeded_msg()
     64       
     65        /**
     66         * Sends time exceeded error message.
     67         * @see icmp_time_exceeded_msg()
    6468         */
    6569        NET_ICMP_TIME_EXCEEDED,
    66         /** Sends parameter problem error message.
    67          *  @see icmp_parameter_problem_msg()
     70       
     71        /**
     72         * Sends parameter problem error message.
     73         * @see icmp_parameter_problem_msg()
    6874         */
    6975        NET_ICMP_PARAMETERPROB,
    70         /** Initializes new connection.
    71         */
     76       
     77        /** Initializes new connection. */
    7278        NET_ICMP_INIT
    7379} icmp_messages;
    7480
    75 /** @name ICMP specific message parameters definitions
    76  */
     81/** @name ICMP specific message parameters definitions */
    7782/*@{*/
    7883
    7984/** Returns the ICMP code message parameter.
    80  *  @param[in] call The message call structure.
     85 *
     86 * @param[in] call      The message call structure.
    8187 */
    8288#define ICMP_GET_CODE(call) \
    83         ({icmp_code_t code = (icmp_code_t) IPC_GET_ARG1(*call); code;})
     89        ({ \
     90                icmp_code_t code = (icmp_code_t) IPC_GET_ARG1(*call); \
     91                code; \
     92        })
    8493
    8594/** Returns the ICMP link MTU message parameter.
    86  *  @param[in] call The message call structure.
     95 *
     96 * @param[in] call      The message call structure.
    8797 */
    8898#define ICMP_GET_MTU(call) \
    89         ({icmp_param_t mtu = (icmp_param_t) IPC_GET_ARG3(*call); mtu;})
     99        ({ \
     100                icmp_param_t mtu = (icmp_param_t) IPC_GET_ARG3(*call); \
     101                mtu; \
     102        })
    90103
    91104/** Returns the pointer message parameter.
    92  *  @param[in] call The message call structure.
     105 *
     106 * @param[in] call      The message call structure.
    93107 */
    94108#define ICMP_GET_POINTER(call) \
    95         ({icmp_param_t pointer = (icmp_param_t) IPC_GET_ARG3(*call); pointer;})
     109        ({ \
     110                icmp_param_t pointer = (icmp_param_t) IPC_GET_ARG3(*call); \
     111                pointer; \
     112        })
    96113
    97114/** Returns the size message parameter.
    98  *  @param[in] call The message call structure.
     115 *
     116 * @param[in] call      The message call structure.
    99117 */
    100118#define ICMP_GET_SIZE(call) \
    101         ({size_t size = (size_t) IPC_GET_ARG1(call); size;})
     119        ({ \
     120                size_t size = (size_t) IPC_GET_ARG1(call); \
     121                size; \
     122        })
    102123
    103124/** Returns the timeout message parameter.
    104  *  @param[in] call The message call structure.
     125 *
     126 * @param[in] call      The message call structure.
    105127 */
    106128#define ICMP_GET_TIMEOUT(call) \
    107         (({suseconds_t timeout = (suseconds_t) IPC_GET_ARG2(call); timeout;}))
     129        ({ \
     130                suseconds_t timeout = (suseconds_t) IPC_GET_ARG2(call); \
     131                timeout; \
     132        })
    108133
    109134/** Returns the time to live message parameter.
    110  *  @param[in] call The message call structure.
     135 *
     136 * @param[in] call      The message call structure.
    111137 */
    112138#define ICMP_GET_TTL(call) \
    113         ({ip_ttl_t ttl = (ip_ttl_t) IPC_GET_ARG3(call); ttl;})
     139        ({ \
     140                ip_ttl_t ttl = (ip_ttl_t) IPC_GET_ARG3(call); \
     141                ttl; \
     142        })
    114143
    115144/** Returns the type of service message parameter.
    116  *  @param[in] call The message call structure.
     145 *
     146 * @param[in] call      The message call structure.
    117147 */
    118148#define ICMP_GET_TOS(call) \
    119         ({ip_tos_t tos = (ip_tos_t) IPC_GET_ARG4(call); tos;})
     149        ({ \
     150                ip_tos_t tos = (ip_tos_t) IPC_GET_ARG4(call); \
     151                tos; \
     152        })
    120153
    121154/** Returns the dont fragment message parameter.
    122  *  @param[in] call The message call structure.
     155 *
     156 * @param[in] call      The message call structure.
    123157 */
    124158#define ICMP_GET_DONT_FRAGMENT(call) \
    125         ({int dont_fragment = (int) IPC_GET_ARG5(call); dont_fragment;})
     159        ({ \
     160                int dont_fragment = (int) IPC_GET_ARG5(call); \
     161                dont_fragment; \
     162        })
    126163
    127164/*@}*/
  • uspace/lib/c/include/net/icmp_api.h

    rb278b4e r10056483  
    2727 */
    2828
    29 /** @addtogroup icmp
    30  *  @{
     29/** @addtogroup libc
     30 * @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP application interface implementation.
    35  *  @see icmp_api.h
     34 * ICMP module application interface.
    3635 */
     36
     37#ifndef LIBC_ICMP_API_H_
     38#define LIBC_ICMP_API_H_
    3739
    3840#include <net/socket_codes.h>
    3941#include <net/inet.h>
    40 #include <async.h>
     42#include <sys/types.h>
     43#include <sys/time.h>
    4144
    42 #include <ipc/ipc.h>
    43 #include <ipc/services.h>
     45#include <adt/measured_strings.h>
     46#include <net/packet.h>
     47#include <net/ip_codes.h>
     48#include <net/icmp_codes.h>
     49#include <net/icmp_common.h>
    4450
    45 #include <sys/types.h>
     51/** @name ICMP module application interface
     52 * This interface is used by other application modules.
     53 */
     54/*@{*/
    4655
    47 #include <net/modules.h>
    48 #include <icmp_api.h>
    49 #include <ip_codes.h>
    50 #include <icmp_messages.h>
     56extern int icmp_echo_msg(int, size_t, mseconds_t, ip_ttl_t, ip_tos_t, int,
     57    const struct sockaddr *, socklen_t);
    5158
    52 int icmp_echo_msg(int icmp_phone, size_t size, mseconds_t timeout, ip_ttl_t ttl, ip_tos_t tos, int dont_fragment, const struct sockaddr * addr, socklen_t addrlen){
    53         aid_t message_id;
    54         ipcarg_t result;
     59/*@}*/
    5560
    56         if(addrlen <= 0){
    57                 return EINVAL;
    58         }
    59         message_id = async_send_5(icmp_phone, NET_ICMP_ECHO, size, timeout, ttl, tos, (ipcarg_t) dont_fragment, NULL);
    60         // send the address
    61         async_data_write_start(icmp_phone, addr, (size_t) addrlen);
    62         // timeout version may cause inconsistency - there is also an inner timer
    63         // return async_wait_timeout(message_id, &result, timeout);
    64         async_wait_for(message_id, &result);
    65         return (int) result;
    66 }
     61#endif
    6762
    6863/** @}
  • uspace/lib/c/include/net/icmp_codes.h

    rb278b4e r10056483  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libc
    3030 *  @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP types and codes according to the on-line IANA - ICMP Type Numbers - <http://http://www.iana.org/assignments/icmp-parameters>, cited September 14 2009.
    35  */
    36 
    37 #ifndef __NET_ICMP_CODES_H__
    38 #define __NET_ICMP_CODES_H__
    39 
    40 /** ICMP type type definition.
    41  */
    42 typedef uint8_t icmp_type_t;
    43 
    44 /** ICMP code type definition.
    45  */
    46 typedef uint8_t icmp_code_t;
    47 
    48 /** ICMP parameter type definition.
    49  */
    50 typedef uint16_t        icmp_param_t;
    51 
    52 /** @name ICMP types definitions
    53  */
    54 /*@{*/
    55 
    56 /** Echo Reply.
    57  */
     34 * ICMP types and codes according to the on-line IANA - ICMP Type Numbers
     35 *
     36 * http://www.iana.org/assignments/icmp-parameters>
     37 *
     38 * cited September 14 2009.
     39 */
     40
     41#ifndef LIBC_ICMP_CODES_H_
     42#define LIBC_ICMP_CODES_H_
     43
     44/** ICMP type type definition. */
     45typedef uint8_t icmp_type_t;
     46
     47/** ICMP code type definition. */
     48typedef uint8_t icmp_code_t;
     49
     50/** ICMP parameter type definition. */
     51typedef uint16_t icmp_param_t;
     52
     53/** @name ICMP types definitions */
     54/*@{*/
     55
     56/** Echo Reply. */
    5857#define ICMP_ECHOREPLY          0
    5958
    60 /** Destination Unreachable.
    61  */
     59/** Destination Unreachable. */
    6260#define ICMP_DEST_UNREACH       3
    6361
    64 /** Source Quench.
    65  */
     62/** Source Quench. */
    6663#define ICMP_SOURCE_QUENCH      4
    6764
    68 /** Redirect.
    69  */
     65/** Redirect. */
    7066#define ICMP_REDIRECT           5
    7167
    72 /** Alternate Host Address.
    73  */
     68/** Alternate Host Address. */
    7469#define ICMP_ALTERNATE_ADDR     6
    7570
    76 /** Echo Request.
    77  */
    78 #define ICMP_ECHO                       8
    79 
    80 /** Router Advertisement.
    81  */
     71/** Echo Request. */
     72#define ICMP_ECHO               8
     73
     74/** Router Advertisement. */
    8275#define ICMP_ROUTER_ADV         9
    8376
    84 /** Router solicitation.
    85  */
     77/** Router solicitation. */
    8678#define ICMP_ROUTER_SOL         10
    8779
    88 /** Time Exceeded.
    89  */
     80/** Time Exceeded. */
    9081#define ICMP_TIME_EXCEEDED      11
    9182
    92 /** Parameter Problem.
    93  */
     83/** Parameter Problem. */
    9484#define ICMP_PARAMETERPROB      12
    9585
    96 /** Timestamp Request.
    97  */
     86/** Timestamp Request. */
    9887#define ICMP_TIMESTAMP          13
    9988
    100 /** Timestamp Reply.
    101  */
     89/** Timestamp Reply. */
    10290#define ICMP_TIMESTAMPREPLY     14
    10391
    104 /** Information Request.
    105  */
     92/** Information Request. */
    10693#define ICMP_INFO_REQUEST       15
    10794
    108 /** Information Reply.
    109  */
     95/** Information Reply. */
    11096#define ICMP_INFO_REPLY         16
    11197
    112 /** Address Mask Request.
    113  */
     98/** Address Mask Request. */
    11499#define ICMP_ADDRESS            17
    115100
    116 /** Address Mask Reply.
    117  */
     101/** Address Mask Reply. */
    118102#define ICMP_ADDRESSREPLY       18
    119103
    120 /** Traceroute.
    121  */
     104/** Traceroute. */
    122105#define ICMP_TRACEROUTE         30
    123106
    124 /** Datagram Conversion Error.
    125  */
     107/** Datagram Conversion Error. */
    126108#define ICMP_CONVERSION_ERROR   31
    127109
    128 /** Mobile Host Redirect.
    129  */
     110/** Mobile Host Redirect. */
    130111#define ICMP_REDIRECT_MOBILE    32
    131112
    132 /** IPv6 Where-Are-You.
    133  */
     113/** IPv6 Where-Are-You. */
    134114#define ICMP_IPV6_WHERE_ARE_YOU 33
    135115
    136 /** IPv6 I-Am-Here.
    137  */
     116/** IPv6 I-Am-Here. */
    138117#define ICMP_IPV6_I_AM_HERE     34
    139118
    140 /** Mobile Registration Request.
    141  */
     119/** Mobile Registration Request. */
    142120#define ICMP_MOBILE_REQUEST     35
    143121
    144 /** Mobile Registration Reply.
    145  */
     122/** Mobile Registration Reply. */
    146123#define ICMP_MOBILE_REPLY       36
    147124
    148 /** Domain name request.
    149  */
     125/** Domain name request. */
    150126#define ICMP_DN_REQUEST         37
    151127
    152 /** Domain name reply.
    153  */
     128/** Domain name reply. */
    154129#define ICMP_DN_REPLY           38
    155130
    156 /** SKIP.
    157  */
    158 #define ICMP_SKIP                       39
    159 
    160 /** Photuris.
    161  */
     131/** SKIP. */
     132#define ICMP_SKIP               39
     133
     134/** Photuris. */
    162135#define ICMP_PHOTURIS           40
    163136
     
    168141/*@{*/
    169142
    170 /** Network Unreachable.
    171  */
     143/** Network Unreachable. */
    172144#define ICMP_NET_UNREACH        0
    173145
    174 /** Host Unreachable.
    175  */
     146/** Host Unreachable. */
    176147#define ICMP_HOST_UNREACH       1
    177148
    178 /** Protocol Unreachable.
    179  */
     149/** Protocol Unreachable. */
    180150#define ICMP_PROT_UNREACH       2
    181151
    182 /** Port Unreachable.
    183  */
     152/** Port Unreachable. */
    184153#define ICMP_PORT_UNREACH       3
    185154
    186 /** Fragmentation needed but the Do Not Fragment bit was set.
    187  */
     155/** Fragmentation needed but the Do Not Fragment bit was set. */
    188156#define ICMP_FRAG_NEEDED        4
    189157
    190 /** Source Route failed.
    191  */
     158/** Source Route failed. */
    192159#define ICMP_SR_FAILED          5
    193160
    194 /** Destination network unknown.
    195  */
     161/** Destination network unknown. */
    196162#define ICMP_NET_UNKNOWN        6
    197163
    198 /** Destination host unknown.
    199  */
     164/** Destination host unknown. */
    200165#define ICMP_HOST_UNKNOWN       7
    201166
    202 /** Source host isolated (obsolete).
    203  */
     167/** Source host isolated (obsolete). */
    204168#define ICMP_HOST_ISOLATED      8
    205169
    206 /** Destination network administratively prohibited.
    207  */
     170/** Destination network administratively prohibited. */
    208171#define ICMP_NET_ANO            9
    209172
    210 /** Destination host administratively prohibited.
    211  */
     173/** Destination host administratively prohibited. */
    212174#define ICMP_HOST_ANO           10
    213175
    214 /** Network unreachable for this type of service.
    215  */
     176/** Network unreachable for this type of service. */
    216177#define ICMP_NET_UNR_TOS        11
    217178
    218 /** Host unreachable for this type of service.
    219  */
     179/** Host unreachable for this type of service. */
    220180#define ICMP_HOST_UNR_TOS       12
    221181
    222 /** Communication administratively prohibited by filtering.
    223  */
     182/** Communication administratively prohibited by filtering. */
    224183#define ICMP_PKT_FILTERED       13
    225184
    226 /** Host precedence violation.
    227  */
     185/** Host precedence violation. */
    228186#define ICMP_PREC_VIOLATION     14
    229187
    230 /** Precedence cutoff in effect.
    231  */
     188/** Precedence cutoff in effect. */
    232189#define ICMP_PREC_CUTOFF        15
    233190
    234191/*@}*/
    235192
    236 /** @name ICMP_REDIRECT codes definitions
    237  */
    238 /*@{*/
    239 
    240 /** Network redirect (or subnet).
    241  */
     193/** @name ICMP_REDIRECT codes definitions */
     194/*@{*/
     195
     196/** Network redirect (or subnet). */
    242197#define ICMP_REDIR_NET          0
    243198
    244 /** Host redirect.
    245  */
     199/** Host redirect. */
    246200#define ICMP_REDIR_HOST         1
    247201
    248 /** Network redirect for this type of service.
    249  */
     202/** Network redirect for this type of service. */
    250203#define ICMP_REDIR_NETTOS       2
    251204
    252 /** Host redirect for this type of service.
    253  */
     205/** Host redirect for this type of service. */
    254206#define ICMP_REDIR_HOSTTOS      3
    255207
    256208/*@}*/
    257209
    258 /** @name ICMP_ALTERNATE_ADDRESS codes definitions
    259  */
    260 /*@{*/
    261 
    262 /** Alternate address for host.
    263  */
     210/** @name ICMP_ALTERNATE_ADDRESS codes definitions */
     211/*@{*/
     212
     213/** Alternate address for host. */
    264214#define ICMP_ALTERNATE_HOST     0
    265215
    266216/*@}*/
    267217
    268 /** @name ICMP_ROUTER_ADV codes definitions
    269  */
    270 /*@{*/
    271 
    272 /** Normal router advertisement.
    273  */
     218/** @name ICMP_ROUTER_ADV codes definitions */
     219/*@{*/
     220
     221/** Normal router advertisement. */
    274222#define ICMP_ROUTER_NORMAL      0
    275223
    276 /** Does not route common traffic.
    277  */
     224/** Does not route common traffic. */
    278225#define ICMP_ROUTER_NO_NORMAL_TRAFFIC   16
    279226
    280227/*@}*/
    281228
    282 /** @name ICMP_TIME_EXCEEDED codes definitions
    283  */
    284 /*@{*/
    285 
    286 /** Transit TTL exceeded.
    287  */
     229/** @name ICMP_TIME_EXCEEDED codes definitions */
     230/*@{*/
     231
     232/** Transit TTL exceeded. */
    288233#define ICMP_EXC_TTL            0
    289234
    290 /** Reassembly TTL exceeded.
    291  */
     235/** Reassembly TTL exceeded. */
    292236#define ICMP_EXC_FRAGTIME       1
    293237
    294238/*@}*/
    295239
    296 /** @name ICMP_PARAMETERPROB codes definitions
    297  */
    298 /*@{*/
    299 
    300 /** Pointer indicates the error.
    301  */
     240/** @name ICMP_PARAMETERPROB codes definitions */
     241/*@{*/
     242
     243/** Pointer indicates the error. */
    302244#define ICMP_PARAM_POINTER      0
    303245
    304 /** Missing required option.
    305  */
     246/** Missing required option. */
    306247#define ICMP_PARAM_MISSING      1
    307248
    308 /** Bad length.
    309  */
     249/** Bad length. */
    310250#define ICMP_PARAM_LENGTH       2
    311251
    312252/*@}*/
    313253
    314 /** @name ICMP_PHOTURIS codes definitions
    315  */
    316 /*@{*/
    317 
    318 /** Bad SPI.
    319  */
    320 #define ICMP_PHOTURIS_BAD_SPI   0
    321 
    322 /** Authentication failed.
    323  */
    324 #define ICMP_PHOTURIS_AUTHENTICATION    1
    325 
    326 /** Decompression failed.
    327  */
     254/** @name ICMP_PHOTURIS codes definitions */
     255/*@{*/
     256
     257/** Bad SPI. */
     258#define ICMP_PHOTURIS_BAD_SPI                   0
     259
     260/** Authentication failed. */
     261#define ICMP_PHOTURIS_AUTHENTICATION            1
     262
     263/** Decompression failed. */
    328264#define ICMP_PHOTURIS_DECOMPRESSION             2
    329265
    330 /** Decryption failed.
    331  */
    332 #define ICMP_PHOTURIS_DECRYPTION        3
    333 
    334 /** Need authentication.
    335  */
     266/** Decryption failed. */
     267#define ICMP_PHOTURIS_DECRYPTION                3
     268
     269/** Need authentication. */
    336270#define ICMP_PHOTURIS_NEED_AUTHENTICATION       4
    337271
    338 /** Need authorization.
    339  */
     272/** Need authorization. */
    340273#define ICMP_PHOTURIS_NEED_AUTHORIZATION        5
    341274
  • uspace/lib/c/include/net/icmp_common.h

    rb278b4e r10056483  
    2727 */
    2828
    29 /** @addtogroup icmp
     29/** @addtogroup libc
    3030 *  @{
    3131 */
    3232
    3333/** @file
    34  *  ICMP module common interface.
     34 * ICMP module common interface.
    3535 */
    3636
    37 #ifndef __NET_ICMP_COMMON_H__
    38 #define __NET_ICMP_COMMON_H__
     37#ifndef LIBC_ICMP_COMMON_H_
     38#define LIBC_ICMP_COMMON_H_
    3939
    4040#include <ipc/services.h>
    41 
    4241#include <sys/time.h>
    4342
    44 /** Default timeout for incoming connections in microseconds.
    45  */
     43/** Default timeout for incoming connections in microseconds. */
    4644#define ICMP_CONNECT_TIMEOUT    (1 * 1000 * 1000)
    4745
    48 /** Connects to the ICMP module.
    49  *  @param service The ICMP module service. Ignored parameter.
    50  *  @param[in] timeout The connection timeout in microseconds. No timeout if set to zero (0).
    51  *  @returns The ICMP module phone on success.
    52  *  @returns ETIMEOUT if the connection timeouted.
    53  */
    54 extern int icmp_connect_module(services_t service, suseconds_t timeout);
     46extern int icmp_connect_module(services_t, suseconds_t);
    5547
    5648#endif
  • uspace/lib/c/include/sys/time.h

    rb278b4e r10056483  
    4343typedef long suseconds_t;
    4444
     45typedef uint32_t useconds_t;
     46typedef uint32_t mseconds_t;
     47
    4548struct timeval {
    4649        time_t tv_sec;        /* seconds */
  • uspace/lib/c/include/unistd.h

    rb278b4e r10056483  
    3737
    3838#include <sys/types.h>
     39#include <time.h>
    3940#include <libarch/config.h>
    4041
     
    5657        #define SEEK_END  2
    5758#endif
    58 
    59 typedef uint32_t useconds_t;
    6059
    6160extern int dup2(int oldfd, int newfd);
  • uspace/lib/net/il/ip_remote.c

    rb278b4e r10056483  
    7272
    7373int ip_bind_service(services_t service, int protocol, services_t me,
    74     async_client_conn_t receiver, tl_received_msg_t tl_received_msg)
     74    async_client_conn_t receiver)
    7575{
    7676        return (int) bind_service(service, (ipcarg_t) protocol, me, service,
  • uspace/lib/net/include/icmp_client.h

    rb278b4e r10056483  
    3838#define __NET_ICMP_CLIENT_H__
    3939
    40 #include <icmp_codes.h>
     40#include <net/icmp_codes.h>
    4141#include <net/packet.h>
    4242
  • uspace/lib/net/include/icmp_header.h

    rb278b4e r10056483  
    4242
    4343#include <net/in.h>
    44 #include <icmp_codes.h>
     44#include <net/icmp_codes.h>
    4545
    4646/** ICMP header size in bytes.
  • uspace/lib/net/include/icmp_interface.h

    rb278b4e r10056483  
    4141#include <net/packet.h>
    4242#include <net/inet.h>
    43 #include <ip_codes.h>
    44 #include <icmp_codes.h>
    45 #include <icmp_common.h>
     43#include <net/ip_codes.h>
     44#include <net/icmp_codes.h>
     45#include <net/icmp_common.h>
    4646
    4747/** @name ICMP module interface
  • uspace/lib/net/include/ip_client.h

    rb278b4e r10056483  
    4242
    4343#include <net/packet.h>
    44 #include <ip_codes.h>
     44#include <net/ip_codes.h>
    4545#include <ip_interface.h>
    4646
  • uspace/lib/net/include/ip_interface.h

    rb278b4e r10056483  
    4242
    4343#include <net/in.h>
    44 #include <ip_codes.h>
     44#include <net/ip_codes.h>
    4545
    4646#include <ip_remote.h>
     
    7474 *  @param[in] me The requesting module service.
    7575 *  @param[in] receiver The message receiver. Used for remote connection.
    76  *  @param[in] tl_received_msg The message processing function. Used if bundled together.
    7776 *  @returns The phone of the needed service.
    7877 *  @returns EOK on success.
    7978 *  @returns Other error codes as defined for the bind_service() function.
    8079 */
    81 extern int ip_bind_service(services_t service, int protocol, services_t me, async_client_conn_t receiver, tl_received_msg_t tl_received_msg);
     80extern int ip_bind_service(services_t service, int protocol, services_t me, async_client_conn_t receiver);
    8281
    8382/** Connects to the IP module.
  • uspace/lib/net/include/ip_local.h

    rb278b4e r10056483  
    3737#include <ipc/services.h>
    3838
    39 #include <ip_codes.h>
     39#include <net/ip_codes.h>
    4040#include <net/inet.h>
    4141#include <net/in.h>
  • uspace/lib/net/include/ip_messages.h

    rb278b4e r10056483  
    4343
    4444#include <net/in.h>
    45 #include <ip_codes.h>
     45#include <net/ip_codes.h>
    4646
    4747/** IP module messages.
  • uspace/lib/net/include/ip_remote.h

    rb278b4e r10056483  
    3737#include <ipc/services.h>
    3838
    39 #include <ip_codes.h>
     39#include <net/ip_codes.h>
    4040#include <net/inet.h>
    4141#include <net/in.h>
  • uspace/lib/net/netif/netif_local.c

    rb278b4e r10056483  
    228228       
    229229        return ERROR_CODE;
    230 }
    231 
    232 /** Create bidirectional connection with the network interface module and registers the message receiver.
    233  *
    234  * @param[in] service   The network interface module service.
    235  * @param[in] device_id The device identifier.
    236  * @param[in] me        The requesting module service.
    237  * @param[in] receiver  The message receiver.
    238  *
    239  * @return The phone of the needed service.
    240  * @return EOK on success.
    241  * @return Other error codes as defined for the bind_service() function.
    242  *
    243  */
    244 int netif_bind_service_local(services_t service, device_id_t device_id,
    245     services_t me, async_client_conn_t receiver)
    246 {
    247         return EOK;
    248230}
    249231
  • uspace/lib/net/netif/netif_remote.c

    rb278b4e r10056483  
    9191}
    9292
     93/** Create bidirectional connection with the network interface module and
     94 * registers the message receiver.
     95 *
     96 * @param[in] service   The network interface module service.
     97 * @param[in] device_id The device identifier.
     98 * @param[in] me        The requesting module service.
     99 * @param[in] receiver  The message receiver.
     100 *
     101 * @return The phone of the needed service.
     102 * @return EOK on success.
     103 * @return Other error codes as defined for the bind_service() function.
     104 *
     105 */
    93106int netif_bind_service_remote(services_t service, device_id_t device_id, services_t me,
    94107    async_client_conn_t receiver)
  • uspace/lib/net/tl/icmp_client.c

    rb278b4e r10056483  
    4343#include <sys/types.h>
    4444
    45 #include <icmp_codes.h>
     45#include <net/icmp_codes.h>
    4646#include <icmp_client.h>
    4747#include <net/packet.h>
  • uspace/lib/net/tl/icmp_remote.c

    rb278b4e r10056483  
    4040#include <ipc/ipc.h>
    4141#include <ipc/services.h>
     42#include <ipc/icmp.h>
    4243#include <sys/types.h>
    4344
     
    4647#include <icmp_interface.h>
    4748#include <packet_client.h>
    48 #include <icmp_messages.h>
    4949
    5050int icmp_destination_unreachable_msg(int icmp_phone, icmp_code_t code, icmp_param_t mtu, packet_t packet){
  • uspace/lib/socket/Makefile

    rb278b4e r10056483  
    3333
    3434SOURCES = \
    35         generic/icmp_common.c \
    36         generic/icmp_api.c \
    3735        packet/packet_server.c
    3836
  • uspace/srv/net/il/arp/arp.c

    rb278b4e r10056483  
    227227        printf("Device %d cleared\n", device_id);
    228228        fibril_rwlock_write_unlock(&arp_globals.lock);
    229         return EOK;
    230 }
    231 
    232 int arp_connect_module(services_t service){
    233         if(service != SERVICE_ARP){
    234                 return EINVAL;
    235         }
    236229        return EOK;
    237230}
     
    603596        nil_send_msg(device->phone, device_id, packet, SERVICE_ARP);
    604597        return NULL;
    605 }
    606 
    607 int arp_translate_req(int arp_phone, device_id_t device_id, services_t protocol, measured_string_ref address, measured_string_ref * translation, char ** data){
    608         measured_string_ref tmp;
    609 
    610         fibril_rwlock_read_lock(&arp_globals.lock);
    611         tmp = arp_translate_message(device_id, protocol, address);
    612         if(tmp){
    613                 *translation = measured_string_copy(tmp);
    614                 fibril_rwlock_read_unlock(&arp_globals.lock);
    615                 if(*translation){
    616                         *data = (** translation).value;
    617                         return EOK;
    618                 }else{
    619                         return ENOMEM;
    620                 }
    621         }else{
    622                 fibril_rwlock_read_unlock(&arp_globals.lock);
    623                 return ENOENT;
    624         }
    625598}
    626599
  • uspace/srv/net/il/ip/ip.c

    rb278b4e r10056483  
    5858#include <net_device.h>
    5959#include <icmp_client.h>
    60 #include <icmp_codes.h>
     60#include <net/icmp_codes.h>
    6161#include <icmp_interface.h>
    6262#include <il_interface.h>
     
    618618        printf("%s: Device %d changed state to %d\n", NAME, device_id, state);
    619619        fibril_rwlock_write_unlock(&ip_globals.netifs_lock);
    620         return EOK;
    621 }
    622 
    623 int ip_connect_module(services_t service){
    624620        return EOK;
    625621}
  • uspace/srv/net/tl/icmp/icmp.c

    rb278b4e r10056483  
    4444#include <ipc/ipc.h>
    4545#include <ipc/services.h>
     46#include <ipc/icmp.h>
    4647#include <sys/time.h>
    4748#include <sys/types.h>
     
    5960#include <packet_remote.h>
    6061#include <net_checksum.h>
    61 #include <icmp_api.h>
     62#include <net/icmp_api.h>
    6263#include <icmp_client.h>
    63 #include <icmp_codes.h>
    64 #include <icmp_common.h>
     64#include <net/icmp_codes.h>
     65#include <net/icmp_common.h>
    6566#include <icmp_interface.h>
    6667#include <il_interface.h>
     
    7172#include <tl_interface.h>
    7273#include <tl_local.h>
    73 #include <icmp_messages.h>
    7474#include <icmp_header.h>
    7575
     
    449449}
    450450
    451 int icmp_connect_module(services_t service, suseconds_t timeout){
    452         icmp_echo_ref echo_data;
    453         icmp_param_t id;
    454         int index;
    455 
    456         echo_data = (icmp_echo_ref) malloc(sizeof(*echo_data));
    457         if(! echo_data){
    458                 return ENOMEM;
    459         }
    460         // assign a new identifier
    461         fibril_rwlock_write_lock(&icmp_globals.lock);
    462         index = icmp_bind_free_id(echo_data);
    463         if(index < 0){
    464                 free(echo_data);
    465                 fibril_rwlock_write_unlock(&icmp_globals.lock);
    466                 return index;
    467         }else{
    468                 id = echo_data->identifier;
    469                 fibril_rwlock_write_unlock(&icmp_globals.lock);
    470                 // return the echo data identifier as the ICMP phone
    471                 return id;
    472         }
    473 }
    474 
    475451int icmp_initialize(async_client_conn_t client_connection){
    476452        ERROR_DECLARE;
     
    485461        icmp_replies_initialize(&icmp_globals.replies);
    486462        icmp_echo_data_initialize(&icmp_globals.echo_data);
    487         icmp_globals.ip_phone = ip_bind_service(SERVICE_IP, IPPROTO_ICMP, SERVICE_ICMP, client_connection, icmp_received_msg);
     463        icmp_globals.ip_phone = ip_bind_service(SERVICE_IP, IPPROTO_ICMP, SERVICE_ICMP, client_connection);
    488464        if(icmp_globals.ip_phone < 0){
    489465                return icmp_globals.ip_phone;
  • uspace/srv/net/tl/icmp/icmp.h

    rb278b4e r10056483  
    4040#include <fibril_synch.h>
    4141
    42 #include <icmp_codes.h>
     42#include <net/icmp_codes.h>
    4343#include <adt/int_map.h>
    4444#include <icmp_header.h>
     
    6767
    6868/** Echo specific data map.
    69  *  The bundle module gets an identifier of the assigned echo specific data while connecting.
    7069 *  The identifier is used in the future semi-remote calls instead of the ICMP phone.
    7170 */
  • uspace/srv/net/tl/tcp/tcp.c

    rb278b4e r10056483  
    260260            ICMP_CONNECT_TIMEOUT);
    261261        tcp_globals.ip_phone = ip_bind_service(SERVICE_IP, IPPROTO_TCP,
    262             SERVICE_TCP, client_connection, tcp_received_msg);
     262            SERVICE_TCP, client_connection);
    263263        if (tcp_globals.ip_phone < 0)
    264264                return tcp_globals.ip_phone;
  • uspace/srv/net/tl/udp/udp.c

    rb278b4e r10056483  
    241241            ICMP_CONNECT_TIMEOUT);
    242242        udp_globals.ip_phone = ip_bind_service(SERVICE_IP, IPPROTO_UDP,
    243             SERVICE_UDP, client_connection, udp_received_msg);
     243            SERVICE_UDP, client_connection);
    244244        if (udp_globals.ip_phone < 0)
    245245                return udp_globals.ip_phone;
Note: See TracChangeset for help on using the changeset viewer.