]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/protos.h
SourceFormat Enforcement
[thirdparty/squid.git] / src / protos.h
index c5a61794d550229df603b44bd51d220e78988af1..b49336a21d8398891bd5930a70bd3ba1818305dd 100644 (file)
 /* for parameters that still need these */
 #include "lookup_t.h"
 
-
 class HttpRequestMethod;
 #if USE_DELAY_POOLS
 class ClientInfo;
 #endif
 
-
 #if USE_FORW_VIA_DB
-SQUIDCEXTERN void fvdbCountVia(const char *key);
-SQUIDCEXTERN void fvdbCountForw(const char *key);
+extern void fvdbCountVia(const char *key);
+extern void fvdbCountForw(const char *key);
 #endif
 #if HEADERS_LOG
 SQUIDCEXTERN void headersLog(int cs, int pq, const HttpRequestMethod& m, void *data);
 #endif
-SQUIDCEXTERN int logTypeIsATcpHit(log_type);
+extern int logTypeIsATcpHit(log_type);
 
 /*
  * cache_cf.c
  */
 SQUIDCEXTERN void configFreeMemory(void);
 class MemBuf;
-SQUIDCEXTERN void wordlistCat(const wordlist *, MemBuf * mb);
-SQUIDCEXTERN void self_destruct(void);
+extern void wordlistCat(const wordlist *, MemBuf * mb);
+extern void self_destruct(void);
 SQUIDCEXTERN void add_http_port(char *portspec);
 extern int xatoi(const char *token);
 extern long xatol(const char *token);
 
-
 /* extra functions from cache_cf.c useful for lib modules */
 SQUIDCEXTERN void parse_int(int *var);
 SQUIDCEXTERN void parse_onoff(int *var);
@@ -79,7 +76,6 @@ SQUIDCEXTERN void parse_wordlist(wordlist ** list);
 SQUIDCEXTERN void requirePathnameExists(const char *name, const char *path);
 SQUIDCEXTERN void parse_time_t(time_t * var);
 
-
 /* client_side.c - FD related client side routines */
 
 SQUIDCEXTERN void clientdbInit(void);
@@ -125,32 +121,13 @@ SQUIDCEXTERN void file_write_mbuf(int fd, off_t, MemBuf mb, DWCB * handler, void
 SQUIDCEXTERN void file_read(int, char *, int, off_t, DRCB *, void *);
 SQUIDCEXTERN void disk_init(void);
 
-SQUIDCEXTERN void dnsShutdown(void);
-SQUIDCEXTERN void dnsInit(void);
-SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data);
-
-/* dns_internal.c */
-SQUIDCEXTERN void idnsInit(void);
-SQUIDCEXTERN void idnsShutdown(void);
-SQUIDCEXTERN void idnsALookup(const char *, IDNSCB *, void *);
-
-SQUIDCEXTERN void idnsPTRLookup(const Ip::Address &, IDNSCB *, void *);
-
-SQUIDCEXTERN void fd_close(int fd);
-SQUIDCEXTERN void fd_open(int fd, unsigned int type, const char *);
-SQUIDCEXTERN void fd_note(int fd, const char *);
-SQUIDCEXTERN void fd_bytes(int fd, int len, unsigned int type);
-SQUIDCEXTERN void fdDumpOpen(void);
-SQUIDCEXTERN int fdUsageHigh(void);
-SQUIDCEXTERN void fdAdjustReserved(void);
-
-SQUIDCEXTERN fileMap *file_map_create(void);
-SQUIDCEXTERN int file_map_allocate(fileMap *, int);
-SQUIDCEXTERN int file_map_bit_set(fileMap *, int);
-SQUIDCEXTERN int file_map_bit_test(fileMap *, int);
-SQUIDCEXTERN void file_map_bit_reset(fileMap *, int);
-SQUIDCEXTERN void filemapFreeMemory(fileMap *);
-
+extern void fd_close(int fd);
+extern void fd_open(int fd, unsigned int type, const char *);
+extern void fd_note(int fd, const char *);
+extern void fd_bytes(int fd, int len, unsigned int type);
+extern void fdDumpOpen(void);
+extern int fdUsageHigh(void);
+extern void fdAdjustReserved(void);
 
 SQUIDCEXTERN void fqdncache_nbgethostbyaddr(const Ip::Address &, FQDNH *, void *);
 
