xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/linux/icmp.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /*
2*53ee8cc1Swenshuai.xi  * INET		An implementation of the TCP/IP protocol suite for the LINUX
3*53ee8cc1Swenshuai.xi  *		operating system.  INET is implemented using the  BSD Socket
4*53ee8cc1Swenshuai.xi  *		interface as the means of communication with the user level.
5*53ee8cc1Swenshuai.xi  *
6*53ee8cc1Swenshuai.xi  *		Definitions for the ICMP protocol.
7*53ee8cc1Swenshuai.xi  *
8*53ee8cc1Swenshuai.xi  * Version:	@(#)icmp.h	1.0.3	04/28/93
9*53ee8cc1Swenshuai.xi  *
10*53ee8cc1Swenshuai.xi  * Author:	Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
11*53ee8cc1Swenshuai.xi  *
12*53ee8cc1Swenshuai.xi  *		This program is free software; you can redistribute it and/or
13*53ee8cc1Swenshuai.xi  *		modify it under the terms of the GNU General Public License
14*53ee8cc1Swenshuai.xi  *		as published by the Free Software Foundation; either version
15*53ee8cc1Swenshuai.xi  *		2 of the License, or (at your option) any later version.
16*53ee8cc1Swenshuai.xi  */
17*53ee8cc1Swenshuai.xi #ifndef _LINUX_ICMP_H
18*53ee8cc1Swenshuai.xi #define	_LINUX_ICMP_H
19*53ee8cc1Swenshuai.xi 
20*53ee8cc1Swenshuai.xi #include <linux/types.h>
21*53ee8cc1Swenshuai.xi 
22*53ee8cc1Swenshuai.xi #define ICMP_ECHOREPLY		0	/* Echo Reply			*/
23*53ee8cc1Swenshuai.xi #define ICMP_DEST_UNREACH	3	/* Destination Unreachable	*/
24*53ee8cc1Swenshuai.xi #define ICMP_SOURCE_QUENCH	4	/* Source Quench		*/
25*53ee8cc1Swenshuai.xi #define ICMP_REDIRECT		5	/* Redirect (change route)	*/
26*53ee8cc1Swenshuai.xi #define ICMP_ECHO		8	/* Echo Request			*/
27*53ee8cc1Swenshuai.xi #define ICMP_TIME_EXCEEDED	11	/* Time Exceeded		*/
28*53ee8cc1Swenshuai.xi #define ICMP_PARAMETERPROB	12	/* Parameter Problem		*/
29*53ee8cc1Swenshuai.xi #define ICMP_TIMESTAMP		13	/* Timestamp Request		*/
30*53ee8cc1Swenshuai.xi #define ICMP_TIMESTAMPREPLY	14	/* Timestamp Reply		*/
31*53ee8cc1Swenshuai.xi #define ICMP_INFO_REQUEST	15	/* Information Request		*/
32*53ee8cc1Swenshuai.xi #define ICMP_INFO_REPLY		16	/* Information Reply		*/
33*53ee8cc1Swenshuai.xi #define ICMP_ADDRESS		17	/* Address Mask Request		*/
34*53ee8cc1Swenshuai.xi #define ICMP_ADDRESSREPLY	18	/* Address Mask Reply		*/
35*53ee8cc1Swenshuai.xi #define NR_ICMP_TYPES		18
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi 
38*53ee8cc1Swenshuai.xi /* Codes for UNREACH. */
39*53ee8cc1Swenshuai.xi #define ICMP_NET_UNREACH	0	/* Network Unreachable		*/
40*53ee8cc1Swenshuai.xi #define ICMP_HOST_UNREACH	1	/* Host Unreachable		*/
41*53ee8cc1Swenshuai.xi #define ICMP_PROT_UNREACH	2	/* Protocol Unreachable		*/
42*53ee8cc1Swenshuai.xi #define ICMP_PORT_UNREACH	3	/* Port Unreachable		*/
43*53ee8cc1Swenshuai.xi #define ICMP_FRAG_NEEDED	4	/* Fragmentation Needed/DF set	*/
44*53ee8cc1Swenshuai.xi #define ICMP_SR_FAILED		5	/* Source Route failed		*/
45*53ee8cc1Swenshuai.xi #define ICMP_NET_UNKNOWN	6
46*53ee8cc1Swenshuai.xi #define ICMP_HOST_UNKNOWN	7
47*53ee8cc1Swenshuai.xi #define ICMP_HOST_ISOLATED	8
48*53ee8cc1Swenshuai.xi #define ICMP_NET_ANO		9
49*53ee8cc1Swenshuai.xi #define ICMP_HOST_ANO		10
50*53ee8cc1Swenshuai.xi #define ICMP_NET_UNR_TOS	11
51*53ee8cc1Swenshuai.xi #define ICMP_HOST_UNR_TOS	12
52*53ee8cc1Swenshuai.xi #define ICMP_PKT_FILTERED	13	/* Packet filtered */
53*53ee8cc1Swenshuai.xi #define ICMP_PREC_VIOLATION	14	/* Precedence violation */
54*53ee8cc1Swenshuai.xi #define ICMP_PREC_CUTOFF	15	/* Precedence cut off */
55*53ee8cc1Swenshuai.xi #define NR_ICMP_UNREACH		15	/* instead of hardcoding immediate value */
56*53ee8cc1Swenshuai.xi 
57*53ee8cc1Swenshuai.xi /* Codes for REDIRECT. */
58*53ee8cc1Swenshuai.xi #define ICMP_REDIR_NET		0	/* Redirect Net			*/
59*53ee8cc1Swenshuai.xi #define ICMP_REDIR_HOST		1	/* Redirect Host		*/
60*53ee8cc1Swenshuai.xi #define ICMP_REDIR_NETTOS	2	/* Redirect Net for TOS		*/
61*53ee8cc1Swenshuai.xi #define ICMP_REDIR_HOSTTOS	3	/* Redirect Host for TOS	*/
62*53ee8cc1Swenshuai.xi 
63*53ee8cc1Swenshuai.xi /* Codes for TIME_EXCEEDED. */
64*53ee8cc1Swenshuai.xi #define ICMP_EXC_TTL		0	/* TTL count exceeded		*/
65*53ee8cc1Swenshuai.xi #define ICMP_EXC_FRAGTIME	1	/* Fragment Reass time exceeded	*/
66*53ee8cc1Swenshuai.xi 
67*53ee8cc1Swenshuai.xi 
68*53ee8cc1Swenshuai.xi struct icmphdr {
69*53ee8cc1Swenshuai.xi   __u8		type;
70*53ee8cc1Swenshuai.xi   __u8		code;
71*53ee8cc1Swenshuai.xi   __sum16	checksum;
72*53ee8cc1Swenshuai.xi   union {
73*53ee8cc1Swenshuai.xi 	struct {
74*53ee8cc1Swenshuai.xi 		__be16	id;
75*53ee8cc1Swenshuai.xi 		__be16	sequence;
76*53ee8cc1Swenshuai.xi 	} echo;
77*53ee8cc1Swenshuai.xi 	__be32	gateway;
78*53ee8cc1Swenshuai.xi 	struct {
79*53ee8cc1Swenshuai.xi 		__be16	__unused;
80*53ee8cc1Swenshuai.xi 		__be16	mtu;
81*53ee8cc1Swenshuai.xi 	} frag;
82*53ee8cc1Swenshuai.xi   } un;
83*53ee8cc1Swenshuai.xi };
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi 
86*53ee8cc1Swenshuai.xi /*
87*53ee8cc1Swenshuai.xi  *	constants for (set|get)sockopt
88*53ee8cc1Swenshuai.xi  */
89*53ee8cc1Swenshuai.xi 
90*53ee8cc1Swenshuai.xi #define ICMP_FILTER			1
91*53ee8cc1Swenshuai.xi 
92*53ee8cc1Swenshuai.xi struct icmp_filter {
93*53ee8cc1Swenshuai.xi 	__u32		data;
94*53ee8cc1Swenshuai.xi };
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi 
97*53ee8cc1Swenshuai.xi #endif	/* _LINUX_ICMP_H */
98