]> git.ipfire.org Git - thirdparty/squid.git/blob - src/protos.h
Summary: Final MSVC fixups.
[thirdparty/squid.git] / src / protos.h
1
2 /*
3 * $Id: protos.h,v 1.490 2003/08/10 11:00:44 robertc Exp $
4 *
5 *
6 * SQUID Web Proxy Cache http://www.squid-cache.org/
7 * ----------------------------------------------------------
8 *
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.
17 *
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.
22 *
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.
27 *
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.
31 *
32 */
33
34 #ifndef SQUID_PROTOS_H
35 #define SQUID_PROTOS_H
36
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 *);
47 #if FORW_VIA_DB
48 SQUIDCEXTERN void fvdbCountVia(const char *key);
49 SQUIDCEXTERN void fvdbCountForw(const char *key);
50 #endif
51 #if HEADERS_LOG
52 SQUIDCEXTERN void headersLog(int cs, int pq, method_t m, void *data);
53 #endif
54 SQUIDCEXTERN char *log_quote(const char *header);
55 SQUIDCEXTERN int logTypeIsATcpHit(log_type);
56
57 /*
58 * cache_cf.c
59 */
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);
74
75
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);
83
84 SQUIDCEXTERN void parse_sockaddr_in_list_token(sockaddr_in_list **, char *);
85
86
87 /*
88 * cbdata.c
89 */
90 SQUIDCEXTERN void cbdataInit(void);
91 #if CBDATA_DEBUG
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);
97 #else
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);
103 #endif
104 SQUIDCEXTERN int cbdataReferenceValid(const void *p);
105 SQUIDCEXTERN cbdata_type cbdataInternalAddType(cbdata_type type, const char *label, int size, FREE * free_func);
106
107 /* client_side.c - FD related client side routines */
108
109 SQUIDCEXTERN void clientdbInit(void);
110
111 SQUIDCEXTERN void clientdbUpdate(struct in_addr, log_type, protocol_t, size_t);
112
113 SQUIDCEXTERN int clientdbCutoffDenied(struct in_addr);
114 SQUIDCEXTERN void clientdbDump(StoreEntry *);
115 SQUIDCEXTERN void clientdbFreeMemory(void);
116
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 *);
123
124 extern void clientAccessCheck(void *);
125
126 /* comm.c */
127 extern void comm_calliocallback(void);
128 extern bool comm_iocallbackpending(void); /* inline candidate */
129
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);
137 #if LINGERING_CLOSE
138 SQUIDCEXTERN void comm_lingering_close(int fd);
139 #endif
140 SQUIDCEXTERN void commConnectStart(int fd, const char *, u_short, CNCB *, void *);
141
142 SQUIDCEXTERN int comm_connect_addr(int sock, const struct sockaddr_in *);
143 SQUIDCEXTERN void comm_init(void);
144
145 SQUIDCEXTERN int comm_open(int, int, struct in_addr, u_short port, int, const char *note);
146
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);
149
150 SQUIDCEXTERN void commSetSelect(int, unsigned int, PF *, void *, time_t);
151
152 SQUIDCEXTERN int comm_udp_sendto(int, const struct sockaddr_in *, int, const void *, int);
153 SQUIDCEXTERN void comm_old_write(int fd,
154 const char *buf,
155 int size,
156 CWCB * handler,
157 void *handler_data,
158 FREE *);
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);
165
166
167 /*
168 * comm_select.c
169 */
170 SQUIDCEXTERN void comm_select_init(void);
171 SQUIDCEXTERN comm_err_t comm_select(int);
172 SQUIDCEXTERN void comm_quick_poll_required(void);
173
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);
178 #if STDC_HEADERS
179 SQUIDCEXTERN void
180 packerPrintf(Packer * p, const char *fmt,...) PRINTF_FORMAT_ARG2;
181 #else
182 SQUIDCEXTERN void packerPrintf();
183 #endif
184
185
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);
189
190 SQUIDCEXTERN void _db_init(const char *logfile, const char *options);
191 SQUIDCEXTERN void _db_rotate_log(void);
192
193 #if STDC_HEADERS
194 SQUIDCEXTERN void _db_print(const char *,...) PRINTF_FORMAT_ARG1;
195 #else
196 SQUIDCEXTERN void _db_print();
197 #endif
198 SQUIDCEXTERN void xassert(const char *, const char *, int);
199
200 /* packs, then prints an object using debug() */
201 SQUIDCEXTERN void debugObj(int section, int level, const char *label, void *obj, ObjPackMethod pm);
202
203 /* disk.c */
204 SQUIDCEXTERN int file_open(const char *path, int mode);
205 SQUIDCEXTERN void file_close(int fd);
206 /* Adapter file_write for object callbacks */
207
208 template <class O>
209 void
210 FreeObject(void *address)
211 {
212 O *anObject = static_cast <O *>(address);
213 delete anObject;
214 }
215
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);
220
221 /* diskd.c */
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 *);
233
234 SQUIDCEXTERN void dnsShutdown(void);
235 SQUIDCEXTERN void dnsInit(void);
236 SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data);
237
238 /* dns_internal.c */
239 SQUIDCEXTERN void idnsInit(void);
240 SQUIDCEXTERN void idnsShutdown(void);
241 SQUIDCEXTERN void idnsALookup(const char *, IDNSCB *, void *);
242
243 SQUIDCEXTERN void idnsPTRLookup(const struct in_addr, IDNSCB *, void *);
244
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 *);
253
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);
262
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 *);
269
270
271 SQUIDCEXTERN void fqdncache_nbgethostbyaddr(struct in_addr, FQDNH *, void *);
272
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 *);
277
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);
284
285 SQUIDCEXTERN void ftpStart(FwdState *);
286 SQUIDCEXTERN char *ftpUrlWith2f(const HttpRequest *);
287
288 SQUIDCEXTERN void gopherStart(FwdState *);
289 SQUIDCEXTERN int gopherCachable(const HttpRequest *);
290
291
292 SQUIDCEXTERN void whoisStart(FwdState *);
293
294 /* http.c */
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,
300 StoreEntry * entry,
301 MemBuf * mb,
302 http_state_flags);
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);
309
310 /* ETag */
311 SQUIDCEXTERN int etagParseInit(ETag * etag, const char *str);
312 SQUIDCEXTERN int etagIsEqual(const ETag * tag1, const ETag * tag2);
313
314 /* Http Status Line */
315 /* init/clean */
316 SQUIDCEXTERN void httpStatusLineInit(HttpStatusLine * sline);
317 SQUIDCEXTERN void httpStatusLineClean(HttpStatusLine * sline);
318 /* set/get values */
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);
322 /* parse/pack */
323 /* parse a 0-terminating buffer and fill internal structires; returns true on success */
324 SQUIDCEXTERN int httpStatusLineParse(HttpStatusLine * sline, const char *start,
325 const char *end);
326 /* pack fields using Packer */
327 SQUIDCEXTERN void httpStatusLinePackInto(const HttpStatusLine * sline, Packer * p);
328 SQUIDCEXTERN const char *httpStatusString(http_status status);
329
330 /* Http Body */
331 /* init/clean */
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);
338
339 /* pack */
340 SQUIDCEXTERN void httpBodyPackInto(const HttpBody * body, Packer * p);
341
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);
355
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);
370
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);
381
382
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);
400 #if STDC_HEADERS
401 SQUIDCEXTERN void
402 httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
403 #else
404 SQUIDCEXTERN void httpHeaderPutStrf();
405 #endif
406
407
408 /* Http Header */
409 SQUIDCEXTERN void httpHeaderInitModule(void);
410 SQUIDCEXTERN void httpHeaderCleanModule(void);
411 /* init/clean */
412 SQUIDCEXTERN void httpHeaderClean(HttpHeader * hdr);
413 /* append/update */
414 SQUIDCEXTERN void httpHeaderAppend(HttpHeader * dest, const HttpHeader * src);
415 /* parse/pack */
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);
425
426 class HttpHdrContRange;
427 SQUIDCEXTERN void httpHeaderPutContRange(HttpHeader * hdr, const HttpHdrContRange * cr);
428
429 class HttpHdrRange;
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 *);
460
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);
464
465 SQUIDCEXTERN void icmpOpen(void);
466 SQUIDCEXTERN void icmpClose(void);
467
468 SQUIDCEXTERN void icmpSourcePing(struct in_addr to, const icp_common_t *, const char *url);
469
470 SQUIDCEXTERN void icmpDomainPing(struct in_addr to, const char *domain);
471
472 #ifdef SQUID_SNMP
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);
479
480 SQUIDCEXTERN void addr2oid(struct in_addr addr, oid * Dest);
481
482 SQUIDCEXTERN struct in_addr *oid2addr(oid * id);
483
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 *);
493 #if USE_DNSSERVERS
494 SQUIDCEXTERN variable_list *snmp_netDnsFn(variable_list *, snint *);
495 #else
496 SQUIDCEXTERN variable_list *snmp_netIdnsFn(variable_list *, snint *);
497 #endif
498 SQUIDCEXTERN variable_list *snmp_meshPtblFn(variable_list *, snint *);
499 SQUIDCEXTERN variable_list *snmp_meshCtblFn(variable_list *, snint *);
500 #endif /* SQUID_SNMP */
501
502 #if USE_WCCP
503 SQUIDCEXTERN void wccpInit(void);
504 SQUIDCEXTERN void wccpConnectionOpen(void);
505 SQUIDCEXTERN void wccpConnectionShutdown(void);
506 SQUIDCEXTERN void wccpConnectionClose(void);
507 #endif /* USE_WCCP */
508
509 SQUIDCEXTERN void ipcache_nbgethostbyname(const char *name,
510 IPH * handler,
511 void *handlerData);
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 *);
520
521 SQUIDCEXTERN void ipcacheMarkBadAddr(const char *name, struct in_addr);
522
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);
528
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);
533
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);
543
544 SQUIDCEXTERN int mcastSetTtl(int, int);
545 SQUIDCEXTERN IPH mcastJoinGroups;
546
547 /* Labels for hierachical log file */
548 /* put them all here for easier reference when writing a logfile analyzer */
549
550
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 *,
557 StoreEntry *,
558 IRCB * callback,
559 void *data,
560 int *exprep,
561 int *timeout);
562 SQUIDCEXTERN void neighborAddAcl(const char *, const char *);
563
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 *);
586
587 SQUIDCEXTERN peer *whichPeer(const struct sockaddr_in *from);
588
589 SQUIDCEXTERN void netdbInit(void);
590
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 *);
594
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);
600
601 SQUIDCEXTERN void netdbDeleteAddrNetwork(struct in_addr addr);
602 SQUIDCEXTERN void netdbBinaryExchange(StoreEntry *);
603 SQUIDCEXTERN EVH netdbExchangeStart;
604
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);
608
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);
612
613 SQUIDCEXTERN void peerSelect(HttpRequest *, StoreEntry *, PSC *, void *data);
614 SQUIDCEXTERN void peerSelectInit(void);
615
616 /* peer_digest.c */
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);
621
622 /* forward.c */
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);
630 #if WIP_FWD_LOG
631 SQUIDCEXTERN void fwdUninit(void);
632 SQUIDCEXTERN void fwdLogRotate(void);
633 SQUIDCEXTERN void fwdStatus(FwdState *, http_status);
634 #endif
635
636 SQUIDCEXTERN struct in_addr getOutgoingAddr(HttpRequest * request);
637 unsigned long getOutgoingTOS(HttpRequest * request);
638
639 SQUIDCEXTERN void urnStart(HttpRequest *, StoreEntry *);
640
641 SQUIDCEXTERN void redirectInit(void);
642 SQUIDCEXTERN void redirectShutdown(void);
643
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);
652
653 extern void serverConnectionsClose(void);
654 extern void shut_down(int);
655 extern void rotate_logs(int);
656 extern void reconfigure(int);
657
658
659 extern void start_announce(void *unused);
660 extern void waisStart(FwdState *);
661
662 /* ident.c */
663 #if USE_IDENT
664
665 SQUIDCEXTERN void identStart(struct sockaddr_in *me, struct sockaddr_in *my_peer,
666 IDCB * callback, void *cbdata);
667 SQUIDCEXTERN void identInit(void);
668 #endif
669
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);
680
681 /* StatHist */
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;
693
694
695 /* mem */
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);
713
714 /* MemPool */
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);
726
727 /* Mem */
728 SQUIDCEXTERN void memConfigure(void);
729 SQUIDCEXTERN int memPoolInUseCount(MemPool * pool);
730 SQUIDCEXTERN int memPoolsTotalAllocated(void);
731
732 /* ----------------------------------------------------------------- */
733
734 /* repl_modules.c */
735 SQUIDCEXTERN void storeReplSetup(void);
736
737 /* store_io.c */
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 *);
745
746 /*
747 * store_log.c
748 */
749 SQUIDCEXTERN void storeLog(int tag, const StoreEntry * e);
750 SQUIDCEXTERN void storeLogRotate(void);
751 SQUIDCEXTERN void storeLogClose(void);
752 SQUIDCEXTERN void storeLogOpen(void);
753
754
755 /*
756 * store_key_*.c
757 */
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;
772
773 /*
774 * store_digest.c
775 */
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 *);
781
782 /*
783 * store_dir.c
784 */
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 *);
809
810 /*
811 * store_rebuild.c
812 */
813 SQUIDCEXTERN void storeRebuildStart(void);
814
815 SQUIDCEXTERN void storeRebuildComplete(struct _store_rebuild_data *);
816 SQUIDCEXTERN void storeRebuildProgress(int sd_index, int total, int sofar);
817
818 /*
819 * store_swapin.c
820 */
821 SQUIDCEXTERN void storeSwapInStart(store_client *);
822
823 /*
824 * store_swapout.c
825 */
826 SQUIDCEXTERN void storeSwapOut(StoreEntry * e);
827 SQUIDCEXTERN void storeSwapOutFileClose(StoreEntry * e);
828 SQUIDCEXTERN int storeSwapOutAble(const StoreEntry * e);
829
830 /*
831 * store_client.c
832 */
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);
839
840
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);
846 #if STDC_HEADERS
847 SQUIDCEXTERN void
848 fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1;
849 #else
850 SQUIDCEXTERN void fatalf();
851 #endif
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);
866
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);
873
874 SQUIDCEXTERN void squid_getrusage(struct rusage *r);
875
876 SQUIDCEXTERN double rusage_cputime(struct rusage *r);
877
878 SQUIDCEXTERN int rusage_maxrss(struct rusage *r);
879
880 SQUIDCEXTERN int rusage_pagefaults(struct rusage *r);
881 SQUIDCEXTERN void releaseServerSockets(void);
882 SQUIDCEXTERN void PrintRusage(void);
883 SQUIDCEXTERN void dumpMallocStats(void);
884
885 #if USE_UNLINKD
886 SQUIDCEXTERN void unlinkdInit(void);
887 SQUIDCEXTERN void unlinkdClose(void);
888 SQUIDCEXTERN void unlinkdUnlink(const char *);
889 #endif
890
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);
906
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);
916
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);
925
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);
929
930 /* tools.c */
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);
937
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);
947
948 SQUIDCEXTERN char *strwordtok(char *buf, char **t);
949 SQUIDCEXTERN void strwordquote(MemBuf * mb, const char *str);
950
951
952
953 /*
954 * ipc.c
955 */
956 SQUIDCEXTERN int ipcCreate(int type,
957 const char *prog,
958 const char *const args[],
959 const char *name,
960 int *rfd,
961 int *wfd);
962
963 /* CacheDigest */
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);
977
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 *);
985
986 #if USE_CARP
987 SQUIDCEXTERN void carpInit(void);
988 SQUIDCEXTERN peer *carpSelectParent(HttpRequest *);
989 #endif
990
991 /* helper.c */
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 *);
1008
1009
1010
1011 #if USE_LEAKFINDER
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);
1016 #endif
1017
1018 /* logfile.c */
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);
1024 #if STDC_HEADERS
1025 SQUIDCEXTERN void
1026 logfilePrintf(Logfile * lf, const char *fmt,...) PRINTF_FORMAT_ARG2;
1027 #else
1028 SQUIDCEXTERN void logfilePrintf(va_alist);
1029 #endif
1030
1031 /*
1032 * Removal Policies
1033 */
1034 SQUIDCEXTERN RemovalPolicy *createRemovalPolicy(RemovalPolicySettings * settings);
1035
1036 /*
1037 * prototypes for system functions missing from system includes
1038 */
1039
1040 #ifdef _SQUID_SOLARIS_
1041
1042 SQUIDCEXTERN int getrusage(int, struct rusage *);
1043 SQUIDCEXTERN int getpagesize(void);
1044 SQUIDCEXTERN int gethostname(char *, int);
1045 #endif
1046
1047 /*
1048 * hack to allow snmp access to the statistics counters
1049 */
1050 SQUIDCEXTERN StatCounters *snmpStatGet(int);
1051
1052 /* Vary support functions */
1053 SQUIDCEXTERN int varyEvaluateMatch(StoreEntry * entry, HttpRequest * req);
1054
1055 /* CygWin & Windows NT Port */
1056 /* win32.c */
1057 #ifdef _SQUID_WIN32_
1058 #ifdef USE_WIN32_SERVICE
1059 SQUIDCEXTERN int WIN32_Subsystem_Init(int *, char ***);
1060 #else
1061 SQUIDCEXTERN int WIN32_Subsystem_Init(void);
1062 #endif
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_
1071
1072 SQUIDCEXTERN int WIN32_getrusage(int, struct rusage *);
1073 #endif
1074
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);
1084
1085 #endif /* SQUID_PROTOS_H */