@@ -163,7 +140,7 @@ SQUIDCEXTERN const char *fqdnFromAddr(const Ip::Address &);
 SQUIDCEXTERN int fqdncacheQueueDrain(void);
 SQUIDCEXTERN void fqdncacheFreeMemory(void);
 SQUIDCEXTERN void fqdncache_restart(void);
-void fqdncache_purgelru(void *);
+extern void fqdncache_purgelru(void *);
 SQUIDCEXTERN void fqdncacheAddEntryFromHosts(char *addr, wordlist * hostnames);
 
 class FwdState;
@@ -182,7 +159,6 @@ class HttpReply;
 /// \ingroup ServerProtocolFTPAPI
 SQUIDCEXTERN const char *ftpUrlWith2f(HttpRequest *);
 
-
 /**
  \defgroup ServerProtocolGopherAPI Server-Side Gopher API
  \ingroup ServerProtocol
@@ -194,7 +170,6 @@ SQUIDCEXTERN void gopherStart(FwdState *);
 /// \ingroup ServerProtocolGopherAPI
 SQUIDCEXTERN int gopherCachable(const HttpRequest *);
 
-
 /**
  \defgroup ServerProtocolWhoisAPI Server-Side WHOIS API
  \ingroup ServerProtocol
@@ -203,7 +178,6 @@ SQUIDCEXTERN int gopherCachable(const HttpRequest *);
 /// \ingroup ServerProtocolWhoisAPI
 SQUIDCEXTERN void whoisStart(FwdState *);
 
-
 /* http.c */
 /* for http_hdr_type field */
 #include "HttpHeader.h"
@@ -214,45 +188,17 @@ SQUIDCEXTERN mb_size_t httpBuildRequestPrefix(HttpRequest * request,
         StoreEntry * entry,
         MemBuf * mb,
         http_state_flags);
-SQUIDCEXTERN void httpAnonInitModule(void);
-SQUIDCEXTERN int httpAnonHdrAllowed(http_hdr_type hdr_id);
-SQUIDCEXTERN int httpAnonHdrDenied(http_hdr_type hdr_id);
-SQUIDCEXTERN const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply);
-
-/* ETag */
-SQUIDCEXTERN int etagParseInit(ETag * etag, const char *str);
-/// whether etags are strong-equal
-SQUIDCEXTERN bool etagIsStrongEqual(const ETag &tag1, const ETag &tag2);
-/// whether etags are weak-equal
-SQUIDCEXTERN bool etagIsWeakEqual(const ETag &tag1, const ETag &tag2);
+extern const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply);
 
 #include "HttpStatusCode.h"
-SQUIDCEXTERN const char *httpStatusString(http_status status);
 
-/* Http Body */
-/* init/clean */
-SQUIDCEXTERN void httpBodyInit(HttpBody * body);
-SQUIDCEXTERN void httpBodyClean(HttpBody * body);
-/* get body ptr (always use this) */
-SQUIDCEXTERN const char *httpBodyPtr(const HttpBody * body);
-/* set body, does not clone mb so you should not reuse it */
-SQUIDCEXTERN void httpBodySet(HttpBody * body, MemBuf * mb);
-
-/* pack */
-SQUIDCEXTERN void httpBodyPackInto(const HttpBody * body, Packer * p);
+class StatHist;
 
 /* Http Cache Control Header Field */
 SQUIDCEXTERN void httpHdrCcInitModule(void);
 SQUIDCEXTERN void httpHdrCcCleanModule(void);
