]> git.ipfire.org Git - thirdparty/squid.git/blame - src/protos.h
Author: Andrew Beverley <andy@andybev.com>
[thirdparty/squid.git] / src / protos.h
CommitLineData
9cef6668 1/*
2b6662ba 2 * SQUID Web Proxy Cache http://www.squid-cache.org/
9cef6668 3 * ----------------------------------------------------------
4 *
2b6662ba 5 * Squid is the result of efforts by numerous individuals from
6 * the Internet community; see the CONTRIBUTORS file for full
7 * details. Many organizations have provided support for Squid's
8 * development; see the SPONSORS file for full details. Squid is
9 * Copyrighted (C) 2001 by the Regents of the University of
10 * California; see the COPYRIGHT file for full details. Squid
11 * incorporates software developed and/or copyrighted by other
12 * sources; see the CREDITS file for full details.
9cef6668 13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
26ac0430 18 *
9cef6668 19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
26ac0430 23 *
9cef6668 24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, write to the Free Software
26 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
27 *
28 */
b5638623 29#ifndef SQUID_PROTOS_H
30#define SQUID_PROTOS_H
31
25b6a907 32/* included for routines that have not moved out to their proper homes
33 * yet.
34 */
35#include "Packer.h"
62ee09ca 36/* for routines still in this file that take CacheManager parameters */
96d89ea0 37#include "ip/Address.h"
e1f7507e
AJ
38/* for parameters that still need these */
39#include "enums.h"
40/* some parameters stil need this */
41#include "wordlist.h"
62ee09ca 42
4b981814
AJ
43/* for parameters that still need these */
44#include "lookup_t.h"
45
46
75cb38cb 47class HttpRequestMethod;
48
25b6a907 49
21f6708d 50#if USE_FORW_VIA_DB
e6ccf245 51SQUIDCEXTERN void fvdbCountVia(const char *key);
52SQUIDCEXTERN void fvdbCountForw(const char *key);
d21f1c54 53#endif
c3609322 54#if HEADERS_LOG
60745f24 55SQUIDCEXTERN void headersLog(int cs, int pq, const HttpRequestMethod& m, void *data);
c3609322 56#endif
e6ccf245 57SQUIDCEXTERN char *log_quote(const char *header);
58SQUIDCEXTERN int logTypeIsATcpHit(log_type);
a8258824 59
0e4e0e7d 60/*
61 * cache_cf.c
62 */
e6ccf245 63SQUIDCEXTERN void configFreeMemory(void);
e1f7507e 64class MemBuf;
e6ccf245 65SQUIDCEXTERN void wordlistCat(const wordlist *, MemBuf * mb);
e6ccf245 66SQUIDCEXTERN void self_destruct(void);
3f38a55e 67SQUIDCEXTERN void add_http_port(char *portspec);
59b2d47f 68extern int xatoi(const char *token);
69extern long xatol(const char *token);
3f38a55e 70
0e4e0e7d 71
94439e4e 72/* extra functions from cache_cf.c useful for lib modules */
e6ccf245 73SQUIDCEXTERN void parse_int(int *var);
74SQUIDCEXTERN void parse_onoff(int *var);
75SQUIDCEXTERN void parse_eol(char *volatile *var);
76SQUIDCEXTERN void parse_wordlist(wordlist ** list);
77SQUIDCEXTERN void requirePathnameExists(const char *name, const char *path);
78SQUIDCEXTERN void parse_time_t(time_t * var);
62e76326 79
f5b8bbc4 80
edce4d98 81/* client_side.c - FD related client side routines */
82
e6ccf245 83SQUIDCEXTERN void clientdbInit(void);
62e76326 84
b7ac5457 85SQUIDCEXTERN void clientdbUpdate(const Ip::Address &, log_type, protocol_t, size_t);
62e76326 86
b7ac5457 87SQUIDCEXTERN int clientdbCutoffDenied(const Ip::Address &);
e4ae841b 88void clientdbDump(StoreEntry *);
e6ccf245 89SQUIDCEXTERN void clientdbFreeMemory(void);
62e76326 90
b7ac5457 91SQUIDCEXTERN int clientdbEstablished(const Ip::Address &, int);
e6ccf245 92SQUIDCEXTERN void clientOpenListenSockets(void);
93SQUIDCEXTERN void clientHttpConnectionsClose(void);
e6ccf245 94SQUIDCEXTERN void httpRequestFree(void *);
edce4d98 95
28d4805a 96extern void clientAccessCheck(void *);
28d4805a 97
96e03dd8 98#include "Debug.h"
82b7abe3 99
123abbe1 100/* see debug.c for info on context-based debugging */
e6ccf245 101SQUIDCEXTERN Ctx ctx_enter(const char *descr);
102SQUIDCEXTERN void ctx_exit(Ctx ctx);
123abbe1 103
5e6d4736 104SQUIDCEXTERN void _db_set_syslog(const char *facility);
e6ccf245 105SQUIDCEXTERN void _db_init(const char *logfile, const char *options);
106SQUIDCEXTERN void _db_rotate_log(void);
a8258824 107
96e03dd8 108/* packs, then prints an object using debugs() */
e6ccf245 109SQUIDCEXTERN void debugObj(int section, int level, const char *label, void *obj, ObjPackMethod pm);
95e36d02 110
cd748f27 111/* disk.c */
e6ccf245 112SQUIDCEXTERN int file_open(const char *path, int mode);
113SQUIDCEXTERN void file_close(int fd);
51ee7c82 114/* Adapter file_write for object callbacks */
115
116template <class O>
117void
118FreeObject(void *address)
119{
120 O *anObject = static_cast <O *>(address);
00d77d6b 121 delete anObject;
51ee7c82 122}
123
528b2c61 124SQUIDCEXTERN void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *);
e6ccf245 125SQUIDCEXTERN void file_write_mbuf(int fd, off_t, MemBuf mb, DWCB * handler, void *handler_data);
126SQUIDCEXTERN void file_read(int, char *, int, off_t, DRCB *, void *);
127SQUIDCEXTERN void disk_init(void);
f5b8bbc4 128
e6ccf245 129SQUIDCEXTERN void dnsShutdown(void);
130SQUIDCEXTERN void dnsInit(void);
131SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data);
f5b8bbc4 132
7b724b86 133/* dns_internal.c */
e6ccf245 134SQUIDCEXTERN void idnsInit(void);
135SQUIDCEXTERN void idnsShutdown(void);
136SQUIDCEXTERN void idnsALookup(const char *, IDNSCB *, void *);
62e76326 137
b7ac5457 138SQUIDCEXTERN void idnsPTRLookup(const Ip::Address &, IDNSCB *, void *);
e6ccf245 139
e6ccf245 140SQUIDCEXTERN void fd_close(int fd);
141SQUIDCEXTERN void fd_open(int fd, unsigned int type, const char *);
142SQUIDCEXTERN void fd_note(int fd, const char *);
143SQUIDCEXTERN void fd_bytes(int fd, int len, unsigned int type);
e6ccf245 144SQUIDCEXTERN void fdDumpOpen(void);
a1ca9253 145SQUIDCEXTERN int fdUsageHigh(void);
e6ccf245 146SQUIDCEXTERN void fdAdjustReserved(void);
147
148SQUIDCEXTERN fileMap *file_map_create(void);
149SQUIDCEXTERN int file_map_allocate(fileMap *, int);
150SQUIDCEXTERN int file_map_bit_set(fileMap *, int);
151SQUIDCEXTERN int file_map_bit_test(fileMap *, int);
152SQUIDCEXTERN void file_map_bit_reset(fileMap *, int);
153SQUIDCEXTERN void filemapFreeMemory(fileMap *);
154
155
b7ac5457 156SQUIDCEXTERN void fqdncache_nbgethostbyaddr(const Ip::Address &, FQDNH *, void *);
62e76326 157
b7ac5457 158SQUIDCEXTERN const char *fqdncache_gethostbyaddr(const Ip::Address &, int flags);
e6ccf245 159SQUIDCEXTERN void fqdncache_init(void);
59a09b98 160void fqdnStats(StoreEntry *);
e6ccf245 161SQUIDCEXTERN void fqdncacheReleaseInvalid(const char *);
62e76326 162
b7ac5457 163SQUIDCEXTERN const char *fqdnFromAddr(const Ip::Address &);
e6ccf245 164SQUIDCEXTERN int fqdncacheQueueDrain(void);
165SQUIDCEXTERN void fqdncacheFreeMemory(void);
166SQUIDCEXTERN void fqdncache_restart(void);
59a09b98 167void fqdncache_purgelru(void *);
e6ccf245 168SQUIDCEXTERN void fqdncacheAddEntryFromHosts(char *addr, wordlist * hostnames);
169
b6b6f466 170class FwdState;
63be0a78 171
172/**
173 \defgroup ServerProtocolFTPAPI Server-Side FTP API
174 \ingroup ServerProtocol
175 */
176
177/// \ingroup ServerProtocolFTPAPI
e6ccf245 178SQUIDCEXTERN void ftpStart(FwdState *);
63be0a78 179
e1f7507e 180class HttpRequest;
696a257c 181class HttpReply;
e1f7507e 182
63be0a78 183/// \ingroup ServerProtocolFTPAPI
cc192b50 184SQUIDCEXTERN const char *ftpUrlWith2f(HttpRequest *);
e6ccf245 185
63be0a78 186
187/**
188 \defgroup ServerProtocolGopherAPI Server-Side Gopher API
189 \ingroup ServerProtocol
190 */
191
192/// \ingroup ServerProtocolGopherAPI
e6ccf245 193SQUIDCEXTERN void gopherStart(FwdState *);
63be0a78 194
195/// \ingroup ServerProtocolGopherAPI
190154cf 196SQUIDCEXTERN int gopherCachable(const HttpRequest *);
e6ccf245 197
198
63be0a78 199/**
200 \defgroup ServerProtocolWhoisAPI Server-Side WHOIS API
201 \ingroup ServerProtocol
202 */
203
204/// \ingroup ServerProtocolWhoisAPI
e6ccf245 205SQUIDCEXTERN void whoisStart(FwdState *);
4bd74768 206
63be0a78 207
ccf44862 208/* http.c */
e1f7507e
AJ
209/* for http_hdr_type field */
210#include "HttpHeader.h"
60745f24 211SQUIDCEXTERN int httpCachable(const HttpRequestMethod&);
e6ccf245 212SQUIDCEXTERN void httpStart(FwdState *);
190154cf 213SQUIDCEXTERN mb_size_t httpBuildRequestPrefix(HttpRequest * request,
214 HttpRequest * orig_request,
62e76326 215 StoreEntry * entry,
216 MemBuf * mb,
62e76326 217 http_state_flags);
e6ccf245 218SQUIDCEXTERN void httpAnonInitModule(void);
219SQUIDCEXTERN int httpAnonHdrAllowed(http_hdr_type hdr_id);
220SQUIDCEXTERN int httpAnonHdrDenied(http_hdr_type hdr_id);
190154cf 221SQUIDCEXTERN const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply);
9b312a19 222
a9771e51 223/* ETag */
e6ccf245 224SQUIDCEXTERN int etagParseInit(ETag * etag, const char *str);
bd76482d
AR
225/// whether etags are strong-equal
226SQUIDCEXTERN bool etagIsStrongEqual(const ETag &tag1, const ETag &tag2);
227/// whether etags are weak-equal
228SQUIDCEXTERN bool etagIsWeakEqual(const ETag &tag1, const ETag &tag2);
a9771e51 229
6feb0e7c 230#include "HttpStatusCode.h"
e6ccf245 231SQUIDCEXTERN const char *httpStatusString(http_status status);
adba4a64 232
233/* Http Body */
234/* init/clean */
e6ccf245 235SQUIDCEXTERN void httpBodyInit(HttpBody * body);
236SQUIDCEXTERN void httpBodyClean(HttpBody * body);
adba4a64 237/* get body ptr (always use this) */
e6ccf245 238SQUIDCEXTERN const char *httpBodyPtr(const HttpBody * body);
1d21d91d 239/* set body, does not clone mb so you should not reuse it */
e6ccf245 240SQUIDCEXTERN void httpBodySet(HttpBody * body, MemBuf * mb);
adba4a64 241
242/* pack */
e6ccf245 243SQUIDCEXTERN void httpBodyPackInto(const HttpBody * body, Packer * p);
adba4a64 244
7faf2bdb 245/* Http Cache Control Header Field */
e6ccf245 246SQUIDCEXTERN void httpHdrCcInitModule(void);
247SQUIDCEXTERN void httpHdrCcCleanModule(void);
248SQUIDCEXTERN HttpHdrCc *httpHdrCcCreate(void);
30abd221 249SQUIDCEXTERN HttpHdrCc *httpHdrCcParseCreate(const String * str);
e6ccf245 250SQUIDCEXTERN void httpHdrCcDestroy(HttpHdrCc * cc);
251SQUIDCEXTERN HttpHdrCc *httpHdrCcDup(const HttpHdrCc * cc);
252SQUIDCEXTERN void httpHdrCcPackInto(const HttpHdrCc * cc, Packer * p);
e6ccf245 253SQUIDCEXTERN void httpHdrCcSetMaxAge(HttpHdrCc * cc, int max_age);
254SQUIDCEXTERN void httpHdrCcSetSMaxAge(HttpHdrCc * cc, int s_maxage);
255SQUIDCEXTERN void httpHdrCcUpdateStats(const HttpHdrCc * cc, StatHist * hist);
59a09b98 256void httpHdrCcStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
7faf2bdb 257
258/* Http Header Tools */
e1f7507e 259class HttpHeaderFieldInfo;
e6ccf245 260SQUIDCEXTERN HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count);
261SQUIDCEXTERN void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count);
9b558d8a 262SQUIDCEXTERN http_hdr_type httpHeaderIdByName(const char *name, size_t name_len, const HttpHeaderFieldInfo * attrs, int end);
e6ccf245 263SQUIDCEXTERN http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len);
264SQUIDCEXTERN const char *httpHeaderNameById(int id);
e6ccf245 265SQUIDCEXTERN int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive);
30abd221 266SQUIDCEXTERN void strListAdd(String * str, const char *item, char del);
267SQUIDCEXTERN int strListIsMember(const String * str, const char *item, char del);
268SQUIDCEXTERN int strListIsSubstr(const String * list, const char *s, char del);
269SQUIDCEXTERN int strListGetItem(const String * str, char del, const char **item, int *ilen, const char **pos);
e6ccf245 270SQUIDCEXTERN const char *getStringPrefix(const char *str, const char *end);
271SQUIDCEXTERN int httpHeaderParseInt(const char *start, int *val);
47f6e231 272SQUIDCEXTERN int httpHeaderParseOffset(const char *start, int64_t * off);
e6ccf245 273SQUIDCEXTERN void
68361fc4 274httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
7faf2bdb 275
d192d11f 276
4f087419 277/* Http Header */
e6ccf245 278SQUIDCEXTERN void httpHeaderInitModule(void);
279SQUIDCEXTERN void httpHeaderCleanModule(void);
a9925b40 280
4f087419 281/* store report about current header usage and other stats */
59a09b98 282void httpHeaderStoreReport(StoreEntry * e);
8c01ada0 283SQUIDCEXTERN void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep);
4f56514c 284SQUIDCEXTERN int httpReqHdrManglersConfigured();
a8258824 285
6a644e75 286#if SQUID_SNMP
e6ccf245 287SQUIDCEXTERN PF snmpHandleUdp;
288SQUIDCEXTERN void snmpInit(void);
289SQUIDCEXTERN void snmpConnectionOpen(void);
290SQUIDCEXTERN void snmpConnectionShutdown(void);
291SQUIDCEXTERN void snmpConnectionClose(void);
6a644e75 292SQUIDCEXTERN const char * snmpDebugOid(oid * Name, snint Len, MemBuf &outbuf);
62e76326 293
b7ac5457
AJ
294SQUIDCEXTERN void addr2oid(Ip::Address &addr, oid *Dest);
295SQUIDCEXTERN void oid2addr(oid *Dest, Ip::Address &addr, u_int code);
62e76326 296
b7ac5457 297SQUIDCEXTERN Ip::Address *client_entry(Ip::Address *current);
e6ccf245 298SQUIDCEXTERN variable_list *snmp_basicFn(variable_list *, snint *);
299SQUIDCEXTERN variable_list *snmp_confFn(variable_list *, snint *);
300SQUIDCEXTERN variable_list *snmp_sysFn(variable_list *, snint *);
301SQUIDCEXTERN variable_list *snmp_prfSysFn(variable_list *, snint *);
302SQUIDCEXTERN variable_list *snmp_prfProtoFn(variable_list *, snint *);
303SQUIDCEXTERN variable_list *snmp_prfPeerFn(variable_list *, snint *);
304SQUIDCEXTERN variable_list *snmp_netIpFn(variable_list *, snint *);
305SQUIDCEXTERN variable_list *snmp_netFqdnFn(variable_list *, snint *);
0c4f5cf2 306#if USE_DNSSERVERS
e6ccf245 307SQUIDCEXTERN variable_list *snmp_netDnsFn(variable_list *, snint *);
0c4f5cf2 308#else
e6ccf245 309SQUIDCEXTERN variable_list *snmp_netIdnsFn(variable_list *, snint *);
59ad6d31 310#endif /* USE_DNSSERVERS */
e6ccf245 311SQUIDCEXTERN variable_list *snmp_meshPtblFn(variable_list *, snint *);
312SQUIDCEXTERN variable_list *snmp_meshCtblFn(variable_list *, snint *);
678c6099 313#endif /* SQUID_SNMP */
2bbd722b 314
eb824054 315#if USE_WCCP
e6ccf245 316SQUIDCEXTERN void wccpInit(void);
317SQUIDCEXTERN void wccpConnectionOpen(void);
e6ccf245 318SQUIDCEXTERN void wccpConnectionClose(void);
eb824054 319#endif /* USE_WCCP */
320e9f36 320
0b0cfcf2 321#if USE_WCCPv2
322extern void wccp2Init(void);
323extern void wccp2ConnectionOpen(void);
324extern void wccp2ConnectionClose(void);
325#endif /* USE_WCCPv2 */
326
59a09b98 327void ipcache_purgelru(void *);
e6ccf245 328SQUIDCEXTERN void ipcache_nbgethostbyname(const char *name,
62e76326 329 IPH * handler,
330 void *handlerData);
e6ccf245 331SQUIDCEXTERN const ipcache_addrs *ipcache_gethostbyname(const char *, int flags);
332SQUIDCEXTERN void ipcacheInvalidate(const char *);
a12a049a 333SQUIDCEXTERN void ipcacheInvalidateNegative(const char *);
e6ccf245 334SQUIDCEXTERN void ipcache_init(void);
e6ccf245 335SQUIDCEXTERN void ipcacheCycleAddr(const char *name, ipcache_addrs *);
b7ac5457
AJ
336SQUIDCEXTERN void ipcacheMarkBadAddr(const char *name, const Ip::Address &);
337SQUIDCEXTERN void ipcacheMarkGoodAddr(const char *name, const Ip::Address &);
ec505200 338SQUIDCEXTERN void ipcacheMarkAllGood(const char *name);
e6ccf245 339SQUIDCEXTERN void ipcacheFreeMemory(void);
340SQUIDCEXTERN ipcache_addrs *ipcacheCheckNumeric(const char *name);
341SQUIDCEXTERN void ipcache_restart(void);
342SQUIDCEXTERN int ipcacheAddEntryFromHosts(const char *name, const char *ipaddr);
f5b8bbc4 343
e6ccf245 344SQUIDCEXTERN char *mime_get_header(const char *mime, const char *header);
345SQUIDCEXTERN char *mime_get_header_field(const char *mime, const char *name, const char *prefix);
346SQUIDCEXTERN size_t headersEnd(const char *, size_t);
e6ccf245 347
348SQUIDCEXTERN void mimeInit(char *filename);
349SQUIDCEXTERN void mimeFreeMemory(void);
350SQUIDCEXTERN char *mimeGetContentEncoding(const char *fn);
351SQUIDCEXTERN char *mimeGetContentType(const char *fn);
352SQUIDCEXTERN char const *mimeGetIcon(const char *fn);
353SQUIDCEXTERN const char *mimeGetIconURL(const char *fn);
354SQUIDCEXTERN char mimeGetTransferMode(const char *fn);
355SQUIDCEXTERN int mimeGetDownloadOption(const char *fn);
356SQUIDCEXTERN int mimeGetViewOption(const char *fn);
357
358SQUIDCEXTERN int mcastSetTtl(int, int);
359SQUIDCEXTERN IPH mcastJoinGroups;
a8258824 360
e6ccf245 361SQUIDCEXTERN peer *getFirstPeer(void);
190154cf 362SQUIDCEXTERN peer *getFirstUpParent(HttpRequest *);
e6ccf245 363SQUIDCEXTERN peer *getNextPeer(peer *);
190154cf 364SQUIDCEXTERN peer *getSingleParent(HttpRequest *);
365SQUIDCEXTERN int neighborsCount(HttpRequest *);
366SQUIDCEXTERN int neighborsUdpPing(HttpRequest *,
62e76326 367 StoreEntry *,
368 IRCB * callback,
369 void *data,
370 int *exprep,
371 int *timeout);
e6ccf245 372SQUIDCEXTERN void neighborAddAcl(const char *, const char *);
62e76326 373
b7ac5457 374SQUIDCEXTERN void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &);
e6ccf245 375SQUIDCEXTERN void neighborAdd(const char *, const char *, int, int, int, int, int);
a86029b9 376SQUIDCEXTERN void neighbors_init(void);
4f4fa815 377#if USE_HTCP
8dceeee3 378SQUIDCEXTERN void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
90bd689c 379#endif
e6ccf245 380SQUIDCEXTERN peer *peerFindByName(const char *);
381SQUIDCEXTERN peer *peerFindByNameAndPort(const char *, unsigned short);
190154cf 382SQUIDCEXTERN peer *getDefaultParent(HttpRequest * request);
383SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
384SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
32a47e3e
AJ
385SQUIDCEXTERN void peerClearRRStart(void);
386SQUIDCEXTERN void peerClearRR(void);
190154cf 387SQUIDCEXTERN peer *getAnyParent(HttpRequest * request);
388SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
389SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
390SQUIDCEXTERN void peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup);
e6ccf245 391SQUIDCEXTERN void peerNoteDigestGone(peer * p);
392SQUIDCEXTERN int neighborUp(const peer * e);
393SQUIDCEXTERN CBDUNL peerDestroy;
394SQUIDCEXTERN const char *neighborTypeStr(const peer * e);
190154cf 395SQUIDCEXTERN peer_t neighborType(const peer *, const HttpRequest *);
e6ccf245 396SQUIDCEXTERN void peerConnectFailed(peer *);
397SQUIDCEXTERN void peerConnectSucceded(peer *);
398SQUIDCEXTERN void dump_peer_options(StoreEntry *, peer *);
190154cf 399SQUIDCEXTERN int peerHTTPOkay(const peer *, HttpRequest *);
62e76326 400
b7ac5457 401SQUIDCEXTERN peer *whichPeer(const Ip::Address &from);
ba2d3770 402
190154cf 403SQUIDCEXTERN void peerSelect(HttpRequest *, StoreEntry *, PSC *, void *data);
e6ccf245 404SQUIDCEXTERN void peerSelectInit(void);
f5b8bbc4 405
b89dd01a 406/* peer_digest.c */
e1f7507e 407class PeerDigest;
e6ccf245 408SQUIDCEXTERN PeerDigest *peerDigestCreate(peer * p);
409SQUIDCEXTERN void peerDigestNeeded(PeerDigest * pd);
410SQUIDCEXTERN void peerDigestNotePeerGone(PeerDigest * pd);
411SQUIDCEXTERN void peerDigestStatsReport(const PeerDigest * pd, StoreEntry * e);
b89dd01a 412
b7ac5457 413extern Ip::Address getOutgoingAddr(HttpRequest * request, struct peer *dst_peer);
a8258824 414
190154cf 415SQUIDCEXTERN void urnStart(HttpRequest *, StoreEntry *);
e6ccf245 416
e6ccf245 417SQUIDCEXTERN void redirectInit(void);
418SQUIDCEXTERN void redirectShutdown(void);
419
9bea1d5b 420extern void refreshAddToList(const char *, int, time_t, int, time_t);
421extern int refreshIsCachable(const StoreEntry *);
190154cf 422extern int refreshCheckHTTP(const StoreEntry *, HttpRequest *);
423extern int refreshCheckICP(const StoreEntry *, HttpRequest *);
424extern int refreshCheckHTCP(const StoreEntry *, HttpRequest *);
9bea1d5b 425extern int refreshCheckDigest(const StoreEntry *, time_t delta);
426extern time_t getMaxAge(const char *url);
427extern void refreshInit(void);
38f9c547 428extern const refresh_t *refreshLimits(const char *url);
9bea1d5b 429
9bea1d5b 430extern void shut_down(int);
b293c4d8 431extern void rotate_logs(int);
432extern void reconfigure(int);
9bea1d5b 433
434
435extern void start_announce(void *unused);
9bea1d5b 436extern void waisStart(FwdState *);
05832ae1 437
e6ccf245 438SQUIDCEXTERN void statInit(void);
439SQUIDCEXTERN void statFreeMemory(void);
440SQUIDCEXTERN double median_svc_get(int, int);
441SQUIDCEXTERN void pconnHistCount(int, int);
442SQUIDCEXTERN int stat5minClientRequests(void);
443SQUIDCEXTERN double stat5minCPUUsage(void);
444SQUIDCEXTERN double statRequestHitRatio(int minutes);
445SQUIDCEXTERN double statRequestHitMemoryRatio(int minutes);
446SQUIDCEXTERN double statRequestHitDiskRatio(int minutes);
447SQUIDCEXTERN double statByteHitRatio(int minutes);
12cf1be2 448
ae50d52a 449/* StatHist */
e6ccf245 450SQUIDCEXTERN void statHistClean(StatHist * H);
451SQUIDCEXTERN void statHistCount(StatHist * H, double val);
452SQUIDCEXTERN void statHistCopy(StatHist * Dest, const StatHist * Orig);
453SQUIDCEXTERN void statHistSafeCopy(StatHist * Dest, const StatHist * Orig);
454SQUIDCEXTERN double statHistDeltaMedian(const StatHist * A, const StatHist * B);
04a28d46 455SQUIDCEXTERN double statHistDeltaPctile(const StatHist * A, const StatHist * B, double pctile);
e6ccf245 456SQUIDCEXTERN void statHistDump(const StatHist * H, StoreEntry * sentry, StatHistBinDumper * bd);
457SQUIDCEXTERN void statHistLogInit(StatHist * H, int capacity, double min, double max);
458SQUIDCEXTERN void statHistEnumInit(StatHist * H, int last_enum);
459SQUIDCEXTERN void statHistIntInit(StatHist * H, int n);
460SQUIDCEXTERN StatHistBinDumper statHistEnumDumper;
461SQUIDCEXTERN StatHistBinDumper statHistIntDumper;
7ae52c25 462
99edd1c3 463
02922e76 464/* mem */
e6ccf245 465SQUIDCEXTERN void memClean(void);
466SQUIDCEXTERN void memInitModule(void);
467SQUIDCEXTERN void memCleanModule(void);
468SQUIDCEXTERN void memConfigure(void);
469SQUIDCEXTERN void *memAllocate(mem_type);
470SQUIDCEXTERN void *memAllocString(size_t net_size, size_t * gross_size);
471SQUIDCEXTERN void *memAllocBuf(size_t net_size, size_t * gross_size);
472SQUIDCEXTERN void *memReallocBuf(void *buf, size_t net_size, size_t * gross_size);
473SQUIDCEXTERN void memFree(void *, int type);
e4ae841b
FC
474void memFree2K(void *);
475void memFree4K(void *);
476void memFree8K(void *);
477void memFree16K(void *);
478void memFree32K(void *);
479void memFree64K(void *);
e6ccf245 480SQUIDCEXTERN void memFreeString(size_t size, void *);
481SQUIDCEXTERN void memFreeBuf(size_t size, void *);
482SQUIDCEXTERN FREE *memFreeBufFunc(size_t size);
483SQUIDCEXTERN int memInUse(mem_type);
60da11d3 484SQUIDCEXTERN void memDataInit(mem_type, const char *, size_t, int, bool zeroOnPush = true);
e6ccf245 485SQUIDCEXTERN void memCheckInit(void);
3f6c0fb2 486
d8b249ef 487
488/* Mem */
e6ccf245 489SQUIDCEXTERN void memConfigure(void);
e6ccf245 490
a8258824 491/* ----------------------------------------------------------------- */
492
22d38e05 493/* repl_modules.c */
e6ccf245 494SQUIDCEXTERN void storeReplSetup(void);
22d38e05 495
e3ef2b09 496/*
497 * store_log.c
498 */
e6ccf245 499SQUIDCEXTERN void storeLog(int tag, const StoreEntry * e);
500SQUIDCEXTERN void storeLogRotate(void);
501SQUIDCEXTERN void storeLogClose(void);
502SQUIDCEXTERN void storeLogOpen(void);
e3ef2b09 503
f09f5b26 504
505/*
506 * store_key_*.c
507 */
e6ccf245 508SQUIDCEXTERN cache_key *storeKeyDup(const cache_key *);
509SQUIDCEXTERN cache_key *storeKeyCopy(cache_key *, const cache_key *);
510SQUIDCEXTERN void storeKeyFree(const cache_key *);
511SQUIDCEXTERN const cache_key *storeKeyScan(const char *);
512SQUIDCEXTERN const char *storeKeyText(const cache_key *);
60745f24 513SQUIDCEXTERN const cache_key *storeKeyPublic(const char *, const HttpRequestMethod&);
190154cf 514SQUIDCEXTERN const cache_key *storeKeyPublicByRequest(HttpRequest *);
60745f24 515SQUIDCEXTERN const cache_key *storeKeyPublicByRequestMethod(HttpRequest *, const HttpRequestMethod&);
516SQUIDCEXTERN const cache_key *storeKeyPrivate(const char *, const HttpRequestMethod&, int);
e6ccf245 517SQUIDCEXTERN int storeKeyHashBuckets(int);
518SQUIDCEXTERN int storeKeyNull(const cache_key *);
519SQUIDCEXTERN void storeKeyInit(void);
520SQUIDCEXTERN HASHHASH storeKeyHashHash;
521SQUIDCEXTERN HASHCMP storeKeyHashCmp;
a8258824 522
f09f5b26 523/*
1ffc4484 524 * store_digest.c
f09f5b26 525 */
e6ccf245 526SQUIDCEXTERN void storeDigestInit(void);
527SQUIDCEXTERN void storeDigestNoteStoreReady(void);
528SQUIDCEXTERN void storeDigestScheduleRebuild(void);
529SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry);
530SQUIDCEXTERN void storeDigestReport(StoreEntry *);
8638fc66 531
f09f5b26 532/*
533 * store_rebuild.c
534 */
e6ccf245 535SQUIDCEXTERN void storeRebuildStart(void);
62e76326 536
e6ccf245 537SQUIDCEXTERN void storeRebuildComplete(struct _store_rebuild_data *);
538SQUIDCEXTERN void storeRebuildProgress(int sd_index, int total, int sofar);
f09f5b26 539
f09f5b26 540/*
541 * store_swapin.c
542 */
e1f7507e 543class store_client;
e6ccf245 544SQUIDCEXTERN void storeSwapInStart(store_client *);
f09f5b26 545
f09f5b26 546/*
547 * store_client.c
548 */
e6ccf245 549SQUIDCEXTERN store_client *storeClientListAdd(StoreEntry * e, void *data);
550SQUIDCEXTERN int storeClientCopyPending(store_client *, StoreEntry * e, void *data);
5f5e883f
FC
551SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data)
552;
e6ccf245 553SQUIDCEXTERN int storePendingNClients(const StoreEntry * e);
554SQUIDCEXTERN int storeClientIsThisAClient(store_client * sc, void *someClient);
555
556
557SQUIDCEXTERN const char *getMyHostname(void);
558SQUIDCEXTERN const char *uniqueHostname(void);
559SQUIDCEXTERN void safeunlink(const char *path, int quiet);
59a09b98 560void death(int sig);
e6ccf245 561SQUIDCEXTERN void fatal(const char *message);
e7421c00 562SQUIDCEXTERN void fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1;
e6ccf245 563SQUIDCEXTERN void fatal_dump(const char *message);
59a09b98
FC
564void sigusr2_handle(int sig);
565void sig_child(int sig);
e6ccf245 566SQUIDCEXTERN void leave_suid(void);
567SQUIDCEXTERN void enter_suid(void);
568SQUIDCEXTERN void no_suid(void);
569SQUIDCEXTERN void writePidFile(void);
570SQUIDCEXTERN void setSocketShutdownLifetimes(int);
571SQUIDCEXTERN void setMaxFD(void);
f3f0f563 572SQUIDCEXTERN void setSystemLimits(void);
e6ccf245 573SQUIDCEXTERN void squid_signal(int sig, SIGHDLR *, int flags);
574SQUIDCEXTERN pid_t readPidFile(void);
fc68f6b1 575SQUIDCEXTERN void keepCapabilities(void);
a2c48c98 576SQUIDCEXTERN void BroadcastSignalIfAny(int& sig);
7de94c8c
AR
577/// whether the current process is the parent of all other Squid processes
578SQUIDCEXTERN bool IamMasterProcess();
5667a628 579/**
7de94c8c
AR
580 whether the current process is dedicated to doing things that only
581 a single process should do, such as PID file maintenance and WCCP
582*/
583SQUIDCEXTERN bool IamPrimaryProcess();
584/// whether the current process coordinates worker processes
585SQUIDCEXTERN bool IamCoordinatorProcess();
586/// whether the current process handles HTTP transactions and such
587SQUIDCEXTERN bool IamWorkerProcess();
96c2bb61
AR
588/// Whether we are running in daemon mode
589SQUIDCEXTERN bool InDaemonMode(); // try using specific Iam*() checks above first
7de94c8c
AR
590/// Whether there should be more than one worker process running
591SQUIDCEXTERN bool UsingSmp(); // try using specific Iam*() checks above first
96c2bb61
AR
592/// number of Kid processes as defined in src/ipc/Kid.h
593SQUIDCEXTERN int NumberOfKids();
a2c48c98
AR
594SQUIDCEXTERN int DebugSignal;
595
cc192b50 596/* AYJ debugs function to show locations being reset with memset() */
597SQUIDCEXTERN void *xmemset(void *dst, int, size_t);
598
e6ccf245 599SQUIDCEXTERN void debug_trap(const char *);
600SQUIDCEXTERN void logsFlush(void);
601SQUIDCEXTERN const char *checkNullString(const char *p);
62e76326 602
e6ccf245 603SQUIDCEXTERN void squid_getrusage(struct rusage *r);
62e76326 604
e6ccf245 605SQUIDCEXTERN double rusage_cputime(struct rusage *r);
62e76326 606
e6ccf245 607SQUIDCEXTERN int rusage_maxrss(struct rusage *r);
62e76326 608
e6ccf245 609SQUIDCEXTERN int rusage_pagefaults(struct rusage *r);
610SQUIDCEXTERN void releaseServerSockets(void);
611SQUIDCEXTERN void PrintRusage(void);
612SQUIDCEXTERN void dumpMallocStats(void);
ba2d3770 613
a3d0a19d 614#if USE_UNLINKD
e6ccf245 615SQUIDCEXTERN void unlinkdInit(void);
616SQUIDCEXTERN void unlinkdClose(void);
617SQUIDCEXTERN void unlinkdUnlink(const char *);
a3d0a19d 618#endif
ba2d3770 619
d4a04ed5 620SQUIDCEXTERN protocol_t urlParseProtocol(const char *, const char *e = NULL);
e6ccf245 621SQUIDCEXTERN void urlInitialize(void);
60745f24 622SQUIDCEXTERN HttpRequest *urlParse(const HttpRequestMethod&, char *, HttpRequest *request = NULL);
190154cf 623SQUIDCEXTERN const char *urlCanonical(HttpRequest *);
b3802bdc
AJ
624SQUIDCEXTERN char *urlCanonicalClean(const HttpRequest *);
625SQUIDCEXTERN const char *urlCanonicalFakeHttps(const HttpRequest * request);
6e44cca8
BR
626SQUIDCEXTERN bool urlIsRelative(const char *);
627SQUIDCEXTERN char *urlMakeAbsolute(const HttpRequest *, const char *);
e6ccf245 628SQUIDCEXTERN char *urlRInternal(const char *host, u_short port, const char *dir, const char *name);
629SQUIDCEXTERN char *urlInternal(const char *dir, const char *name);
630SQUIDCEXTERN int matchDomainName(const char *host, const char *domain);
190154cf 631SQUIDCEXTERN int urlCheckRequest(const HttpRequest *);
e6ccf245 632SQUIDCEXTERN int urlDefaultPort(protocol_t p);
e6ccf245 633SQUIDCEXTERN char *urlHostname(const char *url);
634SQUIDCEXTERN void urlExtMethodConfigure(void);
635
636SQUIDCEXTERN void useragentOpenLog(void);
637SQUIDCEXTERN void useragentRotateLog(void);
638SQUIDCEXTERN void logUserAgent(const char *, const char *);
639SQUIDCEXTERN void useragentLogClose(void);
640SQUIDCEXTERN void refererOpenLog(void);
641SQUIDCEXTERN void refererRotateLog(void);
642SQUIDCEXTERN void logReferer(const char *, const char *, const char *);
c9b99797 643SQUIDCEXTERN void refererCloseLog(void);
e6ccf245 644SQUIDCEXTERN peer_t parseNeighborType(const char *s);
645
d548ee64 646/* tools.c */
e1f7507e
AJ
647//UNUSED #include "dlink.h"
648//UNUSED SQUIDCEXTERN void dlinkAdd(void *data, dlink_node *, dlink_list *);
649//UNUSED SQUIDCEXTERN void dlinkAddAfter(void *, dlink_node *, dlink_node *, dlink_list *);
650//UNUSED SQUIDCEXTERN void dlinkAddTail(void *data, dlink_node *, dlink_list *);
651//UNUSED SQUIDCEXTERN void dlinkDelete(dlink_node * m, dlink_list * list);
652//UNUSED SQUIDCEXTERN void dlinkNodeDelete(dlink_node * m);
653//UNUSED SQUIDCEXTERN dlink_node *dlinkNodeNew(void);
e6ccf245 654
655SQUIDCEXTERN void kb_incr(kb_t *, size_t);
656SQUIDCEXTERN int stringHasWhitespace(const char *);
657SQUIDCEXTERN int stringHasCntl(const char *);
658SQUIDCEXTERN void linklistPush(link_list **, void *);
659SQUIDCEXTERN void *linklistShift(link_list **);
660SQUIDCEXTERN int xrename(const char *from, const char *to);
661SQUIDCEXTERN int isPowTen(int);
662SQUIDCEXTERN void parseEtcHosts(void);
663SQUIDCEXTERN int getMyPort(void);
c642c141 664SQUIDCEXTERN void setUmask(mode_t mask);
e6ccf245 665
666SQUIDCEXTERN char *strwordtok(char *buf, char **t);
667SQUIDCEXTERN void strwordquote(MemBuf * mb, const char *str);
d860a1aa 668
767c5191 669
66c75c41 670/*
5a70d304 671 * ipc.c
66c75c41 672 */
b5d712b5 673SQUIDCEXTERN pid_t ipcCreate(int type,
674 const char *prog,
675 const char *const args[],
676 const char *name,
b7ac5457 677 Ip::Address &local_addr,
b5d712b5 678 int *rfd,
679 int *wfd,
680 void **hIpc);
681
ab013258 682
c411be12 683/* CacheDigest */
e6ccf245 684SQUIDCEXTERN CacheDigest *cacheDigestCreate(int capacity, int bpe);
685SQUIDCEXTERN void cacheDigestDestroy(CacheDigest * cd);
686SQUIDCEXTERN CacheDigest *cacheDigestClone(const CacheDigest * cd);
687SQUIDCEXTERN void cacheDigestClear(CacheDigest * cd);
688SQUIDCEXTERN void cacheDigestChangeCap(CacheDigest * cd, int new_cap);
689SQUIDCEXTERN int cacheDigestTest(const CacheDigest * cd, const cache_key * key);
690SQUIDCEXTERN void cacheDigestAdd(CacheDigest * cd, const cache_key * key);
691SQUIDCEXTERN void cacheDigestDel(CacheDigest * cd, const cache_key * key);
692SQUIDCEXTERN size_t cacheDigestCalcMaskSize(int cap, int bpe);
693SQUIDCEXTERN int cacheDigestBitUtil(const CacheDigest * cd);
694SQUIDCEXTERN void cacheDigestGuessStatsUpdate(cd_guess_stats * stats, int real_hit, int guess_hit);
695SQUIDCEXTERN void cacheDigestGuessStatsReport(const cd_guess_stats * stats, StoreEntry * sentry, const char *label);
696SQUIDCEXTERN void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
697
190154cf 698SQUIDCEXTERN void internalStart(HttpRequest *, StoreEntry *);
e6ccf245 699SQUIDCEXTERN int internalCheck(const char *urlpath);
700SQUIDCEXTERN int internalStaticCheck(const char *urlpath);
701SQUIDCEXTERN char *internalLocalUri(const char *dir, const char *name);
702SQUIDCEXTERN char *internalRemoteUri(const char *, u_short, const char *, const char *);
703SQUIDCEXTERN const char *internalHostname(void);
704SQUIDCEXTERN int internalHostnameIs(const char *);
1da5651f 705
e6ccf245 706SQUIDCEXTERN void carpInit(void);
190154cf 707SQUIDCEXTERN peer *carpSelectParent(HttpRequest *);
afd88fbe 708
f7e1d9ce 709SQUIDCEXTERN void peerUserHashInit(void);
f7e1d9ce
HN
710SQUIDCEXTERN peer * peerUserHashSelectParent(HttpRequest * request);
711
712SQUIDCEXTERN void peerSourceHashInit(void);
f7e1d9ce 713SQUIDCEXTERN peer * peerSourceHashSelectParent(HttpRequest * request);
74addf6c 714
5d620373 715#if USE_LEAKFINDER
e6ccf245 716SQUIDCEXTERN void leakInit(void);
717SQUIDCEXTERN void *leakAddFL(void *, const char *, int);
718SQUIDCEXTERN void *leakTouchFL(void *, const char *, int);
719SQUIDCEXTERN void *leakFreeFL(void *, const char *, int);
5d620373 720#endif
721
5a70d304 722/*
723 * prototypes for system functions missing from system includes
724 */
725
726#ifdef _SQUID_SOLARIS_
62e76326 727
e6ccf245 728SQUIDCEXTERN int getrusage(int, struct rusage *);
729SQUIDCEXTERN int getpagesize(void);
b8ef2a76 730#if !defined(_XPG4_2) && !(defined(__EXTENSIONS__) || \
26ac0430 731(!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)))
e6ccf245 732SQUIDCEXTERN int gethostname(char *, int);
5a70d304 733#endif
b8ef2a76 734#endif
bc87dc25 735
2d72d4fd 736/*
737 * hack to allow snmp access to the statistics counters
738 */
e6ccf245 739SQUIDCEXTERN StatCounters *snmpStatGet(int);
f66a9ef4 740
741/* Vary support functions */
190154cf 742SQUIDCEXTERN int varyEvaluateMatch(StoreEntry * entry, HttpRequest * req);
0e6d05ef 743
744/* CygWin & Windows NT Port */
745/* win32.c */
ec4daaa5 746#ifdef _SQUID_WIN32_
a50bfe93 747SQUIDCEXTERN int WIN32_Subsystem_Init(int *, char ***);
a50bfe93 748SQUIDCEXTERN void WIN32_sendSignal(int);
749SQUIDCEXTERN void WIN32_Abort(int);
e6ccf245 750SQUIDCEXTERN void WIN32_Exit(void);
a50bfe93 751SQUIDCEXTERN void WIN32_SetServiceCommandLine(void);
752SQUIDCEXTERN void WIN32_InstallService(void);
753SQUIDCEXTERN void WIN32_RemoveService(void);
a0aa9e74 754SQUIDCEXTERN int SquidMain(int, char **);
ec4daaa5 755#endif /* _SQUID_WIN32_ */
a50bfe93 756#ifdef _SQUID_MSWIN_
757
485a0d3f 758SQUIDCEXTERN int WIN32_pipe(int[2]);
759
a50bfe93 760SQUIDCEXTERN int WIN32_getrusage(int, struct rusage *);
e1381638 761SQUIDCEXTERN void WIN32_ExceptionHandlerInit(void);
485a0d3f 762
e1381638
AJ
763SQUIDCEXTERN int Win32__WSAFDIsSet(int fd, fd_set* set);
764SQUIDCEXTERN DWORD WIN32_IpAddrChangeMonitorInit();
485a0d3f 765
0e6d05ef 766#endif
b5638623 767
e1381638
AJ
768/* external_acl.c */
769class external_acl;
770 SQUIDCEXTERN void parse_externalAclHelper(external_acl **);
485a0d3f 771
e1381638 772 SQUIDCEXTERN void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *);
485a0d3f 773
e1381638 774 SQUIDCEXTERN void free_externalAclHelper(external_acl **);
485a0d3f 775
e1381638
AJ
776 typedef void EAH(void *data, void *result);
777 class ACLChecklist;
26ac0430 778 SQUIDCEXTERN void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data);
485a0d3f 779
26ac0430 780 SQUIDCEXTERN void externalAclInit(void);
485a0d3f 781
26ac0430 782 SQUIDCEXTERN void externalAclShutdown(void);
485a0d3f 783
26ac0430 784 SQUIDCEXTERN char *strtokFile(void);
d9572179 785
0b0cfcf2 786#if USE_WCCPv2
0b0cfcf2 787
26ac0430
AJ
788 SQUIDCEXTERN void parse_wccp2_method(int *v);
789 SQUIDCEXTERN void free_wccp2_method(int *v);
790 SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label, int v);
791 SQUIDCEXTERN void parse_wccp2_amethod(int *v);
792 SQUIDCEXTERN void free_wccp2_amethod(int *v);
793 SQUIDCEXTERN void dump_wccp2_amethod(StoreEntry * e, const char *label, int v);
0b0cfcf2 794
26ac0430
AJ
795 SQUIDCEXTERN void parse_wccp2_service(void *v);
796 SQUIDCEXTERN void free_wccp2_service(void *v);
797 SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label, void *v);
0b0cfcf2 798
26ac0430 799 SQUIDCEXTERN int check_null_wccp2_service(void *v);
0b0cfcf2 800
26ac0430 801 SQUIDCEXTERN void parse_wccp2_service_info(void *v);
0b0cfcf2 802
26ac0430 803 SQUIDCEXTERN void free_wccp2_service_info(void *v);
0b0cfcf2 804
26ac0430 805 SQUIDCEXTERN void dump_wccp2_service_info(StoreEntry * e, const char *label, void *v);
0b0cfcf2 806
807#endif
808
9ca29d23
AJ
809#if HAVE_KRB5 && HAVE_GSSAPI
810 /* upstream proxy authentication */
811 SQUIDCEXTERN char *peer_proxy_negotiate_auth(char *principal_name, char *proxy);
812#endif
5817ee13 813
ec5858ff
A
814 /* call to ensure the auth component schemes exist. */
815 SQUIDCEXTERN void InitAuthSchemes(void);
5817ee13 816
b5638623 817#endif /* SQUID_PROTOS_H */