xref: /xnu-8796.101.5/bsd/netinet/ip_compat.h (revision aca3beaa3dfbd42498b42c5e5ce20a938e6554e5)
1*aca3beaaSApple OSS Distributions /*
2*aca3beaaSApple OSS Distributions  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3*aca3beaaSApple OSS Distributions  *
4*aca3beaaSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*aca3beaaSApple OSS Distributions  *
6*aca3beaaSApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*aca3beaaSApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*aca3beaaSApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*aca3beaaSApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*aca3beaaSApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*aca3beaaSApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*aca3beaaSApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*aca3beaaSApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*aca3beaaSApple OSS Distributions  *
15*aca3beaaSApple OSS Distributions  * Please obtain a copy of the License at
16*aca3beaaSApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*aca3beaaSApple OSS Distributions  *
18*aca3beaaSApple OSS Distributions  * The Original Code and all software distributed under the License are
19*aca3beaaSApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*aca3beaaSApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*aca3beaaSApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*aca3beaaSApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*aca3beaaSApple OSS Distributions  * Please see the License for the specific language governing rights and
24*aca3beaaSApple OSS Distributions  * limitations under the License.
25*aca3beaaSApple OSS Distributions  *
26*aca3beaaSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*aca3beaaSApple OSS Distributions  */
28*aca3beaaSApple OSS Distributions /*
29*aca3beaaSApple OSS Distributions  * Copyright (C) 1993-1997 by Darren Reed.
30*aca3beaaSApple OSS Distributions  *
31*aca3beaaSApple OSS Distributions  * Redistribution and use in source and binary forms are permitted
32*aca3beaaSApple OSS Distributions  * provided that this notice is preserved and due credit is given
33*aca3beaaSApple OSS Distributions  * to the original author and the contributors.
34*aca3beaaSApple OSS Distributions  *
35*aca3beaaSApple OSS Distributions  * @(#)ip_compat.h	1.8 1/14/96
36*aca3beaaSApple OSS Distributions  */
37*aca3beaaSApple OSS Distributions #ifndef DRIVERKIT
38*aca3beaaSApple OSS Distributions #include <sys/appleapiopts.h>
39*aca3beaaSApple OSS Distributions #endif /* DRIVERKIT */
40*aca3beaaSApple OSS Distributions 
41*aca3beaaSApple OSS Distributions #if 0
42*aca3beaaSApple OSS Distributions 
43*aca3beaaSApple OSS Distributions #ifndef __IP_COMPAT_H__
44*aca3beaaSApple OSS Distributions #define __IP_COMPAT_H__
45*aca3beaaSApple OSS Distributions 
46*aca3beaaSApple OSS Distributions #ifndef __STDC__
47*aca3beaaSApple OSS Distributions # define        const
48*aca3beaaSApple OSS Distributions #endif
49*aca3beaaSApple OSS Distributions 
50*aca3beaaSApple OSS Distributions #ifndef SOLARIS
51*aca3beaaSApple OSS Distributions #define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4)))
52*aca3beaaSApple OSS Distributions #endif
53*aca3beaaSApple OSS Distributions 
54*aca3beaaSApple OSS Distributions #if defined(_KERNEL) && !defined(KERNEL)
55*aca3beaaSApple OSS Distributions # define        KERNEL
56*aca3beaaSApple OSS Distributions #endif
57*aca3beaaSApple OSS Distributions #if defined(KERNEL) && !defined(_KERNEL)
58*aca3beaaSApple OSS Distributions # define        _KERNEL
59*aca3beaaSApple OSS Distributions #endif
60*aca3beaaSApple OSS Distributions #if!defined(__KERNEL__) && defined(KERNEL)
61*aca3beaaSApple OSS Distributions # define        __KERNEL__
62*aca3beaaSApple OSS Distributions #endif
63*aca3beaaSApple OSS Distributions 
64*aca3beaaSApple OSS Distributions #if defined(__SVR4) || defined(__svr4__) || defined(__sgi)
65*aca3beaaSApple OSS Distributions #define index   strchr
66*aca3beaaSApple OSS Distributions # if !defined(_KERNEL)
67*aca3beaaSApple OSS Distributions #  define       bzero(a, b)      memset(a,0,b)
68*aca3beaaSApple OSS Distributions #  define       bcmp            memcmp
69*aca3beaaSApple OSS Distributions #  define       bcopy(a, b, c)    memmove(b,a,c)
70*aca3beaaSApple OSS Distributions # endif
71*aca3beaaSApple OSS Distributions #endif
72*aca3beaaSApple OSS Distributions 
73*aca3beaaSApple OSS Distributions struct  ether_addr {
74*aca3beaaSApple OSS Distributions 	u_char  ether_addr_octet[6];
75*aca3beaaSApple OSS Distributions };
76*aca3beaaSApple OSS Distributions 
77*aca3beaaSApple OSS Distributions #ifdef  linux
78*aca3beaaSApple OSS Distributions # include <sys/sysmacros.h>
79*aca3beaaSApple OSS Distributions #endif
80*aca3beaaSApple OSS Distributions #if     SOLARIS
81*aca3beaaSApple OSS Distributions # define        MTYPE(m)        ((m)->b_datap->db_type)
82*aca3beaaSApple OSS Distributions # include       <sys/ioccom.h>
83*aca3beaaSApple OSS Distributions # include       <sys/sysmacros.h>
84*aca3beaaSApple OSS Distributions # include       <sys/kmem.h>
85*aca3beaaSApple OSS Distributions /*
86*aca3beaaSApple OSS Distributions  * because Solaris 2 defines these in two places :-/
87*aca3beaaSApple OSS Distributions  */
88*aca3beaaSApple OSS Distributions # undef IPOPT_EOL
89*aca3beaaSApple OSS Distributions # undef IPOPT_NOP
90*aca3beaaSApple OSS Distributions # undef IPOPT_LSRR
91*aca3beaaSApple OSS Distributions # undef IPOPT_RR
92*aca3beaaSApple OSS Distributions # undef IPOPT_SSRR
93*aca3beaaSApple OSS Distributions # ifndef        _KERNEL
94*aca3beaaSApple OSS Distributions #  define       _KERNEL
95*aca3beaaSApple OSS Distributions #  undef        RES_INIT
96*aca3beaaSApple OSS Distributions #  include <inet/common.h>
97*aca3beaaSApple OSS Distributions #  include <inet/ip.h>
98*aca3beaaSApple OSS Distributions #  include <inet/ip_ire.h>
99*aca3beaaSApple OSS Distributions #  undef        _KERNEL
100*aca3beaaSApple OSS Distributions # else /* _KERNEL */
101*aca3beaaSApple OSS Distributions #  include <inet/common.h>
102*aca3beaaSApple OSS Distributions #  include <inet/ip.h>
103*aca3beaaSApple OSS Distributions #  include <inet/ip_ire.h>
104*aca3beaaSApple OSS Distributions # endif /* _KERNEL */
105*aca3beaaSApple OSS Distributions #endif /* SOLARIS */
106*aca3beaaSApple OSS Distributions #define IPMINLEN(i, h)  ((i)->ip_len >= ((i)->ip_hl * 4 + sizeof(struct h)))
107*aca3beaaSApple OSS Distributions 
108*aca3beaaSApple OSS Distributions #ifndef IP_OFFMASK
109*aca3beaaSApple OSS Distributions #define IP_OFFMASK      0x1fff
110*aca3beaaSApple OSS Distributions #endif
111*aca3beaaSApple OSS Distributions 
112*aca3beaaSApple OSS Distributions #if     BSD > 199306
113*aca3beaaSApple OSS Distributions # define        USE_QUAD_T
114*aca3beaaSApple OSS Distributions # define        U_QUAD_T        u_quad_t
115*aca3beaaSApple OSS Distributions # define        QUAD_T          quad_t
116*aca3beaaSApple OSS Distributions #else /* BSD > 199306 */
117*aca3beaaSApple OSS Distributions # define        U_QUAD_T        u_int32_t
118*aca3beaaSApple OSS Distributions # define        QUAD_T          long
119*aca3beaaSApple OSS Distributions #endif /* BSD > 199306 */
120*aca3beaaSApple OSS Distributions 
121*aca3beaaSApple OSS Distributions /*
122*aca3beaaSApple OSS Distributions  * These operating systems already take care of the problem for us.
123*aca3beaaSApple OSS Distributions  */
124*aca3beaaSApple OSS Distributions #if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || \
125*aca3beaaSApple OSS Distributions         defined(__sgi)
126*aca3beaaSApple OSS Distributions typedef u_int32_t       u_32_t;
127*aca3beaaSApple OSS Distributions #else
128*aca3beaaSApple OSS Distributions /*
129*aca3beaaSApple OSS Distributions  * Really, any arch where sizeof(long) != sizeof(int).
130*aca3beaaSApple OSS Distributions  */
131*aca3beaaSApple OSS Distributions # if defined(__alpha__) || defined(__alpha)
132*aca3beaaSApple OSS Distributions typedef unsigned int    u_32_t;
133*aca3beaaSApple OSS Distributions # else
134*aca3beaaSApple OSS Distributions typedef u_int32_t   u_32_t;
135*aca3beaaSApple OSS Distributions # endif
136*aca3beaaSApple OSS Distributions #endif /* __NetBSD__ || __OpenBSD__ || __FreeBSD__ || __sgi */
137*aca3beaaSApple OSS Distributions 
138*aca3beaaSApple OSS Distributions #ifndef MAX
139*aca3beaaSApple OSS Distributions #define MAX(a, b)        (((a) > (b)) ? (a) : (b))
140*aca3beaaSApple OSS Distributions #endif
141*aca3beaaSApple OSS Distributions 
142*aca3beaaSApple OSS Distributions /*
143*aca3beaaSApple OSS Distributions  * Security Options for Intenet Protocol (IPSO) as defined in RFC 1108.
144*aca3beaaSApple OSS Distributions  *
145*aca3beaaSApple OSS Distributions  * Basic Option
146*aca3beaaSApple OSS Distributions  *
147*aca3beaaSApple OSS Distributions  * 00000001   -   (Reserved 4)
148*aca3beaaSApple OSS Distributions  * 00111101   -   Top Secret
149*aca3beaaSApple OSS Distributions  * 01011010   -   Secret
150*aca3beaaSApple OSS Distributions  * 10010110   -   Confidential
151*aca3beaaSApple OSS Distributions  * 01100110   -   (Reserved 3)
152*aca3beaaSApple OSS Distributions  * 11001100   -   (Reserved 2)
153*aca3beaaSApple OSS Distributions  * 10101011   -   Unclassified
154*aca3beaaSApple OSS Distributions  * 11110001   -   (Reserved 1)
155*aca3beaaSApple OSS Distributions  */
156*aca3beaaSApple OSS Distributions #define IPSO_CLASS_RES4         0x01
157*aca3beaaSApple OSS Distributions #define IPSO_CLASS_TOPS         0x3d
158*aca3beaaSApple OSS Distributions #define IPSO_CLASS_SECR         0x5a
159*aca3beaaSApple OSS Distributions #define IPSO_CLASS_CONF         0x96
160*aca3beaaSApple OSS Distributions #define IPSO_CLASS_RES3         0x66
161*aca3beaaSApple OSS Distributions #define IPSO_CLASS_RES2         0xcc
162*aca3beaaSApple OSS Distributions #define IPSO_CLASS_UNCL         0xab
163*aca3beaaSApple OSS Distributions #define IPSO_CLASS_RES1         0xf1
164*aca3beaaSApple OSS Distributions 
165*aca3beaaSApple OSS Distributions #define IPSO_AUTH_GENSER        0x80
166*aca3beaaSApple OSS Distributions #define IPSO_AUTH_ESI           0x40
167*aca3beaaSApple OSS Distributions #define IPSO_AUTH_SCI           0x20
168*aca3beaaSApple OSS Distributions #define IPSO_AUTH_NSA           0x10
169*aca3beaaSApple OSS Distributions #define IPSO_AUTH_DOE           0x08
170*aca3beaaSApple OSS Distributions #define IPSO_AUTH_UN            0x06
171*aca3beaaSApple OSS Distributions #define IPSO_AUTH_FTE           0x01
172*aca3beaaSApple OSS Distributions 
173*aca3beaaSApple OSS Distributions /*
174*aca3beaaSApple OSS Distributions  * IP option #defines
175*aca3beaaSApple OSS Distributions  */
176*aca3beaaSApple OSS Distributions /*#define	IPOPT_RR	7 */
177*aca3beaaSApple OSS Distributions #define IPOPT_ZSU       10      /* ZSU */
178*aca3beaaSApple OSS Distributions #define IPOPT_MTUP      11      /* MTUP */
179*aca3beaaSApple OSS Distributions #define IPOPT_MTUR      12      /* MTUR */
180*aca3beaaSApple OSS Distributions #define IPOPT_ENCODE    15      /* ENCODE */
181*aca3beaaSApple OSS Distributions /*#define	IPOPT_TS	68 */
182*aca3beaaSApple OSS Distributions #define IPOPT_TR        82      /* TR */
183*aca3beaaSApple OSS Distributions /*#define	IPOPT_SECURITY	130 */
184*aca3beaaSApple OSS Distributions /*#define	IPOPT_LSRR	131 */
185*aca3beaaSApple OSS Distributions #define IPOPT_E_SEC     133     /* E-SEC */
186*aca3beaaSApple OSS Distributions #define IPOPT_CIPSO     134     /* CIPSO */
187*aca3beaaSApple OSS Distributions /*#define	IPOPT_SATID	136 */
188*aca3beaaSApple OSS Distributions #ifndef IPOPT_SID
189*aca3beaaSApple OSS Distributions # define        IPOPT_SID       IPOPT_SATID
190*aca3beaaSApple OSS Distributions #endif
191*aca3beaaSApple OSS Distributions /*#define	IPOPT_SSRR	137 */
192*aca3beaaSApple OSS Distributions #define IPOPT_ADDEXT    147     /* ADDEXT */
193*aca3beaaSApple OSS Distributions #define IPOPT_VISA      142     /* VISA */
194*aca3beaaSApple OSS Distributions #define IPOPT_IMITD     144     /* IMITD */
195*aca3beaaSApple OSS Distributions #define IPOPT_EIP       145     /* EIP */
196*aca3beaaSApple OSS Distributions #define IPOPT_FINN      205     /* FINN */
197*aca3beaaSApple OSS Distributions 
198*aca3beaaSApple OSS Distributions 
199*aca3beaaSApple OSS Distributions #if defined(__FreeBSD__) && defined(KERNEL)
200*aca3beaaSApple OSS Distributions # if __FreeBSD__ < 3
201*aca3beaaSApple OSS Distributions #  include <machine/spl.h>
202*aca3beaaSApple OSS Distributions # endif
203*aca3beaaSApple OSS Distributions #endif /* __FreeBSD__ && KERNEL */
204*aca3beaaSApple OSS Distributions 
205*aca3beaaSApple OSS Distributions /*
206*aca3beaaSApple OSS Distributions  * Build some macros and #defines to enable the same code to compile anywhere
207*aca3beaaSApple OSS Distributions  * Well, that's the idea, anyway :-)
208*aca3beaaSApple OSS Distributions  */
209*aca3beaaSApple OSS Distributions #ifdef KERNEL
210*aca3beaaSApple OSS Distributions # if SOLARIS
211*aca3beaaSApple OSS Distributions #  define       MUTEX_ENTER(x)  mutex_enter(x)
212*aca3beaaSApple OSS Distributions #  define       MUTEX_EXIT(x)   mutex_exit(x)
213*aca3beaaSApple OSS Distributions #  define       MTOD(m, t)       (t)((m)->b_rptr)
214*aca3beaaSApple OSS Distributions #  define       IRCOPY(a, b, c)   copyin((a), (b), (c))
215*aca3beaaSApple OSS Distributions #  define       IWCOPY(a, b, c)   copyout((a), (b), (c))
216*aca3beaaSApple OSS Distributions #  define       FREE_MB_T(m)    freemsg(m)
217*aca3beaaSApple OSS Distributions #  define       SPL_NET(x)      ;
218*aca3beaaSApple OSS Distributions #  define       SPL_IMP(x)      ;
219*aca3beaaSApple OSS Distributions #  undef        SPL_X
220*aca3beaaSApple OSS Distributions #  define       SPL_X(x)        ;
221*aca3beaaSApple OSS Distributions #  ifdef sparc
222*aca3beaaSApple OSS Distributions #   define      ntohs(x)        (x)
223*aca3beaaSApple OSS Distributions #   define      ntohl(x)        (x)
224*aca3beaaSApple OSS Distributions #   define      htons(x)        (x)
225*aca3beaaSApple OSS Distributions #   define      htonl(x)        (x)
226*aca3beaaSApple OSS Distributions #  endif /* sparc */
227*aca3beaaSApple OSS Distributions #  define       KMALLOC(a, b, c)  (a) = (b)kmem_alloc((c), KM_NOSLEEP)
228*aca3beaaSApple OSS Distributions #  define       GET_MINOR(x)    getminor(x)
229*aca3beaaSApple OSS Distributions typedef struct  qif     {
230*aca3beaaSApple OSS Distributions 	struct  qif     *qf_next;
231*aca3beaaSApple OSS Distributions 	ill_t   *qf_ill;
232*aca3beaaSApple OSS Distributions 	kmutex_t        qf_lock;
233*aca3beaaSApple OSS Distributions 	void    *qf_iptr;
234*aca3beaaSApple OSS Distributions 	void    *qf_optr;
235*aca3beaaSApple OSS Distributions 	queue_t *qf_in;
236*aca3beaaSApple OSS Distributions 	queue_t *qf_out;
237*aca3beaaSApple OSS Distributions 	struct  qinit   *qf_wqinfo;
238*aca3beaaSApple OSS Distributions 	struct  qinit   *qf_rqinfo;
239*aca3beaaSApple OSS Distributions 	struct  qinit   qf_wqinit;
240*aca3beaaSApple OSS Distributions 	struct  qinit   qf_rqinit;
241*aca3beaaSApple OSS Distributions 	mblk_t  *qf_m;  /* These three fields are for passing data up from */
242*aca3beaaSApple OSS Distributions 	queue_t *qf_q;  /* fr_qin and fr_qout to the packet processing. */
243*aca3beaaSApple OSS Distributions 	int     qf_off;
244*aca3beaaSApple OSS Distributions 	int     qf_len; /* this field is used for in ipfr_fastroute */
245*aca3beaaSApple OSS Distributions 	char    qf_name[8];
246*aca3beaaSApple OSS Distributions 	/*
247*aca3beaaSApple OSS Distributions 	 * in case the ILL has disappeared...
248*aca3beaaSApple OSS Distributions 	 */
249*aca3beaaSApple OSS Distributions 	int     qf_hl;  /* header length */
250*aca3beaaSApple OSS Distributions } qif_t;
251*aca3beaaSApple OSS Distributions extern  ill_t   *get_unit(char *);
252*aca3beaaSApple OSS Distributions #  define       GETUNIT(n)      get_unit((n))
253*aca3beaaSApple OSS Distributions # else /* SOLARIS */
254*aca3beaaSApple OSS Distributions #  if defined(__sgi)
255*aca3beaaSApple OSS Distributions #   include <sys/ksynch.h>
256*aca3beaaSApple OSS Distributions #   define      IPF_LOCK_PL     plhi
257*aca3beaaSApple OSS Distributions #   include <sys/sema.h>
258*aca3beaaSApple OSS Distributions #undef kmutex_t
259*aca3beaaSApple OSS Distributions typedef struct {
260*aca3beaaSApple OSS Distributions 	lock_t *l;
261*aca3beaaSApple OSS Distributions 	int pl;
262*aca3beaaSApple OSS Distributions } kmutex_t;
263*aca3beaaSApple OSS Distributions #   define      MUTEX_ENTER(x)  (x)->pl = LOCK((x)->l, IPF_LOCK_PL);
264*aca3beaaSApple OSS Distributions #   define      MUTEX_EXIT(x)   UNLOCK((x)->l, (x)->pl);
265*aca3beaaSApple OSS Distributions #  else /* __sgi */
266*aca3beaaSApple OSS Distributions #   define      MUTEX_ENTER(x)  ;
267*aca3beaaSApple OSS Distributions #   define      MUTEX_EXIT(x)   ;
268*aca3beaaSApple OSS Distributions #  endif /* __sgi */
269*aca3beaaSApple OSS Distributions #  ifndef linux
270*aca3beaaSApple OSS Distributions #   define      FREE_MB_T(m)    m_freem(m)
271*aca3beaaSApple OSS Distributions #   define      MTOD(m, t)       mtod(m,t)
272*aca3beaaSApple OSS Distributions #   define      IRCOPY(a, b, c)   bcopy((a), (b), (c))
273*aca3beaaSApple OSS Distributions #   define      IWCOPY(a, b, c)   bcopy((a), (b), (c))
274*aca3beaaSApple OSS Distributions #  endif /* !linux */
275*aca3beaaSApple OSS Distributions # endif /* SOLARIS */
276*aca3beaaSApple OSS Distributions 
277*aca3beaaSApple OSS Distributions # ifdef sun
278*aca3beaaSApple OSS Distributions #  if !SOLARIS
279*aca3beaaSApple OSS Distributions #   include     <sys/kmem_alloc.h>
280*aca3beaaSApple OSS Distributions #   define      GETUNIT(n)      ifunit((n), IFNAMSIZ)
281*aca3beaaSApple OSS Distributions #  endif
282*aca3beaaSApple OSS Distributions # else
283*aca3beaaSApple OSS Distributions #  ifndef       linux
284*aca3beaaSApple OSS Distributions #   define      GETUNIT(n)      ifunit((n))
285*aca3beaaSApple OSS Distributions #  endif
286*aca3beaaSApple OSS Distributions # endif /* sun */
287*aca3beaaSApple OSS Distributions 
288*aca3beaaSApple OSS Distributions # if defined(sun) && !defined(linux) || defined(__sgi)
289*aca3beaaSApple OSS Distributions #  define       UIOMOVE(a, b, c, d)        uiomove((caddr_t)a,b,c,d)
290*aca3beaaSApple OSS Distributions #  define       SLEEP(id, n)    sleep((id), PZERO+1)
291*aca3beaaSApple OSS Distributions #  define       WAKEUP(id)      wakeup(id)
292*aca3beaaSApple OSS Distributions #  define       KFREE(x)        kmem_free((char *)(x), sizeof(*(x)))
293*aca3beaaSApple OSS Distributions #  define       KFREES(x, s)     kmem_free((char *)(x), (s))
294*aca3beaaSApple OSS Distributions #  if !SOLARIS
295*aca3beaaSApple OSS Distributions extern  void    m_copydata(struct mbuf *, int, int, caddr_t);
296*aca3beaaSApple OSS Distributions extern  void    m_copyback(struct mbuf *, int, int, caddr_t);
297*aca3beaaSApple OSS Distributions #  endif
298*aca3beaaSApple OSS Distributions #  ifdef __sgi
299*aca3beaaSApple OSS Distributions #   include <sys/kmem.h>
300*aca3beaaSApple OSS Distributions #   include <sys/ddi.h>
301*aca3beaaSApple OSS Distributions #   define      KMALLOC(a, b, c)  (a) = (b)kmem_alloc((c), KM_NOSLEEP)
302*aca3beaaSApple OSS Distributions #   define      GET_MINOR(x)    getminor(x)
303*aca3beaaSApple OSS Distributions #  else
304*aca3beaaSApple OSS Distributions #   if !SOLARIS
305*aca3beaaSApple OSS Distributions #    define     KMALLOC(a, b, c)  (a) = (b)new_kmem_alloc((c), KMEM_NOSLEEP)
306*aca3beaaSApple OSS Distributions #   endif /* SOLARIS */
307*aca3beaaSApple OSS Distributions #  endif /* __sgi */
308*aca3beaaSApple OSS Distributions # endif /* sun && !linux */
309*aca3beaaSApple OSS Distributions # ifndef        GET_MINOR
310*aca3beaaSApple OSS Distributions #  define       GET_MINOR(x)    minor(x)
311*aca3beaaSApple OSS Distributions # endif
312*aca3beaaSApple OSS Distributions # if (BSD >= 199306) || defined(__FreeBSD__)
313*aca3beaaSApple OSS Distributions #  include <vm/vm.h>
314*aca3beaaSApple OSS Distributions #  if !defined(__FreeBSD__) || (defined (__FreeBSD__) && __FreeBSD__ >= 3)
315*aca3beaaSApple OSS Distributions #   include <vm/vm_extern.h>
316*aca3beaaSApple OSS Distributions #   include <sys/proc.h>
317*aca3beaaSApple OSS Distributions extern  vm_map_t        kmem_map;
318*aca3beaaSApple OSS Distributions #  else /* !__FreeBSD__ || (__FreeBSD__ && __FreeBSD__>=3) */
319*aca3beaaSApple OSS Distributions #   include <vm/vm_kern.h>
320*aca3beaaSApple OSS Distributions #  endif /* !__FreeBSD__ || (__FreeBSD__ && __FreeBSD__>=3) */
321*aca3beaaSApple OSS Distributions #  ifdef        M_PFIL
322*aca3beaaSApple OSS Distributions #   define      KMALLOC(a, b, c)        MALLOC((a), b, (c), M_PFIL, M_NOWAIT)
323*aca3beaaSApple OSS Distributions #   define      KFREE(x)        FREE((x), M_PFIL)
324*aca3beaaSApple OSS Distributions #   define      KFREES(x, s)     FREE((x), M_PFIL)
325*aca3beaaSApple OSS Distributions #  else
326*aca3beaaSApple OSS Distributions #   define      KMALLOC(a, b, c)        MALLOC((a), b, (c), M_TEMP, M_NOWAIT)
327*aca3beaaSApple OSS Distributions #   define      KFREE(x)        FREE((x), M_TEMP)
328*aca3beaaSApple OSS Distributions #   define      KFREES(x, s)     FREE((x), M_TEMP)
329*aca3beaaSApple OSS Distributions #  endif /* M_PFIL */
330*aca3beaaSApple OSS Distributions #  define       UIOMOVE(a, b, c, d)        uiomove(a,b,d)
331*aca3beaaSApple OSS Distributions #  define       SLEEP(id, n)    tsleep((id), PPAUSE|PCATCH, n, 0)
332*aca3beaaSApple OSS Distributions #  define       WAKEUP(id)      wakeup(id)
333*aca3beaaSApple OSS Distributions # endif /* BSD */
334*aca3beaaSApple OSS Distributions # if defined(NetBSD) && NetBSD <= 1991011 && NetBSD >= 199407
335*aca3beaaSApple OSS Distributions #  define       SPL_NET(x)      x = splsoftnet()
336*aca3beaaSApple OSS Distributions #  define       SPL_X(x)        (void) splx(x)
337*aca3beaaSApple OSS Distributions # else
338*aca3beaaSApple OSS Distributions #  if !SOLARIS && !defined(linux)
339*aca3beaaSApple OSS Distributions #   define      SPL_IMP(x)      ;
340*aca3beaaSApple OSS Distributions #   define      SPL_NET(x)      ;
341*aca3beaaSApple OSS Distributions #   define      SPL_X(x)        ;
342*aca3beaaSApple OSS Distributions #  endif
343*aca3beaaSApple OSS Distributions # endif /* NetBSD && NetBSD <= 1991011 && NetBSD >= 199407 */
344*aca3beaaSApple OSS Distributions # define        PANIC(x, y)      if (x) panic y
345*aca3beaaSApple OSS Distributions #else /* KERNEL */
346*aca3beaaSApple OSS Distributions # define        SLEEP(x, y)      ;
347*aca3beaaSApple OSS Distributions # define        WAKEUP(x)       ;
348*aca3beaaSApple OSS Distributions # define        PANIC(x, y)      ;
349*aca3beaaSApple OSS Distributions # define        MUTEX_ENTER(x)  ;
350*aca3beaaSApple OSS Distributions # define        MUTEX_EXIT(x)   ;
351*aca3beaaSApple OSS Distributions # define        SPL_NET(x)      ;
352*aca3beaaSApple OSS Distributions # define        SPL_IMP(x)      ;
353*aca3beaaSApple OSS Distributions # undef         SPL_X
354*aca3beaaSApple OSS Distributions # define        SPL_X(x)        ;
355*aca3beaaSApple OSS Distributions /*# define	KMALLOC(a,b,c)	(a) = (b)malloc(c) */
356*aca3beaaSApple OSS Distributions # define        KFREE(x)        FREE(x)
357*aca3beaaSApple OSS Distributions # define        KFREES(x, s)     FREE(x)
358*aca3beaaSApple OSS Distributions # define        GETUNIT(x)      get_unit(x)
359*aca3beaaSApple OSS Distributions # define        IRCOPY(a, b, c)   bcopy((a), (b), (c))
360*aca3beaaSApple OSS Distributions # define        IWCOPY(a, b, c)   bcopy((a), (b), (c))
361*aca3beaaSApple OSS Distributions #endif /* KERNEL */
362*aca3beaaSApple OSS Distributions 
363*aca3beaaSApple OSS Distributions #if SOLARIS
364*aca3beaaSApple OSS Distributions typedef mblk_t mb_t;
365*aca3beaaSApple OSS Distributions #else
366*aca3beaaSApple OSS Distributions # ifdef linux
367*aca3beaaSApple OSS Distributions typedef struct sk_buff mb_t;
368*aca3beaaSApple OSS Distributions # else
369*aca3beaaSApple OSS Distributions typedef struct mbuf mb_t;
370*aca3beaaSApple OSS Distributions # endif
371*aca3beaaSApple OSS Distributions #endif /* SOLARIS */
372*aca3beaaSApple OSS Distributions 
373*aca3beaaSApple OSS Distributions #if defined(linux) || defined(__sgi)
374*aca3beaaSApple OSS Distributions /*
375*aca3beaaSApple OSS Distributions  * These #ifdef's are here mainly for linux, but who knows, they may
376*aca3beaaSApple OSS Distributions  * not be in other places or maybe one day linux will grow up and some
377*aca3beaaSApple OSS Distributions  * of these will turn up there too.
378*aca3beaaSApple OSS Distributions  */
379*aca3beaaSApple OSS Distributions #ifndef ICMP_MINLEN
380*aca3beaaSApple OSS Distributions # define        ICMP_MINLEN     8
381*aca3beaaSApple OSS Distributions #endif
382*aca3beaaSApple OSS Distributions #ifndef ICMP_UNREACH
383*aca3beaaSApple OSS Distributions # define        ICMP_UNREACH    ICMP_DEST_UNREACH
384*aca3beaaSApple OSS Distributions #endif
385*aca3beaaSApple OSS Distributions #ifndef ICMP_SOURCEQUENCH
386*aca3beaaSApple OSS Distributions # define        ICMP_SOURCEQUENCH       ICMP_SOURCE_QUENCH
387*aca3beaaSApple OSS Distributions #endif
388*aca3beaaSApple OSS Distributions #ifndef ICMP_TIMXCEED
389*aca3beaaSApple OSS Distributions # define        ICMP_TIMXCEED   ICMP_TIME_EXCEEDED
390*aca3beaaSApple OSS Distributions #endif
391*aca3beaaSApple OSS Distributions #ifndef ICMP_PARAMPROB
392*aca3beaaSApple OSS Distributions # define        ICMP_PARAMPROB  ICMP_PARAMETERPROB
393*aca3beaaSApple OSS Distributions #endif
394*aca3beaaSApple OSS Distributions #ifndef ICMP_TSTAMP
395*aca3beaaSApple OSS Distributions # define        ICMP_TSTAMP     ICMP_TIMESTAMP
396*aca3beaaSApple OSS Distributions #endif
397*aca3beaaSApple OSS Distributions #ifndef ICMP_TSTAMPREPLY
398*aca3beaaSApple OSS Distributions # define        ICMP_TSTAMPREPLY        ICMP_TIMESTAMPREPLY
399*aca3beaaSApple OSS Distributions #endif
400*aca3beaaSApple OSS Distributions #ifndef ICMP_IREQ
401*aca3beaaSApple OSS Distributions # define        ICMP_IREQ       ICMP_INFO_REQUEST
402*aca3beaaSApple OSS Distributions #endif
403*aca3beaaSApple OSS Distributions #ifndef ICMP_IREQREPLY
404*aca3beaaSApple OSS Distributions # define        ICMP_IREQREPLY  ICMP_INFO_REPLY
405*aca3beaaSApple OSS Distributions #endif
406*aca3beaaSApple OSS Distributions #ifndef ICMP_MASKREQ
407*aca3beaaSApple OSS Distributions # define        ICMP_MASKREQ    ICMP_ADDRESS
408*aca3beaaSApple OSS Distributions #endif
409*aca3beaaSApple OSS Distributions #ifndef ICMP_MASKREPLY
410*aca3beaaSApple OSS Distributions # define        ICMP_MASKREPLY  ICMP_ADDRESSREPLY
411*aca3beaaSApple OSS Distributions #endif
412*aca3beaaSApple OSS Distributions #ifndef IPVERSION
413*aca3beaaSApple OSS Distributions # define        IPVERSION       4
414*aca3beaaSApple OSS Distributions #endif
415*aca3beaaSApple OSS Distributions #ifndef IPOPT_MINOFF
416*aca3beaaSApple OSS Distributions # define        IPOPT_MINOFF    4
417*aca3beaaSApple OSS Distributions #endif
418*aca3beaaSApple OSS Distributions #ifndef IPOPT_COPIED
419*aca3beaaSApple OSS Distributions # define        IPOPT_COPIED(x) ((x)&0x80)
420*aca3beaaSApple OSS Distributions #endif
421*aca3beaaSApple OSS Distributions #ifndef IPOPT_EOL
422*aca3beaaSApple OSS Distributions # define        IPOPT_EOL       0
423*aca3beaaSApple OSS Distributions #endif
424*aca3beaaSApple OSS Distributions #ifndef IPOPT_NOP
425*aca3beaaSApple OSS Distributions # define        IPOPT_NOP       1
426*aca3beaaSApple OSS Distributions #endif
427*aca3beaaSApple OSS Distributions #ifndef IP_MF
428*aca3beaaSApple OSS Distributions # define        IP_MF   ((u_short)0x2000)
429*aca3beaaSApple OSS Distributions #endif
430*aca3beaaSApple OSS Distributions #ifndef ETHERTYPE_IP
431*aca3beaaSApple OSS Distributions # define        ETHERTYPE_IP    ((u_short)0x0800)
432*aca3beaaSApple OSS Distributions #endif
433*aca3beaaSApple OSS Distributions #ifndef TH_FIN
434*aca3beaaSApple OSS Distributions # define        TH_FIN  0x01
435*aca3beaaSApple OSS Distributions #endif
436*aca3beaaSApple OSS Distributions #ifndef TH_SYN
437*aca3beaaSApple OSS Distributions # define        TH_SYN  0x02
438*aca3beaaSApple OSS Distributions #endif
439*aca3beaaSApple OSS Distributions #ifndef TH_RST
440*aca3beaaSApple OSS Distributions # define        TH_RST  0x04
441*aca3beaaSApple OSS Distributions #endif
442*aca3beaaSApple OSS Distributions #ifndef TH_PUSH
443*aca3beaaSApple OSS Distributions # define        TH_PUSH 0x08
444*aca3beaaSApple OSS Distributions #endif
445*aca3beaaSApple OSS Distributions #ifndef TH_ACK
446*aca3beaaSApple OSS Distributions # define        TH_ACK  0x10
447*aca3beaaSApple OSS Distributions #endif
448*aca3beaaSApple OSS Distributions #ifndef TH_URG
449*aca3beaaSApple OSS Distributions # define        TH_URG  0x20
450*aca3beaaSApple OSS Distributions #endif
451*aca3beaaSApple OSS Distributions #ifndef IPOPT_EOL
452*aca3beaaSApple OSS Distributions # define        IPOPT_EOL       0
453*aca3beaaSApple OSS Distributions #endif
454*aca3beaaSApple OSS Distributions #ifndef IPOPT_NOP
455*aca3beaaSApple OSS Distributions # define        IPOPT_NOP       1
456*aca3beaaSApple OSS Distributions #endif
457*aca3beaaSApple OSS Distributions #ifndef IPOPT_RR
458*aca3beaaSApple OSS Distributions # define        IPOPT_RR        7
459*aca3beaaSApple OSS Distributions #endif
460*aca3beaaSApple OSS Distributions #ifndef IPOPT_TS
461*aca3beaaSApple OSS Distributions # define        IPOPT_TS        68
462*aca3beaaSApple OSS Distributions #endif
463*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECURITY
464*aca3beaaSApple OSS Distributions # define        IPOPT_SECURITY  130
465*aca3beaaSApple OSS Distributions #endif
466*aca3beaaSApple OSS Distributions #ifndef IPOPT_LSRR
467*aca3beaaSApple OSS Distributions # define        IPOPT_LSRR      131
468*aca3beaaSApple OSS Distributions #endif
469*aca3beaaSApple OSS Distributions #ifndef IPOPT_SATID
470*aca3beaaSApple OSS Distributions # define        IPOPT_SATID     136
471*aca3beaaSApple OSS Distributions #endif
472*aca3beaaSApple OSS Distributions #ifndef IPOPT_SSRR
473*aca3beaaSApple OSS Distributions # define        IPOPT_SSRR      137
474*aca3beaaSApple OSS Distributions #endif
475*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_UNCLASS
476*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_UNCLASS     ((u_short)0x0000)
477*aca3beaaSApple OSS Distributions #endif
478*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_CONFID
479*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_CONFID      ((u_short)0xf135)
480*aca3beaaSApple OSS Distributions #endif
481*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_EFTO
482*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_EFTO        ((u_short)0x789a)
483*aca3beaaSApple OSS Distributions #endif
484*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_MMMM
485*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_MMMM        ((u_short)0xbc4d)
486*aca3beaaSApple OSS Distributions #endif
487*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_RESTR
488*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_RESTR       ((u_short)0xaf13)
489*aca3beaaSApple OSS Distributions #endif
490*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_SECRET
491*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_SECRET      ((u_short)0xd788)
492*aca3beaaSApple OSS Distributions #endif
493*aca3beaaSApple OSS Distributions #ifndef IPOPT_SECUR_TOPSECRET
494*aca3beaaSApple OSS Distributions # define        IPOPT_SECUR_TOPSECRET   ((u_short)0x6bc5)
495*aca3beaaSApple OSS Distributions #endif
496*aca3beaaSApple OSS Distributions #ifndef IPOPT_OLEN
497*aca3beaaSApple OSS Distributions # define        IPOPT_OLEN      1
498*aca3beaaSApple OSS Distributions #endif
499*aca3beaaSApple OSS Distributions #endif /* linux || __sgi */
500*aca3beaaSApple OSS Distributions 
501*aca3beaaSApple OSS Distributions #ifdef  linux
502*aca3beaaSApple OSS Distributions /*
503*aca3beaaSApple OSS Distributions  * TCP States
504*aca3beaaSApple OSS Distributions  */
505*aca3beaaSApple OSS Distributions #define TCPS_CLOSED             0       /* closed */
506*aca3beaaSApple OSS Distributions #define TCPS_LISTEN             1       /* listening for connection */
507*aca3beaaSApple OSS Distributions #define TCPS_SYN_SENT           2       /* active, have sent syn */
508*aca3beaaSApple OSS Distributions #define TCPS_SYN_RECEIVED       3       /* have send and received syn */
509*aca3beaaSApple OSS Distributions /* states < TCPS_ESTABLISHED are those where connections not established */
510*aca3beaaSApple OSS Distributions #define TCPS_ESTABLISHED        4       /* established */
511*aca3beaaSApple OSS Distributions #define TCPS_CLOSE_WAIT         5       /* rcvd fin, waiting for close */
512*aca3beaaSApple OSS Distributions /* states > TCPS_CLOSE_WAIT are those where user has closed */
513*aca3beaaSApple OSS Distributions #define TCPS_FIN_WAIT_1         6       /* have closed, sent fin */
514*aca3beaaSApple OSS Distributions #define TCPS_CLOSING            7       /* closed xchd FIN; await FIN ACK */
515*aca3beaaSApple OSS Distributions #define TCPS_LAST_ACK           8       /* had fin and close; await FIN ACK */
516*aca3beaaSApple OSS Distributions /* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */
517*aca3beaaSApple OSS Distributions #define TCPS_FIN_WAIT_2         9       /* have closed, fin is acked */
518*aca3beaaSApple OSS Distributions #define TCPS_TIME_WAIT          10      /* in 2*msl quiet wait after close */
519*aca3beaaSApple OSS Distributions 
520*aca3beaaSApple OSS Distributions /*
521*aca3beaaSApple OSS Distributions  * file flags.
522*aca3beaaSApple OSS Distributions  */
523*aca3beaaSApple OSS Distributions #define FWRITE  WRITE
524*aca3beaaSApple OSS Distributions #define FREAD   READ
525*aca3beaaSApple OSS Distributions /*
526*aca3beaaSApple OSS Distributions  * mbuf related problems.
527*aca3beaaSApple OSS Distributions  */
528*aca3beaaSApple OSS Distributions #define mtod(m, t)       (t)((m)->data)
529*aca3beaaSApple OSS Distributions #define m_len           len
530*aca3beaaSApple OSS Distributions #define m_next          next
531*aca3beaaSApple OSS Distributions 
532*aca3beaaSApple OSS Distributions #define IP_DF           0x8000
533*aca3beaaSApple OSS Distributions 
534*aca3beaaSApple OSS Distributions typedef struct  {
535*aca3beaaSApple OSS Distributions 	__u16   th_sport;
536*aca3beaaSApple OSS Distributions 	__u16   th_dport;
537*aca3beaaSApple OSS Distributions 	__u32   th_seq;
538*aca3beaaSApple OSS Distributions 	__u32   th_ack;
539*aca3beaaSApple OSS Distributions # if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) || \
540*aca3beaaSApple OSS Distributions 	defined(vax)
541*aca3beaaSApple OSS Distributions 	__u8    th_res:4;
542*aca3beaaSApple OSS Distributions 	__u8    th_off:4;
543*aca3beaaSApple OSS Distributions #else
544*aca3beaaSApple OSS Distributions 	__u8    th_off:4;
545*aca3beaaSApple OSS Distributions 	__u8    th_res:4;
546*aca3beaaSApple OSS Distributions #endif
547*aca3beaaSApple OSS Distributions 	__u8    th_flags;
548*aca3beaaSApple OSS Distributions 	__u16   th_win;
549*aca3beaaSApple OSS Distributions 	__u16   th_sum;
550*aca3beaaSApple OSS Distributions 	__u16   th_urp;
551*aca3beaaSApple OSS Distributions } tcphdr_t;
552*aca3beaaSApple OSS Distributions 
553*aca3beaaSApple OSS Distributions typedef struct  {
554*aca3beaaSApple OSS Distributions 	__u16   uh_sport;
555*aca3beaaSApple OSS Distributions 	__u16   uh_dport;
556*aca3beaaSApple OSS Distributions 	__u16   uh_ulen;
557*aca3beaaSApple OSS Distributions 	__u16   uh_sum;
558*aca3beaaSApple OSS Distributions } udphdr_t;
559*aca3beaaSApple OSS Distributions 
560*aca3beaaSApple OSS Distributions typedef struct  {
561*aca3beaaSApple OSS Distributions # if defined(__i386__) || defined(__MIPSEL__) || defined(__alpha__) || \
562*aca3beaaSApple OSS Distributions 	defined(vax)
563*aca3beaaSApple OSS Distributions 	__u8    ip_hl:4;
564*aca3beaaSApple OSS Distributions 	__u8    ip_v:4;
565*aca3beaaSApple OSS Distributions # else
566*aca3beaaSApple OSS Distributions 	__u8    ip_hl:4;
567*aca3beaaSApple OSS Distributions 	__u8    ip_v:4;
568*aca3beaaSApple OSS Distributions # endif
569*aca3beaaSApple OSS Distributions 	__u8    ip_tos;
570*aca3beaaSApple OSS Distributions 	__u16   ip_len;
571*aca3beaaSApple OSS Distributions 	__u16   ip_id;
572*aca3beaaSApple OSS Distributions 	__u16   ip_off;
573*aca3beaaSApple OSS Distributions 	__u8    ip_ttl;
574*aca3beaaSApple OSS Distributions 	__u8    ip_p;
575*aca3beaaSApple OSS Distributions 	__u16   ip_sum;
576*aca3beaaSApple OSS Distributions 	struct  in_addr ip_src;
577*aca3beaaSApple OSS Distributions 	struct  in_addr ip_dst;
578*aca3beaaSApple OSS Distributions } ip_t;
579*aca3beaaSApple OSS Distributions 
580*aca3beaaSApple OSS Distributions /*
581*aca3beaaSApple OSS Distributions  * Structure of an icmp header.
582*aca3beaaSApple OSS Distributions  */
583*aca3beaaSApple OSS Distributions typedef struct icmp {
584*aca3beaaSApple OSS Distributions 	u_char  icmp_type;              /* type of message, see below */
585*aca3beaaSApple OSS Distributions 	u_char  icmp_code;              /* type sub code */
586*aca3beaaSApple OSS Distributions 	u_short icmp_cksum;             /* ones complement cksum of struct */
587*aca3beaaSApple OSS Distributions 	union {
588*aca3beaaSApple OSS Distributions 		u_char ih_pptr;                 /* ICMP_PARAMPROB */
589*aca3beaaSApple OSS Distributions 		struct in_addr ih_gwaddr;       /* ICMP_REDIRECT */
590*aca3beaaSApple OSS Distributions 		struct ih_idseq {
591*aca3beaaSApple OSS Distributions 			n_short icd_id;
592*aca3beaaSApple OSS Distributions 			n_short icd_seq;
593*aca3beaaSApple OSS Distributions 		} ih_idseq;
594*aca3beaaSApple OSS Distributions 		int ih_void;
595*aca3beaaSApple OSS Distributions 	} icmp_hun;
596*aca3beaaSApple OSS Distributions # define        icmp_pptr       icmp_hun.ih_pptr
597*aca3beaaSApple OSS Distributions # define        icmp_gwaddr     icmp_hun.ih_gwaddr
598*aca3beaaSApple OSS Distributions # define        icmp_id         icmp_hun.ih_idseq.icd_id
599*aca3beaaSApple OSS Distributions # define        icmp_seq        icmp_hun.ih_idseq.icd_seq
600*aca3beaaSApple OSS Distributions # define        icmp_void       icmp_hun.ih_void
601*aca3beaaSApple OSS Distributions 	union {
602*aca3beaaSApple OSS Distributions 		struct id_ts {
603*aca3beaaSApple OSS Distributions 			n_time its_otime;
604*aca3beaaSApple OSS Distributions 			n_time its_rtime;
605*aca3beaaSApple OSS Distributions 			n_time its_ttime;
606*aca3beaaSApple OSS Distributions 		} id_ts;
607*aca3beaaSApple OSS Distributions 		struct id_ip  {
608*aca3beaaSApple OSS Distributions 			ip_t idi_ip;
609*aca3beaaSApple OSS Distributions 			/* options and then 64 bits of data */
610*aca3beaaSApple OSS Distributions 		} id_ip;
611*aca3beaaSApple OSS Distributions 		u_int32_t       id_mask;
612*aca3beaaSApple OSS Distributions 		char    id_data[1];
613*aca3beaaSApple OSS Distributions 	} icmp_dun;
614*aca3beaaSApple OSS Distributions # define        icmp_otime      icmp_dun.id_ts.its_otime
615*aca3beaaSApple OSS Distributions # define        icmp_rtime      icmp_dun.id_ts.its_rtime
616*aca3beaaSApple OSS Distributions # define        icmp_ttime      icmp_dun.id_ts.its_ttime
617*aca3beaaSApple OSS Distributions # define        icmp_ip         icmp_dun.id_ip.idi_ip
618*aca3beaaSApple OSS Distributions # define        icmp_mask       icmp_dun.id_mask
619*aca3beaaSApple OSS Distributions # define        icmp_data       icmp_dun.id_data
620*aca3beaaSApple OSS Distributions } icmphdr_t;
621*aca3beaaSApple OSS Distributions 
622*aca3beaaSApple OSS Distributions # ifndef LINUX_IPOVLY
623*aca3beaaSApple OSS Distributions #  define LINUX_IPOVLY
624*aca3beaaSApple OSS Distributions struct ipovly {
625*aca3beaaSApple OSS Distributions 	caddr_t ih_next, ih_prev;       /* for protocol sequence q's */
626*aca3beaaSApple OSS Distributions 	u_char  ih_x1;                  /* (unused) */
627*aca3beaaSApple OSS Distributions 	u_char  ih_pr;                  /* protocol */
628*aca3beaaSApple OSS Distributions 	short   ih_len;                 /* protocol length */
629*aca3beaaSApple OSS Distributions 	struct  in_addr ih_src;         /* source internet address */
630*aca3beaaSApple OSS Distributions 	struct  in_addr ih_dst;         /* destination internet address */
631*aca3beaaSApple OSS Distributions };
632*aca3beaaSApple OSS Distributions # endif
633*aca3beaaSApple OSS Distributions 
634*aca3beaaSApple OSS Distributions typedef struct  {
635*aca3beaaSApple OSS Distributions 	__u8    ether_dhost[6];
636*aca3beaaSApple OSS Distributions 	__u8    ether_shost[6];
637*aca3beaaSApple OSS Distributions 	__u16   ether_type;
638*aca3beaaSApple OSS Distributions } ether_header_t;
639*aca3beaaSApple OSS Distributions 
640*aca3beaaSApple OSS Distributions typedef struct  uio     {
641*aca3beaaSApple OSS Distributions 	int     uio_resid;
642*aca3beaaSApple OSS Distributions 	int     uio_rw;
643*aca3beaaSApple OSS Distributions 	caddr_t uio_buf;
644*aca3beaaSApple OSS Distributions } uio_t;
645*aca3beaaSApple OSS Distributions 
646*aca3beaaSApple OSS Distributions # define        UIO_READ        0
647*aca3beaaSApple OSS Distributions # define        UIO_WRITE       1
648*aca3beaaSApple OSS Distributions # define        UIOMOVE(a, b, c, d)     uiomove(a,b,c,d)
649*aca3beaaSApple OSS Distributions 
650*aca3beaaSApple OSS Distributions /*
651*aca3beaaSApple OSS Distributions  * For masking struct ifnet onto struct device
652*aca3beaaSApple OSS Distributions  */
653*aca3beaaSApple OSS Distributions # define        if_name name
654*aca3beaaSApple OSS Distributions 
655*aca3beaaSApple OSS Distributions # ifdef KERNEL
656*aca3beaaSApple OSS Distributions #  define       GETUNIT(x)      dev_get(x)
657*aca3beaaSApple OSS Distributions #  define       FREE_MB_T(m)    kfree_skb(m, FREE_WRITE)
658*aca3beaaSApple OSS Distributions #  define       uniqtime        do_gettimeofday
659*aca3beaaSApple OSS Distributions #  undef INT_MAX
660*aca3beaaSApple OSS Distributions #  undef UINT_MAX
661*aca3beaaSApple OSS Distributions #  undef LONG_MAX
662*aca3beaaSApple OSS Distributions #  undef ULONG_MAX
663*aca3beaaSApple OSS Distributions #  include <linux/netdevice.h>
664*aca3beaaSApple OSS Distributions #  define       SPL_X(x)
665*aca3beaaSApple OSS Distributions #  define       SPL_NET(x)
666*aca3beaaSApple OSS Distributions #  define       SPL_IMP(x)
667*aca3beaaSApple OSS Distributions 
668*aca3beaaSApple OSS Distributions #  define       bcmp(a, b, c)     memcmp(a,b,c)
669*aca3beaaSApple OSS Distributions #  define       bcopy(a, b, c)    memcpy(b,a,c)
670*aca3beaaSApple OSS Distributions #  define       bzero(a, c)      memset(a,0,c)
671*aca3beaaSApple OSS Distributions 
672*aca3beaaSApple OSS Distributions #  define       UNITNAME(n)     dev_get((n))
673*aca3beaaSApple OSS Distributions 
674*aca3beaaSApple OSS Distributions #  define       KMALLOC(a, b, c)  (a) = (b)kmalloc((c), GFP_ATOMIC)
675*aca3beaaSApple OSS Distributions #  define       KFREE(x)        kfree_s((x), sizeof(*(x)))
676*aca3beaaSApple OSS Distributions #  define       KFREES(x, s)     kfree_s((x), (s))
677*aca3beaaSApple OSS Distributions #  define       IRCOPY(a, b, c)   {\
678*aca3beaaSApple OSS Distributions 	                         error = verify_area(VERIFY_READ, (a) ,(c)); \
679*aca3beaaSApple OSS Distributions 	                         if (!error) \
680*aca3beaaSApple OSS Distributions 	                                memcpy_fromfs((b), (a), (c)); \
681*aca3beaaSApple OSS Distributions 	                        }
682*aca3beaaSApple OSS Distributions #  define       IWCOPY(a, b, c)   {\
683*aca3beaaSApple OSS Distributions 	                         error = verify_area(VERIFY_WRITE, (b), (c)); \
684*aca3beaaSApple OSS Distributions 	                         if (!error) \
685*aca3beaaSApple OSS Distributions 	                                memcpy_tofs((b), (a), (c)); \
686*aca3beaaSApple OSS Distributions 	                        }
687*aca3beaaSApple OSS Distributions # else
688*aca3beaaSApple OSS Distributions #  define       __KERNEL__
689*aca3beaaSApple OSS Distributions #  undef INT_MAX
690*aca3beaaSApple OSS Distributions #  undef UINT_MAX
691*aca3beaaSApple OSS Distributions #  undef LONG_MAX
692*aca3beaaSApple OSS Distributions #  undef ULONG_MAX
693*aca3beaaSApple OSS Distributions #  define       s8 __s8
694*aca3beaaSApple OSS Distributions #  define       u8 __u8
695*aca3beaaSApple OSS Distributions #  define       s16 __s16
696*aca3beaaSApple OSS Distributions #  define       u16 __u16
697*aca3beaaSApple OSS Distributions #  define       s32 __s32
698*aca3beaaSApple OSS Distributions #  define       u32 __u32
699*aca3beaaSApple OSS Distributions #  include <linux/netdevice.h>
700*aca3beaaSApple OSS Distributions #  undef        __KERNEL__
701*aca3beaaSApple OSS Distributions # endif
702*aca3beaaSApple OSS Distributions # define        ifnet   device
703*aca3beaaSApple OSS Distributions #else
704*aca3beaaSApple OSS Distributions typedef struct  tcphdr  tcphdr_t;
705*aca3beaaSApple OSS Distributions typedef struct  udphdr  udphdr_t;
706*aca3beaaSApple OSS Distributions typedef struct  icmp    icmphdr_t;
707*aca3beaaSApple OSS Distributions typedef struct  ip      ip_t;
708*aca3beaaSApple OSS Distributions typedef struct  ether_header    ether_header_t;
709*aca3beaaSApple OSS Distributions #endif /* linux */
710*aca3beaaSApple OSS Distributions typedef struct  tcpiphdr        tcpiphdr_t;
711*aca3beaaSApple OSS Distributions 
712*aca3beaaSApple OSS Distributions #if defined(hpux) || defined(linux)
713*aca3beaaSApple OSS Distributions struct  ether_addr      {
714*aca3beaaSApple OSS Distributions 	char    ether_addr_octet[6];
715*aca3beaaSApple OSS Distributions };
716*aca3beaaSApple OSS Distributions #endif
717*aca3beaaSApple OSS Distributions 
718*aca3beaaSApple OSS Distributions /*
719*aca3beaaSApple OSS Distributions  * XXX - This is one of those *awful* hacks which nobody likes
720*aca3beaaSApple OSS Distributions  */
721*aca3beaaSApple OSS Distributions #ifdef  ultrix
722*aca3beaaSApple OSS Distributions #define A_A
723*aca3beaaSApple OSS Distributions #else
724*aca3beaaSApple OSS Distributions #define A_A     &
725*aca3beaaSApple OSS Distributions #endif
726*aca3beaaSApple OSS Distributions 
727*aca3beaaSApple OSS Distributions #ifndef ICMP_ROUTERADVERT
728*aca3beaaSApple OSS Distributions # define        ICMP_ROUTERADVERT       9
729*aca3beaaSApple OSS Distributions #endif
730*aca3beaaSApple OSS Distributions #ifndef ICMP_ROUTERSOLICIT
731*aca3beaaSApple OSS Distributions # define        ICMP_ROUTERSOLICIT      10
732*aca3beaaSApple OSS Distributions #endif
733*aca3beaaSApple OSS Distributions 
734*aca3beaaSApple OSS Distributions #endif  /* __IP_COMPAT_H__ */
735*aca3beaaSApple OSS Distributions 
736*aca3beaaSApple OSS Distributions #endif /* #if 0 */
737