1 /* 2 * Copyright (C) 1993-2001 by Darren Reed. 3 * 4 * See the IPFILTER.LICENCE file for details on licencing. 5 * 6 * $Id: ip_pool.h,v 2.19 2003/11/08 23:01:26 darrenr Exp $ 7 */ 8 9 #ifndef __IP_POOL_H__ 10 #define __IP_POOL_H__ 11 12 #if defined(_KERNEL) && \ 13 !(defined(sun) && (defined(__svr4__) || defined(__SVR4))) 14 # include <net/radix.h> 15 #else 16 # include "radix.h" 17 #endif 18 #if SOLARIS2 >= 10 19 #include "ip_lookup.h" 20 #else 21 #include "netinet/ip_lookup.h" 22 #endif 23 24 #define IP_POOL_NOMATCH 0 25 #define IP_POOL_POSITIVE 1 26 27 typedef struct ip_pool_node { 28 struct radix_node ipn_nodes[2]; 29 addrfamily_t ipn_addr; 30 addrfamily_t ipn_mask; 31 int ipn_info; 32 char ipn_name[FR_GROUPLEN]; 33 u_long ipn_hits; 34 struct ip_pool_node *ipn_next, **ipn_pnext; 35 } ip_pool_node_t; 36 37 38 typedef struct ip_pool_s { 39 struct ip_pool_s *ipo_next; 40 struct ip_pool_s **ipo_pnext; 41 struct radix_node_head *ipo_head; 42 ip_pool_node_t *ipo_list; 43 u_long ipo_hits; 44 int ipo_unit; 45 int ipo_flags; 46 int ipo_ref; 47 char ipo_name[FR_GROUPLEN]; 48 } ip_pool_t; 49 50 #define IPOOL_ANON 0x80000000 51 52 53 typedef struct ip_pool_stat { 54 u_long ipls_pools; 55 u_long ipls_tables; 56 u_long ipls_nodes; 57 ip_pool_t *ipls_list[IPL_LOGSIZE]; 58 } ip_pool_stat_t; 59 60 61 extern ip_pool_stat_t ipoolstat; 62 extern ip_pool_t *ip_pool_list[IPL_LOGSIZE]; 63 64 extern int ip_pool_search __P((void *, int, void *)); 65 extern int ip_pool_init __P((void)); 66 extern void ip_pool_fini __P((void)); 67 extern int ip_pool_create __P((iplookupop_t *)); 68 extern int ip_pool_insert __P((ip_pool_t *, i6addr_t *, i6addr_t *, int)); 69 extern int ip_pool_remove __P((ip_pool_t *, ip_pool_node_t *)); 70 extern int ip_pool_destroy __P((iplookupop_t *)); 71 extern void ip_pool_free __P((ip_pool_t *)); 72 extern void ip_pool_deref __P((ip_pool_t *)); 73 extern void *ip_pool_find __P((int, char *)); 74 extern ip_pool_node_t *ip_pool_findeq __P((ip_pool_t *, 75 struct in_addr *, struct in_addr *)); 76 77 #endif /* __IP_POOL_H__ */ 78