1254562Scy/* 2254562Scy * Copyright (C) 2012 by Darren Reed. 3254562Scy * 4254562Scy * See the IPFILTER.LICENCE file for details on licencing. 5254562Scy * 6254562Scy * $Id: ip_dstlist.h,v 1.5.2.6 2012/07/22 08:04:23 darren_r Exp $ 7254562Scy */ 8254562Scy 9254562Scy#ifndef __IP_DSTLIST_H__ 10254562Scy#define __IP_DSTLIST_H__ 11254562Scy 12254562Scytypedef struct ipf_dstnode { 13254562Scy struct ipf_dstnode *ipfd_next; 14254562Scy struct ipf_dstnode **ipfd_pnext; 15254562Scy ipfmutex_t ipfd_lock; 16254562Scy frdest_t ipfd_dest; 17254562Scy u_long ipfd_syncat; 18254562Scy int ipfd_flags; 19254562Scy int ipfd_size; 20254562Scy int ipfd_states; 21254562Scy int ipfd_ref; 22254562Scy int ipfd_uid; 23254562Scy char ipfd_names[1]; 24254562Scy} ipf_dstnode_t; 25254562Scy 26254562Scytypedef enum ippool_policy_e { 27254562Scy IPLDP_NONE = 0, 28254562Scy IPLDP_ROUNDROBIN, 29254562Scy IPLDP_CONNECTION, 30254562Scy IPLDP_RANDOM, 31254562Scy IPLDP_HASHED, 32254562Scy IPLDP_SRCHASH, 33254562Scy IPLDP_DSTHASH 34254562Scy} ippool_policy_t; 35254562Scy 36254562Scytypedef struct ippool_dst { 37254562Scy struct ippool_dst *ipld_next; 38254562Scy struct ippool_dst **ipld_pnext; 39254562Scy ipfmutex_t ipld_lock; 40254562Scy int ipld_seed; 41254562Scy int ipld_unit; 42254562Scy int ipld_ref; 43254562Scy int ipld_flags; 44254562Scy int ipld_nodes; 45254562Scy int ipld_maxnodes; 46254562Scy ippool_policy_t ipld_policy; 47254562Scy ipf_dstnode_t **ipld_dests; 48254562Scy ipf_dstnode_t *ipld_selected; 49254562Scy char ipld_name[FR_GROUPLEN]; 50254562Scy} ippool_dst_t; 51254562Scy 52254562Scy#define IPDST_DELETE 0x01 53254562Scy 54254562Scytypedef struct dstlist_stat_s { 55254562Scy void *ipls_list[LOOKUP_POOL_SZ]; 56254562Scy int ipls_numlists; 57254562Scy u_long ipls_nomem; 58254562Scy int ipls_numnodes; 59254562Scy int ipls_numdereflists; 60254562Scy int ipls_numderefnodes; 61254562Scy} ipf_dstl_stat_t; 62254562Scy 63254562Scyextern ipf_lookup_t ipf_dstlist_backend; 64254562Scy 65254562Scyextern int ipf_dstlist_select_node __P((fr_info_t *, void *, u_32_t *, 66254562Scy frdest_t *)); 67254562Scy 68254562Scy#endif /* __IP_DSTLIST_H__ */ 69