1254219Scy/* 2254219Scy * Copyright (C) 2012 by Darren Reed. 3254219Scy * 4254219Scy * See the IPFILTER.LICENCE file for details on licencing. 5254219Scy * 6254219Scy * $Id: ip_dstlist.h,v 1.5.2.6 2012/07/22 08:04:23 darren_r Exp $ 7254219Scy */ 8254219Scy 9254219Scy#ifndef __IP_DSTLIST_H__ 10254219Scy#define __IP_DSTLIST_H__ 11254219Scy 12254219Scytypedef struct ipf_dstnode { 13254219Scy struct ipf_dstnode *ipfd_next; 14254219Scy struct ipf_dstnode **ipfd_pnext; 15254219Scy ipfmutex_t ipfd_lock; 16254219Scy frdest_t ipfd_dest; 17254219Scy u_long ipfd_syncat; 18254219Scy int ipfd_flags; 19254219Scy int ipfd_size; 20254219Scy int ipfd_states; 21254219Scy int ipfd_ref; 22254219Scy int ipfd_uid; 23254219Scy char ipfd_names[1]; 24254219Scy} ipf_dstnode_t; 25254219Scy 26254219Scytypedef enum ippool_policy_e { 27254219Scy IPLDP_NONE = 0, 28254219Scy IPLDP_ROUNDROBIN, 29254219Scy IPLDP_CONNECTION, 30254219Scy IPLDP_RANDOM, 31254219Scy IPLDP_HASHED, 32254219Scy IPLDP_SRCHASH, 33254219Scy IPLDP_DSTHASH 34254219Scy} ippool_policy_t; 35254219Scy 36254219Scytypedef struct ippool_dst { 37254219Scy struct ippool_dst *ipld_next; 38254219Scy struct ippool_dst **ipld_pnext; 39254219Scy ipfmutex_t ipld_lock; 40254219Scy int ipld_seed; 41254219Scy int ipld_unit; 42254219Scy int ipld_ref; 43254219Scy int ipld_flags; 44254219Scy int ipld_nodes; 45254219Scy int ipld_maxnodes; 46254219Scy ippool_policy_t ipld_policy; 47254219Scy ipf_dstnode_t **ipld_dests; 48254219Scy ipf_dstnode_t *ipld_selected; 49254219Scy char ipld_name[FR_GROUPLEN]; 50254219Scy} ippool_dst_t; 51254219Scy 52254219Scy#define IPDST_DELETE 0x01 53254219Scy 54254219Scytypedef struct dstlist_stat_s { 55254219Scy void *ipls_list[LOOKUP_POOL_SZ]; 56254219Scy int ipls_numlists; 57254219Scy u_long ipls_nomem; 58254219Scy int ipls_numnodes; 59254219Scy int ipls_numdereflists; 60254219Scy int ipls_numderefnodes; 61254219Scy} ipf_dstl_stat_t; 62254219Scy 63254219Scyextern ipf_lookup_t ipf_dstlist_backend; 64254219Scy 65254219Scyextern int ipf_dstlist_select_node __P((fr_info_t *, void *, u_32_t *, 66254219Scy frdest_t *)); 67254219Scy 68254219Scy#endif /* __IP_DSTLIST_H__ */ 69