1ab25eeb5Syz155240 /* 2ab25eeb5Syz155240 * Copyright (C) 1993-2001 by Darren Reed. 3ab25eeb5Syz155240 * 4ab25eeb5Syz155240 * See the IPFILTER.LICENCE file for details on licencing. 5ab25eeb5Syz155240 * 6ab25eeb5Syz155240 * @(#)ip_frag.h 1.5 3/24/96 7ab25eeb5Syz155240 * $Id: ip_frag.h,v 2.23.2.2 2005/06/10 18:02:37 darrenr Exp $ 8ab25eeb5Syz155240 * 972680cf5SDarren Reed * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 10ab25eeb5Syz155240 * Use is subject to license terms. 11ab25eeb5Syz155240 */ 12ab25eeb5Syz155240 13ab25eeb5Syz155240 #ifndef __IP_FRAG_H__ 14ab25eeb5Syz155240 #define __IP_FRAG_H__ 15ab25eeb5Syz155240 16ab25eeb5Syz155240 #define IPFT_SIZE 257 17ab25eeb5Syz155240 18ab25eeb5Syz155240 typedef struct ipfr { 19ab25eeb5Syz155240 struct ipfr *ipfr_hnext, **ipfr_hprev; 20ab25eeb5Syz155240 struct ipfr *ipfr_next, **ipfr_prev; 21ab25eeb5Syz155240 void *ipfr_data; 22ab25eeb5Syz155240 void *ipfr_ifp; 2372680cf5SDarren Reed i6addr_t ipfr_src; 2472680cf5SDarren Reed i6addr_t ipfr_dst; 25ab25eeb5Syz155240 u_32_t ipfr_optmsk; 26ab25eeb5Syz155240 u_short ipfr_secmsk; 27ab25eeb5Syz155240 u_short ipfr_auth; 28ab25eeb5Syz155240 u_32_t ipfr_id; 2972680cf5SDarren Reed u_32_t ipfr_p; 3072680cf5SDarren Reed u_32_t ipfr_tos; 31ab25eeb5Syz155240 u_32_t ipfr_pass; 32ab25eeb5Syz155240 u_short ipfr_off; 33f4b3ec61Sdh155122 u_long ipfr_ttl; 34ab25eeb5Syz155240 u_char ipfr_seen0; 35ab25eeb5Syz155240 frentry_t *ipfr_rule; 36f4b3ec61Sdh155122 int ipfr_ref; 37ab25eeb5Syz155240 } ipfr_t; 38ab25eeb5Syz155240 39ab25eeb5Syz155240 typedef struct ipfrstat { 40ab25eeb5Syz155240 u_long ifs_exists; /* add & already exists */ 41ab25eeb5Syz155240 u_long ifs_nomem; 42ab25eeb5Syz155240 u_long ifs_new; 43ab25eeb5Syz155240 u_long ifs_hits; 44ab25eeb5Syz155240 u_long ifs_expire; 45ab25eeb5Syz155240 u_long ifs_inuse; 46ab25eeb5Syz155240 u_long ifs_retrans0; 47ab25eeb5Syz155240 u_long ifs_short; 48ab25eeb5Syz155240 struct ipfr **ifs_table; 49ab25eeb5Syz155240 struct ipfr **ifs_nattab; 50ab25eeb5Syz155240 } ipfrstat_t; 51ab25eeb5Syz155240 52ab25eeb5Syz155240 #define IPFR_CMPSZ (offsetof(ipfr_t, ipfr_tos) - \ 53ab25eeb5Syz155240 offsetof(ipfr_t, ipfr_ifp)) 54ab25eeb5Syz155240 55f4b3ec61Sdh155122 extern int fr_fraginit __P((ipf_stack_t *)); 56f4b3ec61Sdh155122 extern void fr_fragunload __P((ipf_stack_t *)); 57f4b3ec61Sdh155122 extern ipfrstat_t *fr_fragstats __P((ipf_stack_t *)); 58ab25eeb5Syz155240 59ab25eeb5Syz155240 extern int fr_newfrag __P((fr_info_t *, u_32_t)); 60ab25eeb5Syz155240 extern frentry_t *fr_knownfrag __P((fr_info_t *, u_32_t *)); 61ab25eeb5Syz155240 62ab25eeb5Syz155240 extern int fr_nat_newfrag __P((fr_info_t *, u_32_t, struct nat *)); 63ab25eeb5Syz155240 extern nat_t *fr_nat_knownfrag __P((fr_info_t *)); 64ab25eeb5Syz155240 65ab25eeb5Syz155240 extern int fr_ipid_newfrag __P((fr_info_t *, u_32_t)); 66ab25eeb5Syz155240 extern u_32_t fr_ipid_knownfrag __P((fr_info_t *)); 67f4b3ec61Sdh155122 extern void fr_fragderef __P((ipfr_t **, ipfrwlock_t *, ipf_stack_t *)); 68ab25eeb5Syz155240 69f4b3ec61Sdh155122 extern void fr_forget __P((void *, ipf_stack_t *)); 70f4b3ec61Sdh155122 extern void fr_forgetnat __P((void *, ipf_stack_t *)); 71f4b3ec61Sdh155122 extern void fr_fragclear __P((ipf_stack_t *)); 72f4b3ec61Sdh155122 extern void fr_fragexpire __P((ipf_stack_t *)); 73f4b3ec61Sdh155122 extern int fr_nextfrag __P((ipftoken_t *, ipfgeniter_t *, ipfr_t **, \ 74f4b3ec61Sdh155122 ipfr_t ***, ipfrwlock_t *, ipf_stack_t *)); 75ab25eeb5Syz155240 76*af5f29ddSToomas Soome #if defined(_KERNEL) && ((BSD >= 199306) || defined(SOLARIS) || \ 77*af5f29ddSToomas Soome defined(__sgi) || defined(__osf__) || \ 78*af5f29ddSToomas Soome (defined(__sgi) && (IRIX >= 60500))) 79ab25eeb5Syz155240 # if defined(SOLARIS2) && (SOLARIS2 < 7) 80f4b3ec61Sdh155122 extern void fr_slowtimer __P((void *)); 81ab25eeb5Syz155240 # else 82ab25eeb5Syz155240 extern void fr_slowtimer __P((void *)); 83ab25eeb5Syz155240 # endif 84ab25eeb5Syz155240 #else 85ab25eeb5Syz155240 # if defined(linux) && defined(_KERNEL) 86ab25eeb5Syz155240 extern void fr_slowtimer __P((long)); 87ab25eeb5Syz155240 # else 88f4b3ec61Sdh155122 extern int fr_slowtimer __P((void *)); 89ab25eeb5Syz155240 # endif 90ab25eeb5Syz155240 #endif 91ab25eeb5Syz155240 92ab25eeb5Syz155240 #endif /* __IP_FRAG_H__ */ 93