In the old days when K&R C and STD C were each in use a workaround (read hack) was required to allow the same code to work on each without modification. All C compilers support STD C. We can finally put the __P prototype to rest. MFC after: 1 week
69 lines
1.4 KiB
C
69 lines
1.4 KiB
C
/*
|
|
* Copyright (C) 2012 by Darren Reed.
|
|
*
|
|
* See the IPFILTER.LICENCE file for details on licencing.
|
|
*
|
|
* $Id: ip_dstlist.h,v 1.5.2.6 2012/07/22 08:04:23 darren_r Exp $
|
|
*/
|
|
|
|
#ifndef __IP_DSTLIST_H__
|
|
#define __IP_DSTLIST_H__
|
|
|
|
typedef struct ipf_dstnode {
|
|
struct ipf_dstnode *ipfd_next;
|
|
struct ipf_dstnode **ipfd_pnext;
|
|
ipfmutex_t ipfd_lock;
|
|
frdest_t ipfd_dest;
|
|
u_long ipfd_syncat;
|
|
int ipfd_flags;
|
|
int ipfd_size;
|
|
int ipfd_states;
|
|
int ipfd_ref;
|
|
int ipfd_uid;
|
|
char ipfd_names[1];
|
|
} ipf_dstnode_t;
|
|
|
|
typedef enum ippool_policy_e {
|
|
IPLDP_NONE = 0,
|
|
IPLDP_ROUNDROBIN,
|
|
IPLDP_CONNECTION,
|
|
IPLDP_RANDOM,
|
|
IPLDP_HASHED,
|
|
IPLDP_SRCHASH,
|
|
IPLDP_DSTHASH
|
|
} ippool_policy_t;
|
|
|
|
typedef struct ippool_dst {
|
|
struct ippool_dst *ipld_next;
|
|
struct ippool_dst **ipld_pnext;
|
|
ipfmutex_t ipld_lock;
|
|
int ipld_seed;
|
|
int ipld_unit;
|
|
int ipld_ref;
|
|
int ipld_flags;
|
|
int ipld_nodes;
|
|
int ipld_maxnodes;
|
|
ippool_policy_t ipld_policy;
|
|
ipf_dstnode_t **ipld_dests;
|
|
ipf_dstnode_t *ipld_selected;
|
|
char ipld_name[FR_GROUPLEN];
|
|
} ippool_dst_t;
|
|
|
|
#define IPDST_DELETE 0x01
|
|
|
|
typedef struct dstlist_stat_s {
|
|
void *ipls_list[LOOKUP_POOL_SZ];
|
|
int ipls_numlists;
|
|
u_long ipls_nomem;
|
|
int ipls_numnodes;
|
|
int ipls_numdereflists;
|
|
int ipls_numderefnodes;
|
|
} ipf_dstl_stat_t;
|
|
|
|
extern ipf_lookup_t ipf_dstlist_backend;
|
|
|
|
extern int ipf_dstlist_select_node(fr_info_t *, void *, u_32_t *,
|
|
frdest_t *);
|
|
|
|
#endif /* __IP_DSTLIST_H__ */
|