source: mainline/uspace/lib/socket/include/icmp_messages.h@ 849ed54

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

Networking work:
Split the networking stack into end-user library (libsocket) and two helper libraries (libnet and libnetif).
Don't use over-the-hand compiling and linking, but rather separation of conserns.
There might be still some issues and the non-modular networking architecture is currently broken, but this will be fixed soon.

  • Property mode set to 100644
File size: 3.9 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 icmp
30 * @{
31 */
32
33/** @file
34 * ICMP module messages.
35 * @see icmp_interface.h
36 */
37
38#ifndef __NET_ICMP_MESSAGES__
39#define __NET_ICMP_MESSAGES__
40
41#include <ipc/ipc.h>
42#include <sys/types.h>
43
44#include <icmp_codes.h>
45#include <net_messages.h>
46
47/** ICMP module messages.
48 */
49typedef enum{
50 /** Sends echo request.
51 * @see icmp_echo()
52 */
53 NET_ICMP_ECHO = NET_ICMP_FIRST,
54 /** Sends destination unreachable error message.
55 * @see icmp_destination_unreachable_msg()
56 */
57 NET_ICMP_DEST_UNREACH,
58 /** Sends source quench error message.
59 * @see icmp_source_quench_msg()
60 */
61 NET_ICMP_SOURCE_QUENCH,
62 /** Sends time exceeded error message.
63 * @see icmp_time_exceeded_msg()
64 */
65 NET_ICMP_TIME_EXCEEDED,
66 /** Sends parameter problem error message.
67 * @see icmp_parameter_problem_msg()
68 */
69 NET_ICMP_PARAMETERPROB,
70 /** Initializes new connection.
71 */
72 NET_ICMP_INIT
73} icmp_messages;
74
75/** @name ICMP specific message parameters definitions
76 */
77/*@{*/
78
79/** Returns the ICMP code message parameter.
80 * @param[in] call The message call structure.
81 */
82#define ICMP_GET_CODE(call) \
83 ({icmp_code_t code = (icmp_code_t) IPC_GET_ARG1(*call); code;})
84
85/** Returns the ICMP link MTU message parameter.
86 * @param[in] call The message call structure.
87 */
88#define ICMP_GET_MTU(call) \
89 ({icmp_param_t mtu = (icmp_param_t) IPC_GET_ARG3(*call); mtu;})
90
91/** Returns the pointer message parameter.
92 * @param[in] call The message call structure.
93 */
94#define ICMP_GET_POINTER(call) \
95 ({icmp_param_t pointer = (icmp_param_t) IPC_GET_ARG3(*call); pointer;})
96
97/** Returns the size message parameter.
98 * @param[in] call The message call structure.
99 */
100#define ICMP_GET_SIZE(call) \
101 ({size_t size = (size_t) IPC_GET_ARG1(call); size;})
102
103/** Returns the timeout message parameter.
104 * @param[in] call The message call structure.
105 */
106#define ICMP_GET_TIMEOUT(call) \
107 (({suseconds_t timeout = (suseconds_t) IPC_GET_ARG2(call); timeout;}))
108
109/** Returns the time to live message parameter.
110 * @param[in] call The message call structure.
111 */
112#define ICMP_GET_TTL(call) \
113 ({ip_ttl_t ttl = (ip_ttl_t) IPC_GET_ARG3(call); ttl;})
114
115/** Returns the type of service message parameter.
116 * @param[in] call The message call structure.
117 */
118#define ICMP_GET_TOS(call) \
119 ({ip_tos_t tos = (ip_tos_t) IPC_GET_ARG4(call); tos;})
120
121/** Returns the dont fragment message parameter.
122 * @param[in] call The message call structure.
123 */
124#define ICMP_GET_DONT_FRAGMENT(call) \
125 ({int dont_fragment = (int) IPC_GET_ARG5(call); dont_fragment;})
126
127/*@}*/
128
129#endif
130
131/** @}
132 */
Note: See TracBrowser for help on using the repository browser.