Ignore:
File:
1 edited

Legend:

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

    rd8f95529 r614d065  
    2828
    2929/** @addtogroup icmp
    30  * @{
     30 *  @{
    3131 */
    3232
    3333/** @file
    34  * ICMP standalone module implementation.
    35  * Contains skeleton module functions mapping.
    36  * The functions are used by the module skeleton as module specific entry points.
    37  * @see module.c
     34 *  ICMP standalone module implementation.
     35 *  Contains skeleton module functions mapping.
     36 *  The functions are used by the module skeleton as module specific entry points.
     37 *  @see module.c
    3838 */
    39 
    40 #include "icmp.h"
    41 #include "icmp_module.h"
    4239
    4340#include <async.h>
    4441#include <stdio.h>
    45 #include <errno.h>
     42#include <err.h>
    4643#include <ipc/ipc.h>
    4744#include <ipc/services.h>
     
    5047#include <net/packet.h>
    5148#include <net_interface.h>
    52 
    5349#include <tl_local.h>
    5450
    55 /** ICMP module global data. */
    56 extern icmp_globals_t icmp_globals;
     51#include "icmp.h"
     52#include "icmp_module.h"
    5753
    58 int tl_module_start_standalone(async_client_conn_t client_connection)
    59 {
     54/** ICMP module global data.
     55 */
     56extern icmp_globals_t   icmp_globals;
     57
     58/** Starts the ICMP module.
     59 *  Initializes the client connection serving function, initializes the module, registers the module service and starts the async manager, processing IPC messages in an infinite loop.
     60 *  @param[in] client_connection The client connection processing function. The module skeleton propagates its own one.
     61 *  @returns EOK on successful module termination.
     62 *  @returns Other error codes as defined for the arp_initialize() function.
     63 *  @returns Other error codes as defined for the REGISTER_ME() macro function.
     64 */
     65int tl_module_start_standalone(async_client_conn_t client_connection){
     66        ERROR_DECLARE;
     67
    6068        ipcarg_t phonehash;
    61         int rc;
    6269
    6370        async_set_client_connection(client_connection);
    6471        icmp_globals.net_phone = net_connect_module();
    65         if (icmp_globals.net_phone < 0)
     72        if(icmp_globals.net_phone < 0){
    6673                return icmp_globals.net_phone;
    67 
    68         rc = pm_init();
    69         if (rc != EOK)
    70                 return rc;
    71        
    72         rc = icmp_initialize(client_connection);
    73         if (rc != EOK)
    74                 goto out;
    75 
    76         rc = REGISTER_ME(SERVICE_ICMP, &phonehash);
    77         if (rc != EOK)
    78                 goto out;
     74        }
     75        ERROR_PROPAGATE(pm_init());
     76        if(ERROR_OCCURRED(icmp_initialize(client_connection))
     77                || ERROR_OCCURRED(REGISTER_ME(SERVICE_ICMP, &phonehash))){
     78                pm_destroy();
     79                return ERROR_CODE;
     80        }
    7981
    8082        async_manager();
    8183
    82 out:
    8384        pm_destroy();
    84         return rc;
     85        return EOK;
    8586}
    8687
    87 int
    88 tl_module_message_standalone(ipc_callid_t callid, ipc_call_t *call,
    89     ipc_call_t *answer, int *answer_count)
    90 {
     88/** Processes the ICMP message.
     89 *  @param[in] callid The message identifier.
     90 *  @param[in] call The message parameters.
     91 *  @param[out] answer The message answer parameters.
     92 *  @param[out] answer_count The last parameter for the actual answer in the answer parameter.
     93 *  @returns EOK on success.
     94 *  @returns Other error codes as defined for the icmp_message() function.
     95 */
     96int tl_module_message_standalone(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count){
    9197        return icmp_message_standalone(callid, call, answer, answer_count);
    9298}
Note: See TracChangeset for help on using the changeset viewer.