3 * $Id: protos.h,v 1.490 2003/08/10 11:00:44 robertc Exp $
6 * SQUID Web Proxy Cache http://www.squid-cache.org/
7 * ----------------------------------------------------------
9 * Squid is the result of efforts by numerous individuals from
10 * the Internet community; see the CONTRIBUTORS file for full
11 * details. Many organizations have provided support for Squid's
12 * development; see the SPONSORS file for full details. Squid is
13 * Copyrighted (C) 2001 by the Regents of the University of
14 * California; see the COPYRIGHT file for full details. Squid
15 * incorporates software developed and/or copyrighted by other
16 * sources; see the CREDITS file for full details.
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU General Public License for more details.
28 * You should have received a copy of the GNU General Public License
29 * along with this program; if not, write to the Free Software
30 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
34 #ifndef SQUID_PROTOS_H
35 #define SQUID_PROTOS_H
37 SQUIDCEXTERN
void accessLogLog(AccessLogEntry
*, ACLChecklist
* checklist
);
38 SQUIDCEXTERN
void accessLogRotate(void);
39 SQUIDCEXTERN
void accessLogClose(void);
40 SQUIDCEXTERN
void accessLogInit(void);
41 SQUIDCEXTERN
void accessLogFreeMemory(AccessLogEntry
* aLogEntry
);
42 SQUIDCEXTERN
const char *accessLogTime(time_t);
43 SQUIDCEXTERN
int accessLogParseLogFormat(logformat_token
** fmt
, char *def
);
44 SQUIDCEXTERN
void accessLogDumpLogFormat(StoreEntry
* entry
, const char *name
, logformat
* definitions
);
45 SQUIDCEXTERN
void accessLogFreeLogFormat(logformat_token
** fmt
);
46 SQUIDCEXTERN
void hierarchyNote(HierarchyLogEntry
*, hier_code
, const char *);
48 SQUIDCEXTERN
void fvdbCountVia(const char *key
);
49 SQUIDCEXTERN
void fvdbCountForw(const char *key
);
52 SQUIDCEXTERN
void headersLog(int cs
, int pq
, method_t m
, void *data
);
54 SQUIDCEXTERN
char *log_quote(const char *header
);
55 SQUIDCEXTERN
int logTypeIsATcpHit(log_type
);
60 SQUIDCEXTERN
int parseConfigFile(const char *file_name
);
61 SQUIDCEXTERN
const char *wordlistAdd(wordlist
**, const char *);
62 SQUIDCEXTERN
void wordlistAddWl(wordlist
**, wordlist
*);
63 SQUIDCEXTERN
void wordlistJoin(wordlist
**, wordlist
**);
64 SQUIDCEXTERN wordlist
*wordlistDup(const wordlist
*);
65 SQUIDCEXTERN
void wordlistDestroy(wordlist
**);
66 SQUIDCEXTERN
void configFreeMemory(void);
67 SQUIDCEXTERN
void wordlistCat(const wordlist
*, MemBuf
* mb
);
68 SQUIDCEXTERN
void allocate_new_swapdir(cacheSwap
*);
69 SQUIDCEXTERN
void self_destruct(void);
70 SQUIDCEXTERN
int GetInteger(void);
71 SQUIDCEXTERN
void add_http_port(char *portspec
);
72 extern int xatoi(const char *token
);
73 extern long xatol(const char *token
);
76 /* extra functions from cache_cf.c useful for lib modules */
77 SQUIDCEXTERN
void parse_int(int *var
);
78 SQUIDCEXTERN
void parse_onoff(int *var
);
79 SQUIDCEXTERN
void parse_eol(char *volatile *var
);
80 SQUIDCEXTERN
void parse_wordlist(wordlist
** list
);
81 SQUIDCEXTERN
void requirePathnameExists(const char *name
, const char *path
);
82 SQUIDCEXTERN
void parse_time_t(time_t * var
);
84 SQUIDCEXTERN
void parse_sockaddr_in_list_token(sockaddr_in_list
**, char *);
90 SQUIDCEXTERN
void cbdataInit(void);
92 SQUIDCEXTERN
void *cbdataInternalAllocDbg(cbdata_type type
, const char *, int);
93 SQUIDCEXTERN
void *cbdataInternalFreeDbg(void *p
, const char *, int);
94 SQUIDCEXTERN
void cbdataInternalLockDbg(const void *p
, const char *, int);
95 SQUIDCEXTERN
void cbdataInternalUnlockDbg(const void *p
, const char *, int);
96 SQUIDCEXTERN
int cbdataInternalReferenceDoneValidDbg(void **p
, void **tp
, const char *, int);
98 SQUIDCEXTERN
void *cbdataInternalAlloc(cbdata_type type
);
99 SQUIDCEXTERN
void *cbdataInternalFree(void *p
);
100 SQUIDCEXTERN
void cbdataInternalLock(const void *p
);
101 SQUIDCEXTERN
void cbdataInternalUnlock(const void *p
);
102 SQUIDCEXTERN
int cbdataInternalReferenceDoneValid(void **p
, void **tp
);
104 SQUIDCEXTERN
int cbdataReferenceValid(const void *p
);
105 SQUIDCEXTERN cbdata_type
cbdataInternalAddType(cbdata_type type
, const char *label
, int size
, FREE
* free_func
);
107 /* client_side.c - FD related client side routines */
109 SQUIDCEXTERN
void clientdbInit(void);
111 SQUIDCEXTERN
void clientdbUpdate(struct in_addr
, log_type
, protocol_t
, size_t);
113 SQUIDCEXTERN
int clientdbCutoffDenied(struct in_addr
);
114 SQUIDCEXTERN
void clientdbDump(StoreEntry
*);
115 SQUIDCEXTERN
void clientdbFreeMemory(void);
117 SQUIDCEXTERN
int clientdbEstablished(struct in_addr
, int);
118 SQUIDCEXTERN
void clientOpenListenSockets(void);
119 SQUIDCEXTERN
void clientHttpConnectionsClose(void);
120 SQUIDCEXTERN
void clientReadBody(HttpRequest
* req
, char *buf
, size_t size
, CBCB
* callback
, void *data
);
121 SQUIDCEXTERN
int clientAbortBody(HttpRequest
* req
);
122 SQUIDCEXTERN
void httpRequestFree(void *);
124 extern void clientAccessCheck(void *);
127 extern void comm_calliocallback(void);
128 extern bool comm_iocallbackpending(void); /* inline candidate */
130 extern int comm_listen(int fd
);
131 SQUIDCEXTERN
int commSetNonBlocking(int fd
);
132 SQUIDCEXTERN
int commUnsetNonBlocking(int fd
);
133 SQUIDCEXTERN
void commSetCloseOnExec(int fd
);
134 extern void _comm_close(int fd
, char const *file
, int line
);
135 #define comm_close(fd) (_comm_close((fd), __FILE__, __LINE__))
136 SQUIDCEXTERN
void comm_reset_close(int fd
);
138 SQUIDCEXTERN
void comm_lingering_close(int fd
);
140 SQUIDCEXTERN
void commConnectStart(int fd
, const char *, u_short
, CNCB
*, void *);
142 SQUIDCEXTERN
int comm_connect_addr(int sock
, const struct sockaddr_in
*);
143 SQUIDCEXTERN
void comm_init(void);
145 SQUIDCEXTERN
int comm_open(int, int, struct in_addr
, u_short port
, int, const char *note
);
147 SQUIDCEXTERN
int comm_openex(int, int, struct in_addr
, u_short
, int, unsigned char TOS
, const char *);
148 SQUIDCEXTERN u_short
comm_local_port(int fd
);
150 SQUIDCEXTERN
void commSetSelect(int, unsigned int, PF
*, void *, time_t);
152 SQUIDCEXTERN
int comm_udp_sendto(int, const struct sockaddr_in
*, int, const void *, int);
153 SQUIDCEXTERN
void comm_old_write(int fd
,
159 SQUIDCEXTERN
void comm_old_write_mbuf(int fd
, MemBuf mb
, CWCB
* handler
, void *handler_data
);
160 SQUIDCEXTERN
void commCallCloseHandlers(int fd
);
161 SQUIDCEXTERN
int commSetTimeout(int fd
, int, PF
*, void *);
162 SQUIDCEXTERN
int ignoreErrno(int);
163 SQUIDCEXTERN
void commCloseAllSockets(void);
164 SQUIDCEXTERN
void checkTimeouts(void);
170 SQUIDCEXTERN
void comm_select_init(void);
171 SQUIDCEXTERN comm_err_t
comm_select(int);
172 SQUIDCEXTERN
void comm_quick_poll_required(void);
174 SQUIDCEXTERN
void packerToStoreInit(Packer
* p
, StoreEntry
* e
);
175 SQUIDCEXTERN
void packerToMemInit(Packer
* p
, MemBuf
* mb
);
176 SQUIDCEXTERN
void packerClean(Packer
* p
);
177 SQUIDCEXTERN
void packerAppend(Packer
* p
, const char *buf
, int size
);
180 packerPrintf(Packer
* p
, const char *fmt
,...) PRINTF_FORMAT_ARG2
;
182 SQUIDCEXTERN
void packerPrintf();
186 /* see debug.c for info on context-based debugging */
187 SQUIDCEXTERN Ctx
ctx_enter(const char *descr
);
188 SQUIDCEXTERN
void ctx_exit(Ctx ctx
);
190 SQUIDCEXTERN
void _db_init(const char *logfile
, const char *options
);
191 SQUIDCEXTERN
void _db_rotate_log(void);
194 SQUIDCEXTERN
void _db_print(const char *,...) PRINTF_FORMAT_ARG1
;
196 SQUIDCEXTERN
void _db_print();
198 SQUIDCEXTERN
void xassert(const char *, const char *, int);
200 /* packs, then prints an object using debug() */
201 SQUIDCEXTERN
void debugObj(int section
, int level
, const char *label
, void *obj
, ObjPackMethod pm
);
204 SQUIDCEXTERN
int file_open(const char *path
, int mode
);
205 SQUIDCEXTERN
void file_close(int fd
);
206 /* Adapter file_write for object callbacks */
210 FreeObject(void *address
)
212 O
*anObject
= static_cast <O
*>(address
);
216 SQUIDCEXTERN
void file_write(int, off_t
, void const *, int len
, DWCB
*, void *, FREE
*);
217 SQUIDCEXTERN
void file_write_mbuf(int fd
, off_t
, MemBuf mb
, DWCB
* handler
, void *handler_data
);
218 SQUIDCEXTERN
void file_read(int, char *, int, off_t
, DRCB
*, void *);
219 SQUIDCEXTERN
void disk_init(void);
222 SQUIDCEXTERN diskd_queue
*afile_create_queue(void);
223 SQUIDCEXTERN
void afile_destroy_queue(diskd_queue
*);
224 SQUIDCEXTERN
void afile_sync_queue(diskd_queue
*);
225 SQUIDCEXTERN
void afile_sync(void);
226 SQUIDCEXTERN
void afile_open(const char *path
, int mode
, DOCB
*, void *);
227 SQUIDCEXTERN
void afile_close(int fd
, DCCB
* callback
, void *data
);
228 SQUIDCEXTERN
void afile_write(int, off_t
, void *, int len
, DWCB
*, void *, FREE
*);
229 SQUIDCEXTERN
void afile_write_mbuf(int fd
, off_t
, MemBuf
, DWCB
*, void *);
230 SQUIDCEXTERN
void afile_read(int, char *, int, off_t
, DRCB
*, void *);
231 SQUIDCEXTERN
void afile_unlink(const char *path
, DUCB
*, void *);
232 SQUIDCEXTERN
void afile_truncate(const char *path
, DTCB
*, void *);
234 SQUIDCEXTERN
void dnsShutdown(void);
235 SQUIDCEXTERN
void dnsInit(void);
236 SQUIDCEXTERN
void dnsSubmit(const char *lookup
, HLPCB
* callback
, void *data
);
239 SQUIDCEXTERN
void idnsInit(void);
240 SQUIDCEXTERN
void idnsShutdown(void);
241 SQUIDCEXTERN
void idnsALookup(const char *, IDNSCB
*, void *);
243 SQUIDCEXTERN
void idnsPTRLookup(const struct in_addr
, IDNSCB
*, void *);
245 extern void eventAdd(const char *name
, EVH
* func
, void *arg
, double when
, int, bool cbdata
=true);
246 SQUIDCEXTERN
void eventAddIsh(const char *name
, EVH
* func
, void *arg
, double delta_ish
, int);
247 SQUIDCEXTERN
void eventRun(void);
248 SQUIDCEXTERN
int eventNextTime(void);
249 SQUIDCEXTERN
void eventDelete(EVH
* func
, void *arg
);
250 SQUIDCEXTERN
void eventInit(void);
251 SQUIDCEXTERN
void eventFreeMemory(void);
252 SQUIDCEXTERN
int eventFind(EVH
*, void *);
254 SQUIDCEXTERN
void fd_close(int fd
);
255 SQUIDCEXTERN
void fd_open(int fd
, unsigned int type
, const char *);
256 SQUIDCEXTERN
void fd_note(int fd
, const char *);
257 SQUIDCEXTERN
void fd_bytes(int fd
, int len
, unsigned int type
);
258 SQUIDCEXTERN
void fdFreeMemory(void);
259 SQUIDCEXTERN
void fdDumpOpen(void);
260 SQUIDCEXTERN
int fdNFree(void);
261 SQUIDCEXTERN
void fdAdjustReserved(void);
263 SQUIDCEXTERN fileMap
*file_map_create(void);
264 SQUIDCEXTERN
int file_map_allocate(fileMap
*, int);
265 SQUIDCEXTERN
int file_map_bit_set(fileMap
*, int);
266 SQUIDCEXTERN
int file_map_bit_test(fileMap
*, int);
267 SQUIDCEXTERN
void file_map_bit_reset(fileMap
*, int);
268 SQUIDCEXTERN
void filemapFreeMemory(fileMap
*);
271 SQUIDCEXTERN
void fqdncache_nbgethostbyaddr(struct in_addr
, FQDNH
*, void *);
273 SQUIDCEXTERN
const char *fqdncache_gethostbyaddr(struct in_addr
, int flags
);
274 SQUIDCEXTERN
void fqdncache_init(void);
275 SQUIDCEXTERN
void fqdnStats(StoreEntry
*);
276 SQUIDCEXTERN
void fqdncacheReleaseInvalid(const char *);
278 SQUIDCEXTERN
const char *fqdnFromAddr(struct in_addr
);
279 SQUIDCEXTERN
int fqdncacheQueueDrain(void);
280 SQUIDCEXTERN
void fqdncacheFreeMemory(void);
281 SQUIDCEXTERN
void fqdncache_restart(void);
282 SQUIDCEXTERN EVH fqdncache_purgelru
;
283 SQUIDCEXTERN
void fqdncacheAddEntryFromHosts(char *addr
, wordlist
* hostnames
);
285 SQUIDCEXTERN
void ftpStart(FwdState
*);
286 SQUIDCEXTERN
char *ftpUrlWith2f(const HttpRequest
*);
288 SQUIDCEXTERN
void gopherStart(FwdState
*);
289 SQUIDCEXTERN
int gopherCachable(const HttpRequest
*);
292 SQUIDCEXTERN
void whoisStart(FwdState
*);
295 SQUIDCEXTERN
int httpCachable(method_t
);
296 SQUIDCEXTERN
void httpStart(FwdState
*);
297 SQUIDCEXTERN
void httpParseReplyHeaders(const char *, HttpReply
*);
298 SQUIDCEXTERN mb_size_t
httpBuildRequestPrefix(HttpRequest
* request
,
299 HttpRequest
* orig_request
,
303 SQUIDCEXTERN
void httpAnonInitModule(void);
304 SQUIDCEXTERN
int httpAnonHdrAllowed(http_hdr_type hdr_id
);
305 SQUIDCEXTERN
int httpAnonHdrDenied(http_hdr_type hdr_id
);
306 SQUIDCEXTERN
void httpBuildRequestHeader(HttpRequest
*, HttpRequest
*, StoreEntry
*, HttpHeader
*, http_state_flags
);
307 SQUIDCEXTERN
void httpBuildVersion(http_version_t
* version
, unsigned int major
, unsigned int minor
);
308 SQUIDCEXTERN
const char *httpMakeVaryMark(HttpRequest
* request
, HttpReply
const * reply
);
311 SQUIDCEXTERN
int etagParseInit(ETag
* etag
, const char *str
);
312 SQUIDCEXTERN
int etagIsEqual(const ETag
* tag1
, const ETag
* tag2
);
314 /* Http Status Line */
316 SQUIDCEXTERN
void httpStatusLineInit(HttpStatusLine
* sline
);
317 SQUIDCEXTERN
void httpStatusLineClean(HttpStatusLine
* sline
);
319 SQUIDCEXTERN
void httpStatusLineSet(HttpStatusLine
* sline
, http_version_t version
,
320 http_status status
, const char *reason
);
321 SQUIDCEXTERN
const char *httpStatusLineReason(const HttpStatusLine
* sline
);
323 /* parse a 0-terminating buffer and fill internal structires; returns true on success */
324 SQUIDCEXTERN
int httpStatusLineParse(HttpStatusLine
* sline
, const char *start
,
326 /* pack fields using Packer */
327 SQUIDCEXTERN
void httpStatusLinePackInto(const HttpStatusLine
* sline
, Packer
* p
);
328 SQUIDCEXTERN
const char *httpStatusString(http_status status
);
332 SQUIDCEXTERN
void httpBodyInit(HttpBody
* body
);
333 SQUIDCEXTERN
void httpBodyClean(HttpBody
* body
);
334 /* get body ptr (always use this) */
335 SQUIDCEXTERN
const char *httpBodyPtr(const HttpBody
* body
);
336 /* set body, does not clone mb so you should not reuse it */
337 SQUIDCEXTERN
void httpBodySet(HttpBody
* body
, MemBuf
* mb
);
340 SQUIDCEXTERN
void httpBodyPackInto(const HttpBody
* body
, Packer
* p
);
342 /* Http Cache Control Header Field */
343 SQUIDCEXTERN
void httpHdrCcInitModule(void);
344 SQUIDCEXTERN
void httpHdrCcCleanModule(void);
345 SQUIDCEXTERN HttpHdrCc
*httpHdrCcCreate(void);
346 SQUIDCEXTERN HttpHdrCc
*httpHdrCcParseCreate(const String
* str
);
347 SQUIDCEXTERN
void httpHdrCcDestroy(HttpHdrCc
* cc
);
348 SQUIDCEXTERN HttpHdrCc
*httpHdrCcDup(const HttpHdrCc
* cc
);
349 SQUIDCEXTERN
void httpHdrCcPackInto(const HttpHdrCc
* cc
, Packer
* p
);
350 SQUIDCEXTERN
void httpHdrCcJoinWith(HttpHdrCc
* cc
, const HttpHdrCc
* new_cc
);
351 SQUIDCEXTERN
void httpHdrCcSetMaxAge(HttpHdrCc
* cc
, int max_age
);
352 SQUIDCEXTERN
void httpHdrCcSetSMaxAge(HttpHdrCc
* cc
, int s_maxage
);
353 SQUIDCEXTERN
void httpHdrCcUpdateStats(const HttpHdrCc
* cc
, StatHist
* hist
);
354 SQUIDCEXTERN
void httpHdrCcStatDumper(StoreEntry
* sentry
, int idx
, double val
, double size
, int count
);
356 /* Http Surrogate Control Header Field */
357 extern void httpHdrScStatDumper(StoreEntry
* sentry
, int idx
, double val
, double size
, int count
);
358 extern void httpHdrScInitModule (void);
359 extern void httpHdrScCleanModule (void);
360 extern HttpHdrSc
*httpHdrScCreate(void);
361 extern HttpHdrSc
*httpHdrScParseCreate(String
const *);
362 extern void httpHdrScDestroy(HttpHdrSc
* sc
);
363 extern HttpHdrSc
*httpHdrScDup(const HttpHdrSc
* sc
);
364 extern void httpHdrScPackInto(const HttpHdrSc
* sc
, Packer
* p
);
365 extern void httpHdrScJoinWith(HttpHdrSc
*, const HttpHdrSc
*);
366 extern void httpHdrScSetMaxAge(HttpHdrSc
*, char const *, int);
367 extern void httpHdrScUpdateStats(const HttpHdrSc
*, StatHist
*);
368 extern HttpHdrScTarget
* httpHdrScFindTarget (HttpHdrSc
*sc
, const char *target
);
369 extern HttpHdrScTarget
* httpHdrScGetMergedTarget (HttpHdrSc
*sc
, const char *ourtarget
);
371 /* Http Surrogate control header field 'targets' */
372 extern HttpHdrScTarget
* httpHdrScTargetCreate (const char *);
373 extern void httpHdrScTargetDestroy(HttpHdrScTarget
*);
374 extern HttpHdrScTarget
*httpHdrScTargetDup(const HttpHdrScTarget
*);
375 extern void httpHdrScTargetPackInto(const HttpHdrScTarget
*, Packer
*);
376 extern void httpHdrScTargetSetMaxAge(HttpHdrScTarget
*, int);
377 extern void httpHdrScTargetUpdateStats(const HttpHdrScTarget
*, StatHist
*);
378 extern void httpHdrScTargetJoinWith(HttpHdrScTarget
*, const HttpHdrScTarget
*);
379 extern void httpHdrScTargetMergeWith(HttpHdrScTarget
*, const HttpHdrScTarget
*);
380 extern void httpHdrScTargetStatDumper(StoreEntry
* sentry
, int idx
, double val
, double size
, int count
);
383 /* Http Header Tools */
384 SQUIDCEXTERN HttpHeaderFieldInfo
*httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs
* attrs
, int count
);
385 SQUIDCEXTERN
void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo
* info
, int count
);
386 SQUIDCEXTERN http_hdr_type
httpHeaderIdByName(const char *name
, int name_len
, const HttpHeaderFieldInfo
* attrs
, int end
);
387 SQUIDCEXTERN http_hdr_type
httpHeaderIdByNameDef(const char *name
, int name_len
);
388 SQUIDCEXTERN
const char *httpHeaderNameById(int id
);
389 SQUIDCEXTERN
void httpHeaderMaskInit(HttpHeaderMask
* mask
, int value
);
390 SQUIDCEXTERN
void httpHeaderCalcMask(HttpHeaderMask
* mask
, const int *enums
, size_t count
);
391 SQUIDCEXTERN
int httpHeaderHasConnDir(const HttpHeader
* hdr
, const char *directive
);
392 SQUIDCEXTERN
void strListAdd(String
* str
, const char *item
, char del
);
393 SQUIDCEXTERN
int strListIsMember(const String
* str
, const char *item
, char del
);
394 SQUIDCEXTERN
int strListIsSubstr(const String
* list
, const char *s
, char del
);
395 SQUIDCEXTERN
int strListGetItem(const String
* str
, char del
, const char **item
, int *ilen
, const char **pos
);
396 SQUIDCEXTERN
const char *getStringPrefix(const char *str
, const char *end
);
397 SQUIDCEXTERN
int httpHeaderParseInt(const char *start
, int *val
);
398 SQUIDCEXTERN
int httpHeaderParseSize(const char *start
, ssize_t
* sz
);
399 SQUIDCEXTERN
int httpHeaderReset(HttpHeader
* hdr
);
402 httpHeaderPutStrf(HttpHeader
* hdr
, http_hdr_type id
, const char *fmt
,...) PRINTF_FORMAT_ARG3
;
404 SQUIDCEXTERN
void httpHeaderPutStrf();
409 SQUIDCEXTERN
void httpHeaderInitModule(void);
410 SQUIDCEXTERN
void httpHeaderCleanModule(void);
412 SQUIDCEXTERN
void httpHeaderClean(HttpHeader
* hdr
);
414 SQUIDCEXTERN
void httpHeaderAppend(HttpHeader
* dest
, const HttpHeader
* src
);
416 SQUIDCEXTERN
int httpHeaderParse(HttpHeader
* hdr
, const char *header_start
, const char *header_end
);
417 SQUIDCEXTERN
void httpHeaderPackInto(const HttpHeader
* hdr
, Packer
* p
);
418 /* field manipulation */
419 SQUIDCEXTERN
int httpHeaderHas(const HttpHeader
* hdr
, http_hdr_type type
);
420 SQUIDCEXTERN
void httpHeaderPutInt(HttpHeader
* hdr
, http_hdr_type type
, int number
);
421 SQUIDCEXTERN
void httpHeaderPutTime(HttpHeader
* hdr
, http_hdr_type type
, time_t htime
);
422 SQUIDCEXTERN
void httpHeaderPutStr(HttpHeader
* hdr
, http_hdr_type type
, const char *str
);
423 SQUIDCEXTERN
void httpHeaderPutAuth(HttpHeader
* hdr
, const char *auth_scheme
, const char *realm
);
424 SQUIDCEXTERN
void httpHeaderPutCc(HttpHeader
* hdr
, const HttpHdrCc
* cc
);
426 class HttpHdrContRange
;
427 SQUIDCEXTERN
void httpHeaderPutContRange(HttpHeader
* hdr
, const HttpHdrContRange
* cr
);
430 SQUIDCEXTERN
void httpHeaderPutRange(HttpHeader
* hdr
, const HttpHdrRange
* range
);
431 SQUIDCEXTERN
void httpHeaderPutExt(HttpHeader
* hdr
, const char *name
, const char *value
);
432 SQUIDCEXTERN
int httpHeaderGetInt(const HttpHeader
* hdr
, http_hdr_type id
);
433 SQUIDCEXTERN
time_t httpHeaderGetTime(const HttpHeader
* hdr
, http_hdr_type id
);
434 SQUIDCEXTERN TimeOrTag
httpHeaderGetTimeOrTag(const HttpHeader
* hdr
, http_hdr_type id
);
435 SQUIDCEXTERN HttpHdrCc
*httpHeaderGetCc(const HttpHeader
* hdr
);
436 SQUIDCEXTERN ETag
httpHeaderGetETag(const HttpHeader
* hdr
, http_hdr_type id
);
437 SQUIDCEXTERN HttpHdrRange
*httpHeaderGetRange(const HttpHeader
* hdr
);
438 SQUIDCEXTERN HttpHdrContRange
*httpHeaderGetContRange(const HttpHeader
* hdr
);
439 SQUIDCEXTERN
const char *httpHeaderGetStr(const HttpHeader
* hdr
, http_hdr_type id
);
440 SQUIDCEXTERN
const char *httpHeaderGetLastStr(const HttpHeader
* hdr
, http_hdr_type id
);
441 SQUIDCEXTERN
const char *httpHeaderGetAuth(const HttpHeader
* hdr
, http_hdr_type id
, const char *auth_scheme
);
442 extern String
httpHeaderGetList(const HttpHeader
* hdr
, http_hdr_type id
);
443 extern String
httpHeaderGetStrOrList(const HttpHeader
* hdr
, http_hdr_type id
);
444 extern String
httpHeaderGetByName(const HttpHeader
* hdr
, const char *name
);
445 extern String
httpHeaderGetListMember(const HttpHeader
* hdr
, http_hdr_type id
, const char *member
, const char separator
);
446 extern String
httpHeaderGetByNameListMember(const HttpHeader
* hdr
, const char *name
, const char *member
, const char separator
);
447 SQUIDCEXTERN
int httpHeaderDelByName(HttpHeader
* hdr
, const char *name
);
448 SQUIDCEXTERN
int httpHeaderDelById(HttpHeader
* hdr
, http_hdr_type id
);
449 SQUIDCEXTERN
void httpHeaderDelAt(HttpHeader
* hdr
, HttpHeaderPos pos
);
450 extern int httpHeaderEntryGetInt(const HttpHeaderEntry
* e
);
451 /* avoid using these low level routines */
452 SQUIDCEXTERN HttpHeaderEntry
*httpHeaderGetEntry(const HttpHeader
* hdr
, HttpHeaderPos
* pos
);
453 SQUIDCEXTERN HttpHeaderEntry
*httpHeaderFindEntry(const HttpHeader
* hdr
, http_hdr_type id
);
454 SQUIDCEXTERN
void httpHeaderAddEntry(HttpHeader
* hdr
, HttpHeaderEntry
* e
);
455 SQUIDCEXTERN HttpHeaderEntry
*httpHeaderEntryClone(const HttpHeaderEntry
* e
);
456 SQUIDCEXTERN
void httpHeaderEntryPackInto(const HttpHeaderEntry
* e
, Packer
* p
);
457 /* store report about current header usage and other stats */
458 SQUIDCEXTERN
void httpHeaderStoreReport(StoreEntry
* e
);
459 SQUIDCEXTERN
void httpHdrMangleList(HttpHeader
*, HttpRequest
*);
461 /* Http Msg (currently in HttpReply.c @?@ ) */
462 SQUIDCEXTERN
int httpMsgIsPersistent(http_version_t http_ver
, const HttpHeader
* hdr
);
463 SQUIDCEXTERN
int httpMsgIsolateHeaders(const char **parse_start
, const char **blk_start
, const char **blk_end
);
465 SQUIDCEXTERN
void icmpOpen(void);
466 SQUIDCEXTERN
void icmpClose(void);
468 SQUIDCEXTERN
void icmpSourcePing(struct in_addr to
, const icp_common_t
*, const char *url
);
470 SQUIDCEXTERN
void icmpDomainPing(struct in_addr to
, const char *domain
);
473 SQUIDCEXTERN PF snmpHandleUdp
;
474 SQUIDCEXTERN
void snmpInit(void);
475 SQUIDCEXTERN
void snmpConnectionOpen(void);
476 SQUIDCEXTERN
void snmpConnectionShutdown(void);
477 SQUIDCEXTERN
void snmpConnectionClose(void);
478 SQUIDCEXTERN
void snmpDebugOid(int lvl
, oid
* Name
, snint Len
);
480 SQUIDCEXTERN
void addr2oid(struct in_addr addr
, oid
* Dest
);
482 SQUIDCEXTERN
struct in_addr
*oid2addr(oid
* id
);
484 SQUIDCEXTERN
struct in_addr
*client_entry(struct in_addr
*current
);
485 SQUIDCEXTERN variable_list
*snmp_basicFn(variable_list
*, snint
*);
486 SQUIDCEXTERN variable_list
*snmp_confFn(variable_list
*, snint
*);
487 SQUIDCEXTERN variable_list
*snmp_sysFn(variable_list
*, snint
*);
488 SQUIDCEXTERN variable_list
*snmp_prfSysFn(variable_list
*, snint
*);
489 SQUIDCEXTERN variable_list
*snmp_prfProtoFn(variable_list
*, snint
*);
490 SQUIDCEXTERN variable_list
*snmp_prfPeerFn(variable_list
*, snint
*);
491 SQUIDCEXTERN variable_list
*snmp_netIpFn(variable_list
*, snint
*);
492 SQUIDCEXTERN variable_list
*snmp_netFqdnFn(variable_list
*, snint
*);
494 SQUIDCEXTERN variable_list
*snmp_netDnsFn(variable_list
*, snint
*);
496 SQUIDCEXTERN variable_list
*snmp_netIdnsFn(variable_list
*, snint
*);
498 SQUIDCEXTERN variable_list
*snmp_meshPtblFn(variable_list
*, snint
*);
499 SQUIDCEXTERN variable_list
*snmp_meshCtblFn(variable_list
*, snint
*);
500 #endif /* SQUID_SNMP */
503 SQUIDCEXTERN
void wccpInit(void);
504 SQUIDCEXTERN
void wccpConnectionOpen(void);
505 SQUIDCEXTERN
void wccpConnectionShutdown(void);
506 SQUIDCEXTERN
void wccpConnectionClose(void);
507 #endif /* USE_WCCP */
509 SQUIDCEXTERN
void ipcache_nbgethostbyname(const char *name
,
512 SQUIDCEXTERN EVH ipcache_purgelru
;
513 SQUIDCEXTERN
const ipcache_addrs
*ipcache_gethostbyname(const char *, int flags
);
514 SQUIDCEXTERN
void ipcacheInvalidate(const char *);
515 SQUIDCEXTERN
void ipcacheReleaseInvalid(const char *);
516 SQUIDCEXTERN
void ipcache_init(void);
517 SQUIDCEXTERN
void stat_ipcache_get(StoreEntry
*);
518 SQUIDCEXTERN
int ipcacheQueueDrain(void);
519 SQUIDCEXTERN
void ipcacheCycleAddr(const char *name
, ipcache_addrs
*);
521 SQUIDCEXTERN
void ipcacheMarkBadAddr(const char *name
, struct in_addr
);
523 SQUIDCEXTERN
void ipcacheMarkGoodAddr(const char *name
, struct in_addr
);
524 SQUIDCEXTERN
void ipcacheFreeMemory(void);
525 SQUIDCEXTERN ipcache_addrs
*ipcacheCheckNumeric(const char *name
);
526 SQUIDCEXTERN
void ipcache_restart(void);
527 SQUIDCEXTERN
int ipcacheAddEntryFromHosts(const char *name
, const char *ipaddr
);
529 SQUIDCEXTERN
char *mime_get_header(const char *mime
, const char *header
);
530 SQUIDCEXTERN
char *mime_get_header_field(const char *mime
, const char *name
, const char *prefix
);
531 SQUIDCEXTERN
size_t headersEnd(const char *, size_t);
532 SQUIDCEXTERN
const char *mime_get_auth(const char *hdr
, const char *auth_scheme
, const char **auth_field
);
534 SQUIDCEXTERN
void mimeInit(char *filename
);
535 SQUIDCEXTERN
void mimeFreeMemory(void);
536 SQUIDCEXTERN
char *mimeGetContentEncoding(const char *fn
);
537 SQUIDCEXTERN
char *mimeGetContentType(const char *fn
);
538 SQUIDCEXTERN
char const *mimeGetIcon(const char *fn
);
539 SQUIDCEXTERN
const char *mimeGetIconURL(const char *fn
);
540 SQUIDCEXTERN
char mimeGetTransferMode(const char *fn
);
541 SQUIDCEXTERN
int mimeGetDownloadOption(const char *fn
);
542 SQUIDCEXTERN
int mimeGetViewOption(const char *fn
);
544 SQUIDCEXTERN
int mcastSetTtl(int, int);
545 SQUIDCEXTERN IPH mcastJoinGroups
;
547 /* Labels for hierachical log file */
548 /* put them all here for easier reference when writing a logfile analyzer */
551 SQUIDCEXTERN peer
*getFirstPeer(void);
552 SQUIDCEXTERN peer
*getFirstUpParent(HttpRequest
*);
553 SQUIDCEXTERN peer
*getNextPeer(peer
*);
554 SQUIDCEXTERN peer
*getSingleParent(HttpRequest
*);
555 SQUIDCEXTERN
int neighborsCount(HttpRequest
*);
556 SQUIDCEXTERN
int neighborsUdpPing(HttpRequest
*,
562 SQUIDCEXTERN
void neighborAddAcl(const char *, const char *);
564 SQUIDCEXTERN
void neighborsUdpAck(const cache_key
*, icp_common_t
*, const struct sockaddr_in
*);
565 SQUIDCEXTERN
void neighborAdd(const char *, const char *, int, int, int, int, int);
566 SQUIDCEXTERN
void neighbors_init(void);
567 SQUIDCEXTERN peer
*peerFindByName(const char *);
568 SQUIDCEXTERN peer
*peerFindByNameAndPort(const char *, unsigned short);
569 SQUIDCEXTERN peer
*getDefaultParent(HttpRequest
* request
);
570 SQUIDCEXTERN peer
*getRoundRobinParent(HttpRequest
* request
);
571 SQUIDCEXTERN peer
*getWeightedRoundRobinParent(HttpRequest
* request
);
572 SQUIDCEXTERN EVH peerClearRR
;
573 SQUIDCEXTERN peer
*getAnyParent(HttpRequest
* request
);
574 SQUIDCEXTERN lookup_t
peerDigestLookup(peer
* p
, HttpRequest
* request
);
575 SQUIDCEXTERN peer
*neighborsDigestSelect(HttpRequest
* request
);
576 SQUIDCEXTERN
void peerNoteDigestLookup(HttpRequest
* request
, peer
* p
, lookup_t lookup
);
577 SQUIDCEXTERN
void peerNoteDigestGone(peer
* p
);
578 SQUIDCEXTERN
int neighborUp(const peer
* e
);
579 SQUIDCEXTERN CBDUNL peerDestroy
;
580 SQUIDCEXTERN
const char *neighborTypeStr(const peer
* e
);
581 SQUIDCEXTERN peer_t
neighborType(const peer
*, const HttpRequest
*);
582 SQUIDCEXTERN
void peerConnectFailed(peer
*);
583 SQUIDCEXTERN
void peerConnectSucceded(peer
*);
584 SQUIDCEXTERN
void dump_peer_options(StoreEntry
*, peer
*);
585 SQUIDCEXTERN
int peerHTTPOkay(const peer
*, HttpRequest
*);
587 SQUIDCEXTERN peer
*whichPeer(const struct sockaddr_in
*from
);
589 SQUIDCEXTERN
void netdbInit(void);
591 SQUIDCEXTERN
void netdbHandlePingReply(const struct sockaddr_in
*from
, int hops
, int rtt
);
592 SQUIDCEXTERN
void netdbPingSite(const char *hostname
);
593 SQUIDCEXTERN
void netdbDump(StoreEntry
*);
595 SQUIDCEXTERN
int netdbHops(struct in_addr
);
596 SQUIDCEXTERN
void netdbFreeMemory(void);
597 SQUIDCEXTERN
int netdbHostHops(const char *host
);
598 SQUIDCEXTERN
int netdbHostRtt(const char *host
);
599 SQUIDCEXTERN
void netdbUpdatePeer(HttpRequest
*, peer
* e
, int rtt
, int hops
);
601 SQUIDCEXTERN
void netdbDeleteAddrNetwork(struct in_addr addr
);
602 SQUIDCEXTERN
void netdbBinaryExchange(StoreEntry
*);
603 SQUIDCEXTERN EVH netdbExchangeStart
;
605 SQUIDCEXTERN
void netdbExchangeUpdatePeer(struct in_addr
, peer
*, double, double);
606 SQUIDCEXTERN peer
*netdbClosestParent(HttpRequest
*);
607 SQUIDCEXTERN
void netdbHostData(const char *host
, int *samp
, int *rtt
, int *hops
);
609 SQUIDCEXTERN
void cachemgrStart(int fd
, HttpRequest
* request
, StoreEntry
* entry
);
610 SQUIDCEXTERN
void cachemgrRegister(const char *, const char *, OBJH
*, int, int);
611 SQUIDCEXTERN
void cachemgrInit(void);
613 SQUIDCEXTERN
void peerSelect(HttpRequest
*, StoreEntry
*, PSC
*, void *data
);
614 SQUIDCEXTERN
void peerSelectInit(void);
617 SQUIDCEXTERN PeerDigest
*peerDigestCreate(peer
* p
);
618 SQUIDCEXTERN
void peerDigestNeeded(PeerDigest
* pd
);
619 SQUIDCEXTERN
void peerDigestNotePeerGone(PeerDigest
* pd
);
620 SQUIDCEXTERN
void peerDigestStatsReport(const PeerDigest
* pd
, StoreEntry
* e
);
623 SQUIDCEXTERN
void fwdStart(int, StoreEntry
*, HttpRequest
*);
624 SQUIDCEXTERN
void fwdFail(FwdState
*, ErrorState
*);
625 SQUIDCEXTERN
void fwdUnregister(int fd
, FwdState
*);
626 SQUIDCEXTERN
void fwdComplete(FwdState
* fwdState
);
627 SQUIDCEXTERN
void fwdInit(void);
628 SQUIDCEXTERN
int fwdReforwardableStatus(http_status s
);
629 SQUIDCEXTERN
void fwdServersFree(FwdServer
** FS
);
631 SQUIDCEXTERN
void fwdUninit(void);
632 SQUIDCEXTERN
void fwdLogRotate(void);
633 SQUIDCEXTERN
void fwdStatus(FwdState
*, http_status
);
636 SQUIDCEXTERN
struct in_addr
getOutgoingAddr(HttpRequest
* request
);
637 unsigned long getOutgoingTOS(HttpRequest
* request
);
639 SQUIDCEXTERN
void urnStart(HttpRequest
*, StoreEntry
*);
641 SQUIDCEXTERN
void redirectInit(void);
642 SQUIDCEXTERN
void redirectShutdown(void);
644 extern void refreshAddToList(const char *, int, time_t, int, time_t);
645 extern int refreshIsCachable(const StoreEntry
*);
646 extern int refreshCheckHTTP(const StoreEntry
*, HttpRequest
*);
647 extern int refreshCheckICP(const StoreEntry
*, HttpRequest
*);
648 extern int refreshCheckHTCP(const StoreEntry
*, HttpRequest
*);
649 extern int refreshCheckDigest(const StoreEntry
*, time_t delta
);
650 extern time_t getMaxAge(const char *url
);
651 extern void refreshInit(void);
653 extern void serverConnectionsClose(void);
654 extern void shut_down(int);
655 extern void rotate_logs(int);
656 extern void reconfigure(int);
659 extern void start_announce(void *unused
);
660 extern void waisStart(FwdState
*);
665 SQUIDCEXTERN
void identStart(struct sockaddr_in
*me
, struct sockaddr_in
*my_peer
,
666 IDCB
* callback
, void *cbdata
);
667 SQUIDCEXTERN
void identInit(void);
670 SQUIDCEXTERN
void statInit(void);
671 SQUIDCEXTERN
void statFreeMemory(void);
672 SQUIDCEXTERN
double median_svc_get(int, int);
673 SQUIDCEXTERN
void pconnHistCount(int, int);
674 SQUIDCEXTERN
int stat5minClientRequests(void);
675 SQUIDCEXTERN
double stat5minCPUUsage(void);
676 SQUIDCEXTERN
double statRequestHitRatio(int minutes
);
677 SQUIDCEXTERN
double statRequestHitMemoryRatio(int minutes
);
678 SQUIDCEXTERN
double statRequestHitDiskRatio(int minutes
);
679 SQUIDCEXTERN
double statByteHitRatio(int minutes
);
682 SQUIDCEXTERN
void statHistClean(StatHist
* H
);
683 SQUIDCEXTERN
void statHistCount(StatHist
* H
, double val
);
684 SQUIDCEXTERN
void statHistCopy(StatHist
* Dest
, const StatHist
* Orig
);
685 SQUIDCEXTERN
void statHistSafeCopy(StatHist
* Dest
, const StatHist
* Orig
);
686 SQUIDCEXTERN
double statHistDeltaMedian(const StatHist
* A
, const StatHist
* B
);
687 SQUIDCEXTERN
void statHistDump(const StatHist
* H
, StoreEntry
* sentry
, StatHistBinDumper
* bd
);
688 SQUIDCEXTERN
void statHistLogInit(StatHist
* H
, int capacity
, double min
, double max
);
689 SQUIDCEXTERN
void statHistEnumInit(StatHist
* H
, int last_enum
);
690 SQUIDCEXTERN
void statHistIntInit(StatHist
* H
, int n
);
691 SQUIDCEXTERN StatHistBinDumper statHistEnumDumper
;
692 SQUIDCEXTERN StatHistBinDumper statHistIntDumper
;
696 SQUIDCEXTERN
void memClean(void);
697 SQUIDCEXTERN
void memInitModule(void);
698 SQUIDCEXTERN
void memCleanModule(void);
699 SQUIDCEXTERN
void memConfigure(void);
700 SQUIDCEXTERN
void *memAllocate(mem_type
);
701 SQUIDCEXTERN
void *memAllocString(size_t net_size
, size_t * gross_size
);
702 SQUIDCEXTERN
void *memAllocBuf(size_t net_size
, size_t * gross_size
);
703 SQUIDCEXTERN
void *memReallocBuf(void *buf
, size_t net_size
, size_t * gross_size
);
704 SQUIDCEXTERN
void memFree(void *, int type
);
705 SQUIDCEXTERN
void memFree4K(void *);
706 SQUIDCEXTERN
void memFree8K(void *);
707 SQUIDCEXTERN
void memFreeString(size_t size
, void *);
708 SQUIDCEXTERN
void memFreeBuf(size_t size
, void *);
709 SQUIDCEXTERN FREE
*memFreeBufFunc(size_t size
);
710 SQUIDCEXTERN
int memInUse(mem_type
);
711 SQUIDCEXTERN
void memDataInit(mem_type
, const char *, size_t, int);
712 SQUIDCEXTERN
void memCheckInit(void);
715 SQUIDCEXTERN MemPool
*memPoolCreate(const char *label
, size_t obj_size
);
716 SQUIDCEXTERN
void *memPoolAlloc(MemPool
* pool
);
717 SQUIDCEXTERN
void memPoolFree(MemPool
* pool
, void *obj
);
718 SQUIDCEXTERN
void memPoolDestroy(MemPool
** pool
);
719 SQUIDCEXTERN MemPoolIterator
*memPoolGetFirst(void);
720 SQUIDCEXTERN MemPool
*memPoolGetNext(MemPoolIterator
** iter
);
721 SQUIDCEXTERN
void memPoolSetChunkSize(MemPool
* pool
, size_t chunksize
);
722 SQUIDCEXTERN
void memPoolSetIdleLimit(size_t new_idle_limit
);
723 SQUIDCEXTERN
int memPoolGetStats(MemPoolStats
* stats
, MemPool
* pool
);
724 SQUIDCEXTERN
int memPoolGetGlobalStats(MemPoolGlobalStats
* stats
);
725 SQUIDCEXTERN
void memPoolClean(time_t maxage
);
728 SQUIDCEXTERN
void memConfigure(void);
729 SQUIDCEXTERN
int memPoolInUseCount(MemPool
* pool
);
730 SQUIDCEXTERN
int memPoolsTotalAllocated(void);
732 /* ----------------------------------------------------------------- */
735 SQUIDCEXTERN
void storeReplSetup(void);
738 #include "StoreIOState.h"
739 extern StoreIOState::Pointer
storeCreate(StoreEntry
*, STFNCB
*, STIOCB
*, void *);
740 extern StoreIOState::Pointer
storeOpen(StoreEntry
*, STFNCB
*, STIOCB
*, void *);
741 SQUIDCEXTERN
void storeClose(StoreIOState::Pointer
);
742 SQUIDCEXTERN
void storeRead(StoreIOState::Pointer
, char *, size_t, off_t
, STRCB
*, void *);
743 SQUIDCEXTERN
void storeIOWrite(StoreIOState::Pointer
, char const *, size_t, off_t
, FREE
*);
744 SQUIDCEXTERN
void storeUnlink(StoreEntry
*);
749 SQUIDCEXTERN
void storeLog(int tag
, const StoreEntry
* e
);
750 SQUIDCEXTERN
void storeLogRotate(void);
751 SQUIDCEXTERN
void storeLogClose(void);
752 SQUIDCEXTERN
void storeLogOpen(void);
758 SQUIDCEXTERN cache_key
*storeKeyDup(const cache_key
*);
759 SQUIDCEXTERN cache_key
*storeKeyCopy(cache_key
*, const cache_key
*);
760 SQUIDCEXTERN
void storeKeyFree(const cache_key
*);
761 SQUIDCEXTERN
const cache_key
*storeKeyScan(const char *);
762 SQUIDCEXTERN
const char *storeKeyText(const cache_key
*);
763 SQUIDCEXTERN
const cache_key
*storeKeyPublic(const char *, const method_t
);
764 SQUIDCEXTERN
const cache_key
*storeKeyPublicByRequest(HttpRequest
*);
765 SQUIDCEXTERN
const cache_key
*storeKeyPublicByRequestMethod(HttpRequest
*, const method_t
);
766 SQUIDCEXTERN
const cache_key
*storeKeyPrivate(const char *, method_t
, int);
767 SQUIDCEXTERN
int storeKeyHashBuckets(int);
768 SQUIDCEXTERN
int storeKeyNull(const cache_key
*);
769 SQUIDCEXTERN
void storeKeyInit(void);
770 SQUIDCEXTERN HASHHASH storeKeyHashHash
;
771 SQUIDCEXTERN HASHCMP storeKeyHashCmp
;
776 SQUIDCEXTERN
void storeDigestInit(void);
777 SQUIDCEXTERN
void storeDigestNoteStoreReady(void);
778 SQUIDCEXTERN
void storeDigestScheduleRebuild(void);
779 SQUIDCEXTERN
void storeDigestDel(const StoreEntry
* entry
);
780 SQUIDCEXTERN
void storeDigestReport(StoreEntry
*);
785 SQUIDCEXTERN OBJH storeDirStats
;
786 SQUIDCEXTERN
char *storeDirSwapLogFile(int, const char *);
787 SQUIDCEXTERN
char *storeSwapDir(int);
788 SQUIDCEXTERN
char *storeSwapFullPath(int, char *);
789 SQUIDCEXTERN
char *storeSwapSubSubDir(int, char *);
790 SQUIDCEXTERN
const char *storeSwapPath(int);
791 SQUIDCEXTERN
int storeDirWriteCleanLogs(int reopen
);
792 SQUIDCEXTERN STDIRSELECT
*storeDirSelectSwapDir
;
793 SQUIDCEXTERN
int storeVerifySwapDirs(void);
794 SQUIDCEXTERN
void storeCreateSwapDirectories(void);
795 SQUIDCEXTERN
void storeDirCloseSwapLogs(void);
796 SQUIDCEXTERN
void storeDirCloseTmpSwapLog(int dirn
);
797 SQUIDCEXTERN
void storeDirConfigure(void);
798 SQUIDCEXTERN
void storeDirDiskFull(sdirno
);
799 SQUIDCEXTERN
void storeDirInit(void);
800 SQUIDCEXTERN
void storeDirOpenSwapLogs(void);
801 SQUIDCEXTERN
void storeDirSwapLog(const StoreEntry
*, int op
);
802 SQUIDCEXTERN
void storeDirUpdateSwapSize(SwapDir
*, size_t size
, int sign
);
803 SQUIDCEXTERN
void storeDirSync(void);
804 SQUIDCEXTERN
void storeDirCallback(void);
805 SQUIDCEXTERN
void storeDirLRUDelete(StoreEntry
*);
806 SQUIDCEXTERN
void storeDirLRUAdd(StoreEntry
*);
807 SQUIDCEXTERN
int storeDirGetBlkSize(const char *path
, int *blksize
);
808 SQUIDCEXTERN
int storeDirGetUFSStats(const char *, int *, int *, int *, int *);
813 SQUIDCEXTERN
void storeRebuildStart(void);
815 SQUIDCEXTERN
void storeRebuildComplete(struct _store_rebuild_data
*);
816 SQUIDCEXTERN
void storeRebuildProgress(int sd_index
, int total
, int sofar
);
821 SQUIDCEXTERN
void storeSwapInStart(store_client
*);
826 SQUIDCEXTERN
void storeSwapOut(StoreEntry
* e
);
827 SQUIDCEXTERN
void storeSwapOutFileClose(StoreEntry
* e
);
828 SQUIDCEXTERN
int storeSwapOutAble(const StoreEntry
* e
);
833 SQUIDCEXTERN store_client
*storeClientListAdd(StoreEntry
* e
, void *data
);
834 SQUIDCEXTERN
int storeClientCopyPending(store_client
*, StoreEntry
* e
, void *data
);
835 SQUIDCEXTERN
int storeUnregister(store_client
* sc
, StoreEntry
* e
, void *data
);
836 SQUIDCEXTERN
void InvokeHandlers(StoreEntry
* e
);
837 SQUIDCEXTERN
int storePendingNClients(const StoreEntry
* e
);
838 SQUIDCEXTERN
int storeClientIsThisAClient(store_client
* sc
, void *someClient
);
841 SQUIDCEXTERN
const char *getMyHostname(void);
842 SQUIDCEXTERN
const char *uniqueHostname(void);
843 SQUIDCEXTERN
void safeunlink(const char *path
, int quiet
);
844 SQUIDCEXTERN
void death(int sig
);
845 SQUIDCEXTERN
void fatal(const char *message
);
848 fatalf(const char *fmt
,...) PRINTF_FORMAT_ARG1
;
850 SQUIDCEXTERN
void fatalf();
852 SQUIDCEXTERN
void fatal_dump(const char *message
);
853 SQUIDCEXTERN
void sigusr2_handle(int sig
);
854 SQUIDCEXTERN
void sig_child(int sig
);
855 SQUIDCEXTERN
void leave_suid(void);
856 SQUIDCEXTERN
void enter_suid(void);
857 SQUIDCEXTERN
void no_suid(void);
858 SQUIDCEXTERN
void writePidFile(void);
859 SQUIDCEXTERN
void setSocketShutdownLifetimes(int);
860 SQUIDCEXTERN
void setMaxFD(void);
861 SQUIDCEXTERN
time_t getCurrentTime(void);
862 SQUIDCEXTERN
int percent(int, int);
863 SQUIDCEXTERN
double dpercent(double, double);
864 SQUIDCEXTERN
void squid_signal(int sig
, SIGHDLR
*, int flags
);
865 SQUIDCEXTERN pid_t
readPidFile(void);
867 SQUIDCEXTERN
struct in_addr
inaddrFromHostent(const struct hostent
*hp
);
868 SQUIDCEXTERN
int intAverage(int, int, int, int);
869 SQUIDCEXTERN
double doubleAverage(double, double, int, int);
870 SQUIDCEXTERN
void debug_trap(const char *);
871 SQUIDCEXTERN
void logsFlush(void);
872 SQUIDCEXTERN
const char *checkNullString(const char *p
);
874 SQUIDCEXTERN
void squid_getrusage(struct rusage
*r
);
876 SQUIDCEXTERN
double rusage_cputime(struct rusage
*r
);
878 SQUIDCEXTERN
int rusage_maxrss(struct rusage
*r
);
880 SQUIDCEXTERN
int rusage_pagefaults(struct rusage
*r
);
881 SQUIDCEXTERN
void releaseServerSockets(void);
882 SQUIDCEXTERN
void PrintRusage(void);
883 SQUIDCEXTERN
void dumpMallocStats(void);
886 SQUIDCEXTERN
void unlinkdInit(void);
887 SQUIDCEXTERN
void unlinkdClose(void);
888 SQUIDCEXTERN
void unlinkdUnlink(const char *);
891 SQUIDCEXTERN
char *url_convert_hex(char *org_url
, int allocate
);
892 SQUIDCEXTERN
char *url_escape(const char *url
);
893 SQUIDCEXTERN protocol_t
urlParseProtocol(const char *);
894 SQUIDCEXTERN method_t
urlParseMethod(const char *);
895 SQUIDCEXTERN
void urlInitialize(void);
896 SQUIDCEXTERN HttpRequest
*urlParse(method_t
, char *);
897 SQUIDCEXTERN
const char *urlCanonical(HttpRequest
*);
898 SQUIDCEXTERN
char *urlRInternal(const char *host
, u_short port
, const char *dir
, const char *name
);
899 SQUIDCEXTERN
char *urlInternal(const char *dir
, const char *name
);
900 SQUIDCEXTERN
int matchDomainName(const char *host
, const char *domain
);
901 SQUIDCEXTERN
int urlCheckRequest(const HttpRequest
*);
902 SQUIDCEXTERN
int urlDefaultPort(protocol_t p
);
903 SQUIDCEXTERN
char *urlCanonicalClean(const HttpRequest
*);
904 SQUIDCEXTERN
char *urlHostname(const char *url
);
905 SQUIDCEXTERN
void urlExtMethodConfigure(void);
907 SQUIDCEXTERN
void useragentOpenLog(void);
908 SQUIDCEXTERN
void useragentRotateLog(void);
909 SQUIDCEXTERN
void logUserAgent(const char *, const char *);
910 SQUIDCEXTERN
void useragentLogClose(void);
911 SQUIDCEXTERN
void refererOpenLog(void);
912 SQUIDCEXTERN
void refererRotateLog(void);
913 SQUIDCEXTERN
void logReferer(const char *, const char *, const char *);
914 SQUIDCEXTERN
void refererCloseLog(void);
915 SQUIDCEXTERN peer_t
parseNeighborType(const char *s
);
917 SQUIDCEXTERN
void errorInitialize(void);
918 SQUIDCEXTERN
void errorClean(void);
919 SQUIDCEXTERN HttpReply
*errorBuildReply(ErrorState
* err
);
920 SQUIDCEXTERN
void errorSend(int fd
, ErrorState
*);
921 SQUIDCEXTERN
void errorAppendEntry(StoreEntry
*, ErrorState
*);
922 SQUIDCEXTERN
void errorStateFree(ErrorState
* err
);
923 SQUIDCEXTERN err_type
errorReservePageId(const char *page_name
);
924 SQUIDCEXTERN ErrorState
*errorCon(err_type type
, http_status
);
926 SQUIDCEXTERN
void pconnPush(int, const char *host
, u_short port
, const char *domain
);
927 SQUIDCEXTERN
int pconnPop(const char *host
, u_short port
, const char *domain
);
928 SQUIDCEXTERN
void pconnInit(void);
931 SQUIDCEXTERN
void dlinkAdd(void *data
, dlink_node
*, dlink_list
*);
932 SQUIDCEXTERN
void dlinkAddAfter(void *, dlink_node
*, dlink_node
*, dlink_list
*);
933 SQUIDCEXTERN
void dlinkAddTail(void *data
, dlink_node
*, dlink_list
*);
934 SQUIDCEXTERN
void dlinkDelete(dlink_node
* m
, dlink_list
* list
);
935 SQUIDCEXTERN
void dlinkNodeDelete(dlink_node
* m
);
936 SQUIDCEXTERN dlink_node
*dlinkNodeNew(void);
938 SQUIDCEXTERN
void kb_incr(kb_t
*, size_t);
939 SQUIDCEXTERN
int stringHasWhitespace(const char *);
940 SQUIDCEXTERN
int stringHasCntl(const char *);
941 SQUIDCEXTERN
void linklistPush(link_list
**, void *);
942 SQUIDCEXTERN
void *linklistShift(link_list
**);
943 SQUIDCEXTERN
int xrename(const char *from
, const char *to
);
944 SQUIDCEXTERN
int isPowTen(int);
945 SQUIDCEXTERN
void parseEtcHosts(void);
946 SQUIDCEXTERN
int getMyPort(void);
948 SQUIDCEXTERN
char *strwordtok(char *buf
, char **t
);
949 SQUIDCEXTERN
void strwordquote(MemBuf
* mb
, const char *str
);
956 SQUIDCEXTERN
int ipcCreate(int type
,
958 const char *const args
[],
964 SQUIDCEXTERN CacheDigest
*cacheDigestCreate(int capacity
, int bpe
);
965 SQUIDCEXTERN
void cacheDigestDestroy(CacheDigest
* cd
);
966 SQUIDCEXTERN CacheDigest
*cacheDigestClone(const CacheDigest
* cd
);
967 SQUIDCEXTERN
void cacheDigestClear(CacheDigest
* cd
);
968 SQUIDCEXTERN
void cacheDigestChangeCap(CacheDigest
* cd
, int new_cap
);
969 SQUIDCEXTERN
int cacheDigestTest(const CacheDigest
* cd
, const cache_key
* key
);
970 SQUIDCEXTERN
void cacheDigestAdd(CacheDigest
* cd
, const cache_key
* key
);
971 SQUIDCEXTERN
void cacheDigestDel(CacheDigest
* cd
, const cache_key
* key
);
972 SQUIDCEXTERN
size_t cacheDigestCalcMaskSize(int cap
, int bpe
);
973 SQUIDCEXTERN
int cacheDigestBitUtil(const CacheDigest
* cd
);
974 SQUIDCEXTERN
void cacheDigestGuessStatsUpdate(cd_guess_stats
* stats
, int real_hit
, int guess_hit
);
975 SQUIDCEXTERN
void cacheDigestGuessStatsReport(const cd_guess_stats
* stats
, StoreEntry
* sentry
, const char *label
);
976 SQUIDCEXTERN
void cacheDigestReport(CacheDigest
* cd
, const char *label
, StoreEntry
* e
);
978 SQUIDCEXTERN
void internalStart(HttpRequest
*, StoreEntry
*);
979 SQUIDCEXTERN
int internalCheck(const char *urlpath
);
980 SQUIDCEXTERN
int internalStaticCheck(const char *urlpath
);
981 SQUIDCEXTERN
char *internalLocalUri(const char *dir
, const char *name
);
982 SQUIDCEXTERN
char *internalRemoteUri(const char *, u_short
, const char *, const char *);
983 SQUIDCEXTERN
const char *internalHostname(void);
984 SQUIDCEXTERN
int internalHostnameIs(const char *);
987 SQUIDCEXTERN
void carpInit(void);
988 SQUIDCEXTERN peer
*carpSelectParent(HttpRequest
*);
992 SQUIDCEXTERN
void helperOpenServers(helper
* hlp
);
993 SQUIDCEXTERN
void helperStatefulOpenServers(statefulhelper
* hlp
);
994 SQUIDCEXTERN
void helperSubmit(helper
* hlp
, const char *buf
, HLPCB
* callback
, void *data
);
995 SQUIDCEXTERN
void helperStatefulSubmit(statefulhelper
* hlp
, const char *buf
, HLPSCB
* callback
, void *data
, helper_stateful_server
* lastserver
);
996 SQUIDCEXTERN
void helperStats(StoreEntry
* sentry
, helper
* hlp
);
997 SQUIDCEXTERN
void helperStatefulStats(StoreEntry
* sentry
, statefulhelper
* hlp
);
998 SQUIDCEXTERN
void helperShutdown(helper
* hlp
);
999 SQUIDCEXTERN
void helperStatefulShutdown(statefulhelper
* hlp
);
1000 SQUIDCEXTERN helper
*helperCreate(const char *);
1001 SQUIDCEXTERN statefulhelper
*helperStatefulCreate(const char *);
1002 SQUIDCEXTERN
void helperFree(helper
*);
1003 SQUIDCEXTERN
void helperStatefulFree(statefulhelper
*);
1004 SQUIDCEXTERN
void helperStatefulReset(helper_stateful_server
* srv
);
1005 SQUIDCEXTERN
void helperStatefulReleaseServer(helper_stateful_server
* srv
);
1006 SQUIDCEXTERN
void *helperStatefulServerGetData(helper_stateful_server
* srv
);
1007 SQUIDCEXTERN helper_stateful_server
*helperStatefulDefer(statefulhelper
*);
1012 SQUIDCEXTERN
void leakInit(void);
1013 SQUIDCEXTERN
void *leakAddFL(void *, const char *, int);
1014 SQUIDCEXTERN
void *leakTouchFL(void *, const char *, int);
1015 SQUIDCEXTERN
void *leakFreeFL(void *, const char *, int);
1019 SQUIDCEXTERN Logfile
*logfileOpen(const char *path
, size_t bufsz
, int);
1020 SQUIDCEXTERN
void logfileClose(Logfile
* lf
);
1021 SQUIDCEXTERN
void logfileRotate(Logfile
* lf
);
1022 SQUIDCEXTERN
void logfileWrite(Logfile
* lf
, void *buf
, size_t len
);
1023 SQUIDCEXTERN
void logfileFlush(Logfile
* lf
);
1026 logfilePrintf(Logfile
* lf
, const char *fmt
,...) PRINTF_FORMAT_ARG2
;
1028 SQUIDCEXTERN
void logfilePrintf(va_alist
);
1034 SQUIDCEXTERN RemovalPolicy
*createRemovalPolicy(RemovalPolicySettings
* settings
);
1037 * prototypes for system functions missing from system includes
1040 #ifdef _SQUID_SOLARIS_
1042 SQUIDCEXTERN
int getrusage(int, struct rusage
*);
1043 SQUIDCEXTERN
int getpagesize(void);
1044 SQUIDCEXTERN
int gethostname(char *, int);
1048 * hack to allow snmp access to the statistics counters
1050 SQUIDCEXTERN StatCounters
*snmpStatGet(int);
1052 /* Vary support functions */
1053 SQUIDCEXTERN
int varyEvaluateMatch(StoreEntry
* entry
, HttpRequest
* req
);
1055 /* CygWin & Windows NT Port */
1057 #ifdef _SQUID_WIN32_
1058 #ifdef USE_WIN32_SERVICE
1059 SQUIDCEXTERN
int WIN32_Subsystem_Init(int *, char ***);
1061 SQUIDCEXTERN
int WIN32_Subsystem_Init(void);
1063 SQUIDCEXTERN
void WIN32_sendSignal(int);
1064 SQUIDCEXTERN
void WIN32_Abort(int);
1065 SQUIDCEXTERN
void WIN32_Exit(void);
1066 SQUIDCEXTERN
void WIN32_SetServiceCommandLine(void);
1067 SQUIDCEXTERN
void WIN32_InstallService(void);
1068 SQUIDCEXTERN
void WIN32_RemoveService(void);
1069 #endif /* _SQUID_WIN32_ */
1070 #ifdef _SQUID_MSWIN_
1072 SQUIDCEXTERN
int WIN32_getrusage(int, struct rusage
*);
1075 /* external_acl.c */
1076 SQUIDCEXTERN
void parse_externalAclHelper(external_acl
**);
1077 SQUIDCEXTERN
void dump_externalAclHelper(StoreEntry
* sentry
, const char *name
, const external_acl
*);
1078 SQUIDCEXTERN
void free_externalAclHelper(external_acl
**);
1079 typedef void EAH(void *data
, void *result
);
1080 SQUIDCEXTERN
void externalAclLookup(ACLChecklist
* ch
, void *acl_data
, EAH
* handler
, void *data
);
1081 SQUIDCEXTERN
void externalAclInit(void);
1082 SQUIDCEXTERN
void externalAclShutdown(void);
1083 SQUIDCEXTERN
char *strtokFile(void);
1085 #endif /* SQUID_PROTOS_H */