conversion of ino_t from u_short to u_long (making dir entries 32 bytes each)
[unix-history] / usr / src / sys / netinet / ip_icmp.h
CommitLineData
2b4b57cd 1/* ip_icmp.h 4.2 81/11/18 */
9fc9afc2
BJ
2
3/*
4 * Interface Control Message Protocol Definitions.
5 * Per RFC 792, September 1981.
6 */
7
8/*
9 * Structure of an icmp header.
10 */
11struct icmp {
12 u_char icmp_type; /* type of message, see below */
13 u_char icmp_code; /* type sub code */
14 u_short icmp_cksum; /* ones complement cksum of struct */
15 union {
16 u_char ih_pptr; /* ICMP_PARAMPROB */
2b4b57cd 17 struct in_addr ih_gwaddr; /* ICMP_REDIRECT */
9fc9afc2
BJ
18 struct ih_idseq {
19 n_short icd_id;
20 n_short icd_seq;
21 } ih_idseq;
22 } icmp_hun;
23#define icmp_pptr icmp_hun.ih_pptr
24#define icmp_gwaddr icmp_hun.ih_gwaddr
25#define icmp_id icmp_hun.ih_idseq.icd_id
26#define icmp_seq icmp_hun.ih_idseq.icd_seq
27 union {
28 struct id_ts {
29 n_time its_otime;
30 n_time its_rtime;
31 n_time its_ttime;
32 } id_ts;
33 struct id_ip {
34 struct ip idi_ip;
35 /* options and then 64 bits of data */
36 } id_ip;
37 } icmp_dun;
38#define icmp_otime icmp_dun.id_ts.its_otime
39#define icmp_rtime icmp_dun.id_ts.its_rtime
40#define icmp_ttime icmp_dun.id_ts.its_ttime
41#define icmp_ip icmp_dun.id_ip.idi_ip
42};
43
44/*
45 * Lower bounds on packet lengths for various types.
46 * For the error advice packets must first insure that the
47 * packet is large enought to contain the returned ip header.
48 * Only then can we do the check to see if 64 bits of packet
49 * data have been returned, since we need to check the returned
50 * ip header length.
51 */
52#define ICMP_MINLEN 8 /* abs minimum */
53#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */
54#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */
55#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_len << 2) + 8)
56 /* N.B.: must separately check that ip_hl >= 5 */
57
58/*
59 * Definition of type and code field values.
60 */
61#define ICMP_ECHOREPLY 0 /* echo reply */
62#define ICMP_UNREACH 3 /* dest unreachable, codes: */
63#define ICMP_UNREACH_NET 0 /* bad net */
64#define ICMP_UNREACH_HOST 1 /* bad host */
65#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */
66#define ICMP_UNREACH_PORT 3 /* bad port */
67#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */
68#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */
69#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */
70#define ICMP_REDIRECT 5 /* shorter route, codes: */
71#define ICMP_REDIRECT_NET 0 /* for network */
72#define ICMP_REDIRECT_HOST 1 /* for host */
73#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */
74#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */
75#define ICMP_ECHO 8 /* echo service */
76#define ICMP_TIMXCEED 11 /* time exceeded, code: */
77#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */
78#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */
79#define ICMP_TSTAMP 13 /* timestamp request */
80#define ICMP_TSTAMPREPLY 14 /* timestamp reply */
81#define ICMP_IREQ 15 /* information request */
82#define ICMP_IREQREPLY 16 /* information reply */
83#define ICMP_PARAMPROB 12 /* ip header bad */