#ifndef SQUID_STRUCTS_H
#define SQUID_STRUCTS_H
-#include "RefCount.h"
#include "cbdata.h"
+#include "defines.h"
#include "dlink.h"
-#include "err_type.h"
+#include "hash.h"
+#include "ip/Address.h"
/* needed for the global config */
#include "HttpHeader.h"
-
-/* for ICP_END */
-#include "icp_opcode.h"
-
-#if USE_SSL
-#include <openssl/ssl.h>
-#endif
+#include "HttpHeaderTools.h"
#define PEER_MULTICAST_SIBLINGS 1
-struct acl_name_list {
- char name[ACL_NAME_SZ];
- acl_name_list *next;
-};
-
-struct acl_deny_info_list {
- err_type err_page_id;
- char *err_page_name;
- acl_name_list *acl_list;
- acl_deny_info_list *next;
-};
-
-
-class acl_access;
-
-struct _header_mangler {
- acl_access *access_list;
- char *replacement;
-};
-
class ACLChecklist;
#if SQUID_SNMP
-struct _snmp_request_t {
+#include "snmp_session.h"
+class snmp_request_t {
+public:
u_char *buf;
u_char *outbuf;
int len;
class ACLList;
-struct acl_address {
- acl_address *next;
- ACLList *aclList;
-
- Ip::Address addr;
-};
-
struct acl_tos {
acl_tos *next;
ACLList *aclList;
int64_t size;
};
-struct ushortlist {
- unsigned short i;
- ushortlist *next;
-};
-
-struct relist {
- int flags;
- char *pattern;
- regex_t regex;
- relist *next;
-};
-
#if USE_DELAY_POOLS
#include "DelayConfig.h"
#include "ClientDelayConfig.h"
class CpuAffinityMap;
class RemovalPolicySettings;
class external_acl;
+class Store;
+class CustomLog;
+class cachemgr_passwd;
+namespace AnyP
+{
+struct PortCfg;
+}
class SwapDir;
-/// Used for boolean enabled/disabled options with complex default logic.
-/// Allows Squid to compute the right default after configuration.
-/// Checks that not-yet-defined option values are not used.
-class YesNoNone
-{
-// TODO: generalize to non-boolean option types
+class close_handler {
public:
- YesNoNone(): option(0) {}
-
- /// returns true iff enabled; asserts if the option has not been configured
- operator void *() const; // TODO: use a fancy/safer version of the operator
-
- /// enables or disables the option;
- void configure(bool beSet);
-
- /// whether the option was enabled or disabled, by user or Squid
- bool configured() const { return option != 0; }
-
-private:
- enum { optUnspecified = -1, optDisabled = 0, optEnabled = 1 };
- int option; ///< configured value or zero
-};
-
-struct SquidConfig {
-
- struct {
- /* These should be for the Store::Root instance.
- * this needs pluggable parsing to be done smoothly.
- */
- int highWaterMark;
- int lowWaterMark;
- } Swap;
-
- YesNoNone memShared; ///< whether the memory cache is shared among workers
- size_t memMaxSize;
-
- struct {
- int64_t min;
- int pct;
- int64_t max;
- } quickAbort;
- int64_t readAheadGap;
- RemovalPolicySettings *replPolicy;
- RemovalPolicySettings *memPolicy;
-#if USE_HTTP_VIOLATIONS
- time_t negativeTtl;
-#endif
- time_t maxStale;
- time_t negativeDnsTtl;
- time_t positiveDnsTtl;
- time_t shutdownLifetime;
- time_t backgroundPingRate;
-
- struct {
- time_t read;
- time_t write;
- time_t lifetime;
- time_t connect;
- time_t forward;
- time_t peer_connect;
- time_t request;
- time_t persistent_request;
- time_t pconn;
- time_t siteSelect;
- time_t deadPeer;
- int icp_query; /* msec */
- int icp_query_max; /* msec */
- int icp_query_min; /* msec */
- int mcast_icp_query; /* msec */
-
-#if !USE_DNSSERVERS
-
- time_msec_t idns_retransmit;
- time_msec_t idns_query;
-#endif
-
- } Timeout;
- size_t maxRequestHeaderSize;
- int64_t maxRequestBodySize;
- int64_t maxChunkedRequestBodySize;
- size_t maxRequestBufferSize;
- size_t maxReplyHeaderSize;
- acl_size_t *ReplyBodySize;
-
- struct {
- unsigned short icp;
-#if USE_HTCP
-
- unsigned short htcp;
-#endif
-#if SQUID_SNMP
-
- unsigned short snmp;
-#endif
- } Port;
-
- struct {
- http_port_list *http;
-#if USE_SSL
-
- https_port_list *https;
-#endif
-
- } Sockaddr;
-#if SQUID_SNMP
-
- struct {
- char *configFile;
- char *agentInfo;
- } Snmp;
-#endif
-#if USE_WCCP
-
- struct {
- Ip::Address router;
- Ip::Address address;
- int version;
- } Wccp;
-#endif
-#if USE_WCCPv2
-
- struct {
- Ip::Address_list *router;
- Ip::Address address;
- int forwarding_method;
- int return_method;
- int assignment_method;
- int weight;
- int rebuildwait;
- void *info;
- } Wccp2;
-#endif
-
-#if USE_ICMP
- IcmpConfig pinger;
-#endif
-
- char *as_whois_server;
-
- struct {
- char *store;
- char *swap;
- customlog *accesslogs;
-#if ICAP_CLIENT
- customlog *icaplogs;
-#endif
- int rotateNumber;
- } Log;
- char *adminEmail;
- char *EmailFrom;
- char *EmailProgram;
- char *effectiveUser;
- char *visible_appname_string;
- char *effectiveGroup;
-
- struct {
-#if USE_DNSSERVERS
- char *dnsserver;
-#endif
-
- wordlist *redirect;
-#if USE_UNLINKD
-
- char *unlinkd;
-#endif
-
- char *diskd;
-#if USE_SSL
-
- char *ssl_password;
-#endif
-
- } Program;
-#if USE_DNSSERVERS
-
- HelperChildConfig dnsChildren;
-#endif
-
- HelperChildConfig redirectChildren;
- time_t authenticateGCInterval;
- time_t authenticateTTL;
- time_t authenticateIpTTL;
-
- struct {
- char *surrogate_id;
- } Accel;
- char *appendDomain;
- size_t appendDomainLen;
- char *pidFilename;
- char *netdbFilename;
- char *mimeTablePathname;
- char *etcHostsPath;
- char *visibleHostname;
- char *uniqueHostname;
- wordlist *hostnameAliases;
- char *errHtmlText;
-
- struct {
- char *host;
- char *file;
- time_t period;
- unsigned short port;
- } Announce;
-
- struct {
-
- Ip::Address udp_incoming;
- Ip::Address udp_outgoing;
-#if SQUID_SNMP
- Ip::Address snmp_incoming;
- Ip::Address snmp_outgoing;
-#endif
- /* FIXME INET6 : this should really be a CIDR value */
- Ip::Address client_netmask;
- } Addrs;
- size_t tcpRcvBufsz;
- size_t udpMaxHitObjsz;
- wordlist *hierarchy_stoplist;
- wordlist *mcast_group_list;
- wordlist *dns_nameservers;
- peer *peers;
- int npeers;
-
- struct {
- int size;
- int low;
- int high;
- } ipcache;
-
- struct {
- int size;
- } fqdncache;
- int minDirectHops;
- int minDirectRtt;
- cachemgr_passwd *passwd_list;
-
- struct {
- int objectsPerBucket;
- int64_t avgObjectSize;
- int64_t maxObjectSize;
- int64_t minObjectSize;
- size_t maxInMemObjSize;
- } Store;
-
- struct {
- int high;
- int low;
- time_t period;
- } Netdb;
-
- struct {
- int log_udp;
- int res_defnames;
- int anonymizer;
- int client_db;
- int query_icmp;
- int icp_hit_stale;
- int buffered_logs;
- int common_log;
- int log_mime_hdrs;
- int log_fqdn;
- int announce;
- int mem_pools;
- int test_reachability;
- int half_closed_clients;
- int refresh_all_ims;
-#if USE_HTTP_VIOLATIONS
-
- int reload_into_ims;
-#endif
-
- int offline;
- int redir_rewrites_host;
- int prefer_direct;
- int nonhierarchical_direct;
- int strip_query_terms;
- int redirector_bypass;
- int ignore_unknown_nameservers;
- int client_pconns;
- int server_pconns;
- int error_pconns;
-#if USE_CACHE_DIGESTS
-
- int digest_generation;
-#endif
-
- int ie_refresh;
- int vary_ignore_expire;
- int pipeline_prefetch;
- int surrogate_is_remote;
- int request_entities;
- int detect_broken_server_pconns;
- int balance_on_multiple_ip;
- int relaxed_header_parser;
- int check_hostnames;
- int allow_underscore;
- int via;
- int emailErrData;
- int httpd_suppress_version_string;
- int global_internal_static;
- int dns_require_A;
-
-#if FOLLOW_X_FORWARDED_FOR
- int acl_uses_indirect_client;
- int delay_pool_uses_indirect_client;
- int log_uses_indirect_client;
-#if LINUX_NETFILTER
- int tproxy_uses_indirect_client;
-#endif
-#endif /* FOLLOW_X_FORWARDED_FOR */
-
- int WIN32_IpAddrChangeMonitor;
- int memory_cache_first;
- int memory_cache_disk;
- int client_dst_passthru;
- } onoff;
-
- int forward_max_tries;
- int connect_retries;
-
- class ACL *aclList;
-
- struct {
- acl_access *http;
- acl_access *adapted_http;
- acl_access *icp;
- acl_access *miss;
- acl_access *NeverDirect;
- acl_access *AlwaysDirect;
- acl_access *ASlists;
- acl_access *noCache;
- acl_access *log;
-#if SQUID_SNMP
-
- acl_access *snmp;
-#endif
-#if USE_HTTP_VIOLATIONS
- acl_access *brokenPosts;
-#endif
- acl_access *redirector;
- acl_access *reply;
- acl_address *outgoing_address;
-#if USE_HTCP
-
- acl_access *htcp;
- acl_access *htcp_clr;
-#endif
-
-#if USE_SSL
- acl_access *ssl_bump;
-#endif
-#if FOLLOW_X_FORWARDED_FOR
- acl_access *followXFF;
-#endif /* FOLLOW_X_FORWARDED_FOR */
-
-#if ICAP_CLIENT
- acl_access* icap;
-#endif
- } accessList;
- acl_deny_info_list *denyInfoList;
-
- struct {
- size_t list_width;
- int list_wrap;
- char *anon_user;
- int passive;
- int epsv_all;
- int epsv;
- int eprt;
- int sanitycheck;
- int telnet;
- } Ftp;
- refresh_t *Refresh;
-
- struct _cacheSwap {
- RefCount<SwapDir> *swapDirs;
- int n_allocated;
- int n_configured;
- ///< number of disk processes required to support all cache_dirs
- int n_strands;
- } cacheSwap;
- /*
- * I'm sick of having to keep doing this ..
- */
-#define INDEXSD(i) (Config.cacheSwap.swapDirs[(i)].getRaw())
-
- struct {
- char *directory;
- int use_short_names;
- } icons;
- char *errorDirectory;
-#if USE_ERR_LOCALES
- char *errorDefaultLanguage;
- int errorLogMissingLanguages;
-#endif
- char *errorStylesheet;
-
- struct {
- int onerror;
- } retry;
-
- struct {
- int64_t limit;
- } MemPools;
-#if USE_DELAY_POOLS
-
- DelayConfig Delay;
- ClientDelayConfig ClientDelay;
-#endif
-
- struct {
- int icp_average;
- int dns_average;
- int http_average;
- int icp_min_poll;
- int dns_min_poll;
- int http_min_poll;
- } comm_incoming;
- int max_open_disk_fds;
- int uri_whitespace;
- acl_size_t *rangeOffsetLimit;
-#if MULTICAST_MISS_STREAM
-
- struct {
-
- Ip::Address addr;
- int ttl;
- unsigned short port;
- char *encode_key;
- } mcast_miss;
-#endif
-
- /* one access list per header type we know of */
- header_mangler request_header_access[HDR_ENUM_END];
- /* one access list per header type we know of */
- header_mangler reply_header_access[HDR_ENUM_END];
- char *coredump_dir;
- char *chroot_dir;
-#if USE_CACHE_DIGESTS
-
- struct {
- int bits_per_entry;
- time_t rebuild_period;
- time_t rewrite_period;
- size_t swapout_chunk_size;
- int rebuild_chunk_percentage;
- } digest;
-#endif
-#if USE_SSL
-
- struct {
- int unclean_shutdown;
- char *ssl_engine;
- } SSL;
-#endif
-
- wordlist *ext_methods;
-
- struct {
- int high_rptm;
- int high_pf;
- size_t high_memory;
- } warnings;
- char *store_dir_select_algorithm;
- int sleep_after_fork; /* microseconds */
- time_t minimum_expiry_time; /* seconds */
- external_acl *externalAclHelperList;
-
-#if USE_SSL
-
- struct {
- char *cert;
- char *key;
- int version;
- char *options;
- char *cipher;
- char *cafile;
- char *capath;
- char *crlfile;
- char *flags;
- acl_access *cert_error;
- SSL_CTX *sslContext;
- } ssl_client;
-#endif
-
- char *accept_filter;
- int umask;
- int max_filedescriptors;
- int workers;
- CpuAffinityMap *cpuAffinityMap;
-
-#if USE_LOADABLE_MODULES
- wordlist *loadable_module_names;
-#endif
-
- int client_ip_max_connections;
-
- struct {
- ssize_t packet_max; ///< maximum size EDNS advertised for DNS replies.
- } dns;
-};
-
-SQUIDCEXTERN SquidConfig Config;
-
-struct SquidConfig2 {
- struct {
- int enable_purge;
- int mangle_request_headers;
- } onoff;
- uid_t effectiveUserID;
- gid_t effectiveGroupID;
-};
-
-SQUIDCEXTERN SquidConfig2 Config2;
-
-struct _close_handler {
PF *handler;
void *data;
close_handler *next;
};
-struct _dread_ctrl {
+class dread_ctrl {
+public:
int fd;
off_t offset;
int req_len;
void *client_data;
};
-struct _dwrite_q {
+class dwrite_q {
+public:
off_t file_offset;
char *buf;
size_t len;
off_t offset;
};
-struct _fileMap {
- int max_n_files;
- int n_files_in_map;
- int toggle;
- int nwords;
- unsigned long *file_map;
-};
-
-/*
- * Note: HttpBody is used only for messages with a small content that is
- * known a priory (e.g., error messages).
- */
-
-class MemBuf;
-
-struct _HttpBody {
- /* private */
- MemBuf *mb;
-};
-
-#include "SquidString.h"
-/* http header extention field */
-
-class HttpHdrExtField
-{
- String name; /* field-name from HTTP/1.1 (no column after name) */
- String value; /* field-value from HTTP/1.1 */
-};
-
-/* http cache control header field */
-
-class HttpHdrCc
-{
-
-public:
- int mask;
- int max_age;
- int s_maxage;
- int max_stale;
- int stale_if_error;
- int min_fresh;
- String other;
-};
-
-/* per field statistics */
-
-class HttpHeaderFieldStat
-{
-
-public:
- HttpHeaderFieldStat() : aliveCount(0), seenCount(0), parsCount(0), errCount(0), repCount(0) {}
-
- int aliveCount; /* created but not destroyed (count) */
- int seenCount; /* #fields we've seen */
- int parsCount; /* #parsing attempts */
- int errCount; /* #pasring errors */
- int repCount; /* #repetitons */
-};
-
-/* compiled version of HttpHeaderFieldAttrs plus stats */
-
-class HttpHeaderFieldInfo
-{
+class http_state_flags {
public:
- HttpHeaderFieldInfo() : id (HDR_ACCEPT), type (ftInvalid) {}
-
- http_hdr_type id;
- String name;
- field_type type;
- HttpHeaderFieldStat stat;
-};
-
-struct _http_state_flags {
unsigned int proxying:1;
unsigned int keepalive:1;
unsigned int only_if_cached:1;
unsigned int sentLastChunk:1; ///< do not try to write last-chunk again
};
-struct _domain_ping {
+class domain_ping {
+public:
char *domain;
int do_ping; /* boolean */
domain_ping *next;
};
-struct _domain_type {
+class domain_type {
+public:
char *domain;
peer_t type;
domain_type *next;
};
-#if USE_CACHE_DIGESTS
-
-/* statistics for cache digests and other hit "predictors" */
-
-struct _cd_guess_stats {
- /* public, read-only */
- int true_hits;
- int false_hits;
- int true_misses;
- int false_misses;
- int close_hits; /* tmp, remove it later */
-};
-
-#endif
-
class PeerDigest;
-struct peer {
- u_int index;
- char *name;
- char *host;
- peer_t type;
-
- Ip::Address in_addr;
-
- struct {
- int pings_sent;
- int pings_acked;
- int fetches;
- int rtt;
- int ignored_replies;
- int n_keepalives_sent;
- int n_keepalives_recv;
- time_t probe_start;
- time_t last_query;
- time_t last_reply;
- time_t last_connect_failure;
- time_t last_connect_probe;
- int logged_state; /* so we can print dead/revived msgs */
- int conn_open; /* current opened connections */
- } stats;
-
- struct {
- int version;
- int counts[ICP_END+1];
- unsigned short port;
- } icp;
-
-#if USE_HTCP
- struct {
- double version;
- int counts[2];
- unsigned short port;
- } htcp;
-#endif
-
- unsigned short http_port;
- domain_ping *peer_domain;
- domain_type *typelist;
- acl_access *access;
-
- struct {
- unsigned int proxy_only:1;
- unsigned int no_query:1;
- unsigned int background_ping:1;
- unsigned int no_digest:1;
- unsigned int default_parent:1;
- unsigned int roundrobin:1;
- unsigned int weighted_roundrobin:1;
- unsigned int mcast_responder:1;
- unsigned int closest_only:1;
-#if USE_HTCP
- unsigned int htcp:1;
- unsigned int htcp_oldsquid:1;
- unsigned int htcp_no_clr:1;
- unsigned int htcp_no_purge_clr:1;
- unsigned int htcp_only_clr:1;
- unsigned int htcp_forward_clr:1;
-#endif
- unsigned int no_netdb_exchange:1;
-#if USE_DELAY_POOLS
- unsigned int no_delay:1;
-#endif
- unsigned int allow_miss:1;
- unsigned int carp:1;
- struct {
- unsigned int set:1; //If false, whole url is to be used. Overrides others
- unsigned int scheme:1;
- unsigned int host:1;
- unsigned int port:1;
- unsigned int path:1;
- unsigned int params:1;
- } carp_key;
-#if USE_AUTH
- unsigned int userhash:1;
-#endif
- unsigned int sourcehash:1;
- unsigned int originserver:1;
- unsigned int no_tproxy:1;
-#if PEER_MULTICAST_SIBLINGS
- unsigned int mcast_siblings:1;
-#endif
- } options;
-
- int weight;
- int basetime;
-
- struct {
- double avg_n_members;
- int n_times_counted;
- int n_replies_expected;
- int ttl;
- int id;
-
- struct {
- unsigned int count_event_pending:1;
- unsigned int counting:1;
- } flags;
- } mcast;
-#if USE_CACHE_DIGESTS
-
- PeerDigest *digest;
- char *digest_url;
-#endif
-
- int tcp_up; /* 0 if a connect() fails */
-
- Ip::Address addresses[10];
- int n_addresses;
- int rr_count;
- peer *next;
- int testing_now;
-
- struct {
- unsigned int hash;
- double load_multiplier;
- double load_factor; /* normalized weight value */
- } carp;
-#if USE_AUTH
- struct {
- unsigned int hash;
- double load_multiplier;
- double load_factor; /* normalized weight value */
- } userhash;
-#endif
- struct {
- unsigned int hash;
- double load_multiplier;
- double load_factor; /* normalized weight value */
- } sourcehash;
-
- char *login; /* Proxy authorization */
- time_t connect_timeout;
- int connect_fail_limit;
- int max_conn;
- char *domain; /* Forced domain */
-#if USE_SSL
-
- int use_ssl;
- char *sslcert;
- char *sslkey;
- int sslversion;
- char *ssloptions;
- char *sslcipher;
- char *sslcafile;
- char *sslcapath;
- char *sslcrlfile;
- char *sslflags;
- char *ssldomain;
- SSL_CTX *sslContext;
- SSL_SESSION *sslSession;
-#endif
- int front_end_https;
- int connection_auth;
-};
+class netdbEntry;
-struct _net_db_name {
+class net_db_name {
+public:
hash_link hash; /* must be first */
net_db_name *next;
netdbEntry *net_db_entry;
};
-struct _net_db_peer {
+class net_db_peer {
+public:
const char *peername;
double hops;
double rtt;
time_t expires;
};
-struct _netdbEntry {
+class netdbEntry {
+public:
hash_link hash; /* must be first */
char network[MAX_IPSTRLEN];
int pings_sent;
int n_peers;
};
-struct _iostats {
+class iostats {
+public:
+ static const int histSize=16;
- enum { histSize = 16 };
+// enum { histSize = 16 };
struct {
int reads;
Http, Ftp, Gopher;
};
-
struct request_flags {
- request_flags(): range(0),nocache(0),ims(0),auth(0),cachable(0),hierarchical(0),loopdetect(0),proxy_keepalive(0),proxying(0),refresh(0),redirected(0),need_validation(0),fail_on_validation_err(0),stale_if_hit(0),accelerated(0),ignore_cc(0),intercepted(0),spoof_client_ip(0),internal(0),internalclient(0),must_keepalive(0),chunked_reply(0),stream_error(0),sslBumped(0),destinationIPLookedUp_(0) {
+ request_flags(): range(0),nocache(0),ims(0),auth(0),cachable(0),hierarchical(0),loopdetect(0),proxy_keepalive(0),proxying(0),refresh(0),redirected(0),need_validation(0),fail_on_validation_err(0),stale_if_hit(0),accelerated(0),ignore_cc(0),intercepted(0),hostVerified(0),spoof_client_ip(0),internal(0),internalclient(0),must_keepalive(0),pinned(0),canRePin(0),chunked_reply(0),stream_error(0),sslPeek(0),sslBumped(0),destinationIPLookedUp_(0) {
#if USE_HTTP_VIOLATIONS
nocache_hack = 0;
#endif
}
unsigned int range:1;
- unsigned int nocache:1;
+ unsigned int nocache:1; ///< whether the response to this request may be READ from cache
unsigned int ims:1;
unsigned int auth:1;
- unsigned int cachable:1;
+ unsigned int cachable:1; ///< whether the response to thie request may be stored in the cache
unsigned int hierarchical:1;
unsigned int loopdetect:1;
unsigned int proxy_keepalive:1;
#endif
unsigned int accelerated:1;
unsigned int ignore_cc:1;
- unsigned int intercepted:1; /**< transparently intercepted request */
+ unsigned int intercepted:1; ///< intercepted request
+ unsigned int hostVerified:1; ///< whether the Host: header passed verification
unsigned int spoof_client_ip:1; /**< spoof client ip if possible */
unsigned int internal:1;
unsigned int internalclient:1;
unsigned int connection_auth_disabled:1; /** Connection oriented auth can not be supported */
unsigned int connection_proxy_auth:1; /** Request wants connection oriented auth */
unsigned int pinned:1; /* Request sent on a pinned connection */
+ unsigned int canRePin:1; ///< OK to reopen a failed pinned connection
unsigned int auth_sent:1; /* Authentication forwarded */
unsigned int no_direct:1; /* Deny direct forwarding unless overriden by always_direct. Used in accelerator mode */
unsigned int chunked_reply:1; /**< Reply with chunked transfer encoding */
unsigned int stream_error:1; /**< Whether stream error has occured */
+ unsigned int sslPeek:1; ///< internal ssl-bump request to get server cert
unsigned int sslBumped:1; /**< ssl-bumped request*/
// When adding new flags, please update cloneAdaptationImmune() as needed.
unsigned int destinationIPLookedUp_:1;
};
-struct _link_list {
- void *ptr;
-
- struct _link_list *next;
-};
-struct _cachemgr_passwd {
+class cachemgr_passwd {
+public:
char *passwd;
wordlist *actions;
cachemgr_passwd *next;
};
-struct _refresh_t {
- const char *pattern;
- regex_t compiled_pattern;
- time_t min;
- double pct;
- time_t max;
- refresh_t *next;
-
- struct {
- unsigned int icase:1;
- unsigned int refresh_ims:1;
- unsigned int store_stale:1;
-#if USE_HTTP_VIOLATIONS
- unsigned int override_expire:1;
- unsigned int override_lastmod:1;
- unsigned int reload_into_ims:1;
- unsigned int ignore_reload:1;
- unsigned int ignore_no_cache:1;
- unsigned int ignore_no_store:1;
- unsigned int ignore_must_revalidate:1;
- unsigned int ignore_private:1;
- unsigned int ignore_auth:1;
-#endif
- } flags;
- int max_stale;
-};
-
-/*
- * "very generic" histogram;
- * see important comments on hbase_f restrictions in StatHist.c
- */
-
-struct _StatHist {
- int *bins;
- int capacity;
- double min;
- double max;
- double scale;
- hbase_f *val_in; /* e.g., log() for log-based histogram */
- hbase_f *val_out; /* e.g., exp() for log based histogram */
-};
-
-/*
- * if you add a field to StatCounters,
- * you MUST sync statCountersInitSpecial, statCountersClean, and statCountersCopy
- */
-
-struct _StatCounters {
-
- struct {
- int clients;
- int requests;
- int hits;
- int mem_hits;
- int disk_hits;
- int errors;
- kb_t kbytes_in;
- kb_t kbytes_out;
- kb_t hit_kbytes_out;
- StatHist miss_svc_time;
- StatHist nm_svc_time;
- StatHist nh_svc_time;
- StatHist hit_svc_time;
- StatHist all_svc_time;
- } client_http;
-
- struct {
-
- struct {
- int requests;
- int errors;
- kb_t kbytes_in;
- kb_t kbytes_out;
- } all , http, ftp, other;
- } server;
-
- struct {
- int pkts_sent;
- int queries_sent;
- int replies_sent;
- int pkts_recv;
- int queries_recv;
- int replies_recv;
- int hits_sent;
- int hits_recv;
- int replies_queued;
- int replies_dropped;
- kb_t kbytes_sent;
- kb_t q_kbytes_sent;
- kb_t r_kbytes_sent;
- kb_t kbytes_recv;
- kb_t q_kbytes_recv;
- kb_t r_kbytes_recv;
- StatHist query_svc_time;
- StatHist reply_svc_time;
- int query_timeouts;
- int times_used;
- } icp;
-
- struct {
- int pkts_sent;
- int pkts_recv;
- } htcp;
-
- struct {
- int requests;
- } unlink;
-
- struct {
- StatHist svc_time;
- } dns;
-
- struct {
- int times_used;
- kb_t kbytes_sent;
- kb_t kbytes_recv;
- kb_t memory;
- int msgs_sent;
- int msgs_recv;
-#if USE_CACHE_DIGESTS
-
- cd_guess_stats guess;
-#endif
-
- StatHist on_xition_count;
- } cd;
-
- struct {
- int times_used;
- } netdb;
- int page_faults;
- unsigned long int select_loops;
- int select_fds;
- double select_time;
- double cputime;
-
- struct timeval timestamp;
- StatHist comm_icp_incoming;
- StatHist comm_dns_incoming;
- StatHist comm_http_incoming;
- StatHist select_fds_hist;
-
- struct {
- struct {
- int opens;
- int closes;
- int reads;
- int writes;
- int seeks;
- int unlinks;
- } disk;
-
- struct {
- int accepts;
- int sockets;
- int connects;
- int binds;
- int closes;
- int reads;
- int writes;
- int recvfroms;
- int sendtos;
- } sock;
- int selects;
- } syscalls;
- int aborted_requests;
-
- struct {
- int files_cleaned;
- int outs;
- int ins;
- } swap;
-};
-
-/* per header statistics */
-
-struct _HttpHeaderStat {
- const char *label;
- HttpHeaderMask *owner_mask;
-
- StatHist hdrUCountDistr;
- StatHist fieldTypeDistr;
- StatHist ccTypeDistr;
- StatHist scTypeDistr;
-
- int parsedCount;
- int ccParsedCount;
- int scParsedCount;
- int destroyedCount;
- int busyDestroyedCount;
-};
-
-
-struct _CacheDigest {
- /* public, read-only */
- char *mask; /* bit mask */
- int mask_size; /* mask size in bytes */
- int capacity; /* expected maximum for .count, not a hard limit */
- int bits_per_entry; /* number of bits allocated for each entry from capacity */
- int count; /* number of digested entries */
- int del_count; /* number of deletions performed so far */
-};
-
-struct _store_rebuild_data {
- int objcount; /* # objects successfully reloaded */
- int expcount; /* # objects expired */
- int scancount; /* # entries scanned or read from state file */
- int clashcount; /* # swapfile clashes avoided */
- int dupcount; /* # duplicates purged */
- int cancelcount; /* # SWAP_LOG_DEL objects purged */
- int invalid; /* # bad lines */
- int badflags; /* # bad e->flags */
- int bad_log_op;
- int zero_object_sz;
+#if USE_SSL
+struct _sslproxy_cert_sign {
+ int alg;
+ ACLList *aclList;
+ sslproxy_cert_sign *next;
};
-class Logfile;
-
-#include "format/Format.h"
-#include "log/Formats.h"
-struct _customlog {
- char *filename;
+struct _sslproxy_cert_adapt {
+ int alg;
+ char *param;
ACLList *aclList;
- Format::Format *logFormat;
- Logfile *logfile;
- customlog *next;
- Log::Format::log_type type;
+ sslproxy_cert_adapt *next;
};
+#endif
#endif /* SQUID_STRUCTS_H */