]> git.ipfire.org Git - thirdparty/squid.git/blob - src/protos.h
Bug #874: rough port of the http_reply_header_size functionality
[thirdparty/squid.git] / src / protos.h
1
2 /*
3 * $Id: protos.h,v 1.502 2004/12/21 17:52:53 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 #if FORW_VIA_DB
38 SQUIDCEXTERN void fvdbCountVia(const char *key);
39 SQUIDCEXTERN void fvdbCountForw(const char *key);
40 #endif
41 #if HEADERS_LOG
42 SQUIDCEXTERN void headersLog(int cs, int pq, method_t m, void *data);
43 #endif
44 SQUIDCEXTERN char *log_quote(const char *header);
45 SQUIDCEXTERN int logTypeIsATcpHit(log_type);
46
47 /*
48 * cache_cf.c
49 */
50 SQUIDCEXTERN int parseConfigFile(const char *file_name);
51 SQUIDCEXTERN const char *wordlistAdd(wordlist **, const char *);
52 SQUIDCEXTERN void wordlistAddWl(wordlist **, wordlist *);
53 SQUIDCEXTERN void wordlistJoin(wordlist **, wordlist **);
54 SQUIDCEXTERN wordlist *wordlistDup(const wordlist *);
55 SQUIDCEXTERN void wordlistDestroy(wordlist **);
56 SQUIDCEXTERN void configFreeMemory(void);
57 SQUIDCEXTERN void wordlistCat(const wordlist *, MemBuf * mb);
58 SQUIDCEXTERN void allocate_new_swapdir(cacheSwap *);
59 SQUIDCEXTERN void self_destruct(void);
60 SQUIDCEXTERN int GetInteger(void);
61 SQUIDCEXTERN void add_http_port(char *portspec);
62 extern int xatoi(const char *token);
63 extern long xatol(const char *token);
64
65
66 /* extra functions from cache_cf.c useful for lib modules */
67 SQUIDCEXTERN void parse_int(int *var);
68 SQUIDCEXTERN void parse_onoff(int *var);
69 SQUIDCEXTERN void parse_eol(char *volatile *var);
70 SQUIDCEXTERN void parse_wordlist(wordlist ** list);
71 SQUIDCEXTERN void requirePathnameExists(const char *name, const char *path);
72 SQUIDCEXTERN void parse_time_t(time_t * var);
73
74 SQUIDCEXTERN void parse_sockaddr_in_list_token(sockaddr_in_list **, char *);
75
76
77 /*
78 * cbdata.c
79 */
80 SQUIDCEXTERN void cbdataInit(void);
81 #if CBDATA_DEBUG
82 SQUIDCEXTERN void *cbdataInternalAllocDbg(cbdata_type type, const char *, int);
83 SQUIDCEXTERN void *cbdataInternalFreeDbg(void *p, const char *, int);
84 SQUIDCEXTERN void cbdataInternalLockDbg(const void *p, const char *, int);
85 SQUIDCEXTERN void cbdataInternalUnlockDbg(const void *p, const char *, int);
86 SQUIDCEXTERN int cbdataInternalReferenceDoneValidDbg(void **p, void **tp, const char *, int);
87 #else
88 SQUIDCEXTERN void *cbdataInternalAlloc(cbdata_type type);
89 SQUIDCEXTERN void *cbdataInternalFree(void *p);
90 SQUIDCEXTERN void cbdataInternalLock(const void *p);
91 SQUIDCEXTERN void cbdataInternalUnlock(const void *p);
92 SQUIDCEXTERN int cbdataInternalReferenceDoneValid(void **p, void **tp);
93 #endif
94 SQUIDCEXTERN int cbdataReferenceValid(const void *p);
95 SQUIDCEXTERN cbdata_type cbdataInternalAddType(cbdata_type type, const char *label, int size, FREE * free_func);
96
97 /* client_side.c - FD related client side routines */
98
99 SQUIDCEXTERN void clientdbInit(void);
100
101 SQUIDCEXTERN void clientdbUpdate(struct in_addr, log_type, protocol_t, size_t);
102
103 SQUIDCEXTERN int clientdbCutoffDenied(struct in_addr);
104 SQUIDCEXTERN void clientdbDump(StoreEntry *);
105 SQUIDCEXTERN void clientdbFreeMemory(void);
106
107 SQUIDCEXTERN int clientdbEstablished(struct in_addr, int);
108 SQUIDCEXTERN void clientOpenListenSockets(void);
109 SQUIDCEXTERN void clientHttpConnectionsClose(void);
110 SQUIDCEXTERN void clientReadBody(HttpRequest * req, char *buf, size_t size, CBCB * callback, void *data);
111 SQUIDCEXTERN int clientAbortBody(HttpRequest * req);
112 SQUIDCEXTERN void httpRequestFree(void *);
113
114 extern void clientAccessCheck(void *);
115
116 /* comm.c */
117 extern void comm_calliocallback(void);
118 extern bool comm_iocallbackpending(void); /* inline candidate */
119
120 extern int comm_listen(int fd);
121 SQUIDCEXTERN int commSetNonBlocking(int fd);
122 SQUIDCEXTERN int commUnsetNonBlocking(int fd);
123 SQUIDCEXTERN void commSetCloseOnExec(int fd);
124 extern void _comm_close(int fd, char const *file, int line);
125 #define comm_close(fd) (_comm_close((fd), __FILE__, __LINE__))
126 SQUIDCEXTERN void comm_reset_close(int fd);
127 #if LINGERING_CLOSE
128 SQUIDCEXTERN void comm_lingering_close(int fd);
129 #endif
130 SQUIDCEXTERN void commConnectStart(int fd, const char *, u_short, CNCB *, void *);
131
132 SQUIDCEXTERN int comm_connect_addr(int sock, const struct sockaddr_in *);
133 SQUIDCEXTERN void comm_init(void);
134
135 SQUIDCEXTERN int comm_open(int, int, struct in_addr, u_short port, int, const char *note);
136
137 SQUIDCEXTERN int comm_openex(int, int, struct in_addr, u_short, int, unsigned char TOS, const char *);
138 SQUIDCEXTERN u_short comm_local_port(int fd);
139
140 SQUIDCEXTERN void commSetSelect(int, unsigned int, PF *, void *, time_t);
141
142 SQUIDCEXTERN int comm_udp_sendto(int, const struct sockaddr_in *, int, const void *, int);
143 SQUIDCEXTERN void comm_old_write(int fd,
144 const char *buf,
145 int size,
146 CWCB * handler,
147 void *handler_data,
148 FREE *);
149 SQUIDCEXTERN void comm_old_write_mbuf(int fd, MemBuf mb, CWCB * handler, void *handler_data);
150 SQUIDCEXTERN void commCallCloseHandlers(int fd);
151 SQUIDCEXTERN int commSetTimeout(int fd, int, PF *, void *);
152 SQUIDCEXTERN int ignoreErrno(int);
153 SQUIDCEXTERN void commCloseAllSockets(void);
154 SQUIDCEXTERN void checkTimeouts(void);
155
156
157 /*
158 * comm_select.c
159 */
160 SQUIDCEXTERN void comm_select_init(void);
161 SQUIDCEXTERN comm_err_t comm_select(int);
162 SQUIDCEXTERN void comm_quick_poll_required(void);
163
164 SQUIDCEXTERN void packerToStoreInit(Packer * p, StoreEntry * e);
165 SQUIDCEXTERN void packerToMemInit(Packer * p, MemBuf * mb);
166 SQUIDCEXTERN void packerClean(Packer * p);
167 SQUIDCEXTERN void packerAppend(Packer * p, const char *buf, int size);
168 #if STDC_HEADERS
169 SQUIDCEXTERN void
170 packerPrintf(Packer * p, const char *fmt,...) PRINTF_FORMAT_ARG2;
171 #else
172 SQUIDCEXTERN void packerPrintf();
173 #endif
174
175
176 /* see debug.c for info on context-based debugging */
177 SQUIDCEXTERN Ctx ctx_enter(const char *descr);
178 SQUIDCEXTERN void ctx_exit(Ctx ctx);
179
180 SQUIDCEXTERN void _db_init(const char *logfile, const char *options);
181 SQUIDCEXTERN void _db_rotate_log(void);
182
183 #if STDC_HEADERS
184 SQUIDCEXTERN void _db_print(const char *,...) PRINTF_FORMAT_ARG1;
185 #else
186 SQUIDCEXTERN void _db_print();
187 #endif
188 extern void xassert(const char *, const char *, int);
189
190 /* packs, then prints an object using debug() */
191 SQUIDCEXTERN void debugObj(int section, int level, const char *label, void *obj, ObjPackMethod pm);
192
193 /* disk.c */
194 SQUIDCEXTERN int file_open(const char *path, int mode);
195 SQUIDCEXTERN void file_close(int fd);
196 /* Adapter file_write for object callbacks */
197
198 template <class O>
199 void
200 FreeObject(void *address)
201 {
202 O *anObject = static_cast <O *>(address);
203 delete anObject;
204 }
205
206 SQUIDCEXTERN void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *);
207 SQUIDCEXTERN void file_write_mbuf(int fd, off_t, MemBuf mb, DWCB * handler, void *handler_data);
208 SQUIDCEXTERN void file_read(int, char *, int, off_t, DRCB *, void *);
209 SQUIDCEXTERN void disk_init(void);
210
211 /* diskd.c */
212 SQUIDCEXTERN diskd_queue *afile_create_queue(void);
213 SQUIDCEXTERN void afile_destroy_queue(diskd_queue *);
214 SQUIDCEXTERN void afile_sync_queue(diskd_queue *);
215 SQUIDCEXTERN void afile_sync(void);
216 SQUIDCEXTERN void afile_open(const char *path, int mode, DOCB *, void *);
217 SQUIDCEXTERN void afile_close(int fd, DCCB * callback, void *data);
218 SQUIDCEXTERN void afile_write(int, off_t, void *, int len, DWCB *, void *, FREE *);
219 SQUIDCEXTERN void afile_write_mbuf(int fd, off_t, MemBuf, DWCB *, void *);
220 SQUIDCEXTERN void afile_read(int, char *, int, off_t, DRCB *, void *);
221 SQUIDCEXTERN void afile_unlink(const char *path, DUCB *, void *);
222 SQUIDCEXTERN void afile_truncate(const char *path, DTCB *, void *);
223
224 SQUIDCEXTERN void dnsShutdown(void);
225 SQUIDCEXTERN void dnsInit(void);
226 SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data);
227
228 /* dns_internal.c */
229 SQUIDCEXTERN void idnsInit(void);
230 SQUIDCEXTERN void idnsShutdown(void);
231 SQUIDCEXTERN void idnsALookup(const char *, IDNSCB *, void *);
232
233 SQUIDCEXTERN void idnsPTRLookup(const struct in_addr, IDNSCB *, void *);
234
235 extern void eventAdd(const char *name, EVH * func, void *arg, double when, int, bool cbdata=true);
236 SQUIDCEXTERN void eventAddIsh(const char *name, EVH * func, void *arg, double delta_ish, int);
237 SQUIDCEXTERN void eventRun(void);
238 SQUIDCEXTERN int eventNextTime(void);
239 SQUIDCEXTERN void eventDelete(EVH * func, void *arg);
240 SQUIDCEXTERN void eventInit(void);
241 SQUIDCEXTERN void eventFreeMemory(void);
242 SQUIDCEXTERN int eventFind(EVH *, void *);
243
244 SQUIDCEXTERN void fd_close(int fd);
245 SQUIDCEXTERN void fd_open(int fd, unsigned int type, const char *);
246 SQUIDCEXTERN void fd_note(int fd, const char *);
247 SQUIDCEXTERN void fd_bytes(int fd, int len, unsigned int type);
248 SQUIDCEXTERN void fdFreeMemory(void);
249 SQUIDCEXTERN void fdDumpOpen(void);
250 SQUIDCEXTERN int fdNFree(void);
251 SQUIDCEXTERN int fdUsageHigh(void);
252 SQUIDCEXTERN void fdAdjustReserved(void);
253
254 SQUIDCEXTERN fileMap *file_map_create(void);
255 SQUIDCEXTERN int file_map_allocate(fileMap *, int);
256 SQUIDCEXTERN int file_map_bit_set(fileMap *, int);
257 SQUIDCEXTERN int file_map_bit_test(fileMap *, int);
258 SQUIDCEXTERN void file_map_bit_reset(fileMap *, int);
259 SQUIDCEXTERN void filemapFreeMemory(fileMap *);
260
261
262 SQUIDCEXTERN void fqdncache_nbgethostbyaddr(struct in_addr, FQDNH *, void *);
263
264 SQUIDCEXTERN const char *fqdncache_gethostbyaddr(struct in_addr, int flags);
265 SQUIDCEXTERN void fqdncache_init(void);
266 SQUIDCEXTERN void fqdnStats(StoreEntry *);
267 SQUIDCEXTERN void fqdncacheReleaseInvalid(const char *);
268
269 SQUIDCEXTERN const char *fqdnFromAddr(struct in_addr);
270 SQUIDCEXTERN int fqdncacheQueueDrain(void);
271 SQUIDCEXTERN void fqdncacheFreeMemory(void);
272 SQUIDCEXTERN void fqdncache_restart(void);
273 SQUIDCEXTERN EVH fqdncache_purgelru;
274 SQUIDCEXTERN void fqdncacheAddEntryFromHosts(char *addr, wordlist * hostnames);
275
276 SQUIDCEXTERN void ftpStart(FwdState *);
277 SQUIDCEXTERN char *ftpUrlWith2f(const HttpRequest *);
278
279 SQUIDCEXTERN void gopherStart(FwdState *);
280 SQUIDCEXTERN int gopherCachable(const HttpRequest *);
281
282
283 SQUIDCEXTERN void whoisStart(FwdState *);
284
285 /* http.c */
286 SQUIDCEXTERN int httpCachable(method_t);
287 SQUIDCEXTERN void httpStart(FwdState *);
288 SQUIDCEXTERN mb_size_t httpBuildRequestPrefix(HttpRequest * request,
289 HttpRequest * orig_request,
290 StoreEntry * entry,
291 MemBuf * mb,
292 http_state_flags);
293 SQUIDCEXTERN void httpAnonInitModule(void);
294 SQUIDCEXTERN int httpAnonHdrAllowed(http_hdr_type hdr_id);
295 SQUIDCEXTERN int httpAnonHdrDenied(http_hdr_type hdr_id);
296 SQUIDCEXTERN void httpBuildRequestHeader(HttpRequest *, HttpRequest *, StoreEntry *, HttpHeader *, http_state_flags);
297 SQUIDCEXTERN const char *httpMakeVaryMark(HttpRequest * request, HttpReply const * reply);
298
299 /* ETag */
300 SQUIDCEXTERN int etagParseInit(ETag * etag, const char *str);
301 SQUIDCEXTERN int etagIsEqual(const ETag * tag1, const ETag * tag2);
302
303 SQUIDCEXTERN const char *httpStatusString(http_status status);
304
305 /* Http Body */
306 /* init/clean */
307 SQUIDCEXTERN void httpBodyInit(HttpBody * body);
308 SQUIDCEXTERN void httpBodyClean(HttpBody * body);
309 /* get body ptr (always use this) */
310 SQUIDCEXTERN const char *httpBodyPtr(const HttpBody * body);
311 /* set body, does not clone mb so you should not reuse it */
312 SQUIDCEXTERN void httpBodySet(HttpBody * body, MemBuf * mb);
313
314 /* pack */
315 SQUIDCEXTERN void httpBodyPackInto(const HttpBody * body, Packer * p);
316
317 /* Http Cache Control Header Field */
318 SQUIDCEXTERN void httpHdrCcInitModule(void);
319 SQUIDCEXTERN void httpHdrCcCleanModule(void);
320 SQUIDCEXTERN HttpHdrCc *httpHdrCcCreate(void);
321 SQUIDCEXTERN HttpHdrCc *httpHdrCcParseCreate(const String * str);
322 SQUIDCEXTERN void httpHdrCcDestroy(HttpHdrCc * cc);
323 SQUIDCEXTERN HttpHdrCc *httpHdrCcDup(const HttpHdrCc * cc);
324 SQUIDCEXTERN void httpHdrCcPackInto(const HttpHdrCc * cc, Packer * p);
325 SQUIDCEXTERN void httpHdrCcJoinWith(HttpHdrCc * cc, const HttpHdrCc * new_cc);
326 SQUIDCEXTERN void httpHdrCcSetMaxAge(HttpHdrCc * cc, int max_age);
327 SQUIDCEXTERN void httpHdrCcSetSMaxAge(HttpHdrCc * cc, int s_maxage);
328 SQUIDCEXTERN void httpHdrCcUpdateStats(const HttpHdrCc * cc, StatHist * hist);
329 SQUIDCEXTERN void httpHdrCcStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
330
331 /* Http Surrogate Control Header Field */
332 extern void httpHdrScStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
333 extern void httpHdrScInitModule (void);
334 extern void httpHdrScCleanModule (void);
335 extern HttpHdrSc *httpHdrScCreate(void);
336 extern HttpHdrSc *httpHdrScParseCreate(String const *);
337 extern void httpHdrScDestroy(HttpHdrSc * sc);
338 extern HttpHdrSc *httpHdrScDup(const HttpHdrSc * sc);
339 extern void httpHdrScPackInto(const HttpHdrSc * sc, Packer * p);
340 extern void httpHdrScJoinWith(HttpHdrSc *, const HttpHdrSc *);
341 extern void httpHdrScSetMaxAge(HttpHdrSc *, char const *, int);
342 extern void httpHdrScUpdateStats(const HttpHdrSc *, StatHist *);
343 extern HttpHdrScTarget * httpHdrScFindTarget (HttpHdrSc *sc, const char *target);
344 extern HttpHdrScTarget * httpHdrScGetMergedTarget (HttpHdrSc *sc, const char *ourtarget);
345
346 /* Http Surrogate control header field 'targets' */
347 extern HttpHdrScTarget * httpHdrScTargetCreate (const char *);
348 extern void httpHdrScTargetDestroy(HttpHdrScTarget *);
349 extern HttpHdrScTarget *httpHdrScTargetDup(const HttpHdrScTarget *);
350 extern void httpHdrScTargetPackInto(const HttpHdrScTarget *, Packer *);
351 extern void httpHdrScTargetSetMaxAge(HttpHdrScTarget *, int);
352 extern void httpHdrScTargetUpdateStats(const HttpHdrScTarget *, StatHist *);
353 extern void httpHdrScTargetJoinWith(HttpHdrScTarget *, const HttpHdrScTarget *);
354 extern void httpHdrScTargetMergeWith(HttpHdrScTarget *, const HttpHdrScTarget *);
355 extern void httpHdrScTargetStatDumper(StoreEntry * sentry, int idx, double val, double size, int count);
356
357
358 /* Http Header Tools */
359 SQUIDCEXTERN HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count);
360 SQUIDCEXTERN void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count);
361 SQUIDCEXTERN http_hdr_type httpHeaderIdByName(const char *name, int name_len, const HttpHeaderFieldInfo * attrs, int end);
362 SQUIDCEXTERN http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len);
363 SQUIDCEXTERN const char *httpHeaderNameById(int id);
364 SQUIDCEXTERN void httpHeaderMaskInit(HttpHeaderMask * mask, int value);
365 SQUIDCEXTERN void httpHeaderCalcMask(HttpHeaderMask * mask, const int *enums, size_t count);
366 SQUIDCEXTERN int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive);
367 SQUIDCEXTERN void strListAdd(String * str, const char *item, char del);
368 SQUIDCEXTERN int strListIsMember(const String * str, const char *item, char del);
369 SQUIDCEXTERN int strListIsSubstr(const String * list, const char *s, char del);
370 SQUIDCEXTERN int strListGetItem(const String * str, char del, const char **item, int *ilen, const char **pos);
371 SQUIDCEXTERN const char *getStringPrefix(const char *str, const char *end);
372 SQUIDCEXTERN int httpHeaderParseInt(const char *start, int *val);
373 SQUIDCEXTERN int httpHeaderParseSize(const char *start, ssize_t * sz);
374 SQUIDCEXTERN int httpHeaderReset(HttpHeader * hdr);
375 #if STDC_HEADERS
376 SQUIDCEXTERN void
377 httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3;
378 #else
379 SQUIDCEXTERN void httpHeaderPutStrf();
380 #endif
381
382
383 /* Http Header */
384 SQUIDCEXTERN void httpHeaderInitModule(void);
385 SQUIDCEXTERN void httpHeaderCleanModule(void);
386 /* init/clean */
387 SQUIDCEXTERN void httpHeaderClean(HttpHeader * hdr);
388 /* append/update */
389 SQUIDCEXTERN void httpHeaderAppend(HttpHeader * dest, const HttpHeader * src);
390 /* parse/pack */
391 SQUIDCEXTERN int httpHeaderParse(HttpHeader * hdr, const char *header_start, const char *header_end);
392 SQUIDCEXTERN void httpHeaderPackInto(const HttpHeader * hdr, Packer * p);
393 /* field manipulation */
394 SQUIDCEXTERN int httpHeaderHas(const HttpHeader * hdr, http_hdr_type type);
395 SQUIDCEXTERN void httpHeaderPutInt(HttpHeader * hdr, http_hdr_type type, int number);
396 SQUIDCEXTERN void httpHeaderPutTime(HttpHeader * hdr, http_hdr_type type, time_t htime);
397 SQUIDCEXTERN void httpHeaderPutStr(HttpHeader * hdr, http_hdr_type type, const char *str);
398 SQUIDCEXTERN void httpHeaderPutAuth(HttpHeader * hdr, const char *auth_scheme, const char *realm);
399 SQUIDCEXTERN void httpHeaderPutCc(HttpHeader * hdr, const HttpHdrCc * cc);
400
401 class HttpHdrContRange;
402 SQUIDCEXTERN void httpHeaderPutContRange(HttpHeader * hdr, const HttpHdrContRange * cr);
403
404 class HttpHdrRange;
405 SQUIDCEXTERN void httpHeaderPutRange(HttpHeader * hdr, const HttpHdrRange * range);
406 SQUIDCEXTERN void httpHeaderPutExt(HttpHeader * hdr, const char *name, const char *value);
407 SQUIDCEXTERN int httpHeaderGetInt(const HttpHeader * hdr, http_hdr_type id);
408 SQUIDCEXTERN time_t httpHeaderGetTime(const HttpHeader * hdr, http_hdr_type id);
409 SQUIDCEXTERN TimeOrTag httpHeaderGetTimeOrTag(const HttpHeader * hdr, http_hdr_type id);
410 SQUIDCEXTERN HttpHdrCc *httpHeaderGetCc(const HttpHeader * hdr);
411 SQUIDCEXTERN ETag httpHeaderGetETag(const HttpHeader * hdr, http_hdr_type id);
412 SQUIDCEXTERN HttpHdrRange *httpHeaderGetRange(const HttpHeader * hdr);
413 SQUIDCEXTERN HttpHdrContRange *httpHeaderGetContRange(const HttpHeader * hdr);
414 SQUIDCEXTERN const char *httpHeaderGetStr(const HttpHeader * hdr, http_hdr_type id);
415 SQUIDCEXTERN const char *httpHeaderGetLastStr(const HttpHeader * hdr, http_hdr_type id);
416 SQUIDCEXTERN const char *httpHeaderGetAuth(const HttpHeader * hdr, http_hdr_type id, const char *auth_scheme);
417 extern String httpHeaderGetList(const HttpHeader * hdr, http_hdr_type id);
418 extern String httpHeaderGetStrOrList(const HttpHeader * hdr, http_hdr_type id);
419 extern String httpHeaderGetByName(const HttpHeader * hdr, const char *name);
420 extern String httpHeaderGetListMember(const HttpHeader * hdr, http_hdr_type id, const char *member, const char separator);
421 extern String httpHeaderGetByNameListMember(const HttpHeader * hdr, const char *name, const char *member, const char separator);
422 SQUIDCEXTERN int httpHeaderDelByName(HttpHeader * hdr, const char *name);
423 SQUIDCEXTERN int httpHeaderDelById(HttpHeader * hdr, http_hdr_type id);
424 SQUIDCEXTERN void httpHeaderDelAt(HttpHeader * hdr, HttpHeaderPos pos);
425 extern int httpHeaderEntryGetInt(const HttpHeaderEntry * e);
426 /* avoid using these low level routines */
427 SQUIDCEXTERN HttpHeaderEntry *httpHeaderGetEntry(const HttpHeader * hdr, HttpHeaderPos * pos);
428 SQUIDCEXTERN HttpHeaderEntry *httpHeaderFindEntry(const HttpHeader * hdr, http_hdr_type id);
429 SQUIDCEXTERN void httpHeaderAddEntry(HttpHeader * hdr, HttpHeaderEntry * e);
430 SQUIDCEXTERN HttpHeaderEntry *httpHeaderEntryClone(const HttpHeaderEntry * e);
431 SQUIDCEXTERN void httpHeaderEntryPackInto(const HttpHeaderEntry * e, Packer * p);
432 /* store report about current header usage and other stats */
433 SQUIDCEXTERN void httpHeaderStoreReport(StoreEntry * e);
434 SQUIDCEXTERN void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep);
435
436 /* Http Msg (currently in HttpReply.c @?@ ) */
437 SQUIDCEXTERN int httpMsgIsolateHeaders(const char **parse_start, const char **blk_start, const char **blk_end);
438
439 SQUIDCEXTERN void icmpOpen(void);
440 SQUIDCEXTERN void icmpClose(void);
441
442 SQUIDCEXTERN void icmpSourcePing(struct in_addr to, const icp_common_t *, const char *url);
443
444 SQUIDCEXTERN void icmpDomainPing(struct in_addr to, const char *domain);
445
446 #ifdef SQUID_SNMP
447 SQUIDCEXTERN PF snmpHandleUdp;
448 SQUIDCEXTERN void snmpInit(void);
449 SQUIDCEXTERN void snmpConnectionOpen(void);
450 SQUIDCEXTERN void snmpConnectionShutdown(void);
451 SQUIDCEXTERN void snmpConnectionClose(void);
452 SQUIDCEXTERN void snmpDebugOid(int lvl, oid * Name, snint Len);
453
454 SQUIDCEXTERN void addr2oid(struct in_addr addr, oid * Dest);
455
456 SQUIDCEXTERN struct in_addr *oid2addr(oid * id);
457
458 SQUIDCEXTERN struct in_addr *client_entry(struct in_addr *current);
459 SQUIDCEXTERN variable_list *snmp_basicFn(variable_list *, snint *);
460 SQUIDCEXTERN variable_list *snmp_confFn(variable_list *, snint *);
461 SQUIDCEXTERN variable_list *snmp_sysFn(variable_list *, snint *);
462 SQUIDCEXTERN variable_list *snmp_prfSysFn(variable_list *, snint *);
463 SQUIDCEXTERN variable_list *snmp_prfProtoFn(variable_list *, snint *);
464 SQUIDCEXTERN variable_list *snmp_prfPeerFn(variable_list *, snint *);
465 SQUIDCEXTERN variable_list *snmp_netIpFn(variable_list *, snint *);
466 SQUIDCEXTERN variable_list *snmp_netFqdnFn(variable_list *, snint *);
467 #if USE_DNSSERVERS
468 SQUIDCEXTERN variable_list *snmp_netDnsFn(variable_list *, snint *);
469 #else
470 SQUIDCEXTERN variable_list *snmp_netIdnsFn(variable_list *, snint *);
471 #endif
472 SQUIDCEXTERN variable_list *snmp_meshPtblFn(variable_list *, snint *);
473 SQUIDCEXTERN variable_list *snmp_meshCtblFn(variable_list *, snint *);
474 #endif /* SQUID_SNMP */
475
476 #if USE_WCCP
477 SQUIDCEXTERN void wccpInit(void);
478 SQUIDCEXTERN void wccpConnectionOpen(void);
479 SQUIDCEXTERN void wccpConnectionShutdown(void);
480 SQUIDCEXTERN void wccpConnectionClose(void);
481 #endif /* USE_WCCP */
482
483 SQUIDCEXTERN void ipcache_nbgethostbyname(const char *name,
484 IPH * handler,
485 void *handlerData);
486 SQUIDCEXTERN EVH ipcache_purgelru;
487 SQUIDCEXTERN const ipcache_addrs *ipcache_gethostbyname(const char *, int flags);
488 SQUIDCEXTERN void ipcacheInvalidate(const char *);
489 SQUIDCEXTERN void ipcacheInvalidateNegative(const char *);
490 SQUIDCEXTERN void ipcache_init(void);
491 SQUIDCEXTERN void stat_ipcache_get(StoreEntry *);
492 SQUIDCEXTERN void ipcacheCycleAddr(const char *name, ipcache_addrs *);
493
494 SQUIDCEXTERN void ipcacheMarkBadAddr(const char *name, struct in_addr);
495
496 SQUIDCEXTERN void ipcacheMarkGoodAddr(const char *name, struct in_addr);
497 SQUIDCEXTERN void ipcacheFreeMemory(void);
498 SQUIDCEXTERN ipcache_addrs *ipcacheCheckNumeric(const char *name);
499 SQUIDCEXTERN void ipcache_restart(void);
500 SQUIDCEXTERN int ipcacheAddEntryFromHosts(const char *name, const char *ipaddr);
501
502 SQUIDCEXTERN char *mime_get_header(const char *mime, const char *header);
503 SQUIDCEXTERN char *mime_get_header_field(const char *mime, const char *name, const char *prefix);
504 SQUIDCEXTERN size_t headersEnd(const char *, size_t);
505 SQUIDCEXTERN const char *mime_get_auth(const char *hdr, const char *auth_scheme, const char **auth_field);
506
507 SQUIDCEXTERN void mimeInit(char *filename);
508 SQUIDCEXTERN void mimeFreeMemory(void);
509 SQUIDCEXTERN char *mimeGetContentEncoding(const char *fn);
510 SQUIDCEXTERN char *mimeGetContentType(const char *fn);
511 SQUIDCEXTERN char const *mimeGetIcon(const char *fn);
512 SQUIDCEXTERN const char *mimeGetIconURL(const char *fn);
513 SQUIDCEXTERN char mimeGetTransferMode(const char *fn);
514 SQUIDCEXTERN int mimeGetDownloadOption(const char *fn);
515 SQUIDCEXTERN int mimeGetViewOption(const char *fn);
516
517 SQUIDCEXTERN int mcastSetTtl(int, int);
518 SQUIDCEXTERN IPH mcastJoinGroups;
519
520 /* Labels for hierachical log file */
521 /* put them all here for easier reference when writing a logfile analyzer */
522
523
524 SQUIDCEXTERN peer *getFirstPeer(void);
525 SQUIDCEXTERN peer *getFirstUpParent(HttpRequest *);
526 SQUIDCEXTERN peer *getNextPeer(peer *);
527 SQUIDCEXTERN peer *getSingleParent(HttpRequest *);
528 SQUIDCEXTERN int neighborsCount(HttpRequest *);
529 SQUIDCEXTERN int neighborsUdpPing(HttpRequest *,
530 StoreEntry *,
531 IRCB * callback,
532 void *data,
533 int *exprep,
534 int *timeout);
535 SQUIDCEXTERN void neighborAddAcl(const char *, const char *);
536
537 SQUIDCEXTERN void neighborsUdpAck(const cache_key *, icp_common_t *, const struct sockaddr_in *);
538 SQUIDCEXTERN void neighborAdd(const char *, const char *, int, int, int, int, int);
539 SQUIDCEXTERN void neighbors_init(void);
540 SQUIDCEXTERN peer *peerFindByName(const char *);
541 SQUIDCEXTERN peer *peerFindByNameAndPort(const char *, unsigned short);
542 SQUIDCEXTERN peer *getDefaultParent(HttpRequest * request);
543 SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
544 SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
545 SQUIDCEXTERN EVH peerClearRR;
546 SQUIDCEXTERN peer *getAnyParent(HttpRequest * request);
547 SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
548 SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
549 SQUIDCEXTERN void peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup);
550 SQUIDCEXTERN void peerNoteDigestGone(peer * p);
551 SQUIDCEXTERN int neighborUp(const peer * e);
552 SQUIDCEXTERN CBDUNL peerDestroy;
553 SQUIDCEXTERN const char *neighborTypeStr(const peer * e);
554 SQUIDCEXTERN peer_t neighborType(const peer *, const HttpRequest *);
555 SQUIDCEXTERN void peerConnectFailed(peer *);
556 SQUIDCEXTERN void peerConnectSucceded(peer *);
557 SQUIDCEXTERN void dump_peer_options(StoreEntry *, peer *);
558 SQUIDCEXTERN int peerHTTPOkay(const peer *, HttpRequest *);
559
560 SQUIDCEXTERN peer *whichPeer(const struct sockaddr_in *from);
561
562 SQUIDCEXTERN void netdbInit(void);
563
564 SQUIDCEXTERN void netdbHandlePingReply(const struct sockaddr_in *from, int hops, int rtt);
565 SQUIDCEXTERN void netdbPingSite(const char *hostname);
566 SQUIDCEXTERN void netdbDump(StoreEntry *);
567
568 SQUIDCEXTERN int netdbHops(struct in_addr);
569 SQUIDCEXTERN void netdbFreeMemory(void);
570 SQUIDCEXTERN int netdbHostHops(const char *host);
571 SQUIDCEXTERN int netdbHostRtt(const char *host);
572 SQUIDCEXTERN void netdbUpdatePeer(HttpRequest *, peer * e, int rtt, int hops);
573
574 SQUIDCEXTERN void netdbDeleteAddrNetwork(struct in_addr addr);
575 SQUIDCEXTERN void netdbBinaryExchange(StoreEntry *);
576 SQUIDCEXTERN EVH netdbExchangeStart;
577
578 SQUIDCEXTERN void netdbExchangeUpdatePeer(struct in_addr, peer *, double, double);
579 SQUIDCEXTERN peer *netdbClosestParent(HttpRequest *);
580 SQUIDCEXTERN void netdbHostData(const char *host, int *samp, int *rtt, int *hops);
581
582 SQUIDCEXTERN void cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry);
583 SQUIDCEXTERN void cachemgrRegister(const char *, const char *, OBJH *, int, int);
584 SQUIDCEXTERN void cachemgrInit(void);
585
586 SQUIDCEXTERN void peerSelect(HttpRequest *, StoreEntry *, PSC *, void *data);
587 SQUIDCEXTERN void peerSelectInit(void);
588
589 /* peer_digest.c */
590 SQUIDCEXTERN PeerDigest *peerDigestCreate(peer * p);
591 SQUIDCEXTERN void peerDigestNeeded(PeerDigest * pd);
592 SQUIDCEXTERN void peerDigestNotePeerGone(PeerDigest * pd);
593 SQUIDCEXTERN void peerDigestStatsReport(const PeerDigest * pd, StoreEntry * e);
594
595 /* forward.c */
596 SQUIDCEXTERN void fwdStart(int, StoreEntry *, HttpRequest *);
597 SQUIDCEXTERN void fwdFail(FwdState *, ErrorState *);
598 SQUIDCEXTERN void fwdUnregister(int fd, FwdState *);
599 SQUIDCEXTERN void fwdComplete(FwdState * fwdState);
600 SQUIDCEXTERN void fwdInit(void);
601 SQUIDCEXTERN int fwdReforwardableStatus(http_status s);
602 SQUIDCEXTERN void fwdServersFree(FwdServer ** FSVR);
603 #if WIP_FWD_LOG
604 SQUIDCEXTERN void fwdUninit(void);
605 SQUIDCEXTERN void fwdLogRotate(void);
606 SQUIDCEXTERN void fwdStatus(FwdState *, http_status);
607 #endif
608
609 SQUIDCEXTERN struct in_addr getOutgoingAddr(HttpRequest * request);
610 unsigned long getOutgoingTOS(HttpRequest * request);
611
612 SQUIDCEXTERN void urnStart(HttpRequest *, StoreEntry *);
613
614 SQUIDCEXTERN void redirectInit(void);
615 SQUIDCEXTERN void redirectShutdown(void);
616
617 extern void refreshAddToList(const char *, int, time_t, int, time_t);
618 extern int refreshIsCachable(const StoreEntry *);
619 extern int refreshCheckHTTP(const StoreEntry *, HttpRequest *);
620 extern int refreshCheckICP(const StoreEntry *, HttpRequest *);
621 extern int refreshCheckHTCP(const StoreEntry *, HttpRequest *);
622 extern int refreshCheckDigest(const StoreEntry *, time_t delta);
623 extern time_t getMaxAge(const char *url);
624 extern void refreshInit(void);
625 extern const refresh_t *refreshLimits(const char *url);
626
627 extern void serverConnectionsClose(void);
628 extern void shut_down(int);
629 extern void rotate_logs(int);
630 extern void reconfigure(int);
631
632
633 extern void start_announce(void *unused);
634 extern void waisStart(FwdState *);
635
636 /* ident.c */
637 #if USE_IDENT
638
639 SQUIDCEXTERN void identStart(struct sockaddr_in *me, struct sockaddr_in *my_peer,
640 IDCB * callback, void *cbdata);
641 SQUIDCEXTERN void identInit(void);
642 #endif
643
644 SQUIDCEXTERN void statInit(void);
645 SQUIDCEXTERN void statFreeMemory(void);
646 SQUIDCEXTERN double median_svc_get(int, int);
647 SQUIDCEXTERN void pconnHistCount(int, int);
648 SQUIDCEXTERN int stat5minClientRequests(void);
649 SQUIDCEXTERN double stat5minCPUUsage(void);
650 SQUIDCEXTERN double statRequestHitRatio(int minutes);
651 SQUIDCEXTERN double statRequestHitMemoryRatio(int minutes);
652 SQUIDCEXTERN double statRequestHitDiskRatio(int minutes);
653 SQUIDCEXTERN double statByteHitRatio(int minutes);
654
655 /* StatHist */
656 SQUIDCEXTERN void statHistClean(StatHist * H);
657 SQUIDCEXTERN void statHistCount(StatHist * H, double val);
658 SQUIDCEXTERN void statHistCopy(StatHist * Dest, const StatHist * Orig);
659 SQUIDCEXTERN void statHistSafeCopy(StatHist * Dest, const StatHist * Orig);
660 SQUIDCEXTERN double statHistDeltaMedian(const StatHist * A, const StatHist * B);
661 SQUIDCEXTERN void statHistDump(const StatHist * H, StoreEntry * sentry, StatHistBinDumper * bd);
662 SQUIDCEXTERN void statHistLogInit(StatHist * H, int capacity, double min, double max);
663 SQUIDCEXTERN void statHistEnumInit(StatHist * H, int last_enum);
664 SQUIDCEXTERN void statHistIntInit(StatHist * H, int n);
665 SQUIDCEXTERN StatHistBinDumper statHistEnumDumper;
666 SQUIDCEXTERN StatHistBinDumper statHistIntDumper;
667
668
669 /* mem */
670 SQUIDCEXTERN void memClean(void);
671 SQUIDCEXTERN void memInitModule(void);
672 SQUIDCEXTERN void memCleanModule(void);
673 SQUIDCEXTERN void memConfigure(void);
674 SQUIDCEXTERN void *memAllocate(mem_type);
675 SQUIDCEXTERN void *memAllocString(size_t net_size, size_t * gross_size);
676 SQUIDCEXTERN void *memAllocBuf(size_t net_size, size_t * gross_size);
677 SQUIDCEXTERN void *memReallocBuf(void *buf, size_t net_size, size_t * gross_size);
678 SQUIDCEXTERN void memFree(void *, int type);
679 SQUIDCEXTERN void memFree4K(void *);
680 SQUIDCEXTERN void memFree8K(void *);
681 SQUIDCEXTERN void memFreeString(size_t size, void *);
682 SQUIDCEXTERN void memFreeBuf(size_t size, void *);
683 SQUIDCEXTERN FREE *memFreeBufFunc(size_t size);
684 SQUIDCEXTERN int memInUse(mem_type);
685 SQUIDCEXTERN void memDataInit(mem_type, const char *, size_t, int);
686 SQUIDCEXTERN void memCheckInit(void);
687
688
689 /* Mem */
690 SQUIDCEXTERN void memConfigure(void);
691
692 /* ----------------------------------------------------------------- */
693
694 /* repl_modules.c */
695 SQUIDCEXTERN void storeReplSetup(void);
696
697 /* store_io.c */
698 #include "StoreIOState.h"
699 extern StoreIOState::Pointer storeCreate(StoreEntry *, STFNCB *, STIOCB *, void *);
700 extern StoreIOState::Pointer storeOpen(StoreEntry *, STFNCB *, STIOCB *, void *);
701 SQUIDCEXTERN void storeClose(StoreIOState::Pointer);
702 SQUIDCEXTERN void storeRead(StoreIOState::Pointer, char *, size_t, off_t, STRCB *, void *);
703 SQUIDCEXTERN void storeIOWrite(StoreIOState::Pointer, char const *, size_t, off_t, FREE *);
704 SQUIDCEXTERN void storeUnlink(StoreEntry *);
705
706 /*
707 * store_log.c
708 */
709 SQUIDCEXTERN void storeLog(int tag, const StoreEntry * e);
710 SQUIDCEXTERN void storeLogRotate(void);
711 SQUIDCEXTERN void storeLogClose(void);
712 SQUIDCEXTERN void storeLogOpen(void);
713
714
715 /*
716 * store_key_*.c
717 */
718 SQUIDCEXTERN cache_key *storeKeyDup(const cache_key *);
719 SQUIDCEXTERN cache_key *storeKeyCopy(cache_key *, const cache_key *);
720 SQUIDCEXTERN void storeKeyFree(const cache_key *);
721 SQUIDCEXTERN const cache_key *storeKeyScan(const char *);
722 SQUIDCEXTERN const char *storeKeyText(const cache_key *);
723 SQUIDCEXTERN const cache_key *storeKeyPublic(const char *, const method_t);
724 SQUIDCEXTERN const cache_key *storeKeyPublicByRequest(HttpRequest *);
725 SQUIDCEXTERN const cache_key *storeKeyPublicByRequestMethod(HttpRequest *, const method_t);
726 SQUIDCEXTERN const cache_key *storeKeyPrivate(const char *, method_t, int);
727 SQUIDCEXTERN int storeKeyHashBuckets(int);
728 SQUIDCEXTERN int storeKeyNull(const cache_key *);
729 SQUIDCEXTERN void storeKeyInit(void);
730 SQUIDCEXTERN HASHHASH storeKeyHashHash;
731 SQUIDCEXTERN HASHCMP storeKeyHashCmp;
732
733 /*
734 * store_digest.c
735 */
736 SQUIDCEXTERN void storeDigestInit(void);
737 SQUIDCEXTERN void storeDigestNoteStoreReady(void);
738 SQUIDCEXTERN void storeDigestScheduleRebuild(void);
739 SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry);
740 SQUIDCEXTERN void storeDigestReport(StoreEntry *);
741
742 /*
743 * store_dir.c
744 */
745 SQUIDCEXTERN OBJH storeDirStats;
746 SQUIDCEXTERN char *storeDirSwapLogFile(int, const char *);
747 SQUIDCEXTERN char *storeSwapDir(int);
748 SQUIDCEXTERN char *storeSwapFullPath(int, char *);
749 SQUIDCEXTERN char *storeSwapSubSubDir(int, char *);
750 SQUIDCEXTERN const char *storeSwapPath(int);
751 SQUIDCEXTERN int storeDirWriteCleanLogs(int reopen);
752 SQUIDCEXTERN STDIRSELECT *storeDirSelectSwapDir;
753 SQUIDCEXTERN int storeVerifySwapDirs(void);
754 SQUIDCEXTERN void storeCreateSwapDirectories(void);
755 SQUIDCEXTERN void storeDirCloseSwapLogs(void);
756 SQUIDCEXTERN void storeDirCloseTmpSwapLog(int dirn);
757 SQUIDCEXTERN void storeDirConfigure(void);
758 SQUIDCEXTERN void storeDirDiskFull(sdirno);
759 SQUIDCEXTERN void storeDirInit(void);
760 SQUIDCEXTERN void storeDirOpenSwapLogs(void);
761 SQUIDCEXTERN void storeDirSwapLog(const StoreEntry *, int op);
762 SQUIDCEXTERN void storeDirUpdateSwapSize(SwapDir *, size_t size, int sign);
763 SQUIDCEXTERN void storeDirSync(void);
764 SQUIDCEXTERN void storeDirCallback(void);
765 SQUIDCEXTERN void storeDirLRUDelete(StoreEntry *);
766 SQUIDCEXTERN void storeDirLRUAdd(StoreEntry *);
767 SQUIDCEXTERN int storeDirGetBlkSize(const char *path, int *blksize);
768 SQUIDCEXTERN int storeDirGetUFSStats(const char *, int *, int *, int *, int *);
769
770 /*
771 * store_rebuild.c
772 */
773 SQUIDCEXTERN void storeRebuildStart(void);
774
775 SQUIDCEXTERN void storeRebuildComplete(struct _store_rebuild_data *);
776 SQUIDCEXTERN void storeRebuildProgress(int sd_index, int total, int sofar);
777
778 /*
779 * store_swapin.c
780 */
781 SQUIDCEXTERN void storeSwapInStart(store_client *);
782
783 /*
784 * store_swapout.c
785 */
786 SQUIDCEXTERN void storeSwapOut(StoreEntry * e);
787 SQUIDCEXTERN void storeSwapOutFileClose(StoreEntry * e);
788 SQUIDCEXTERN int storeSwapOutAble(const StoreEntry * e);
789
790 /*
791 * store_client.c
792 */
793 SQUIDCEXTERN store_client *storeClientListAdd(StoreEntry * e, void *data);
794 SQUIDCEXTERN int storeClientCopyPending(store_client *, StoreEntry * e, void *data);
795 SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data);
796 SQUIDCEXTERN void InvokeHandlers(StoreEntry * e);
797 SQUIDCEXTERN int storePendingNClients(const StoreEntry * e);
798 SQUIDCEXTERN int storeClientIsThisAClient(store_client * sc, void *someClient);
799
800
801 SQUIDCEXTERN const char *getMyHostname(void);
802 SQUIDCEXTERN const char *uniqueHostname(void);
803 SQUIDCEXTERN void safeunlink(const char *path, int quiet);
804 SQUIDCEXTERN void death(int sig);
805 SQUIDCEXTERN void fatal(const char *message);
806 #if STDC_HEADERS
807 SQUIDCEXTERN void
808 fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1;
809 #else
810 SQUIDCEXTERN void fatalf();
811 #endif
812 SQUIDCEXTERN void fatal_dump(const char *message);
813 SQUIDCEXTERN void sigusr2_handle(int sig);
814 SQUIDCEXTERN void sig_child(int sig);
815 SQUIDCEXTERN void leave_suid(void);
816 SQUIDCEXTERN void enter_suid(void);
817 SQUIDCEXTERN void no_suid(void);
818 SQUIDCEXTERN void writePidFile(void);
819 SQUIDCEXTERN void setSocketShutdownLifetimes(int);
820 SQUIDCEXTERN void setMaxFD(void);
821 SQUIDCEXTERN time_t getCurrentTime(void);
822 SQUIDCEXTERN int percent(int, int);
823 SQUIDCEXTERN double dpercent(double, double);
824 SQUIDCEXTERN void squid_signal(int sig, SIGHDLR *, int flags);
825 SQUIDCEXTERN pid_t readPidFile(void);
826
827 SQUIDCEXTERN struct in_addr inaddrFromHostent(const struct hostent *hp);
828 SQUIDCEXTERN int intAverage(int, int, int, int);
829 SQUIDCEXTERN double doubleAverage(double, double, int, int);
830 SQUIDCEXTERN void debug_trap(const char *);
831 SQUIDCEXTERN void logsFlush(void);
832 SQUIDCEXTERN const char *checkNullString(const char *p);
833
834 SQUIDCEXTERN void squid_getrusage(struct rusage *r);
835
836 SQUIDCEXTERN double rusage_cputime(struct rusage *r);
837
838 SQUIDCEXTERN int rusage_maxrss(struct rusage *r);
839
840 SQUIDCEXTERN int rusage_pagefaults(struct rusage *r);
841 SQUIDCEXTERN void releaseServerSockets(void);
842 SQUIDCEXTERN void PrintRusage(void);
843 SQUIDCEXTERN void dumpMallocStats(void);
844
845 #if USE_UNLINKD
846 SQUIDCEXTERN void unlinkdInit(void);
847 SQUIDCEXTERN void unlinkdClose(void);
848 SQUIDCEXTERN void unlinkdUnlink(const char *);
849 #endif
850
851 SQUIDCEXTERN char *url_convert_hex(char *org_url, int allocate);
852 SQUIDCEXTERN char *url_escape(const char *url);
853 SQUIDCEXTERN protocol_t urlParseProtocol(const char *);
854 SQUIDCEXTERN method_t urlParseMethod(const char *);
855 SQUIDCEXTERN void urlInitialize(void);
856 SQUIDCEXTERN HttpRequest *urlParse(method_t, char *);
857 SQUIDCEXTERN const char *urlCanonical(HttpRequest *);
858 SQUIDCEXTERN char *urlRInternal(const char *host, u_short port, const char *dir, const char *name);
859 SQUIDCEXTERN char *urlInternal(const char *dir, const char *name);
860 SQUIDCEXTERN int matchDomainName(const char *host, const char *domain);
861 SQUIDCEXTERN int urlCheckRequest(const HttpRequest *);
862 SQUIDCEXTERN int urlDefaultPort(protocol_t p);
863 SQUIDCEXTERN char *urlCanonicalClean(const HttpRequest *);
864 SQUIDCEXTERN char *urlHostname(const char *url);
865 SQUIDCEXTERN void urlExtMethodConfigure(void);
866
867 SQUIDCEXTERN void useragentOpenLog(void);
868 SQUIDCEXTERN void useragentRotateLog(void);
869 SQUIDCEXTERN void logUserAgent(const char *, const char *);
870 SQUIDCEXTERN void useragentLogClose(void);
871 SQUIDCEXTERN void refererOpenLog(void);
872 SQUIDCEXTERN void refererRotateLog(void);
873 SQUIDCEXTERN void logReferer(const char *, const char *, const char *);
874 SQUIDCEXTERN void refererCloseLog(void);
875 SQUIDCEXTERN peer_t parseNeighborType(const char *s);
876
877 SQUIDCEXTERN void errorInitialize(void);
878 SQUIDCEXTERN void errorClean(void);
879 SQUIDCEXTERN HttpReply *errorBuildReply(ErrorState * err);
880 SQUIDCEXTERN void errorSend(int fd, ErrorState *);
881 SQUIDCEXTERN void errorAppendEntry(StoreEntry *, ErrorState *);
882 SQUIDCEXTERN void errorStateFree(ErrorState * err);
883 SQUIDCEXTERN err_type errorReservePageId(const char *page_name);
884 SQUIDCEXTERN ErrorState *errorCon(err_type type, http_status);
885
886 SQUIDCEXTERN void pconnPush(int, const char *host, u_short port, const char *domain);
887 SQUIDCEXTERN int pconnPop(const char *host, u_short port, const char *domain);
888 SQUIDCEXTERN void pconnInit(void);
889
890 /* tools.c */
891 SQUIDCEXTERN void dlinkAdd(void *data, dlink_node *, dlink_list *);
892 SQUIDCEXTERN void dlinkAddAfter(void *, dlink_node *, dlink_node *, dlink_list *);
893 SQUIDCEXTERN void dlinkAddTail(void *data, dlink_node *, dlink_list *);
894 SQUIDCEXTERN void dlinkDelete(dlink_node * m, dlink_list * list);
895 SQUIDCEXTERN void dlinkNodeDelete(dlink_node * m);
896 SQUIDCEXTERN dlink_node *dlinkNodeNew(void);
897
898 SQUIDCEXTERN void kb_incr(kb_t *, size_t);
899 SQUIDCEXTERN int stringHasWhitespace(const char *);
900 SQUIDCEXTERN int stringHasCntl(const char *);
901 SQUIDCEXTERN void linklistPush(link_list **, void *);
902 SQUIDCEXTERN void *linklistShift(link_list **);
903 SQUIDCEXTERN int xrename(const char *from, const char *to);
904 SQUIDCEXTERN int isPowTen(int);
905 SQUIDCEXTERN void parseEtcHosts(void);
906 SQUIDCEXTERN int getMyPort(void);
907
908 SQUIDCEXTERN char *strwordtok(char *buf, char **t);
909 SQUIDCEXTERN void strwordquote(MemBuf * mb, const char *str);
910
911
912
913 /*
914 * ipc.c
915 */
916 SQUIDCEXTERN int ipcCreate(int type,
917 const char *prog,
918 const char *const args[],
919 const char *name,
920 int *rfd,
921 int *wfd);
922
923 /* CacheDigest */
924 SQUIDCEXTERN CacheDigest *cacheDigestCreate(int capacity, int bpe);
925 SQUIDCEXTERN void cacheDigestDestroy(CacheDigest * cd);
926 SQUIDCEXTERN CacheDigest *cacheDigestClone(const CacheDigest * cd);
927 SQUIDCEXTERN void cacheDigestClear(CacheDigest * cd);
928 SQUIDCEXTERN void cacheDigestChangeCap(CacheDigest * cd, int new_cap);
929 SQUIDCEXTERN int cacheDigestTest(const CacheDigest * cd, const cache_key * key);
930 SQUIDCEXTERN void cacheDigestAdd(CacheDigest * cd, const cache_key * key);
931 SQUIDCEXTERN void cacheDigestDel(CacheDigest * cd, const cache_key * key);
932 SQUIDCEXTERN size_t cacheDigestCalcMaskSize(int cap, int bpe);
933 SQUIDCEXTERN int cacheDigestBitUtil(const CacheDigest * cd);
934 SQUIDCEXTERN void cacheDigestGuessStatsUpdate(cd_guess_stats * stats, int real_hit, int guess_hit);
935 SQUIDCEXTERN void cacheDigestGuessStatsReport(const cd_guess_stats * stats, StoreEntry * sentry, const char *label);
936 SQUIDCEXTERN void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e);
937
938 SQUIDCEXTERN void internalStart(HttpRequest *, StoreEntry *);
939 SQUIDCEXTERN int internalCheck(const char *urlpath);
940 SQUIDCEXTERN int internalStaticCheck(const char *urlpath);
941 SQUIDCEXTERN char *internalLocalUri(const char *dir, const char *name);
942 SQUIDCEXTERN char *internalRemoteUri(const char *, u_short, const char *, const char *);
943 SQUIDCEXTERN const char *internalHostname(void);
944 SQUIDCEXTERN int internalHostnameIs(const char *);
945
946 #if USE_CARP
947 SQUIDCEXTERN void carpInit(void);
948 SQUIDCEXTERN peer *carpSelectParent(HttpRequest *);
949 #endif
950
951 /* helper.c */
952 SQUIDCEXTERN void helperOpenServers(helper * hlp);
953 SQUIDCEXTERN void helperStatefulOpenServers(statefulhelper * hlp);
954 SQUIDCEXTERN void helperSubmit(helper * hlp, const char *buf, HLPCB * callback, void *data);
955 SQUIDCEXTERN void helperStatefulSubmit(statefulhelper * hlp, const char *buf, HLPSCB * callback, void *data, helper_stateful_server * lastserver);
956 SQUIDCEXTERN void helperStats(StoreEntry * sentry, helper * hlp);
957 SQUIDCEXTERN void helperStatefulStats(StoreEntry * sentry, statefulhelper * hlp);
958 SQUIDCEXTERN void helperShutdown(helper * hlp);
959 SQUIDCEXTERN void helperStatefulShutdown(statefulhelper * hlp);
960 SQUIDCEXTERN helper *helperCreate(const char *);
961 SQUIDCEXTERN statefulhelper *helperStatefulCreate(const char *);
962 SQUIDCEXTERN void helperFree(helper *);
963 SQUIDCEXTERN void helperStatefulFree(statefulhelper *);
964 SQUIDCEXTERN void helperStatefulReset(helper_stateful_server * srv);
965 SQUIDCEXTERN void helperStatefulReleaseServer(helper_stateful_server * srv);
966 SQUIDCEXTERN void *helperStatefulServerGetData(helper_stateful_server * srv);
967 SQUIDCEXTERN helper_stateful_server *helperStatefulDefer(statefulhelper *);
968
969
970
971 #if USE_LEAKFINDER
972 SQUIDCEXTERN void leakInit(void);
973 SQUIDCEXTERN void *leakAddFL(void *, const char *, int);
974 SQUIDCEXTERN void *leakTouchFL(void *, const char *, int);
975 SQUIDCEXTERN void *leakFreeFL(void *, const char *, int);
976 #endif
977
978 /* logfile.c */
979 SQUIDCEXTERN Logfile *logfileOpen(const char *path, size_t bufsz, int);
980 SQUIDCEXTERN void logfileClose(Logfile * lf);
981 SQUIDCEXTERN void logfileRotate(Logfile * lf);
982 SQUIDCEXTERN void logfileWrite(Logfile * lf, void *buf, size_t len);
983 SQUIDCEXTERN void logfileFlush(Logfile * lf);
984 #if STDC_HEADERS
985 SQUIDCEXTERN void
986 logfilePrintf(Logfile * lf, const char *fmt,...) PRINTF_FORMAT_ARG2;
987 #else
988 SQUIDCEXTERN void logfilePrintf(va_alist);
989 #endif
990
991 /*
992 * Removal Policies
993 */
994 SQUIDCEXTERN RemovalPolicy *createRemovalPolicy(RemovalPolicySettings * settings);
995
996 /*
997 * prototypes for system functions missing from system includes
998 */
999
1000 #ifdef _SQUID_SOLARIS_
1001
1002 SQUIDCEXTERN int getrusage(int, struct rusage *);
1003 SQUIDCEXTERN int getpagesize(void);
1004 #if !defined(_XPG4_2) && !(defined(__EXTENSIONS__) || \
1005 (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)))
1006 SQUIDCEXTERN int gethostname(char *, int);
1007 #endif
1008 #endif
1009
1010 /*
1011 * hack to allow snmp access to the statistics counters
1012 */
1013 SQUIDCEXTERN StatCounters *snmpStatGet(int);
1014
1015 /* Vary support functions */
1016 SQUIDCEXTERN int varyEvaluateMatch(StoreEntry * entry, HttpRequest * req);
1017
1018 /* CygWin & Windows NT Port */
1019 /* win32.c */
1020 #ifdef _SQUID_WIN32_
1021 #ifdef USE_WIN32_SERVICE
1022 SQUIDCEXTERN int WIN32_Subsystem_Init(int *, char ***);
1023 #else
1024 SQUIDCEXTERN int WIN32_Subsystem_Init(void);
1025 #endif
1026 SQUIDCEXTERN void WIN32_sendSignal(int);
1027 SQUIDCEXTERN void WIN32_Abort(int);
1028 SQUIDCEXTERN void WIN32_Exit(void);
1029 SQUIDCEXTERN void WIN32_SetServiceCommandLine(void);
1030 SQUIDCEXTERN void WIN32_InstallService(void);
1031 SQUIDCEXTERN void WIN32_RemoveService(void);
1032 #endif /* _SQUID_WIN32_ */
1033 #ifdef _SQUID_MSWIN_
1034
1035 SQUIDCEXTERN int WIN32_getrusage(int, struct rusage *);
1036 #endif
1037
1038 /* external_acl.c */
1039 SQUIDCEXTERN void parse_externalAclHelper(external_acl **);
1040 SQUIDCEXTERN void dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl *);
1041 SQUIDCEXTERN void free_externalAclHelper(external_acl **);
1042 typedef void EAH(void *data, void *result);
1043 SQUIDCEXTERN void externalAclLookup(ACLChecklist * ch, void *acl_data, EAH * handler, void *data);
1044 SQUIDCEXTERN void externalAclInit(void);
1045 SQUIDCEXTERN void externalAclShutdown(void);
1046 SQUIDCEXTERN char *strtokFile(void);
1047
1048 #endif /* SQUID_PROTOS_H */