~jakub/helenos/ia64-revival

« back to all changes in this revision

Viewing changes to uspace/srv/net/nil/nildummy/nildummy_module.c

  • Committer: Jakub Jermar
  • Date: 2011-04-13 14:45:41 UTC
  • mfrom: (527.1.397 main-clone)
  • Revision ID: jakub@jermar.eu-20110413144541-x0j3r1zxqhsljx1o
MergeĀ mainlineĀ changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (c) 2009 Lukas Mejdrech
3
 
 * All rights reserved.
4
 
 *
5
 
 * Redistribution and use in source and binary forms, with or without
6
 
 * modification, are permitted provided that the following conditions
7
 
 * are met:
8
 
 *
9
 
 * - Redistributions of source code must retain the above copyright
10
 
 *   notice, this list of conditions and the following disclaimer.
11
 
 * - Redistributions in binary form must reproduce the above copyright
12
 
 *   notice, this list of conditions and the following disclaimer in the
13
 
 *   documentation and/or other materials provided with the distribution.
14
 
 * - The name of the author may not be used to endorse or promote products
15
 
 *   derived from this software without specific prior written permission.
16
 
 *
17
 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18
 
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19
 
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20
 
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21
 
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22
 
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
 
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
 
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26
 
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 
 */
28
 
 
29
 
/** @addtogroup nildummy
30
 
 * @{
31
 
 */
32
 
 
33
 
/** @file
34
 
 *  Dummy network interface layer module stub.
35
 
 *  @see module.c
36
 
 */
37
 
 
38
 
#include <async.h>
39
 
#include <stdio.h>
40
 
 
41
 
#include <ipc/ipc.h>
42
 
#include <ipc/services.h>
43
 
 
44
 
#include <net_err.h>
45
 
#include <net_modules.h>
46
 
#include <net_interface.h>
47
 
#include <packet/packet.h>
48
 
#include <nil_local.h>
49
 
 
50
 
#include "nildummy.h"
51
 
 
52
 
/** Start the dummy nil module.
53
 
 *
54
 
 * Initialize the client connection serving function, initialize
55
 
 * the module, register the module service and start the async
56
 
 * manager, processing IPC messages in an infinite loop.
57
 
 *
58
 
 * @param[in] client_connection The client connection processing
59
 
 *                              function. The module skeleton propagates
60
 
 *                              its own one.
61
 
 *
62
 
 * @return EOK on success.
63
 
 * @return Other error codes as defined for the pm_init() function.
64
 
 * @return Other error codes as defined for the nil_initialize() function.
65
 
 * @return Other error codes as defined for the REGISTER_ME() macro function.
66
 
 *
67
 
 */
68
 
int nil_module_start_standalone(async_client_conn_t client_connection)
69
 
{
70
 
        ERROR_DECLARE;
71
 
        
72
 
        async_set_client_connection(client_connection);
73
 
        int net_phone = net_connect_module(SERVICE_NETWORKING);
74
 
        ERROR_PROPAGATE(pm_init());
75
 
        
76
 
        ipcarg_t phonehash;
77
 
        if (ERROR_OCCURRED(nil_initialize(net_phone))
78
 
            || ERROR_OCCURRED(REGISTER_ME(SERVICE_NILDUMMY, &phonehash))){
79
 
                pm_destroy();
80
 
                return ERROR_CODE;
81
 
        }
82
 
        
83
 
        async_manager();
84
 
        
85
 
        pm_destroy();
86
 
        return EOK;
87
 
}
88
 
 
89
 
/** Pass the parameters to the module specific nil_message() function.
90
 
 *
91
 
 * @param[in]  name         Module name.
92
 
 * @param[in]  callid       The message identifier.
93
 
 * @param[in]  call         The message parameters.
94
 
 * @param[out] answer       The message answer parameters.
95
 
 * @param[out] answer_count The last parameter for the actual answer
96
 
 *                          in the answer parameter.
97
 
 *
98
 
 * @return EOK on success.
99
 
 * @return ENOTSUP if the message is not known.
100
 
 * @return Other error codes as defined for each specific
101
 
 *          module message function.
102
 
 *
103
 
 */
104
 
int nil_module_message_standalone(const char *name, ipc_callid_t callid,
105
 
    ipc_call_t *call, ipc_call_t *answer, int *answer_count)
106
 
{
107
 
        return nil_message_standalone(name, callid, call, answer, answer_count);
108
 
}
109
 
 
110
 
/** @}
111
 
 */