#include "AccessLogEntry.h"
#include "HttpReply.h"
#include "HttpRequest.h"
+#include "SquidConfig.h"
#include "ssl/support.h"
#if USE_SSL
#include "CpuAffinitySet.h"
#include "Debug.h"
#include "globals.h"
+#include "SquidConfig.h"
#include "structs.h"
#include "tools.h"
#if USE_DELAY_POOLS
#include "DelayBucket.h"
#include "DelaySpec.h"
+#include "SquidConfig.h"
#include "Store.h"
void
#include "DelayPool.h"
#include "DelayPools.h"
#include "HttpRequest.h"
+#include "SquidConfig.h"
DelayId::DelayId () : pool_ (0), compositeId(NULL), markedAsNoDelay(false)
{}
#include "fd.h"
#include "Store.h"
#include "StatCounters.h"
+#include "SquidConfig.h"
#include "SquidIpc.h"
#include "SquidTime.h"
#include "unlinkd.h"
#include "DiskThreadsIOStrategy.h"
#include "fde.h"
#include "mgr/Registration.h"
+#include "SquidConfig.h"
#include "StatCounters.h"
-/* for statfs */
#include "Store.h"
void
#include "squid.h"
#include "DiskThreads.h"
-
-#include <stdio.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <errno.h>
-#include <dirent.h>
-#include <signal.h>
+#include "SquidConfig.h"
+
+#include <stdio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <errno.h>
+#include <dirent.h>
+#include <signal.h>
#if HAVE_SCHED_H
-#include <sched.h>
+#include <sched.h>
#endif
#include "DiskIO/DiskThreads/CommIO.h"
#include "SquidTime.h"
#include "squid_windows.h"
#include "DiskIO/DiskThreads/CommIO.h"
#include "DiskThreads.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
-#include <stdio.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <dirent.h>
-#include <signal.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <dirent.h>
+#include <signal.h>
#define RIDICULOUS_LENGTH 4096
#include "ipc/Queue.h"
#include "ipc/StrandSearch.h"
#include "ipc/UdsOp.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "tools.h"
#include "StatHist.h"
#include "Store.h"
#include "StrList.h"
+#include "SquidConfig.h"
#include "SquidString.h"
#include "TimeOrTag.h"
#include "HttpHeaderTools.h"
#include "HttpRequest.h"
#include "MemBuf.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "StrList.h"
#include "MemBuf.h"
#include "mime_header.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
HttpMsg::HttpMsg(http_hdr_owner_type owner): header(owner),
cache_control(NULL), hdr_sz(0), content_length(0), protocol(AnyP::PROTO_NONE),
#include "squid.h"
#include "Debug.h"
#include "HttpParser.h"
-#include "structs.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
+#include "structs.h"
void
HttpParser::clear()
#include "HttpReply.h"
#include "HttpRequest.h"
#include "MemBuf.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "StrList.h"
#include "HttpRequest.h"
#include "log/Config.h"
#include "MemBuf.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "URL.h"
#include "SquidString.h"
#include "structs.h"
+class SquidConfig;
+
#include <iosfwd>
enum _method_t {
#include "MemBuf.h"
#include "MemObject.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "StoreClient.h"
#include "MemObject.h"
#include "MemStore.h"
#include "mime_header.h"
+#include "SquidConfig.h"
#include "StoreStats.h"
#include "tools.h"
/* for CacheDigestGuessStats */
#include "StatCounters.h"
-struct _Version {
+class Version {
+public:
short int current; /* current version */
short int required; /* minimal version that can safely handle current version */
};
#include "adaptation/Answer.h"
#include "adaptation/Iterator.h"
#include "base/AsyncCall.h"
+#include "SquidConfig.h"
#endif
// implemented in client_side_reply.cc until sides have a common parent
-/*
- * $Id$
- */
-
#include "squid.h"
-#include "ip/Address.h"
-// just for the global definition of Config and Config2
-#include "structs.h"
+#include "SquidConfig.h"
struct SquidConfig Config;
struct SquidConfig2 Config2;
+
--- /dev/null
+#ifndef SQUID_SQUIDCONFIG_H_
+#define SQUID_SQUIDCONFIG_H_
+/*
+ * DEBUG: section
+ * AUTHOR:
+ *
+ * SQUID Web Proxy Cache http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ * Squid is the result of efforts by numerous individuals from
+ * the Internet community; see the CONTRIBUTORS file for full
+ * details. Many organizations have provided support for Squid's
+ * development; see the SPONSORS file for full details. Squid is
+ * Copyrighted (C) 2001 by the Regents of the University of
+ * California; see the COPYRIGHT file for full details. Squid
+ * incorporates software developed and/or copyrighted by other
+ * sources; see the CREDITS file for full details.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ *
+ */
+
+#include "ClientDelayConfig.h"
+#include "DelayConfig.h"
+#include "HttpHeaderTools.h"
+#include "icmp/IcmpConfig.h"
+#include "ip/Address.h"
+#include "RefCount.h"
+#include "structs.h"
+
+class acl_access;
+class acl_deny_info_list;
+class acl_size_t;
+class HeaderManglers;
+class refresh_t;
+class SwapDir;
+class RemovalPolicySettings;
+
+namespace AnyP {
+class PortCfg;
+}
+
+class SquidConfig {
+public:
+ 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 clientIdlePconn;
+ time_t serverIdlePconn;
+ 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_DNSHELPER
+ 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 {
+ AnyP::PortCfg *http;
+#if USE_SSL
+ AnyP::PortCfg *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_DNSHELPER
+ char *dnsserver;
+#endif
+
+ wordlist *redirect;
+#if USE_UNLINKD
+
+ char *unlinkd;
+#endif
+
+ char *diskd;
+#if USE_SSL
+
+ char *ssl_password;
+#endif
+
+ } Program;
+#if USE_DNSHELPER
+ 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;
+
+#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 hostStrictVerify;
+ 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 {
+ struct {
+ int average;
+ int min_poll;
+ } dns, udp, tcp;
+ } 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
+
+ /// request_header_access and request_header_replace
+ HeaderManglers *request_header_access;
+ /// reply_header_access and reply_header_replace
+ HeaderManglers *reply_header_access;
+ ///request_header_add access list
+ HeaderWithAclList *request_header_add;
+ 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;
+ sslproxy_cert_sign *cert_sign;
+ sslproxy_cert_adapt *cert_adapt;
+ } 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 {
+ int v4_first; ///< Place IPv4 first in the order of DNS results.
+ ssize_t packet_max; ///< maximum size EDNS advertised for DNS replies.
+ } dns;
+
+};
+
+extern SquidConfig Config;
+
+#endif /* SQUID_SQUIDCONFIG_H_ */
#include "ConfigOption.h"
#include "globals.h"
#include "Parsing.h"
+#include "SquidConfig.h"
#include "StoreFileSystem.h"
#include "SwapDir.h"
#include "tools.h"
#ifndef SQUID_SWAPDIR_H
#define SQUID_SWAPDIR_H
+#include "SquidConfig.h"
#include "Store.h"
#include "StoreIOState.h"
#include "Debug.h"
#include "dlink.h"
#include "globals.h"
+#include "SquidConfig.h"
const char *AclMatchedName = NULL;
#include "HttpReply.h"
#include "ipcache.h"
#include "forward.h"
+#include "SquidConfig.h"
#include "StoreClient.h"
#include "wordlist.h"
#include "client_side.h"
#include "comm/Connection.h"
#include "HttpRequest.h"
+#include "SquidConfig.h"
#include "structs.h"
char const *
#include "comm/forward.h"
#include "HttpReply.h"
#include "HttpRequest.h"
+#include "SquidConfig.h"
#if USE_AUTH
#include "auth/UserRequest.h"
#include "auth/AclProxyAuth.h"
#include "cache_cf.h"
#include "client_db.h"
#include "Debug.h"
+#include "SquidConfig.h"
#include "wordlist.h"
ACL *
#include "adaptation/icap/ServiceRep.h"
#include "HttpRequest.h"
#include "HttpReply.h"
+#include "SquidConfig.h"
#include "wordlist.h"
Adaptation::Icap::Config Adaptation::Icap::TheConfig;
#include "globals.h"
#include "HttpReply.h"
#include "ip/tools.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, ServiceRep);
#include "ipcache.h"
#include "Mem.h"
#include "pconn.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
//CBDATA_NAMESPACED_CLASS_INIT(Adaptation::Icap, Xaction);
#include "AccessLogEntry.h"
#include "log/File.h"
#include "log/Formats.h"
+#include "SquidConfig.h"
int IcapLogfileStatus = LOG_DISABLE;
#include "acl/Gadgets.h"
#include "event.h"
#include "globals.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "auth/basic/auth_basic.h"
#include "auth/basic/User.h"
#include "Debug.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "structs.h"
#include "auth/digest/User.h"
#include "Debug.h"
#include "dlink.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "structs.h"
#include "Parsing.h"
#include "PeerDigest.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidString.h"
#include "Store.h"
#include "StoreFileSystem.h"
#include "mgr/QueryParams.h"
#include "protos.h" /* rotate_logs() */
#include "tools.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "wordlist.h"
#include "HttpRequest.h"
#include "mgr/Registration.h"
#include "neighbors.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "URL.h"
#include "URLScheme.h"
#include "log/access_log.h"
#include "Mem.h"
#include "mgr/Registration.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "mime_header.h"
#include "profiler/Profiler.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "StatHist.h"
#include "mime_header.h"
#include "neighbors.h"
#include "refresh.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "StoreClient.h"
#include "MemObject.h"
#include "Parsing.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "StrList.h"
#include "MemBuf.h"
#include "pconn.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "StoreIOBuffer.h"
#include "globals.h"
#include "icmp/net_db.h"
#include "ipcache.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#if HAVE_ERRNO_H
#include "ICP.h"
#include "mgr/Registration.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "Store.h"
#include "globals.h"
#include "ip/Intercept.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "MemBuf.h"
#include "mgr/Registration.h"
#include "rfc3596.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "tools.h"
#include "fde.h"
#include "MemBuf.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "URL.h"
#include "URLScheme.h"
#include "URL.h"
#include "Mem.h"
#include "MemBuf.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
/* quick reference on behaviour here.
* The ESI specification 1.0 requires the ESI processor to be able to
#include "MemBuf.h"
#include "mgr/Registration.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidString.h"
#include "SquidTime.h"
#include "Store.h"
#include "format/Config.h"
#include "format/Token.h"
#include "format/TokenTableEntry.h"
+#include "SquidConfig.h"
#include "Store.h"
const char *Format::log_tags[] = {
#include "neighbors.h"
#include "pconn.h"
#include "PeerSelectState.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "StoreClient.h"
#include "event.h"
#include "Mem.h"
#include "mgr/Registration.h"
+#include "SquidConfig.h"
#include "SquidDns.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "store_key_md5.h"
#include "swap_log_op.h"
#include "store_rebuild.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#if HAVE_ERRNO_H
#include "squid.h"
#include "CossSwapDir.h"
-#include "Store.h"
-#include "store_coss.h"
-#include "MemObject.h"
+#include "DiskIO/DiskIOStrategy.h"
#include "fde.h"
-#include "SwapDir.h"
+#include "MemObject.h"
+#include "SquidConfig.h"
+#include "store_coss.h"
+#include "Store.h"
#include "StoreFScoss.h"
-#include "DiskIO/DiskIOStrategy.h"
+#include "SwapDir.h"
CBDATA_TYPE(CossMemBuf);
#include "ipc/mem/Pages.h"
#include "MemObject.h"
#include "Parsing.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "tools.h"
#include "disk.h"
#include "globals.h"
#include "RebuildState.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "store_key_md5.h"
#include "store_rebuild.h"
#include "store_key_md5.h"
#include "StoreSearchUFS.h"
#include "StoreSwapLogData.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "tools.h"
#include "mime.h"
#include "rfc1738.h"
#include "Server.h"
+#include "SquidConfig.h"
#include "SquidString.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "MemBuf.h"
#include "mime.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "Store.h"
#include "md5.h"
#include "MemBuf.h"
#include "refresh.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "store_key_md5.h"
#include "profiler/Profiler.h"
#include "refresh.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "Store.h"
#include "icmp/IcmpSquid.h"
#include "icmp/net_db.h"
#include "ip/tools.h"
+#include "SquidConfig.h"
#include "SquidIpc.h"
#include "SquidTime.h"
#include "neighbors.h"
#include "refresh.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "Store.h"
#include "HttpRequest.h"
#include "HttpReply.h"
#include "MemBuf.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "tools.h"
#include "URL.h"
#include "fde.h"
#include "globals.h"
#include "ip/Address.h"
+#include "SquidConfig.h"
#include "SquidIpc.h"
#include "tools.h"
#include "rfc1738.h"
#include "globals.h"
#include "ipc/Kids.h"
#include "tools.h"
+#include "SquidConfig.h"
#include "structs.h"
Kids TheKids;
#include "fde.h"
#include "ip/Address.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidIpc.h"
#include "SquidTime.h"
#include "tools.h"
#include "Mem.h"
#include "mgr/Registration.h"
#include "rfc3596.h"
+#include "SquidConfig.h"
#include "SquidDns.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "HttpRequest.h"
#include "log/File.h"
#include "log/Formats.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
void
#include "globals.h"
#include "log/File.h"
#include "log/Formats.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
void
#include "HttpRequest.h"
#include "log/File.h"
#include "log/Formats.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
void
#include "globals.h"
#include "log/File.h"
#include "log/Formats.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
void
#include "log/File.h"
#include "log/ModDaemon.h"
#include "SquidIpc.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#if HAVE_ERRNO_H
#include "globals.h"
#include "log/File.h"
#include "log/ModStdio.h"
+#include "SquidConfig.h"
#if HAVE_ERRNO_H
#include <errno.h>
#include "log/ModTcp.h"
#include "Parsing.h"
#include "structs.h"
+#include "SquidConfig.h"
#if HAVE_ERRNO_H
#include <errno.h>
#include "log/ModUdp.h"
#include "Parsing.h"
#include "structs.h"
+#include "SquidConfig.h"
#if HAVE_ERRNO_H
#include <errno.h>
#include "MemBuf.h"
#include "mgr/Registration.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#if USE_SQUID_EUI
#include "send-announce.h"
#include "store_log.h"
#include "tools.h"
+#include "SquidConfig.h"
#include "SquidDns.h"
#include "SquidTime.h"
#include "stat.h"
#include "MemBuf.h"
#include "memMeter.h"
#include "mgr/Registration.h"
+#include "SquidConfig.h"
#include "SquidList.h"
#include "SquidTime.h"
#include "Store.h"
#include "mgr/Registration.h"
#include "protos.h"
#include "Store.h"
+#include "SquidConfig.h"
Mgr::IndexAction::Pointer
Mgr::IndexAction::Create(const Command::Pointer &cmd)
#include "MemBuf.h"
#include "mime.h"
#include "MemObject.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "StoreClient.h"
#include "neighbors.h"
#include "PeerDigest.h"
#include "PeerSelectState.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "SquidTime.h"
#include "stat.h"
#include "globals.h"
#include "mgr/Registration.h"
#include "pconn.h"
+#include "SquidConfig.h"
#include "Store.h"
#define PCONN_FDS_SZ 8 /* pconn set size, increase for better memcache hit rate */
#include "peer_sourcehash.h"
#include "peer_userhash.h"
#include "PeerSelectState.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "HttpRequest.h"
#include "mgr/Registration.h"
#include "neighbors.h"
+#include "SquidConfig.h"
#include "Store.h"
#if HAVE_MATH_H
#include "HttpRequest.h"
#include "mgr/Registration.h"
#include "neighbors.h"
+#include "SquidConfig.h"
#include "Store.h"
#if HAVE_MATH_H
#include "mgr/Registration.h"
#include "redirect.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "Store.h"
#if USE_AUTH
#include "auth/UserRequest.h"
#include "HttpReply.h"
#include "MemObject.h"
#include "SquidTime.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "URL.h"
#include "globals.h"
#include "ICP.h"
#include "ipcache.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "tools.h"
#include "snmp_core.h"
#include "StatCounters.h"
#include "StatHist.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "SquidTime.h"
#include "stat.h"
#include "snmp_agent.h"
#include "snmp_core.h"
#include "snmp/Forwarder.h"
+#include "SquidConfig.h"
#include "tools.h"
static void snmpPortOpened(const Comm::ConnectionPointer &conn, int errNo);
-/*
- * 2008/11/14
- */
-
#include "squid.h"
#include "anyp/PortCfg.h"
#include "ssl/Config.h"
#include "SquidTime.h"
#include "SwapDir.h"
#include "wordlist.h"
+#include "SquidConfig.h"
Ssl::Helper * Ssl::Helper::GetInstance()
{
#include "acl/FilledChecklist.h"
#include "fde.h"
#include "globals.h"
+#include "SquidConfig.h"
#include "ssl/ErrorDetail.h"
#include "ssl/support.h"
#include "ssl/gadgets.h"
#include "mgr/ServiceTimesAction.h"
#include "neighbors.h"
#include "PeerDigest.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "SquidTime.h"
#include "StatCounters.h"
#include "mgr/StoreIoAction.h"
#include "profiler/Profiler.h"
#include "repl_modules.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Stack.h"
#include "StatCounters.h"
#include "MemObject.h"
#include "mime_header.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "StatCounters.h"
#include "StoreClient.h"
#include "Store.h"
#include "MemObject.h"
#include "PeerDigest.h"
#include "refresh.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "Store.h"
#include "StoreSearch.h"
#include "MemObject.h"
#include "MemStore.h"
#include "profiler/Profiler.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "SquidTime.h"
#include "Store.h"
#include "squid.h"
#include "Store.h"
#include "MemObject.h"
+#include "SquidConfig.h"
#include "SwapDir.h"
StoreIoStats store_io_stats;
#include "mgr/Registration.h"
#include "Store.h"
#include "store_log.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
static const char *storeLogTags[] = {
#include "store_digest.h"
#include "store_rebuild.h"
#include "StoreSearch.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#if HAVE_ERRNO_H
/* FIXME: Abstract the use of this more */
#include "mem_node.h"
#include "MemObject.h"
+#include "SquidConfig.h"
#include "SwapDir.h"
#include "StatCounters.h"
#include "store_log.h"
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 clientIdlePconn;
- time_t serverIdlePconn;
- 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_DNSHELPER
- 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 {
- AnyP::PortCfg *http;
-#if USE_SSL
- AnyP::PortCfg *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_DNSHELPER
- char *dnsserver;
-#endif
-
- wordlist *redirect;
-#if USE_UNLINKD
-
- char *unlinkd;
-#endif
-
- char *diskd;
-#if USE_SSL
-
- char *ssl_password;
-#endif
-
- } Program;
-#if USE_DNSHELPER
- 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;
-
-#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 hostStrictVerify;
- 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 {
- struct {
- int average;
- int min_poll;
- } dns, udp, tcp;
- } 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
-
- /// request_header_access and request_header_replace
- HeaderManglers *request_header_access;
- /// reply_header_access and reply_header_replace
- HeaderManglers *reply_header_access;
- ///request_header_add access list
- HeaderWithAclList *request_header_add;
- 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;
- sslproxy_cert_sign *cert_sign;
- sslproxy_cert_adapt *cert_adapt;
- } 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 {
- int v4_first; ///< Place IPv4 first in the order of DNS results.
- ssize_t packet_max; ///< maximum size EDNS advertised for DNS replies.
- } dns;
-};
-
-SQUIDCEXTERN SquidConfig Config;
-
struct SquidConfig2 {
struct {
int enable_purge;
#include "HttpReply.h"
#include "StoreFileSystem.h"
#include "testStoreSupport.h"
+#include "SquidConfig.h"
#if HAVE_STDEXCEPT
#include <stdexcept>
#include "Mem.h"
#include "MemBuf.h"
#include "structs.h"
+#include "SquidConfig.h"
CPPUNIT_TEST_SUITE_REGISTRATION( testHttpParser );
#include "HttpReply.h"
#include "Mem.h"
#include "mime_header.h"
+#include "SquidConfig.h"
CPPUNIT_TEST_SUITE_REGISTRATION( testHttpReply );
-struct SquidConfig Config;
+class SquidConfig Config;
/* stub functions to link successfully */
#include "MemObject.h"
#include "HttpHeader.h"
#include "HttpReply.h"
+#include "SquidConfig.h"
#include "StoreFileSystem.h"
#include "testStoreSupport.h"
#include "HttpReply.h"
#include "Mem.h"
#include "MemObject.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "StoreFileSystem.h"
#include "StoreSearch.h"
#include "SwapDir.h"
#include "TestSwapDir.h"
#include "Mem.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
#include "StoreSearch.h"
#include "StoreHashIndex.h"
#include "Mem.h"
#include "StoreSearch.h"
+#include "SquidConfig.h"
#include "SquidTime.h"
CPPUNIT_TEST_SUITE_REGISTRATION( testStoreHashIndex );
#include "HttpReply.h"
#include "Mem.h"
#include "MemObject.h"
+#include "SquidConfig.h"
#include "Store.h"
#include "SwapDir.h"
#include "testStoreSupport.h"
#include "ip/QosConfig.h"
#include "MemBuf.h"
#include "anyp/PortCfg.h"
+#include "SquidConfig.h"
#include "SquidMath.h"
#include "SquidTime.h"
#include "ipc/Kids.h"
#include "MemBuf.h"
#include "http.h"
#include "PeerSelectState.h"
+#include "SquidConfig.h"
#include "StatCounters.h"
#include "tools.h"
#include "globals.h"
#include "HttpRequest.h"
#include "rfc1738.h"
+#include "SquidConfig.h"
#include "SquidString.h"
#include "URL.h"
#include "URLScheme.h"
#include "comm/Connection.h"
#include "comm/Loops.h"
#include "event.h"
+#include "SquidConfig.h"
#include "structs.h"
#define WCCP_PORT 2048
#include "HttpRequest.h"
#include "HttpRequest.h"
#include "forward.h"
+#include "SquidConfig.h"
#include "StatCounters.h"
#include "Store.h"
#include "tools.h"