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