-SQUIDCEXTERN HttpHdrCc *httpHdrCcCreate(void);
-SQUIDCEXTERN HttpHdrCc *httpHdrCcParseCreate(const String * str);
-SQUIDCEXTERN void httpHdrCcDestroy(HttpHdrCc * cc);
-SQUIDCEXTERN HttpHdrCc *httpHdrCcDup(const HttpHdrCc * cc);
-SQUIDCEXTERN void httpHdrCcPackInto(const HttpHdrCc * cc, Packer * p);
-SQUIDCEXTERN void httpHdrCcSetMaxAge(HttpHdrCc * cc, int max_age);
-SQUIDCEXTERN void httpHdrCcSetSMaxAge(HttpHdrCc * cc, int s_maxage);
 SQUIDCEXTERN void httpHdrCcUpdateStats(const HttpHdrCc * cc, StatHist * hist);
-void httpHdrCcStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
+extern void httpHdrCcStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
 
 /* Http Header Tools */
 class HttpHeaderFieldInfo;
@@ -268,10 +214,7 @@ SQUIDCEXTERN int strListIsSubstr(const String * list, const char *s, char del);
 SQUIDCEXTERN int strListGetItem(const String * str, char del, const char **item, int *ilen, const char **pos);
 SQUIDCEXTERN const char *getStringPrefix(const char *str, const char *end);
 SQUIDCEXTERN int httpHeaderParseInt(const char *start, int *val);
-SQUIDCEXTERN int httpHeaderParseOffset(const char *start, int64_t * off);
-SQUIDCEXTERN void
-httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
-
+SQUIDCEXTERN void httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
 
 /* Http Header */
 SQUIDCEXTERN void httpHeaderInitModule(void);
@@ -280,14 +223,12 @@ SQUIDCEXTERN void httpHeaderCleanModule(void);
 /* store report about current header usage and other stats */
 void httpHeaderStoreReport(StoreEntry * e);
 SQUIDCEXTERN void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep);
-SQUIDCEXTERN int httpReqHdrManglersConfigured();
 
 #if SQUID_SNMP
 SQUIDCEXTERN PF snmpHandleUdp;
 SQUIDCEXTERN void snmpInit(void);
-SQUIDCEXTERN void snmpConnectionOpen(void);
-SQUIDCEXTERN void snmpConnectionShutdown(void);
-SQUIDCEXTERN void snmpConnectionClose(void);
+SQUIDCEXTERN void snmpOpenPorts(void);
+SQUIDCEXTERN void snmpClosePorts(void);
 SQUIDCEXTERN const char * snmpDebugOid(oid * Name, snint Len, MemBuf &outbuf);
 
 SQUIDCEXTERN void addr2oid(Ip::Address &addr, oid *Dest);
@@ -302,19 +243,15 @@ extern variable_list *snmp_prfProtoFn(variable_list *, snint *);
 extern variable_list *snmp_prfPeerFn(variable_list *, snint *);
 extern variable_list *snmp_netIpFn(variable_list *, snint *);
 extern variable_list *snmp_netFqdnFn(variable_list *, snint *);
-#if USE_DNSSERVERS
 extern variable_list *snmp_netDnsFn(variable_list *, snint *);
-#else
-extern variable_list *snmp_netIdnsFn(variable_list *, snint *);
-#endif /* USE_DNSSERVERS */
 extern variable_list *snmp_meshPtblFn(variable_list *, snint *);
 extern variable_list *snmp_meshCtblFn(variable_list *, snint *);
 #endif /* SQUID_SNMP */
 
 #if USE_WCCP
-SQUIDCEXTERN void wccpInit(void);
-SQUIDCEXTERN void wccpConnectionOpen(void);
-SQUIDCEXTERN void wccpConnectionClose(void);
+extern void wccpInit(void);
+extern void wccpConnectionOpen(void);
+extern void wccpConnectionClose(void);
 #endif /* USE_WCCP */
 
 #if USE_WCCPv2
@@ -323,23 +260,23 @@ extern void wccp2ConnectionOpen(void);
 extern void wccp2ConnectionClose(void);
 #endif /* USE_WCCPv2 */
 
-SQUIDCEXTERN char *mime_get_header(const char *mime, const char *header);
-SQUIDCEXTERN char *mime_get_header_field(const char *mime, const char *name, const char *prefix);
-SQUIDCEXTERN size_t headersEnd(const char *, size_t);
+extern char *mime_get_header(const char *mime, const char *header);
+extern char *mime_get_header_field(const char *mime, const char *name, const char *prefix);
+extern size_t headersEnd(const char *, size_t);
 
