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
20typedef	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
37typedef	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
56typedef	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
63extern	ipf_lookup_t	ipf_pool_backend;
64
65#ifndef _KERNEL
66extern	void	ipf_pool_dump(ipf_main_softc_t *, void *);
67#endif
68
69#endif /* __IP_POOL_H__ */