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