1 1.3 darrenr /* $NetBSD: ip_dstlist.h,v 1.3 2012/07/22 14:27:51 darrenr Exp $ */ 2 1.1 christos 3 1.1 christos /* 4 1.3 darrenr * Copyright (C) 2012 by Darren Reed. 5 1.1 christos * 6 1.1 christos * See the IPFILTER.LICENCE file for details on licencing. 7 1.1 christos * 8 1.3 darrenr * Id: ip_dstlist.h,v 1.1.1.2 2012/07/22 13:45:11 darrenr Exp 9 1.1 christos */ 10 1.1 christos 11 1.1 christos #ifndef __IP_DSTLIST_H__ 12 1.1 christos #define __IP_DSTLIST_H__ 13 1.1 christos 14 1.1 christos typedef struct ipf_dstnode { 15 1.1 christos struct ipf_dstnode *ipfd_next; 16 1.1 christos struct ipf_dstnode **ipfd_pnext; 17 1.1 christos ipfmutex_t ipfd_lock; 18 1.1 christos frdest_t ipfd_dest; 19 1.1 christos u_long ipfd_syncat; 20 1.1 christos int ipfd_flags; 21 1.1 christos int ipfd_size; 22 1.1 christos int ipfd_states; 23 1.1 christos int ipfd_ref; 24 1.1 christos int ipfd_uid; 25 1.1 christos char ipfd_names[1]; 26 1.1 christos } ipf_dstnode_t; 27 1.1 christos 28 1.1 christos typedef enum ippool_policy_e { 29 1.1 christos IPLDP_NONE = 0, 30 1.1 christos IPLDP_ROUNDROBIN, 31 1.1 christos IPLDP_CONNECTION, 32 1.1 christos IPLDP_RANDOM, 33 1.1 christos IPLDP_HASHED, 34 1.1 christos IPLDP_SRCHASH, 35 1.1 christos IPLDP_DSTHASH 36 1.1 christos } ippool_policy_t; 37 1.1 christos 38 1.1 christos typedef struct ippool_dst { 39 1.1 christos struct ippool_dst *ipld_next; 40 1.1 christos struct ippool_dst **ipld_pnext; 41 1.1 christos ipfmutex_t ipld_lock; 42 1.1 christos int ipld_seed; 43 1.1 christos int ipld_unit; 44 1.1 christos int ipld_ref; 45 1.1 christos int ipld_flags; 46 1.1 christos int ipld_nodes; 47 1.1 christos int ipld_maxnodes; 48 1.1 christos ippool_policy_t ipld_policy; 49 1.1 christos ipf_dstnode_t **ipld_dests; 50 1.1 christos ipf_dstnode_t *ipld_selected; 51 1.1 christos char ipld_name[FR_GROUPLEN]; 52 1.1 christos } ippool_dst_t; 53 1.1 christos 54 1.1 christos #define IPDST_DELETE 0x01 55 1.1 christos 56 1.1 christos typedef struct dstlist_stat_s { 57 1.1 christos void *ipls_list[LOOKUP_POOL_SZ]; 58 1.1 christos int ipls_numlists; 59 1.1 christos u_long ipls_nomem; 60 1.1 christos int ipls_numnodes; 61 1.1 christos int ipls_numdereflists; 62 1.1 christos int ipls_numderefnodes; 63 1.1 christos } ipf_dstl_stat_t; 64 1.1 christos 65 1.1 christos extern ipf_lookup_t ipf_dstlist_backend; 66 1.1 christos 67 1.2 christos extern int ipf_dstlist_select_node(fr_info_t *, void *, u_32_t *, frdest_t *); 68 1.1 christos 69 1.1 christos #endif /* __IP_DSTLIST_H__ */ 70