]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/ipfilter/ipsend/.OLD/ip_compat.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / ipfilter / ipsend / .OLD / ip_compat.h
1 /*      $FreeBSD$       */
2
3 /*
4  * (C)opyright 1995 by Darren Reed.
5  *
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 ?
9  *
10  * @(#)ip_compat.h      1.2 12/7/95
11  */
12
13 /*
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.
17  */
18 #ifndef ICMP_UNREACH
19 # define        ICMP_UNREACH    ICMP_DEST_UNREACH
20 #endif
21 #ifndef ICMP_SOURCEQUENCH
22 # define        ICMP_SOURCEQUENCH       ICMP_SOURCE_QUENCH
23 #endif
24 #ifndef ICMP_TIMXCEED
25 # define        ICMP_TIMXCEED   ICMP_TIME_EXCEEDED
26 #endif
27 #ifndef ICMP_PARAMPROB
28 # define        ICMP_PARAMPROB  ICMP_PARAMETERPROB
29 #endif
30 #ifndef IPVERSION
31 # define        IPVERSION       4
32 #endif
33 #ifndef IPOPT_MINOFF
34 # define        IPOPT_MINOFF    4
35 #endif
36 #ifndef IPOPT_COPIED
37 # define        IPOPT_COPIED(x) ((x)&0x80)
38 #endif
39 #ifndef IPOPT_EOL
40 # define        IPOPT_EOL       0
41 #endif
42 #ifndef IPOPT_NOP
43 # define        IPOPT_NOP       1
44 #endif
45 #ifndef IP_MF
46 # define        IP_MF   ((u_short)0x2000)
47 #endif
48 #ifndef ETHERTYPE_IP
49 # define        ETHERTYPE_IP    ((u_short)0x0800)
50 #endif
51 #ifndef TH_FIN
52 # define        TH_FIN  0x01
53 #endif
54 #ifndef TH_SYN
55 # define        TH_SYN  0x02
56 #endif
57 #ifndef TH_RST
58 # define        TH_RST  0x04
59 #endif
60 #ifndef TH_PUSH
61 # define        TH_PUSH 0x08
62 #endif
63 #ifndef TH_ACK
64 # define        TH_ACK  0x10
65 #endif
66 #ifndef TH_URG
67 # define        TH_URG  0x20
68 #endif
69 #ifndef IPOPT_EOL
70 # define        IPOPT_EOL       0
71 #endif
72 #ifndef IPOPT_NOP
73 # define        IPOPT_NOP       1
74 #endif
75 #ifndef IPOPT_RR
76 # define        IPOPT_RR        7
77 #endif
78 #ifndef IPOPT_TS
79 # define        IPOPT_TS        68
80 #endif
81 #ifndef IPOPT_SECURITY
82 # define        IPOPT_SECURITY  130
83 #endif
84 #ifndef IPOPT_LSRR
85 # define        IPOPT_LSRR      131
86 #endif
87 #ifndef IPOPT_SATID
88 # define        IPOPT_SATID     136
89 #endif
90 #ifndef IPOPT_SSRR
91 # define        IPOPT_SSRR      137
92 #endif
93 #ifndef IPOPT_SECUR_UNCLASS
94 # define        IPOPT_SECUR_UNCLASS     ((u_short)0x0000)
95 #endif
96 #ifndef IPOPT_SECUR_CONFID
97 # define        IPOPT_SECUR_CONFID      ((u_short)0xf135)
98 #endif
99 #ifndef IPOPT_SECUR_EFTO
100 # define        IPOPT_SECUR_EFTO        ((u_short)0x789a)
101 #endif
102 #ifndef IPOPT_SECUR_MMMM
103 # define        IPOPT_SECUR_MMMM        ((u_short)0xbc4d)
104 #endif
105 #ifndef IPOPT_SECUR_RESTR
106 # define        IPOPT_SECUR_RESTR       ((u_short)0xaf13)
107 #endif
108 #ifndef IPOPT_SECUR_SECRET
109 # define        IPOPT_SECUR_SECRET      ((u_short)0xd788)
110 #endif
111 #ifndef IPOPT_SECUR_TOPSECRET
112 # define        IPOPT_SECUR_TOPSECRET   ((u_short)0x6bc5)
113 #endif
114
115 #ifdef linux
116 # if LINUX < 0200
117 #  define       icmp    icmphdr
118 #  define       icmp_type       type
119 #  define       icmp_code       code
120 # endif
121
122 /*
123  * From /usr/include/netinet/ip_var.h
124  * !%@#!$@# linux...
125  */
126 struct ipovly {
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 */
133 };
134
135 typedef struct  {
136         __u16   th_sport;
137         __u16   th_dport;
138         __u32   th_seq;
139         __u32   th_ack;
140 # if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) ||\
141     defined(vax)
142         __u8    th_res:4;
143         __u8    th_off:4;
144 #else
145         __u8    th_off:4;
146         __u8    th_res:4;
147 #endif
148         __u8    th_flags;
149         __u16   th_win;
150         __u16   th_sum;
151         __u16   th_urp;
152 } tcphdr_t;
153
154 typedef struct  {
155         __u16   uh_sport;
156         __u16   uh_dport;
157         __s16   uh_ulen;
158         __u16   uh_sum;
159 } udphdr_t;
160
161 typedef struct  {
162 # if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) ||\
163     defined(vax)
164         __u8    ip_hl:4;
165         __u8    ip_v:4;
166 # else
167         __u8    ip_hl:4;
168         __u8    ip_v:4;
169 # endif
170         __u8    ip_tos;
171         __u16   ip_len;
172         __u16   ip_id;
173         __u16   ip_off;
174         __u8    ip_ttl;
175         __u8    ip_p;
176         __u16   ip_sum;
177         struct  in_addr ip_src;
178         struct  in_addr ip_dst;
179 } ip_t;
180
181 typedef struct  {
182         __u8    ether_dhost[6];
183         __u8    ether_shost[6];
184         __u16   ether_type;
185 } ether_header_t;
186
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 */
191         union {
192                 u_char ih_pptr;                 /* ICMP_PARAMPROB */
193                 struct in_addr ih_gwaddr;       /* ICMP_REDIRECT */
194                 struct ih_idseq {
195                         n_short icd_id;
196                         n_short icd_seq;
197                 } ih_idseq;
198                 int ih_void;
199         } icmp_hun;
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
205         union {
206                 struct id_ts {
207                         n_time its_otime;
208                         n_time its_rtime;
209                         n_time its_ttime;
210                 } id_ts;
211                 struct id_ip  {
212                         ip_t idi_ip;
213                         /* options and then 64 bits of data */
214                 } id_ip;
215                 u_long  id_mask;
216                 char    id_data[1];
217         } icmp_dun;
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
224 } icmphdr_t;
225
226 # define        bcopy(a,b,c)    memmove(b,a,c)
227 # define        bcmp(a,b,c)     memcmp(a,b,c)
228
229 # define        ifnet   device
230
231 #else
232
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;
237
238 #endif
239
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)
244 #endif