1114402Sru/* $NetBSD: ip_dstlist.h,v 1.2 2012/03/23 20:39:49 christos Exp $ */ 2114402Sru 3114402Sru/* 4114402Sru * Copyright (C) 2012 by Darren Reed. 5114402Sru * 6114402Sru * See the IPFILTER.LICENCE file for details on licencing. 7114402Sru * 8114402Sru * Id: ip_dstlist.h,v 1.1.1.2 2012/07/22 13:45:11 darrenr Exp 9114402Sru */ 10114402Sru 11114402Sru#ifndef __IP_DSTLIST_H__ 12114402Sru#define __IP_DSTLIST_H__ 13151497Sru 14114402Srutypedef struct ipf_dstnode { 15114402Sru struct ipf_dstnode *ipfd_next; 16114402Sru struct ipf_dstnode **ipfd_pnext; 17114402Sru ipfmutex_t ipfd_lock; 18114402Sru frdest_t ipfd_dest; 19114402Sru u_long ipfd_syncat; 20114402Sru int ipfd_flags; 21114402Sru int ipfd_size; 22114402Sru int ipfd_states; 23114402Sru int ipfd_ref; 24114402Sru int ipfd_uid; 25114402Sru char ipfd_names[1]; 26114402Sru} ipf_dstnode_t; 27114402Sru 28114402Srutypedef enum ippool_policy_e { 29151497Sru IPLDP_NONE = 0, 30151497Sru IPLDP_ROUNDROBIN, 31114402Sru IPLDP_CONNECTION, 32114402Sru IPLDP_RANDOM, 33114402Sru IPLDP_HASHED, 34114402Sru IPLDP_SRCHASH, 35114402Sru IPLDP_DSTHASH 36114402Sru} ippool_policy_t; 37114402Sru 38114402Srutypedef struct ippool_dst { 39114402Sru struct ippool_dst *ipld_next; 40114402Sru struct ippool_dst **ipld_pnext; 41114402Sru ipfmutex_t ipld_lock; 42114402Sru int ipld_seed; 43114402Sru int ipld_unit; 44114402Sru int ipld_ref; 45151497Sru int ipld_flags; 46151497Sru int ipld_nodes; 47151497Sru int ipld_maxnodes; 48151497Sru ippool_policy_t ipld_policy; 4975584Sru ipf_dstnode_t **ipld_dests; 5075584Sru ipf_dstnode_t *ipld_selected; 51104862Sru char ipld_name[FR_GROUPLEN]; 52151497Sru} ippool_dst_t; 5375584Sru 54104862Sru#define IPDST_DELETE 0x01 55104862Sru 56104862Srutypedef struct dstlist_stat_s { 57104862Sru void *ipls_list[LOOKUP_POOL_SZ]; 58104862Sru int ipls_numlists; 59104862Sru u_long ipls_nomem; 60104862Sru int ipls_numnodes; 61104862Sru int ipls_numdereflists; 62104862Sru int ipls_numderefnodes; 63104862Sru} ipf_dstl_stat_t; 64104862Sru 65104862Sruextern ipf_lookup_t ipf_dstlist_backend; 66104862Sru 67104862Sruextern int ipf_dstlist_select_node(fr_info_t *, void *, u_32_t *, frdest_t *); 68104862Sru 69104862Sru#endif /* __IP_DSTLIST_H__ */ 70104862Sru