26
26
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
/** @addtogroup libnet
33
#ifndef __NET_ICMP_INTERFACE_H__
34
#define __NET_ICMP_INTERFACE_H__
33
#ifndef LIBNET_ICMP_REMOTE_H_
34
#define LIBNET_ICMP_REMOTE_H_
36
#include <net/socket_codes.h>
36
37
#include <sys/types.h>
38
#include <net_device.h>
39
#include <net/device.h>
39
40
#include <adt/measured_strings.h>
40
#include <packet/packet.h>
43
#include <socket_codes.h>
44
#include <icmp_codes.h>
45
#include <icmp_common.h>
41
#include <net/packet.h>
43
#include <net/ip_codes.h>
44
#include <net/icmp_codes.h>
45
#include <net/icmp_common.h>
47
47
/** @name ICMP module interface
48
* This interface is used by other modules.
48
* This interface is used by other modules.
52
/** Sends the Destination Unreachable error notification packet.
53
* Beginning of the packet is sent as the notification packet data.
54
* The source and the destination addresses should be set in the original packet.
55
* @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
56
* @param[in] code The error specific code.
57
* @param[in] mtu The error MTU value.
58
* @param[in] packet The original packet.
59
* @returns EOK on success.
60
* @returns EPERM if the ICMP error notifications are disabled.
61
* @returns ENOMEM if there is not enough memory left.
63
extern int icmp_destination_unreachable_msg(int icmp_phone, icmp_code_t code, icmp_param_t mtu, packet_t packet);
65
/** Sends the Source Quench error notification packet.
66
* Beginning of the packet is sent as the notification packet data.
67
* The source and the destination addresses should be set in the original packet.
68
* @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
69
* @param[in] packet The original packet.
70
* @returns EOK on success.
71
* @returns EPERM if the ICMP error notifications are disabled.
72
* @returns ENOMEM if there is not enough memory left.
74
extern int icmp_source_quench_msg(int icmp_phone, packet_t packet);
76
/** Sends the Time Exceeded error notification packet.
77
* Beginning of the packet is sent as the notification packet data.
78
* The source and the destination addresses should be set in the original packet.
79
* @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
80
* @param[in] code The error specific code.
81
* @param[in] packet The original packet.
82
* @returns EOK on success.
83
* @returns EPERM if the ICMP error notifications are disabled.
84
* @returns ENOMEM if there is not enough memory left.
86
extern int icmp_time_exceeded_msg(int icmp_phone, icmp_code_t code, packet_t packet);
88
/** Sends the Parameter Problem error notification packet.
89
* Beginning of the packet is sent as the notification packet data.
90
* The source and the destination addresses should be set in the original packet.
91
* @param[in] icmp_phone The ICMP module phone used for (semi)remote calls.
92
* @param[in] code The error specific code.
93
* @param[in] pointer The problematic parameter offset.
94
* @param[in] packet The original packet.
95
* @returns EOK on success.
96
* @returns EPERM if the ICMP error notifications are disabled.
97
* @returns ENOMEM if there is not enough memory left.
99
extern int icmp_parameter_problem_msg(int icmp_phone, icmp_code_t code, icmp_param_t pointer, packet_t packet);
52
extern int icmp_destination_unreachable_msg(int, icmp_code_t, icmp_param_t,
54
extern int icmp_source_quench_msg(int, packet_t *);
55
extern int icmp_time_exceeded_msg(int, icmp_code_t, packet_t *);
56
extern int icmp_parameter_problem_msg(int, icmp_code_t, icmp_param_t,