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