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