ip_pool.h revision 145516
1/* $FreeBSD: vendor-sys/ipfilter/dist/sys/contrib/ipfilter/netinet/ip_pool.h 145516 2005-04-25 18:15:41Z darrenr $ */ 2 3/* 4 * Copyright (C) 1993-2001, 2003 by Darren Reed. 5 * 6 * See the IPFILTER.LICENCE file for details on licencing. 7 * 8 * Id: ip_pool.h,v 2.26.2.2 2004/03/23 12:44:34 darrenr Exp 9 */ 10 11#ifndef __IP_POOL_H__ 12#define __IP_POOL_H__ 13 14#if defined(_KERNEL) && !defined(__osf__) && !defined(__hpux) && \ 15 !defined(linux) && !defined(sun) 16# include <net/radix.h> 17extern void rn_freehead __P((struct radix_node_head *)); 18# define FreeS(p, z) KFREES(p, z) 19extern int max_keylen; 20#else 21# if defined(__osf__) || defined(__hpux) 22# include "radix_ipf_local.h" 23# define radix_mask ipf_radix_mask 24# define radix_node ipf_radix_node 25# define radix_node_head ipf_radix_node_head 26# else 27# include "radix_ipf.h" 28# endif 29#endif 30#include "netinet/ip_lookup.h" 31 32#define IP_POOL_NOMATCH 0 33#define IP_POOL_POSITIVE 1 34 35typedef struct ip_pool_node { 36 struct radix_node ipn_nodes[2]; 37 addrfamily_t ipn_addr; 38 addrfamily_t ipn_mask; 39 int ipn_info; 40 char ipn_name[FR_GROUPLEN]; 41 u_long ipn_hits; 42 struct ip_pool_node *ipn_next, **ipn_pnext; 43} ip_pool_node_t; 44 45 46typedef struct ip_pool_s { 47 struct ip_pool_s *ipo_next; 48 struct ip_pool_s **ipo_pnext; 49 struct radix_node_head *ipo_head; 50 ip_pool_node_t *ipo_list; 51 u_long ipo_hits; 52 int ipo_unit; 53 int ipo_flags; 54 int ipo_ref; 55 char ipo_name[FR_GROUPLEN]; 56} ip_pool_t; 57 58#define IPOOL_ANON 0x80000000 59 60 61typedef struct ip_pool_stat { 62 u_long ipls_pools; 63 u_long ipls_tables; 64 u_long ipls_nodes; 65 ip_pool_t *ipls_list[IPL_LOGSIZE]; 66} ip_pool_stat_t; 67 68 69extern ip_pool_stat_t ipoolstat; 70extern ip_pool_t *ip_pool_list[IPL_LOGSIZE]; 71 72extern int ip_pool_search __P((void *, int, void *)); 73extern int ip_pool_init __P((void)); 74extern void ip_pool_fini __P((void)); 75extern int ip_pool_create __P((iplookupop_t *)); 76extern int ip_pool_insert __P((ip_pool_t *, i6addr_t *, i6addr_t *, int)); 77extern int ip_pool_remove __P((ip_pool_t *, ip_pool_node_t *)); 78extern int ip_pool_destroy __P((iplookupop_t *)); 79extern void ip_pool_free __P((ip_pool_t *)); 80extern void ip_pool_deref __P((ip_pool_t *)); 81extern void *ip_pool_find __P((int, char *)); 82extern ip_pool_node_t *ip_pool_findeq __P((ip_pool_t *, 83 addrfamily_t *, addrfamily_t *)); 84extern int ip_pool_flush __P((iplookupflush_t *)); 85extern int ip_pool_statistics __P((iplookupop_t *)); 86 87#endif /* __IP_POOL_H__ */ 88