1 /* $NetBSD: ip_pool.h,v 1.3 2012/07/22 14:27:51 darrenr Exp $ */ 2 3 /* 4 * Copyright (C) 2012 by Darren Reed. 5 * 6 * See the IPFILTER.LICENCE file for details on licencing. 7 * 8 * Id: ip_pool.h,v 1.1.1.2 2012/07/22 13:45:31 darrenr Exp 9 */ 10 11 #ifndef __IP_POOL_H__ 12 #define __IP_POOL_H__ 13 14 #include "netinet/ip_lookup.h" 15 #include "radix_ipf.h" 16 17 #define IP_POOL_NOMATCH 0 18 #define IP_POOL_POSITIVE 1 19 20 typedef struct ip_pool_node { 21 ipf_rdx_node_t ipn_nodes[2]; 22 addrfamily_t ipn_addr; 23 addrfamily_t ipn_mask; 24 int ipn_uid; 25 int ipn_info; 26 int ipn_ref; 27 char ipn_name[FR_GROUPLEN]; 28 U_QUAD_T ipn_hits; 29 U_QUAD_T ipn_bytes; 30 u_long ipn_die; 31 struct ip_pool_node *ipn_next, **ipn_pnext; 32 struct ip_pool_node *ipn_dnext, **ipn_pdnext; 33 struct ip_pool_s *ipn_owner; 34 } ip_pool_node_t; 35 36 37 typedef struct ip_pool_s { 38 struct ip_pool_s *ipo_next; 39 struct ip_pool_s **ipo_pnext; 40 ipf_rdx_head_t *ipo_head; 41 ip_pool_node_t *ipo_list; 42 ip_pool_node_t **ipo_tail; 43 ip_pool_node_t *ipo_nextaddr; 44 void *ipo_radix; 45 u_long ipo_hits; 46 int ipo_unit; 47 int ipo_flags; 48 int ipo_ref; 49 char ipo_name[FR_GROUPLEN]; 50 } ip_pool_t; 51 52 #define IPOOL_DELETE 0x01 53 #define IPOOL_ANON 0x02 54 55 56 typedef struct ipf_pool_stat { 57 u_long ipls_pools; 58 u_long ipls_tables; 59 u_long ipls_nodes; 60 ip_pool_t *ipls_list[LOOKUP_POOL_SZ]; 61 } ipf_pool_stat_t; 62 63 extern ipf_lookup_t ipf_pool_backend; 64 65 #ifndef _KERNEL 66 extern void ipf_pool_dump(ipf_main_softc_t *, void *); 67 #endif 68 69 #endif /* __IP_POOL_H__ */ 70