ip_pool.h revision 172771
1134459Siedowse/* 2134459Siedowse * Copyright (C) 1993-2001, 2003 by Darren Reed. 3134459Siedowse * 4134459Siedowse * See the IPFILTER.LICENCE file for details on licencing. 5134459Siedowse * 6134459Siedowse * $Id: ip_pool.h,v 2.26.2.6 2007/10/10 09:51:43 darrenr Exp $ 7134459Siedowse */ 8134459Siedowse 9134459Siedowse#ifndef __IP_POOL_H__ 10134459Siedowse#define __IP_POOL_H__ 11134459Siedowse 12134459Siedowse#if defined(_KERNEL) && !defined(__osf__) && !defined(__hpux) && \ 13134459Siedowse !defined(linux) && !defined(sun) && !defined(AIX) 14134459Siedowse# include <net/radix.h> 15134459Siedowseextern void rn_freehead __P((struct radix_node_head *)); 16134459Siedowse# define FreeS(p, z) KFREES(p, z) 17134459Siedowseextern int max_keylen; 18134459Siedowse#else 19134459Siedowse# if defined(__osf__) || defined(__hpux) || defined(sun) 20134459Siedowse# include "radix_ipf_local.h" 21134459Siedowse# define radix_mask ipf_radix_mask 22134459Siedowse# define radix_node ipf_radix_node 23134459Siedowse# define radix_node_head ipf_radix_node_head 24134459Siedowse# else 25134459Siedowse# include "radix_ipf.h" 26134459Siedowse# endif 27134459Siedowse#endif 28134459Siedowse#include "netinet/ip_lookup.h" 29134459Siedowse 30134459Siedowse#define IP_POOL_NOMATCH 0 31134459Siedowse#define IP_POOL_POSITIVE 1 32134459Siedowse 33134459Siedowsetypedef struct ip_pool_node { 34134459Siedowse struct radix_node ipn_nodes[2]; 35134459Siedowse addrfamily_t ipn_addr; 36134459Siedowse addrfamily_t ipn_mask; 37134459Siedowse int ipn_info; 38134459Siedowse int ipn_ref; 39134459Siedowsechar ipn_name[FR_GROUPLEN]; 40134459Siedowseu_long ipn_hits; 41134459Siedowse struct ip_pool_node *ipn_next, **ipn_pnext; 42134459Siedowse} ip_pool_node_t; 43134459Siedowse 44134459Siedowse 45134459Siedowsetypedef struct ip_pool_s { 46134459Siedowse struct ip_pool_s *ipo_next; 47134459Siedowse struct ip_pool_s **ipo_pnext; 48134459Siedowse struct radix_node_head *ipo_head; 49134459Siedowse ip_pool_node_t *ipo_list; 50134459Siedowse u_long ipo_hits; 51134459Siedowse int ipo_unit; 52134459Siedowse int ipo_flags; 53134459Siedowse int ipo_ref; 54134459Siedowse char ipo_name[FR_GROUPLEN]; 55134459Siedowse} ip_pool_t; 56134459Siedowse 57134459Siedowse#define IPOOL_DELETE 0x01 58134459Siedowse#define IPOOL_ANON 0x02 59134459Siedowse 60134459Siedowse 61134459Siedowsetypedef struct ip_pool_stat { 62134459Siedowse u_long ipls_pools; 63134459Siedowse u_long ipls_tables; 64134459Siedowse u_long ipls_nodes; 65134459Siedowse ip_pool_t *ipls_list[IPL_LOGSIZE]; 66134459Siedowse} ip_pool_stat_t; 67134459Siedowse 68134459Siedowse 69134459Siedowseextern ip_pool_stat_t ipoolstat; 70134459Siedowseextern ip_pool_t *ip_pool_list[IPL_LOGSIZE]; 71134459Siedowse 72134459Siedowseextern int ip_pool_search __P((void *, int, void *)); 73153504Smarcelextern int ip_pool_init __P((void)); 74134459Siedowseextern void ip_pool_fini __P((void)); 75134459Siedowseextern int ip_pool_create __P((iplookupop_t *)); 76134459Siedowseextern int ip_pool_insert __P((ip_pool_t *, i6addr_t *, i6addr_t *, int)); 77134459Siedowseextern int ip_pool_remove __P((ip_pool_t *, ip_pool_node_t *)); 78134459Siedowseextern int ip_pool_destroy __P((int, char *)); 79134459Siedowseextern void ip_pool_free __P((ip_pool_t *)); 80134459Siedowseextern void ip_pool_deref __P((ip_pool_t *)); 81134459Siedowseextern void ip_pool_node_deref __P((ip_pool_node_t *)); 82134459Siedowseextern void *ip_pool_find __P((int, char *)); 83134459Siedowseextern ip_pool_node_t *ip_pool_findeq __P((ip_pool_t *, 84134459Siedowse addrfamily_t *, addrfamily_t *)); 85134459Siedowseextern int ip_pool_flush __P((iplookupflush_t *)); 86134459Siedowseextern int ip_pool_statistics __P((iplookupop_t *)); 87134459Siedowseextern int ip_pool_getnext __P((ipftoken_t *, ipflookupiter_t *)); 88134459Siedowseextern void ip_pool_iterderef __P((u_int, int, void *)); 89134459Siedowse 90134459Siedowse#endif /* __IP_POOL_H__ */ 91134459Siedowse