-SQUIDCEXTERN void mimeInit(char *filename);
-SQUIDCEXTERN void mimeFreeMemory(void);
-SQUIDCEXTERN char *mimeGetContentEncoding(const char *fn);
-SQUIDCEXTERN char *mimeGetContentType(const char *fn);
-SQUIDCEXTERN char const *mimeGetIcon(const char *fn);
-SQUIDCEXTERN const char *mimeGetIconURL(const char *fn);
-SQUIDCEXTERN char mimeGetTransferMode(const char *fn);
-SQUIDCEXTERN int mimeGetDownloadOption(const char *fn);
-SQUIDCEXTERN int mimeGetViewOption(const char *fn);
+extern void mimeInit(char *filename);
+extern void mimeFreeMemory(void);
+extern char *mimeGetContentEncoding(const char *fn);
+extern char *mimeGetContentType(const char *fn);
+extern char const *mimeGetIcon(const char *fn);
+extern const char *mimeGetIconURL(const char *fn);
+extern char mimeGetTransferMode(const char *fn);
+extern int mimeGetDownloadOption(const char *fn);
+extern int mimeGetViewOption(const char *fn);
 
 #include "ipcache.h"
-SQUIDCEXTERN int mcastSetTtl(int, int);
-SQUIDCEXTERN IPH mcastJoinGroups;
+extern int mcastSetTtl(int, int);
+extern IPH mcastJoinGroups;
 
 SQUIDCEXTERN peer *getFirstPeer(void);
 SQUIDCEXTERN peer *getFirstUpParent(HttpRequest *);
@@ -367,7 +304,6 @@ SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
 SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
 SQUIDCEXTERN void peerClearRRStart(void);
 SQUIDCEXTERN void peerClearRR(void);
-SQUIDCEXTERN peer *getAnyParent(HttpRequest * request);
 SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
 SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
 SQUIDCEXTERN void peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup);
@@ -413,7 +349,6 @@ extern void shut_down(int);
 extern void rotate_logs(int);
 extern void reconfigure(int);
 
-
 extern void start_announce(void *unused);
 extern void waisStart(FwdState *);
 
@@ -428,21 +363,6 @@ SQUIDCEXTERN double statRequestHitMemoryRatio(int minutes);
 SQUIDCEXTERN double statRequestHitDiskRatio(int minutes);
 SQUIDCEXTERN double statByteHitRatio(int minutes);
 
-/* StatHist */
-SQUIDCEXTERN void statHistClean(StatHist * H);
-SQUIDCEXTERN void statHistCount(StatHist * H, double val);
-SQUIDCEXTERN void statHistCopy(StatHist * Dest, const StatHist * Orig);
-SQUIDCEXTERN void statHistSafeCopy(StatHist * Dest, const StatHist * Orig);
-SQUIDCEXTERN double statHistDeltaMedian(const StatHist * A, const StatHist * B);
-SQUIDCEXTERN double statHistDeltaPctile(const StatHist * A, const StatHist * B, double pctile);
-SQUIDCEXTERN void statHistDump(const StatHist * H, StoreEntry * sentry, StatHistBinDumper * bd);
-SQUIDCEXTERN void statHistLogInit(StatHist * H, int capacity, double min, double max);
-SQUIDCEXTERN void statHistEnumInit(StatHist * H, int last_enum);
-SQUIDCEXTERN void statHistIntInit(StatHist * H, int n);
-SQUIDCEXTERN StatHistBinDumper statHistEnumDumper;
-SQUIDCEXTERN StatHistBinDumper statHistIntDumper;
-
-
 /* mem */
 SQUIDCEXTERN void memClean(void);
 SQUIDCEXTERN void memInitModule(void);
@@ -466,23 +386,21 @@ SQUIDCEXTERN int memInUse(mem_type);
 SQUIDCEXTERN void memDataInit(mem_type, const char *, size_t, int, bool zeroOnPush = true);
 SQUIDCEXTERN void memCheckInit(void);
 
