xref: /onnv-gate/usr/src/uts/common/inet/ipf/netinet/ip_frag.h (revision 9876:fd1599e394c8)
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