Prusa MINI Firmware overview
Main Page
Modules
Classes
Files
File List
File Members
icmp.h
Go to the documentation of this file.
1
/**
2
* @file
3
* ICMP API
4
*/
5
6
/*
7
* Copyright (c) 2001-2004 Swedish Institute of Computer Science.
8
* All rights reserved.
9
*
10
* Redistribution and use in source and binary forms, with or without modification,
11
* are permitted provided that the following conditions are met:
12
*
13
* 1. Redistributions of source code must retain the above copyright notice,
14
* this list of conditions and the following disclaimer.
15
* 2. Redistributions in binary form must reproduce the above copyright notice,
16
* this list of conditions and the following disclaimer in the documentation
17
* and/or other materials provided with the distribution.
18
* 3. The name of the author may not be used to endorse or promote products
19
* derived from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
22
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
30
* OF SUCH DAMAGE.
31
*
32
* This file is part of the lwIP TCP/IP stack.
33
*
34
* Author: Adam Dunkels <adam@sics.se>
35
*
36
*/
37
#ifndef LWIP_HDR_ICMP_H
38
#define LWIP_HDR_ICMP_H
39
40
#include "
lwip/opt.h
"
41
#include "
lwip/pbuf.h
"
42
#include "
lwip/ip_addr.h
"
43
#include "
lwip/netif.h
"
44
#include "
lwip/prot/icmp.h
"
45
46
#if LWIP_IPV6 && LWIP_ICMP6
47
#include "
lwip/icmp6.h
"
48
#endif
49
50
#ifdef __cplusplus
51
extern
"C"
{
52
#endif
53
54
/** ICMP destination unreachable codes */
55
enum
icmp_dur_type
{
56
/** net unreachable */
57
ICMP_DUR_NET
= 0,
58
/** host unreachable */
59
ICMP_DUR_HOST
= 1,
60
/** protocol unreachable */
61
ICMP_DUR_PROTO
= 2,
62
/** port unreachable */
63
ICMP_DUR_PORT
= 3,
64
/** fragmentation needed and DF set */
65
ICMP_DUR_FRAG
= 4,
66
/** source route failed */
67
ICMP_DUR_SR
= 5
68
};
69
70
/** ICMP time exceeded codes */
71
enum
icmp_te_type
{
72
/** time to live exceeded in transit */
73
ICMP_TE_TTL
= 0,
74
/** fragment reassembly time exceeded */
75
ICMP_TE_FRAG
= 1
76
};
77
78
#if LWIP_IPV4 && LWIP_ICMP
/* don't build if not configured for use in lwipopts.h */
79
80
void
icmp_input(
struct
pbuf
*p,
struct
netif
*inp);
81
void
icmp_dest_unreach(
struct
pbuf
*p,
enum
icmp_dur_type
t);
82
void
icmp_time_exceeded(
struct
pbuf
*p,
enum
icmp_te_type
t);
83
84
#endif
/* LWIP_IPV4 && LWIP_ICMP */
85
86
#if LWIP_IPV4 && LWIP_IPV6
87
#if LWIP_ICMP && LWIP_ICMP6
88
#define icmp_port_unreach(isipv6, pbuf) ((isipv6) ? \
89
icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT) : \
90
icmp_dest_unreach(pbuf, ICMP_DUR_PORT))
91
#elif LWIP_ICMP
92
#define icmp_port_unreach(isipv6, pbuf) do{ if(!(isipv6)) { icmp_dest_unreach(pbuf, ICMP_DUR_PORT);}}while(0)
93
#elif LWIP_ICMP6
94
#define icmp_port_unreach(isipv6, pbuf) do{ if(isipv6) { icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT);}}while(0)
95
#else
96
#define icmp_port_unreach(isipv6, pbuf)
97
#endif
98
#elif LWIP_IPV6 && LWIP_ICMP6
99
#define icmp_port_unreach(isipv6, pbuf) icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT)
100
#elif LWIP_IPV4 && LWIP_ICMP
101
#define icmp_port_unreach(isipv6, pbuf) icmp_dest_unreach(pbuf, ICMP_DUR_PORT)
102
#else
/* (LWIP_IPV6 && LWIP_ICMP6) || (LWIP_IPV4 && LWIP_ICMP) */
103
#define icmp_port_unreach(isipv6, pbuf)
104
#endif
/* (LWIP_IPV6 && LWIP_ICMP6) || (LWIP_IPV4 && LWIP_ICMP) LWIP_IPV4*/
105
106
#ifdef __cplusplus
107
}
108
#endif
109
110
#endif
/* LWIP_HDR_ICMP_H */
opt.h
ICMP_TE_TTL
Definition:
icmp.h:73
pbuf.h
ICMP_DUR_SR
Definition:
icmp.h:67
ICMP_DUR_NET
Definition:
icmp.h:57
icmp_dur_type
icmp_dur_type
Definition:
icmp.h:55
icmp6.h
netif.h
ICMP_DUR_FRAG
Definition:
icmp.h:65
ICMP_DUR_PROTO
Definition:
icmp.h:61
netif
Definition:
netif.h:225
ICMP_DUR_PORT
Definition:
icmp.h:63
icmp_te_type
icmp_te_type
Definition:
icmp.h:71
ICMP_TE_FRAG
Definition:
icmp.h:75
ICMP_DUR_HOST
Definition:
icmp.h:59
icmp.h
pbuf
Definition:
pbuf.h:142
ip_addr.h
Prusa-Firmware-Buddy-Private1
lib
Middlewares
Third_Party
LwIP
src
include
lwip
icmp.h
Generated by
1.8.16