1
2
3
4 #define ICMP_ECHOREPLY 0
5 #define ICMP_DEST_UNREACH 3
6 #define ICMP_SOURCE_QUENCH 4
7 #define ICMP_REDIRECT 5
8 #define ICMP_ECHO 8
9 #define ICMP_TIME_EXCEEDED 11
10 #define ICMP_PARAMETERPROB 12
11 #define ICMP_TIMESTAMP 13
12 #define ICMP_TIMESTAMPREPLY 14
13 #define ICMP_INFO_REQUEST 15
14 #define ICMP_INFO_REPLY 16
15
16
17
18
19 #define ICMP_NET_UNREACH 0
20 #define ICMP_HOST_UNREACH 1
21 #define ICMP_PROT_UNREACH 2
22 #define ICMP_PORT_UNREACH 3
23 #define ICMP_FRAG_NNEDED 4
24 #define ICMP_SR_FAILED 5
25 #define ICMP_NET_UNKNOWN 6
26 #define ICMP_HOST_UNKNOWN 7
27 #define ICMP_HOST_ISOLATED 8
28 #define ICMP_NET_ANO 9
29 #define ICMP_HOST_ANO 10
30 #define ICMP_NET_UNR_TOS 11
31 #define ICMP_HOST_UNR_TOS 12
32
33
34 struct icmp_header
35 {
36 unsigned char type;
37 unsigned char code;
38 unsigned short checksum;
39 union
40 {
41 struct
42 {
43 unsigned short id;
44 unsigned short sequence;
45 } echo;
46 unsigned long gateway;
47 } un;
48 };
49
50 struct icmp_err
51 {
52 int errno;
53 unsigned fatal:1;
54 };
55
56 extern struct icmp_err icmp_err_convert[];
57
58 int
59 icmp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
60 unsigned long daddr, unsigned short len,
61 unsigned long saddr, int redo, struct ip_protocol *protocol);
62
63 void
64 icmp_reply (struct sk_buff *skb_in, int type, int code, struct device *dev);