93 lines
2.6 KiB
C
93 lines
2.6 KiB
C
/* $NetBSD: ip_pool.h,v 1.1.1.4 2008/05/20 06:44:17 darrenr Exp $ */
|
|
|
|
/*
|
|
* Copyright (C) 1993-2001, 2003 by Darren Reed.
|
|
*
|
|
* See the IPFILTER.LICENCE file for details on licencing.
|
|
*
|
|
* Id: ip_pool.h,v 2.26.2.6 2007/10/10 09:51:43 darrenr Exp
|
|
*/
|
|
|
|
#ifndef __IP_POOL_H__
|
|
#define __IP_POOL_H__
|
|
|
|
#if defined(_KERNEL) && !defined(__osf__) && !defined(__hpux) && \
|
|
!defined(linux) && !defined(sun) && !defined(AIX)
|
|
# include <net/radix.h>
|
|
extern void rn_freehead __P((struct radix_node_head *));
|
|
# define FreeS(p, z) KFREES(p, z)
|
|
extern int max_keylen;
|
|
#else
|
|
# if defined(__osf__) || defined(__hpux) || defined(sun)
|
|
# include "radix_ipf_local.h"
|
|
# define radix_mask ipf_radix_mask
|
|
# define radix_node ipf_radix_node
|
|
# define radix_node_head ipf_radix_node_head
|
|
# else
|
|
# include "radix_ipf.h"
|
|
# endif
|
|
#endif
|
|
#include "netinet/ip_lookup.h"
|
|
|
|
#define IP_POOL_NOMATCH 0
|
|
#define IP_POOL_POSITIVE 1
|
|
|
|
typedef struct ip_pool_node {
|
|
struct radix_node ipn_nodes[2];
|
|
addrfamily_t ipn_addr;
|
|
addrfamily_t ipn_mask;
|
|
int ipn_info;
|
|
int ipn_ref;
|
|
char ipn_name[FR_GROUPLEN];
|
|
u_long ipn_hits;
|
|
struct ip_pool_node *ipn_next, **ipn_pnext;
|
|
} ip_pool_node_t;
|
|
|
|
|
|
typedef struct ip_pool_s {
|
|
struct ip_pool_s *ipo_next;
|
|
struct ip_pool_s **ipo_pnext;
|
|
struct radix_node_head *ipo_head;
|
|
ip_pool_node_t *ipo_list;
|
|
u_long ipo_hits;
|
|
int ipo_unit;
|
|
int ipo_flags;
|
|
int ipo_ref;
|
|
char ipo_name[FR_GROUPLEN];
|
|
} ip_pool_t;
|
|
|
|
#define IPOOL_DELETE 0x01
|
|
#define IPOOL_ANON 0x02
|
|
|
|
|
|
typedef struct ip_pool_stat {
|
|
u_long ipls_pools;
|
|
u_long ipls_tables;
|
|
u_long ipls_nodes;
|
|
ip_pool_t *ipls_list[IPL_LOGSIZE];
|
|
} ip_pool_stat_t;
|
|
|
|
|
|
extern ip_pool_stat_t ipoolstat;
|
|
extern ip_pool_t *ip_pool_list[IPL_LOGSIZE];
|
|
|
|
extern int ip_pool_search __P((void *, int, void *));
|
|
extern int ip_pool_init __P((void));
|
|
extern void ip_pool_fini __P((void));
|
|
extern int ip_pool_create __P((iplookupop_t *));
|
|
extern int ip_pool_insert __P((ip_pool_t *, i6addr_t *, i6addr_t *, int));
|
|
extern int ip_pool_remove __P((ip_pool_t *, ip_pool_node_t *));
|
|
extern int ip_pool_destroy __P((int, char *));
|
|
extern void ip_pool_free __P((ip_pool_t *));
|
|
extern void ip_pool_deref __P((ip_pool_t *));
|
|
extern void ip_pool_node_deref __P((ip_pool_node_t *));
|
|
extern void *ip_pool_find __P((int, char *));
|
|
extern ip_pool_node_t *ip_pool_findeq __P((ip_pool_t *,
|
|
addrfamily_t *, addrfamily_t *));
|
|
extern int ip_pool_flush __P((iplookupflush_t *));
|
|
extern int ip_pool_statistics __P((iplookupop_t *));
|
|
extern int ip_pool_getnext __P((ipftoken_t *, ipflookupiter_t *));
|
|
extern void ip_pool_iterderef __P((u_int, int, void *));
|
|
|
|
#endif /* __IP_POOL_H__ */
|