#include "config.h"
#include "RefCount.h"
#include "cbdata.h"
-
-/* needed for various structures still in structs.h */
#include "dlink.h"
+#include "err_type.h"
+
/* needed for the global config */
#include "HttpHeader.h"
+/* for ICP_END */
+#include "icp_opcode.h"
+
+#define PEER_MULTICAST_SIBLINGS 1
+
struct acl_name_list {
char name[ACL_NAME_SZ];
acl_name_list *next;
long reqid;
int outlen;
- IpAddress from;
+ Ip::Address from;
struct snmp_pdu *PDU;
ACLChecklist *acl_checklist;
acl_address *next;
ACLList *aclList;
- IpAddress addr;
+ Ip::Address addr;
};
struct acl_tos {
#include "icmp/IcmpConfig.h"
#endif
-#if USE_ZPH_QOS
-#include "ip/QosConfig.h"
-#endif
+#include "HelperChildConfig.h"
/* forward decl for SquidConfig, see RemovalPolicy.h */
struct {
time_t read;
+ time_t write;
time_t lifetime;
time_t connect;
time_t forward;
int icp_query_max; /* msec */
int icp_query_min; /* msec */
int mcast_icp_query; /* msec */
-#if USE_IDENT
- time_t ident;
-#endif
#if !USE_DNSSERVERS
time_t idns_retransmit;
} Timeout;
size_t maxRequestHeaderSize;
int64_t maxRequestBodySize;
+ int64_t maxChunkedRequestBodySize;
size_t maxReplyHeaderSize;
acl_size_t *ReplyBodySize;
#if USE_WCCP
struct {
-
- IpAddress router;
-
- IpAddress address;
+ Ip::Address router;
+ Ip::Address address;
int version;
} Wccp;
#endif
#if USE_WCCPv2
struct {
- IpAddress_list *router;
-
- IpAddress address;
+ Ip::Address_list *router;
+ Ip::Address address;
int forwarding_method;
int return_method;
int assignment_method;
customlog *accesslogs;
+#if ICAP_CLIENT
+ customlog *icaplogs;
+#endif
+
int rotateNumber;
} Log;
char *adminEmail;
} Program;
#if USE_DNSSERVERS
- int dnsChildren;
+ HelperChildConfig dnsChildren;
#endif
- int redirectChildren;
- int redirectConcurrency;
+ HelperChildConfig redirectChildren;
time_t authenticateGCInterval;
time_t authenticateTTL;
time_t authenticateIpTTL;
struct {
-#if USE_SQUID_ESI
char *surrogate_id;
-#endif
-
} Accel;
char *appendDomain;
size_t appendDomainLen;
struct {
- IpAddress udp_incoming;
-
- IpAddress udp_outgoing;
+ Ip::Address udp_incoming;
+ Ip::Address udp_outgoing;
#if SQUID_SNMP
-
- IpAddress snmp_incoming;
-
- IpAddress snmp_outgoing;
+ Ip::Address snmp_incoming;
+ Ip::Address snmp_outgoing;
#endif
/* FIXME INET6 : this should really be a CIDR value */
- IpAddress client_netmask;
+ Ip::Address client_netmask;
} Addrs;
size_t tcpRcvBufsz;
size_t udpMaxHitObjsz;
#if HTTP_VIOLATIONS
int reload_into_ims;
+ int ignore_expect_100;
#endif
int offline;
int ie_refresh;
int vary_ignore_expire;
int pipeline_prefetch;
-
-#if USE_SQUID_ESI
int surrogate_is_remote;
-#endif
-
int request_entities;
int detect_broken_server_pconns;
int balance_on_multiple_ip;
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;
} onoff;
+ int forward_max_tries;
+
class ACL *aclList;
struct {
acl_access *http;
+ acl_access *adapted_http;
acl_access *icp;
acl_access *miss;
acl_access *NeverDirect;
#if HTTP_VIOLATIONS
acl_access *brokenPosts;
#endif
-#if USE_IDENT
-
- acl_access *identLookup;
-#endif
-
acl_access *redirector;
acl_access *reply;
acl_address *outgoing_address;
acl_access *followXFF;
#endif /* FOLLOW_X_FORWARDED_FOR */
+#if ICAP_CLIENT
+ acl_access* icap;
+#endif
} accessList;
acl_deny_info_list *denyInfoList;
- authConfig authConfiguration;
struct {
size_t list_width;
char *anon_user;
int passive;
int epsv_all;
+ int epsv;
int sanitycheck;
int telnet;
} Ftp;
int n_allocated;
int n_configured;
} cacheSwap;
+ /*
+ * I'm sick of having to keep doing this ..
+ */
+#define INDEXSD(i) (Config.cacheSwap.swapDirs[(i)].getRaw())
struct {
char *directory;
} comm_incoming;
int max_open_disk_fds;
int uri_whitespace;
- int64_t rangeOffsetLimit;
+ acl_size_t *rangeOffsetLimit;
#if MULTICAST_MISS_STREAM
struct {
- IpAddress addr;
+ Ip::Address addr;
int ttl;
unsigned short port;
char *encode_key;
time_t minimum_expiry_time; /* seconds */
external_acl *externalAclHelperList;
-#if USE_ZPH_QOS
- QosConfig zph;
-#endif
-
#if USE_SSL
struct {
char *accept_filter;
int umask;
+ int max_filedescriptors;
+ int workers;
#if USE_LOADABLE_MODULES
wordlist *loadable_module_names;
#endif
+
+ int client_ip_max_connections;
};
SQUIDCEXTERN SquidConfig Config;
};
struct _ipcache_addrs {
- IpAddress *in_addrs;
+ Ip::Address *in_addrs;
unsigned char *bad_mask;
unsigned char count;
unsigned char cur;
char *host;
peer_t type;
- IpAddress in_addr;
+ Ip::Address in_addr;
struct {
int pings_sent;
int counts[ICP_END+1];
u_short port;
} icp;
-#if USE_HTCP
+#if USE_HTCP
struct {
double version;
int counts[2];
unsigned int userhash:1;
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 tcp_up; /* 0 if a connect() fails */
- IpAddress addresses[10];
+ Ip::Address addresses[10];
int n_addresses;
int rr_count;
peer *next;
char *login; /* Proxy authorization */
time_t connect_timeout;
+ int connect_fail_limit;
int max_conn;
char *domain; /* Forced domain */
#if USE_SSL
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),accelerated(0),intercepted(0),spoof_client_ip(0),internal(0),internalclient(0),must_keepalive(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),accelerated(0),ignore_cc(0),intercepted(0),spoof_client_ip(0),internal(0),internalclient(0),must_keepalive(0),destinationIPLookedUp_(0) {
#if HTTP_VIOLATIONS
nocache_hack = 0;
#endif
unsigned int nocache_hack:1; /* for changing/ignoring no-cache requests */
#endif
unsigned int accelerated:1;
+ unsigned int ignore_cc:1;
unsigned int intercepted:1; /**< transparently intercepted request */
unsigned int spoof_client_ip:1; /**< spoof client ip if possible */
unsigned int internal:1;
unsigned int connection_proxy_auth:1; /** Request wants connection oriented auth */
unsigned int pinned:1; /* Request sent on a 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 */
// When adding new flags, please update cloneAdaptationImmune() as needed.
struct {
unsigned int icase:1;
unsigned int refresh_ims:1;
+ unsigned int store_stale:1;
#if HTTP_VIOLATIONS
unsigned int override_expire:1;
unsigned int override_lastmod: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
int times_used;
} netdb;
int page_faults;
- int select_loops;
+ unsigned long int select_loops;
int select_fds;
double select_time;
double cputime;
};
-struct _ClientInfo {
- hash_link hash; /* must be first */
-
- IpAddress addr;
-
- struct {
- int result_hist[LOG_TYPE_MAX];
- int n_requests;
- kb_t kbytes_in;
- kb_t kbytes_out;
- kb_t hit_kbytes_out;
- } Http, Icp;
-
- struct {
- time_t time;
- int n_req;
- int n_denied;
- } cutoff;
- int n_established; /* number of current established connections */
- time_t last_seen;
-};
-
struct _CacheDigest {
/* public, read-only */
char *mask; /* bit mask */
int zero_object_sz;
};
-struct _Logfile {
- int fd;
- char path[MAXPATHLEN];
- char *buf;
- size_t bufsz;
- size_t offset;
-
- struct {
- unsigned int fatal;
- unsigned int syslog;
- } flags;
-
- int syslog_priority;
-};
-
class logformat_token;
struct _logformat {
logformat *next;
};
+class Logfile;
+
struct _customlog {
char *filename;
ACLList *aclList;