12393Syz155240 /* 22393Syz155240 * Copyright (C) 1993-2001 by Darren Reed. 32393Syz155240 * 42393Syz155240 * See the IPFILTER.LICENCE file for details on licencing. 52393Syz155240 * 62393Syz155240 * @(#)ip_frag.h 1.5 3/24/96 72393Syz155240 * $Id: ip_frag.h,v 2.23.2.2 2005/06/10 18:02:37 darrenr Exp $ 82393Syz155240 * 9*9876SDarren.Reed@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 102393Syz155240 * Use is subject to license terms. 112393Syz155240 */ 122393Syz155240 132393Syz155240 #ifndef __IP_FRAG_H__ 142393Syz155240 #define __IP_FRAG_H__ 152393Syz155240 162393Syz155240 #define IPFT_SIZE 257 172393Syz155240 182393Syz155240 typedef struct ipfr { 192393Syz155240 struct ipfr *ipfr_hnext, **ipfr_hprev; 202393Syz155240 struct ipfr *ipfr_next, **ipfr_prev; 212393Syz155240 void *ipfr_data; 222393Syz155240 void *ipfr_ifp; 23*9876SDarren.Reed@Sun.COM i6addr_t ipfr_src; 24*9876SDarren.Reed@Sun.COM i6addr_t ipfr_dst; 252393Syz155240 u_32_t ipfr_optmsk; 262393Syz155240 u_short ipfr_secmsk; 272393Syz155240 u_short ipfr_auth; 282393Syz155240 u_32_t ipfr_id; 29*9876SDarren.Reed@Sun.COM u_32_t ipfr_p; 30*9876SDarren.Reed@Sun.COM u_32_t ipfr_tos; 312393Syz155240 u_32_t ipfr_pass; 322393Syz155240 u_short ipfr_off; 333448Sdh155122 u_long ipfr_ttl; 342393Syz155240 u_char ipfr_seen0; 352393Syz155240 frentry_t *ipfr_rule; 363448Sdh155122 int ipfr_ref; 372393Syz155240 } ipfr_t; 382393Syz155240 392393Syz155240 typedef struct ipfrstat { 402393Syz155240 u_long ifs_exists; /* add & already exists */ 412393Syz155240 u_long ifs_nomem; 422393Syz155240 u_long ifs_new; 432393Syz155240 u_long ifs_hits; 442393Syz155240 u_long ifs_expire; 452393Syz155240 u_long ifs_inuse; 462393Syz155240 u_long ifs_retrans0; 472393Syz155240 u_long ifs_short; 482393Syz155240 struct ipfr **ifs_table; 492393Syz155240 struct ipfr **ifs_nattab; 502393Syz155240 } ipfrstat_t; 512393Syz155240 522393Syz155240 #define IPFR_CMPSZ (offsetof(ipfr_t, ipfr_tos) - \ 532393Syz155240 offsetof(ipfr_t, ipfr_ifp)) 542393Syz155240 553448Sdh155122 extern int fr_fraginit __P((ipf_stack_t *)); 563448Sdh155122 extern void fr_fragunload __P((ipf_stack_t *)); 573448Sdh155122 extern ipfrstat_t *fr_fragstats __P((ipf_stack_t *)); 582393Syz155240 592393Syz155240 extern int fr_newfrag __P((fr_info_t *, u_32_t)); 602393Syz155240 extern frentry_t *fr_knownfrag __P((fr_info_t *, u_32_t *)); 612393Syz155240 622393Syz155240 extern int fr_nat_newfrag __P((fr_info_t *, u_32_t, struct nat *)); 632393Syz155240 extern nat_t *fr_nat_knownfrag __P((fr_info_t *)); 642393Syz155240 652393Syz155240 extern int fr_ipid_newfrag __P((fr_info_t *, u_32_t)); 662393Syz155240 extern u_32_t fr_ipid_knownfrag __P((fr_info_t *)); 673448Sdh155122 extern void fr_fragderef __P((ipfr_t **, ipfrwlock_t *, ipf_stack_t *)); 682393Syz155240 693448Sdh155122 extern void fr_forget __P((void *, ipf_stack_t *)); 703448Sdh155122 extern void fr_forgetnat __P((void *, ipf_stack_t *)); 713448Sdh155122 extern void fr_fragclear __P((ipf_stack_t *)); 723448Sdh155122 extern void fr_fragexpire __P((ipf_stack_t *)); 733448Sdh155122 extern int fr_nextfrag __P((ipftoken_t *, ipfgeniter_t *, ipfr_t **, \ 743448Sdh155122 ipfr_t ***, ipfrwlock_t *, ipf_stack_t *)); 752393Syz155240 762393Syz155240 #if defined(_KERNEL) && ((BSD >= 199306) || SOLARIS || defined(__sgi) \ 772393Syz155240 || defined(__osf__) || (defined(__sgi) && (IRIX >= 60500))) 782393Syz155240 # if defined(SOLARIS2) && (SOLARIS2 < 7) 793448Sdh155122 extern void fr_slowtimer __P((void *)); 802393Syz155240 # else 812393Syz155240 extern void fr_slowtimer __P((void *)); 822393Syz155240 # endif 832393Syz155240 #else 842393Syz155240 # if defined(linux) && defined(_KERNEL) 852393Syz155240 extern void fr_slowtimer __P((long)); 862393Syz155240 # else 873448Sdh155122 extern int fr_slowtimer __P((void *)); 882393Syz155240 # endif 892393Syz155240 #endif 902393Syz155240 912393Syz155240 #endif /* __IP_FRAG_H__ */ 92