source: mainline/uspace/lib/c/include/ipc/ip.h@ 09696b54

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 09696b54 was 64d2b10, checked in by Martin Decky <martin@…>, 14 years ago

libc: do not intermix low-level IPC methods with async framework methods

  • Property mode set to 100644
File size: 3.3 KB
Line 
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 libc
30 * @{
31 */
32
33/** @file
34 * IP module messages.
35 * @see ip_interface.h
36 */
37
38#ifndef LIBC_IP_MESSAGES_H_
39#define LIBC_IP_MESSAGES_H_
40
41#include <ipc/net.h>
42#include <net/in.h>
43#include <net/ip_codes.h>
44
45/** IP module messages. */
46typedef enum {
47 /** New device message.
48 * @see ip_device_req()
49 */
50 NET_IP_DEVICE = NET_IP_FIRST,
51
52 /** Adds the routing entry.
53 * @see ip_add_route()
54 */
55 NET_IP_ADD_ROUTE,
56
57 /** Gets the actual route information.
58 * @see ip_get_route()
59 */
60 NET_IP_GET_ROUTE,
61
62 /** Processes the received error notification.
63 * @see ip_received_error_msg()
64 */
65 NET_IP_RECEIVED_ERROR,
66
67 /** Sets the default gateway.
68 * @see ip_set_default_gateway()
69 */
70 NET_IP_SET_GATEWAY,
71
72 /** Packet size message.
73 * @see ip_packet_size_req()
74 */
75 NET_IP_PACKET_SPACE,
76
77 /** Packet send message.
78 * @see ip_send_msg()
79 */
80 NET_IP_SEND
81} ip_messages;
82
83/** @name IP specific message parameters definitions */
84/*@{*/
85
86/** Return the address message parameter.
87 *
88 * @param[in] call Message call structure.
89 *
90 */
91#define IP_GET_ADDRESS(call) \
92 ({ \
93 in_addr_t addr; \
94 addr.s_addr = IPC_GET_ARG3(call); \
95 addr; \
96 })
97
98/** Return the gateway message parameter.
99 *
100 * @param[in] call Message call structure.
101 *
102 */
103#define IP_GET_GATEWAY(call) \
104 ({ \
105 in_addr_t addr; \
106 addr.s_addr = IPC_GET_ARG2(call); \
107 addr; \
108 })
109
110/** Set the header length in the message answer.
111 *
112 * @param[out] answer Message answer structure.
113 *
114 */
115#define IP_SET_HEADERLEN(answer, value) IPC_SET_ARG2(answer, (sysarg_t) (value))
116
117/** Return the network mask message parameter.
118 *
119 * @param[in] call Message call structure.
120 *
121 */
122#define IP_GET_NETMASK(call) \
123 ({ \
124 in_addr_t addr; \
125 addr.s_addr = IPC_GET_ARG4(call); \
126 addr; \
127 })
128
129/** Return the protocol message parameter.
130 *
131 * @param[in] call Message call structure.
132 *
133 */
134#define IP_GET_PROTOCOL(call) ((ip_protocol_t) IPC_GET_ARG1(call))
135
136/*@}*/
137
138#endif
139
140/** @}
141 */
Note: See TracBrowser for help on using the repository browser.