-rw-r--r-- | shared-code/ip_icmp.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/shared-code/ip_icmp.h b/shared-code/ip_icmp.h new file mode 100644 index 0000000..acaf7e9 --- a/dev/null +++ b/shared-code/ip_icmp.h | |||
@@ -0,0 +1,91 @@ | |||
1 | #ifndef IP_ICMPHEADER | ||
2 | |||
3 | #define IP_ICMPHEADER | ||
4 | |||
5 | struct icmp { | ||
6 | BYTE icmp_type; | ||
7 | BYTE icmp_code; | ||
8 | WORD icmp_cksum; | ||
9 | WORD icmp_id; | ||
10 | WORD icmp_seq; | ||
11 | char icmp_data[1]; | ||
12 | }; | ||
13 | |||
14 | #define SIZE_ICMP_HDR 8 | ||
15 | #define SIZE_TIME_DATA 8 | ||
16 | |||
17 | struct ip { | ||
18 | BYTE ip_hl:4, /* header length */ | ||
19 | ip_v:4; /* version */ | ||
20 | BYTE ip_tos; /* type of service */ | ||
21 | short ip_len; /* total length */ | ||
22 | u_short ip_id; /* identification */ | ||
23 | short ip_off; /* fragment offset field */ | ||
24 | BYTE ip_ttl; /* time to live */ | ||
25 | BYTE ip_p; /* protocol */ | ||
26 | u_short ip_sum; /* checksum */ | ||
27 | struct in_addr ip_src,ip_dst; /* source and dest address */ | ||
28 | }; | ||
29 | |||
30 | #define ICMP_ECHOREPLY 0 /* echo reply */ | ||
31 | #define ICMP_UNREACH 3 /* dest unreachable, codes: */ | ||
32 | #define ICMP_UNREACH_NET 0 /* bad net */ | ||
33 | #define ICMP_UNREACH_HOST 1 /* bad host */ | ||
34 | #define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ | ||
35 | #define ICMP_UNREACH_PORT 3 /* bad port */ | ||
36 | #define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ | ||
37 | #define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ | ||
38 | #define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ | ||
39 | #define ICMP_REDIRECT 5 /* shorter route, codes: */ | ||
40 | #define ICMP_REDIRECT_NET 0 /* for network */ | ||
41 | #define ICMP_REDIRECT_HOST 1 /* for host */ | ||
42 | #define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ | ||
43 | #define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ | ||
44 | #define ICMP_ECHO 8 /* echo service */ | ||
45 | #define ICMP_TIMXCEED 11 /* time exceeded, code: */ | ||
46 | #define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ | ||
47 | #define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ | ||
48 | #define ICMP_PARAMPROB 12 /* ip header bad */ | ||
49 | #define ICMP_TSTAMP 13 /* timestamp request */ | ||
50 | #define ICMP_TSTAMPREPLY 14 /* timestamp reply */ | ||
51 | #define ICMP_IREQ 15 /* information request */ | ||
52 | #define ICMP_IREQREPLY 16 /* information reply */ | ||
53 | #define ICMP_MASKREQ 17 /* address mask request */ | ||
54 | #define ICMP_MASKREPLY 18 /* address mask reply */ | ||
55 | |||
56 | #define ICMP_MAXTYPE 18 | ||
57 | |||
58 | #define ICMP_MINLEN 8 /* abs minimum */ | ||
59 | #define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */ | ||
60 | #define ICMP_MASKLEN 12 /* address mask */ | ||
61 | #define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ | ||
62 | #define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) | ||
63 | |||
64 | #define STNORM 0 | ||
65 | |||
66 | /* Definition of the lowest telnet byte following an IAC byte */ | ||
67 | #define LOW_TEL_OPT 236 | ||
68 | |||
69 | #define TEL_EOF 236 | ||
70 | #define SUSP 237 | ||
71 | #define ABORT 238 | ||
72 | |||
73 | #define SE 240 | ||
74 | #define NOP 241 | ||
75 | #define DM 242 | ||
76 | #define BREAK 243 | ||
77 | #define IP 244 | ||
78 | #define AO 245 | ||
79 | #define AYT 246 | ||
80 | #define EC 247 | ||
81 | #define EL 248 | ||
82 | #define GOAHEAD 249 | ||
83 | #define SB 250 | ||
84 | #define WILL 251 | ||
85 | #define WONT 252 | ||
86 | #define DO 253 | ||
87 | #define DONT 254 | ||
88 | #define IAC 255 | ||
89 | |||
90 | #endif | ||
91 | |||