-
 /* Mem */
 SQUIDCEXTERN void memConfigure(void);
 
 /* ----------------------------------------------------------------- */
 
 /* repl_modules.c */
-SQUIDCEXTERN void storeReplSetup(void);
+extern void storeReplSetup(void);
 
 /*
  * store_log.c
  */
-SQUIDCEXTERN void storeLog(int tag, const StoreEntry * e);
-SQUIDCEXTERN void storeLogRotate(void);
-SQUIDCEXTERN void storeLogClose(void);
-SQUIDCEXTERN void storeLogOpen(void);
-
+extern void storeLog(int tag, const StoreEntry * e);
+extern void storeLogRotate(void);
+extern void storeLogClose(void);
+extern void storeLogOpen(void);
 
 /*
  * store_key_*.c
@@ -505,10 +423,10 @@ SQUIDCEXTERN HASHCMP storeKeyHashCmp;
 /*
  * store_digest.c
  */
-SQUIDCEXTERN void storeDigestInit(void);
-SQUIDCEXTERN void storeDigestNoteStoreReady(void);
-SQUIDCEXTERN void storeDigestScheduleRebuild(void);
-SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry);
+extern void storeDigestInit(void);
+extern void storeDigestNoteStoreReady(void);
+extern void storeDigestScheduleRebuild(void);
+extern void storeDigestDel(const StoreEntry * entry);
 extern void storeDigestReport(StoreEntry *);
 
 /*
@@ -519,11 +437,18 @@ SQUIDCEXTERN void storeRebuildStart(void);
 SQUIDCEXTERN void storeRebuildComplete(struct _store_rebuild_data *);
 SQUIDCEXTERN void storeRebuildProgress(int sd_index, int total, int sofar);
 
+/// loads entry from disk; fills supplied memory buffer on success
+extern bool storeRebuildLoadEntry(int fd, int diskIndex, MemBuf &buf, struct _store_rebuild_data &counts);
+/// parses entry buffer and validates entry metadata; fills e on success
+extern bool storeRebuildParseEntry(MemBuf &buf, StoreEntry &e, cache_key *key, struct _store_rebuild_data &counts, uint64_t expectedSize);
+/// checks whether the loaded entry should be kept; updates counters
+extern bool storeRebuildKeepEntry(const StoreEntry &e, const cache_key *key, struct _store_rebuild_data &counts);
+
 /*
  * store_swapin.c
  */
 class store_client;
-SQUIDCEXTERN void storeSwapInStart(store_client *);
+extern void storeSwapInStart(store_client *);
 
 /*
  * store_client.c
@@ -535,16 +460,15 @@ SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data)
 SQUIDCEXTERN int storePendingNClients(const StoreEntry * e);
 SQUIDCEXTERN int storeClientIsThisAClient(store_client * sc, void *someClient);
 
-
 SQUIDCEXTERN const char *getMyHostname(void);
 SQUIDCEXTERN const char *uniqueHostname(void);
 SQUIDCEXTERN void safeunlink(const char *path, int quiet);
 
 #include "fatal.h"
-void death(int sig);
-void sigusr2_handle(int sig);
-void sig_child(int sig);
-void sig_shutdown(int sig); ///< handles shutdown notifications from kids
+extern void death(int sig);
+extern void sigusr2_handle(int sig);
+extern void sig_child(int sig);
+extern void sig_shutdown(int sig); ///< handles shutdown notifications from kids
 SQUIDCEXTERN void leave_suid(void);
 SQUIDCEXTERN void enter_suid(void);
 SQUIDCEXTERN void no_suid(void);
@@ -567,12 +491,16 @@ SQUIDCEXTERN bool IamPrimaryProcess();
 SQUIDCEXTERN bool IamCoordinatorProcess();
 /// whether the current process handles HTTP transactions and such
 SQUIDCEXTERN bool IamWorkerProcess();
+/// whether the current process is dedicated to managing a cache_dir
+extern bool IamDiskProcess();
 /// Whether we are running in daemon mode
 SQUIDCEXTERN bool InDaemonMode(); // try using specific Iam*() checks above first
 /// Whether there should be more than one worker process running
 SQUIDCEXTERN bool UsingSmp(); // try using specific Iam*() checks above first
 /// number of Kid processes as defined in src/ipc/Kid.h
 SQUIDCEXTERN int NumberOfKids();
+/// a string describing this process roles such as worker or coordinator
+extern String ProcessRoles();
 SQUIDCEXTERN int DebugSignal;
 
 /* AYJ debugs function to show locations being reset with memset() */
