1145516Sdarrenr/* 2255332Scy * Copyright (C) 2012 by Darren Reed. 3145516Sdarrenr * 4145516Sdarrenr * See the IPFILTER.LICENCE file for details on licencing. 5145516Sdarrenr * 6255332Scy * $Id$ 7145516Sdarrenr */ 8145516Sdarrenr 9145516Sdarrenr#ifndef __IP_POOL_H__ 10145516Sdarrenr#define __IP_POOL_H__ 11145516Sdarrenr 12145516Sdarrenr#include "netinet/ip_lookup.h" 13255332Scy#include "radix_ipf.h" 14145516Sdarrenr 15145516Sdarrenr#define IP_POOL_NOMATCH 0 16145516Sdarrenr#define IP_POOL_POSITIVE 1 17145516Sdarrenr 18145516Sdarrenrtypedef struct ip_pool_node { 19255332Scy ipf_rdx_node_t ipn_nodes[2]; 20145516Sdarrenr addrfamily_t ipn_addr; 21145516Sdarrenr addrfamily_t ipn_mask; 22255332Scy int ipn_uid; 23145516Sdarrenr int ipn_info; 24170263Sdarrenr int ipn_ref; 25255332Scy char ipn_name[FR_GROUPLEN]; 26255332Scy U_QUAD_T ipn_hits; 27255332Scy U_QUAD_T ipn_bytes; 28255332Scy u_long ipn_die; 29145516Sdarrenr struct ip_pool_node *ipn_next, **ipn_pnext; 30255332Scy struct ip_pool_node *ipn_dnext, **ipn_pdnext; 31255332Scy struct ip_pool_s *ipn_owner; 32145516Sdarrenr} ip_pool_node_t; 33145516Sdarrenr 34145516Sdarrenr 35145516Sdarrenrtypedef struct ip_pool_s { 36145516Sdarrenr struct ip_pool_s *ipo_next; 37145516Sdarrenr struct ip_pool_s **ipo_pnext; 38255332Scy ipf_rdx_head_t *ipo_head; 39255332Scy ip_pool_node_t *ipo_list; 40255332Scy ip_pool_node_t **ipo_tail; 41255332Scy ip_pool_node_t *ipo_nextaddr; 42255332Scy void *ipo_radix; 43255332Scy u_long ipo_hits; 44255332Scy int ipo_unit; 45255332Scy int ipo_flags; 46255332Scy int ipo_ref; 47255332Scy char ipo_name[FR_GROUPLEN]; 48145516Sdarrenr} ip_pool_t; 49145516Sdarrenr 50170263Sdarrenr#define IPOOL_DELETE 0x01 51170263Sdarrenr#define IPOOL_ANON 0x02 52145516Sdarrenr 53145516Sdarrenr 54255332Scytypedef struct ipf_pool_stat { 55255332Scy u_long ipls_pools; 56255332Scy u_long ipls_tables; 57255332Scy u_long ipls_nodes; 58255332Scy ip_pool_t *ipls_list[LOOKUP_POOL_SZ]; 59255332Scy} ipf_pool_stat_t; 60145516Sdarrenr 61255332Scyextern ipf_lookup_t ipf_pool_backend; 62145516Sdarrenr 63255332Scy#ifndef _KERNEL 64255332Scyextern void ipf_pool_dump __P((ipf_main_softc_t *, void *)); 65255332Scy#endif 66145516Sdarrenr 67145516Sdarrenr#endif /* __IP_POOL_H__ */ 68