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