xref: /onnv-gate/usr/src/uts/common/inet/ipf/netinet/ip_pool.h (revision 12255:f9a1f4ae1259)
12393Syz155240 /*
22393Syz155240  * Copyright (C) 1993-2001, 2003 by Darren Reed.
32393Syz155240  *
42393Syz155240  * See the IPFILTER.LICENCE file for details on licencing.
52393Syz155240  *
62393Syz155240  * $Id: ip_pool.h,v 2.26.2.3 2005/06/12 07:18:27 darrenr Exp $
72393Syz155240  *
8*12255SJohn.Ojemann@Oracle.COM  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
92393Syz155240  */
102393Syz155240 
112393Syz155240 #ifndef	__IP_POOL_H__
122393Syz155240 #define	__IP_POOL_H__
132393Syz155240 
142393Syz155240 #if defined(_KERNEL) && !defined(__osf__) && !defined(__hpux) && \
152393Syz155240     !defined(linux) && !defined(sun) && !defined(AIX)
162393Syz155240 # include <net/radix.h>
172393Syz155240 extern void rn_freehead __P((struct radix_node_head *));
182393Syz155240 # define FreeS(p, z)		KFREES(p, z)
192393Syz155240 extern int max_keylen;
202393Syz155240 #else
212393Syz155240 # if defined(__osf__) || defined(__hpux)
222393Syz155240 #  include "radix_ipf_local.h"
232393Syz155240 #  define radix_mask ipf_radix_mask
242393Syz155240 #  define radix_node ipf_radix_node
252393Syz155240 #  define radix_node_head ipf_radix_node_head
262393Syz155240 # else
272393Syz155240 #  include "radix_ipf.h"
282393Syz155240 # endif
292393Syz155240 #endif
302393Syz155240 #include "netinet/ip_lookup.h"
312393Syz155240 
322393Syz155240 #define	IP_POOL_NOMATCH		0
332393Syz155240 #define	IP_POOL_POSITIVE	1
342393Syz155240 
352393Syz155240 typedef	struct ip_pool_node {
362393Syz155240 	struct	radix_node	ipn_nodes[2];
372393Syz155240 	addrfamily_t		ipn_addr;
382393Syz155240 	addrfamily_t		ipn_mask;
392393Syz155240 	int			ipn_info;
403448Sdh155122 	int			ipn_ref;
412393Syz155240 	char			ipn_name[FR_GROUPLEN];
42*12255SJohn.Ojemann@Oracle.COM 	U_QUAD_T		ipn_hits;
43*12255SJohn.Ojemann@Oracle.COM 	U_QUAD_T		ipn_bytes;
442393Syz155240 	struct ip_pool_node	*ipn_next, **ipn_pnext;
452393Syz155240 } ip_pool_node_t;
462393Syz155240 
472393Syz155240 
482393Syz155240 typedef	struct ip_pool_s {
492393Syz155240 	struct ip_pool_s	*ipo_next;
502393Syz155240 	struct ip_pool_s	**ipo_pnext;
512393Syz155240 	struct radix_node_head	*ipo_head;
522393Syz155240 	ip_pool_node_t	*ipo_list;
53*12255SJohn.Ojemann@Oracle.COM 	U_QUAD_T	ipo_hits;
542393Syz155240 	int		ipo_unit;
552393Syz155240 	int		ipo_flags;
562393Syz155240 	int		ipo_ref;
572393Syz155240 	char		ipo_name[FR_GROUPLEN];
582393Syz155240 } ip_pool_t;
592393Syz155240 
602393Syz155240 #define	IPOOL_ANON	0x80000000
612393Syz155240 
622393Syz155240 
632393Syz155240 typedef	struct	ip_pool_stat	{
642393Syz155240 	u_long		ipls_pools;
652393Syz155240 	u_long		ipls_tables;
662393Syz155240 	u_long		ipls_nodes;
672393Syz155240 	ip_pool_t	*ipls_list[IPL_LOGSIZE];
682393Syz155240 } ip_pool_stat_t;
692393Syz155240 
70*12255SJohn.Ojemann@Oracle.COM extern	int	ip_pool_search __P((void *, int, void *, fr_info_t *, ipf_stack_t *));
713448Sdh155122 extern	int	ip_pool_init __P((ipf_stack_t *));
723448Sdh155122 extern	void	ip_pool_fini __P((ipf_stack_t *));
733448Sdh155122 extern	int	ip_pool_create __P((iplookupop_t *, ipf_stack_t *));
742393Syz155240 extern	int	ip_pool_insert __P((ip_pool_t *, addrfamily_t *,
753448Sdh155122 				    addrfamily_t *, int, ipf_stack_t *));
763448Sdh155122 extern	int	ip_pool_remove __P((ip_pool_t *, ip_pool_node_t *,
773448Sdh155122 				    ipf_stack_t *));
783448Sdh155122 extern	int	ip_pool_destroy __P((iplookupop_t *, ipf_stack_t *));
793448Sdh155122 extern	void	ip_pool_free __P((ip_pool_t *, ipf_stack_t *));
803448Sdh155122 extern	void	ip_pool_deref __P((ip_pool_t *, ipf_stack_t *));
813448Sdh155122 extern	void	*ip_pool_find __P((int, char *, ipf_stack_t *));
822393Syz155240 extern	ip_pool_node_t *ip_pool_findeq __P((ip_pool_t *,
832393Syz155240 					  addrfamily_t *, addrfamily_t *));
843448Sdh155122 extern	int	ip_pool_flush __P((iplookupflush_t *, ipf_stack_t *));
853448Sdh155122 extern	int	ip_pool_statistics __P((iplookupop_t *, ipf_stack_t *));
863448Sdh155122 extern	int	ip_pool_getnext __P((ipftoken_t *, ipflookupiter_t *, ipf_stack_t *));
873448Sdh155122 extern	void	ip_pool_iterderef __P((u_int, int, void *, ipf_stack_t *));
882393Syz155240 #endif /* __IP_POOL_H__ */
89