@@ -594,6 +522,7 @@ SQUIDCEXTERN void PrintRusage(void);
 SQUIDCEXTERN void dumpMallocStats(void);
 
 #if USE_UNLINKD
+SQUIDCEXTERN bool unlinkdNeeded(void);
 SQUIDCEXTERN void unlinkdInit(void);
 SQUIDCEXTERN void unlinkdClose(void);
 SQUIDCEXTERN void unlinkdUnlink(const char *);
@@ -607,7 +536,7 @@ SQUIDCEXTERN char *urlCanonicalClean(const HttpRequest *);
 SQUIDCEXTERN const char *urlCanonicalFakeHttps(const HttpRequest * request);
 SQUIDCEXTERN bool urlIsRelative(const char *);
 SQUIDCEXTERN char *urlMakeAbsolute(const HttpRequest *, const char *);
-SQUIDCEXTERN char *urlRInternal(const char *host, u_short port, const char *dir, const char *name);
+SQUIDCEXTERN char *urlRInternal(const char *host, unsigned short port, const char *dir, const char *name);
 SQUIDCEXTERN char *urlInternal(const char *dir, const char *name);
 SQUIDCEXTERN int matchDomainName(const char *host, const char *domain);
 SQUIDCEXTERN int urlCheckRequest(const HttpRequest *);
@@ -632,7 +561,7 @@ SQUIDCEXTERN int stringHasCntl(const char *);
 SQUIDCEXTERN void linklistPush(link_list **, void *);
 SQUIDCEXTERN void *linklistShift(link_list **);
 SQUIDCEXTERN int xrename(const char *from, const char *to);
-SQUIDCEXTERN int isPowTen(int);
+extern int isPowTen(int);
 SQUIDCEXTERN void parseEtcHosts(void);
 SQUIDCEXTERN int getMyPort(void);
 SQUIDCEXTERN void setUmask(mode_t mask);
@@ -640,7 +569,6 @@ SQUIDCEXTERN void setUmask(mode_t mask);
 SQUIDCEXTERN char *strwordtok(char *buf, char **t);
 SQUIDCEXTERN void strwordquote(MemBuf * mb, const char *str);
 
-
 /*
  * ipc.c
  */
@@ -653,7 +581,7 @@ SQUIDCEXTERN pid_t ipcCreate(int type,
                              int *wfd,
                              void **hIpc);
 
-
+class CacheDigestGuessStats;
 /* CacheDigest */
 SQUIDCEXTERN CacheDigest *cacheDigestCreate(int capacity, int bpe);
 SQUIDCEXTERN void cacheDigestDestroy(CacheDigest * cd);
@@ -665,15 +593,15 @@ SQUIDCEXTERN void cacheDigestAdd(CacheDigest * cd, const cache_key * key);
 SQUIDCEXTERN void cacheDigestDel(CacheDigest * cd, const cache_key * key);
 SQUIDCEXTERN size_t cacheDigestCalcMaskSize(int cap, int bpe);
 SQUIDCEXTERN int cacheDigestBitUtil(const CacheDigest * cd);
-SQUIDCEXTERN void cacheDigestGuessStatsUpdate(cd_guess_stats * stats, int real_hit, int guess_hit);
-SQUIDCEXTERN void cacheDigestGuessStatsReport(const cd_guess_stats * stats, StoreEntry * sentry, const char *label);
+SQUIDCEXTERN void cacheDigestGuessStatsUpdate(CacheDigestGuessStats * stats, int real_hit, int guess_hit);
+SQUIDCEXTERN void cacheDigestGuessStatsReport(const CacheDigestGuessStats * stats, StoreEntry * sentry, const char *label);
 SQUIDCEXTERN void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
 
