source: mainline/uspace/lib/c/include/ipc/icmp.h@ 753bca3

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 753bca3 was 753bca3, checked in by Jakub Jermar <jakub@…>, 15 years ago

Move ICMP client stuff from libsocket to standard library.

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