4 * (C)opyright 1995 by Darren Reed.
6 * This code may be freely distributed as long as it retains this notice
7 * and is not changed in any way. The author accepts no responsibility
8 * for the use of this software. I hate legaleese, don't you ?
10 * @(#)ip_compat.h 1.2 12/7/95
14 * These #ifdef's are here mainly for linux, but who knows, they may
15 * not be in other places or maybe one day linux will grow up and some
16 * of these will turn up there too.
19 # define ICMP_UNREACH ICMP_DEST_UNREACH
21 #ifndef ICMP_SOURCEQUENCH
22 # define ICMP_SOURCEQUENCH ICMP_SOURCE_QUENCH
25 # define ICMP_TIMXCEED ICMP_TIME_EXCEEDED
27 #ifndef ICMP_PARAMPROB
28 # define ICMP_PARAMPROB ICMP_PARAMETERPROB
34 # define IPOPT_MINOFF 4
37 # define IPOPT_COPIED(x) ((x)&0x80)
46 # define IP_MF ((u_short)0x2000)
49 # define ETHERTYPE_IP ((u_short)0x0800)
81 #ifndef IPOPT_SECURITY
82 # define IPOPT_SECURITY 130
85 # define IPOPT_LSRR 131
88 # define IPOPT_SATID 136
91 # define IPOPT_SSRR 137
93 #ifndef IPOPT_SECUR_UNCLASS
94 # define IPOPT_SECUR_UNCLASS ((u_short)0x0000)
96 #ifndef IPOPT_SECUR_CONFID
97 # define IPOPT_SECUR_CONFID ((u_short)0xf135)
99 #ifndef IPOPT_SECUR_EFTO
100 # define IPOPT_SECUR_EFTO ((u_short)0x789a)
102 #ifndef IPOPT_SECUR_MMMM
103 # define IPOPT_SECUR_MMMM ((u_short)0xbc4d)
105 #ifndef IPOPT_SECUR_RESTR
106 # define IPOPT_SECUR_RESTR ((u_short)0xaf13)
108 #ifndef IPOPT_SECUR_SECRET
109 # define IPOPT_SECUR_SECRET ((u_short)0xd788)
111 #ifndef IPOPT_SECUR_TOPSECRET
112 # define IPOPT_SECUR_TOPSECRET ((u_short)0x6bc5)
117 # define icmp icmphdr
118 # define icmp_type type
119 # define icmp_code code
123 * From /usr/include/netinet/ip_var.h
127 caddr_t ih_next, ih_prev; /* for protocol sequence q's */
128 u_char ih_x1; /* (unused) */
129 u_char ih_pr; /* protocol */
130 short ih_len; /* protocol length */
131 struct in_addr ih_src; /* source internet address */
132 struct in_addr ih_dst; /* destination internet address */
140 # if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) ||\
162 # if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) ||\
177 struct in_addr ip_src;
178 struct in_addr ip_dst;
187 typedef struct icmp {
188 u_char icmp_type; /* type of message, see below */
189 u_char icmp_code; /* type sub code */
190 u_short icmp_cksum; /* ones complement cksum of struct */
192 u_char ih_pptr; /* ICMP_PARAMPROB */
193 struct in_addr ih_gwaddr; /* ICMP_REDIRECT */
200 #define icmp_pptr icmp_hun.ih_pptr
201 #define icmp_gwaddr icmp_hun.ih_gwaddr
202 #define icmp_id icmp_hun.ih_idseq.icd_id
203 #define icmp_seq icmp_hun.ih_idseq.icd_seq
204 #define icmp_void icmp_hun.ih_void
213 /* options and then 64 bits of data */
218 #define icmp_otime icmp_dun.id_ts.its_otime
219 #define icmp_rtime icmp_dun.id_ts.its_rtime
220 #define icmp_ttime icmp_dun.id_ts.its_ttime
221 #define icmp_ip icmp_dun.id_ip.idi_ip
222 #define icmp_mask icmp_dun.id_mask
223 #define icmp_data icmp_dun.id_data
226 # define bcopy(a,b,c) memmove(b,a,c)
227 # define bcmp(a,b,c) memcmp(a,b,c)
229 # define ifnet device
233 typedef struct udphdr udphdr_t;
234 typedef struct tcphdr tcphdr_t;
235 typedef struct ip ip_t;
236 typedef struct ether_header ether_header_t;
240 #if defined(__SVR4) || defined(__svr4__)
241 # define bcopy(a,b,c) memmove(b,a,c)
242 # define bcmp(a,b,c) memcmp(a,b,c)
243 # define bzero(a,b) memset(a,0,b)