-SQUIDCEXTERN void internalStart(HttpRequest *, StoreEntry *);
+SQUIDCEXTERN void internalStart(const Comm::ConnectionPointer &clientConn, HttpRequest *, StoreEntry *);
 SQUIDCEXTERN int internalCheck(const char *urlpath);
 SQUIDCEXTERN int internalStaticCheck(const char *urlpath);
 SQUIDCEXTERN char *internalLocalUri(const char *dir, const char *name);
-SQUIDCEXTERN char *internalRemoteUri(const char *, u_short, const char *, const char *);
+SQUIDCEXTERN char *internalRemoteUri(const char *, unsigned short, const char *, const char *);
 SQUIDCEXTERN const char *internalHostname(void);
 SQUIDCEXTERN int internalHostnameIs(const char *);
 
@@ -697,7 +625,7 @@ SQUIDCEXTERN void *leakFreeFL(void *, const char *, int);
  * prototypes for system functions missing from system includes
  */
 
-#ifdef _SQUID_SOLARIS_
+#if _SQUID_SOLARIS_
 
 SQUIDCEXTERN int getrusage(int, struct rusage *);
 SQUIDCEXTERN int getpagesize(void);
@@ -710,87 +638,88 @@ SQUIDCEXTERN int gethostname(char *, int);
 /*
  * hack to allow snmp access to the statistics counters
  */
-SQUIDCEXTERN StatCounters *snmpStatGet(int);
+class StatCounters;
+        SQUIDCEXTERN StatCounters *snmpStatGet(int);
 
-/* Vary support functions */
-SQUIDCEXTERN int varyEvaluateMatch(StoreEntry * entry, HttpRequest * req);
+        /* Vary support functions */
+        SQUIDCEXTERN int varyEvaluateMatch(StoreEntry * entry, HttpRequest * req);
 
-/* CygWin & Windows NT Port */
-/* win32.c */
+        /* CygWin & Windows NT Port */
+        /* win32.c */
 #if _SQUID_WINDOWS_
-SQUIDCEXTERN int WIN32_Subsystem_Init(int *, char ***);
-SQUIDCEXTERN void WIN32_sendSignal(int);
-SQUIDCEXTERN void WIN32_Abort(int);
-SQUIDCEXTERN void WIN32_Exit(void);
-SQUIDCEXTERN void WIN32_SetServiceCommandLine(void);
-SQUIDCEXTERN void WIN32_InstallService(void);
-SQUIDCEXTERN void WIN32_RemoveService(void);
-SQUIDCEXTERN int SquidMain(int, char **);
+        SQUIDCEXTERN int WIN32_Subsystem_Init(int *, char ***);
+        SQUIDCEXTERN void WIN32_sendSignal(int);
+        SQUIDCEXTERN void WIN32_Abort(int);
+        SQUIDCEXTERN void WIN32_Exit(void);
+        SQUIDCEXTERN void WIN32_SetServiceCommandLine(void);
+        SQUIDCEXTERN void WIN32_InstallService(void);
+        SQUIDCEXTERN void WIN32_RemoveService(void);
+        SQUIDCEXTERN int SquidMain(int, char **);
 #endif /* _SQUID_WINDOWS_ */
-#ifdef _SQUID_MSWIN_
+#if _SQUID_MSWIN_
 
-SQUIDCEXTERN int WIN32_pipe(int[2]);
+        SQUIDCEXTERN int WIN32_pipe(int[2]);
 
-SQUIDCEXTERN int WIN32_getrusage(int, struct rusage *);
-SQUIDCEXTERN void WIN32_ExceptionHandlerInit(void);
+            SQUIDCEXTERN int WIN32_getrusage(int, struct rusage *);
+    SQUIDCEXTERN void WIN32_ExceptionHandlerInit(void);
 
-SQUIDCEXTERN int Win32__WSAFDIsSet(int fd, fd_set* set);
-SQUIDCEXTERN DWORD WIN32_IpAddrChangeMonitorInit();
+    SQUIDCEXTERN int Win32__WSAFDIsSet(int fd, fd_set* set);
+    SQUIDCEXTERN DWORD WIN32_IpAddrChangeMonitorInit();
 
 #endif
 
