#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;
} 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;
struct {
acl_access *http;
+ acl_access *adapted_http;
acl_access *icp;
acl_access *miss;
acl_access *NeverDirect;
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;
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;
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;
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;
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;
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;