-/* external_acl.c */
-class external_acl;
-        SQUIDCEXTERN void parse_externalAclHelper(external_acl **);
+    /* external_acl.c */
+    class external_acl;
+            SQUIDCEXTERN void parse_externalAclHelper(external_acl **);
 
-        SQUIDCEXTERN void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *);
+            SQUIDCEXTERN void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *);
 
-        SQUIDCEXTERN void free_externalAclHelper(external_acl **);
+            SQUIDCEXTERN void free_externalAclHelper(external_acl **);
 
-        typedef void EAH(void *data, void *result);
-        class ACLChecklist;
-            SQUIDCEXTERN void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data);
+            typedef void EAH(void *data, void *result);
+            class ACLChecklist;
+                SQUIDCEXTERN void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data);
 
-            SQUIDCEXTERN void externalAclInit(void);
+                SQUIDCEXTERN void externalAclInit(void);
 
-            SQUIDCEXTERN void externalAclShutdown(void);
+                SQUIDCEXTERN void externalAclShutdown(void);
 
-            SQUIDCEXTERN char *strtokFile(void);
+                SQUIDCEXTERN char *strtokFile(void);
 
 #if USE_WCCPv2
 
-            SQUIDCEXTERN void parse_wccp2_method(int *v);
-            SQUIDCEXTERN void free_wccp2_method(int *v);
-            SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label, int v);
-            SQUIDCEXTERN void parse_wccp2_amethod(int *v);
-            SQUIDCEXTERN void free_wccp2_amethod(int *v);
-            SQUIDCEXTERN void dump_wccp2_amethod(StoreEntry * e, const char *label, int v);
+                SQUIDCEXTERN void parse_wccp2_method(int *v);
+                SQUIDCEXTERN void free_wccp2_method(int *v);
+                SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label, int v);
+                SQUIDCEXTERN void parse_wccp2_amethod(int *v);
+                SQUIDCEXTERN void free_wccp2_amethod(int *v);
+                SQUIDCEXTERN void dump_wccp2_amethod(StoreEntry * e, const char *label, int v);
 
-            SQUIDCEXTERN void parse_wccp2_service(void *v);
-            SQUIDCEXTERN void free_wccp2_service(void *v);
-            SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label, void *v);
+                SQUIDCEXTERN void parse_wccp2_service(void *v);
+                SQUIDCEXTERN void free_wccp2_service(void *v);
+                SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label, void *v);
 
-            SQUIDCEXTERN int check_null_wccp2_service(void *v);
+                SQUIDCEXTERN int check_null_wccp2_service(void *v);
 
-            SQUIDCEXTERN void parse_wccp2_service_info(void *v);
+                SQUIDCEXTERN void parse_wccp2_service_info(void *v);
 
-            SQUIDCEXTERN void free_wccp2_service_info(void *v);
+                SQUIDCEXTERN void free_wccp2_service_info(void *v);
 
-            SQUIDCEXTERN void dump_wccp2_service_info(StoreEntry * e, const char *label, void *v);
+                SQUIDCEXTERN void dump_wccp2_service_info(StoreEntry * e, const char *label, void *v);
 
 #endif
 
 #if USE_AUTH
 
 #if HAVE_AUTH_MODULE_NEGOTIATE && HAVE_KRB5 && HAVE_GSSAPI
-            /* upstream proxy authentication */
-            SQUIDCEXTERN char *peer_proxy_negotiate_auth(char *principal_name, char *proxy);
+                /* upstream proxy authentication */
+                SQUIDCEXTERN char *peer_proxy_negotiate_auth(char *principal_name, char *proxy);
 #endif
 
-                namespace Auth {
-        /* call to ensure the auth component schemes exist. */
-        extern void Init(void);
-        } // namespace Auth
+                    namespace Auth {
+            /* call to ensure the auth component schemes exist. */
+            extern void Init(void);
+            } // namespace Auth
 
 #endif /* USE_AUTH */