3 extern void accessLogLog(AccessLogEntry
*);
4 extern void accessLogRotate(void);
5 extern void accessLogClose(void);
6 extern void accessLogOpen(const char *);
7 extern void accessLogInit(void);
8 extern void hierarchyNote(HierarchyLogEntry
*, hier_code
, icp_ping_data
*, const char *);
10 extern aclCheck_t
*aclChecklistCreate(const struct _acl_access
*,
15 extern void aclNBCheck(aclCheck_t
*, PF
*, void *);
16 extern int aclCheckFast(const struct _acl_access
*A
, aclCheck_t
*);
17 extern void aclChecklistFree(aclCheck_t
*);
18 extern int aclMatchAcl(struct _acl
*, aclCheck_t
*);
19 extern void aclDestroyAccessList(struct _acl_access
**list
);
20 extern void aclDestroyAcls(acl
**);
21 extern void aclParseAccessLine(struct _acl_access
**);
22 extern void aclParseAclLine(acl
**);
23 extern struct _acl
*aclFindByName(const char *name
);
24 extern char *aclGetDenyInfoUrl(struct _acl_deny_info_list
**, const char *name
);
25 extern void aclParseDenyInfoLine(struct _acl_deny_info_list
**);
26 extern void aclDestroyDenyInfoList(struct _acl_deny_info_list
**);
27 extern void aclDestroyRegexList(struct _relist
*data
);
28 extern int aclMatchRegex(relist
* data
, const char *word
);
29 extern void aclParseRegexList(void *curlist
);
32 extern int aio_cancel(aio_result_t
*);
33 extern int aio_open(const char *, int, mode_t
, aio_result_t
*);
34 extern int aio_read(int, char *, int, off_t
, int, aio_result_t
*);
35 extern int aio_write(int, char *, int, off_t
, int, aio_result_t
*);
36 extern int aio_close(int, aio_result_t
*);
37 extern int aio_stat(const char *, struct stat
*, aio_result_t
*);
38 extern int aio_unlink(const char *, aio_result_t
*);
39 extern int aio_opendir(const char *, aio_result_t
*);
40 extern aio_result_t
*aio_poll_done(void);
43 extern void aioCancel(int);
44 extern void aioOpen(const char *, int, mode_t
, AIOCB
*, void *);
45 extern void aioClose(int);
46 extern void aioWrite(int, char *, int, AIOCB
*, void *);
47 extern void aioRead(int, char *, int, AIOCB
*, void *);
48 extern void aioStat(char *, struct stat
*, AIOCB
*, void *);
49 extern void aioUnlink(const char *, AIOCB
*, void *);
50 extern void aioCheckCallbacks(void);
52 extern int parseConfigFile(const char *file_name
);
53 extern void intlistDestroy(intlist
**);
54 extern void wordlistDestroy(wordlist
**);
55 extern void configFreeMemory(void);
57 extern void cbdataInit(void);
58 extern void cbdataAdd(void *p
);
59 extern void cbdataFree(void *p
);
60 extern void cbdataLock(void *p
);
61 extern void cbdataUnlock(void *p
);
62 extern int cbdataValid(void *p
);
63 extern void cbdataDump(StoreEntry
*);
65 extern void clientdbInit(void);
66 extern void clientdbUpdate(struct in_addr
, log_type
, protocol_t
);
67 extern int clientdbDeniedPercent(struct in_addr
);
68 extern void clientdbDump(StoreEntry
*);
69 extern CWCB clientWriteComplete
;
71 extern void clientAccessCheck(void *);
72 extern void clientAccessCheckDone(int, void *);
73 extern void icpProcessExpired(int fd
, void *);
74 extern int modifiedSince(StoreEntry
*, request_t
*);
75 extern char *clientConstructTraceEcho(clientHttpRequest
*);
76 extern void clientPurgeRequest(clientHttpRequest
*);
77 extern int checkNegativeHit(StoreEntry
*);
80 extern const char *proxyAuthenticate(const char *headers
);
81 #endif /* USE_PROXY_AUTH */
84 extern int commSetNonBlocking(int fd
);
85 extern void commSetCloseOnExec(int fd
);
86 extern int comm_accept(int fd
, struct sockaddr_in
*, struct sockaddr_in
*);
87 extern void comm_close(int fd
);
88 extern void commConnectStart(int fd
, const char *, u_short
, CNCB
*, void *);
89 extern int comm_connect_addr(int sock
, const struct sockaddr_in
*);
90 extern int comm_init(void);
91 extern int comm_listen(int sock
);
92 extern int comm_open(int, int, struct in_addr
, u_short port
, int, const char *note
);
93 extern u_short
comm_local_port(int fd
);
95 extern int comm_poll(time_t);
97 extern int comm_select(time_t);
99 extern void commSetSelect(int, unsigned int, PF
*, void *, time_t);
100 extern void comm_add_close_handler(int fd
, PF
*, void *);
101 extern void comm_remove_close_handler(int fd
, PF
*, void *);
102 extern int comm_udp_sendto(int fd
, const struct sockaddr_in
*, int size
, const char *buf
, int len
);
103 extern void comm_write(int fd
,
109 extern void commCallCloseHandlers(int fd
);
110 extern int commSetTimeout(int fd
, int, PF
*, void *);
111 extern void commSetDefer(int fd
, DEFER
* func
, void *);
113 extern void _db_init(const char *logfile
, const char *options
);
114 extern void _db_rotate_log(void);
117 extern void _db_print(const char *,...);
119 extern void _db_print();
123 extern int file_open(const char *path
, int mode
, FOCB
*, void *callback_data
);
124 extern void file_close(int fd
);
125 extern int file_write(int fd
,
131 extern int file_read(int fd
,
137 extern int file_walk(int fd
, FILE_WALK_HD
*, void *, FILE_WALK_LHD
*, void *);
138 extern int disk_init(void);
139 extern int diskWriteIsComplete(int);
141 extern void dnsShutdownServers(void);
142 extern void dnsOpenServers(void);
143 extern dnsserver_t
*dnsGetFirstAvailable(void);
144 extern void dnsStats(StoreEntry
*);
145 extern void dnsFreeMemory(void);
147 extern char *squid_error_url(const char *, int, int, const char *, int, const char *);
148 extern char *squid_error_request(const char *, int, int);
149 extern char *access_denied_msg(int, int, const char *, const char *);
150 extern char *access_denied_redirect(int, int, const char *, const char *, const char *);
152 extern char *proxy_denied_msg(int, int, const char *, const char *);
153 #endif /* USE_PROXY_AUTH */
154 extern char *authorization_needed_msg(const request_t
*, const char *);
155 extern void errorpageFreeMemory(void);
158 extern void eventAdd(const char *name
, EVH
* func
, void *arg
, time_t when
);
159 extern void eventRun(void);
160 extern time_t eventNextTime(void);
161 extern void eventDelete(EVH
* func
, void *arg
);
163 extern void fd_close(int fd
);
164 extern void fd_open(int fd
, unsigned int type
, const char *);
165 extern void fd_note(int fd
, const char *);
166 extern void fd_bytes(int fd
, int len
, unsigned int type
);
167 extern void fdFreeMemory(void);
168 extern void fdDumpOpen(void);
170 extern void fdstat_init(void);
171 extern int fdstat_are_n_free_fd(int);
173 extern fileMap
*file_map_create(int);
174 extern int file_map_allocate(fileMap
*, int);
175 extern int file_map_bit_set(fileMap
*, int);
176 extern int file_map_bit_test(fileMap
*, int);
177 extern void file_map_bit_reset(fileMap
*, int);
178 extern void filemapFreeMemory(fileMap
*);
181 extern void fqdncache_nbgethostbyaddr(struct in_addr
, FQDNH
*, void *);
182 extern int fqdncacheUnregister(struct in_addr
, void *);
183 extern const char *fqdncache_gethostbyaddr(struct in_addr
, int flags
);
184 extern void fqdncache_init(void);
185 extern void fqdnStats(StoreEntry
*);
186 extern void fqdncacheReleaseInvalid(const char *);
187 extern const char *fqdnFromAddr(struct in_addr
);
188 extern int fqdncacheQueueDrain(void);
189 extern void fqdncacheFreeMemory(void);
190 extern void fqdncache_restart(void);
192 extern void ftpStart(request_t
* req
, StoreEntry
* entry
);
194 extern void gopherStart(StoreEntry
*);
195 extern int gopherCachable(const char *);
199 extern hash_table
*hash_create(HASHCMP
*, int, HASHHASH
*);
200 extern int hash_insert(hash_table
*, const char *, void *);
201 extern int hash_delete(hash_table
*, const char *);
202 extern int hash_delete_link(hash_table
*, hash_link
*);
203 extern int hash_join(hash_table
*, hash_link
*);
204 extern int hash_remove_link(hash_table
*, hash_link
*);
206 /* searching, accessing */
207 extern hash_link
*hash_lookup(hash_table
*, const void *);
208 extern hash_link
*hash_first(hash_table
*);
209 extern hash_link
*hash_next(hash_table
*);
210 extern hash_link
*hash_get_bucket(hash_table
*, unsigned int);
211 extern void hashFreeMemory(hash_table
*);
212 extern HASHHASH hash_string
;
213 extern HASHHASH hash_url
;
214 extern HASHHASH hash4
;
216 extern int httpCachable(method_t
);
217 extern void httpStart(request_t
*, StoreEntry
*, peer
*);
218 extern void httpParseReplyHeaders(const char *, struct _http_reply
*);
219 extern void httpProcessReplyHeader(HttpStateData
*, const char *, int);
220 extern void httpReplyHeaderStats(StoreEntry
*);
221 extern size_t httpBuildRequestHeader(request_t
* request
,
222 request_t
* orig_request
,
229 extern int httpAnonAllowed(const char *line
);
230 extern int httpAnonDenied(const char *line
);
231 extern char *httpReplyHeader(double ver
,
239 extern void icmpOpen(void);
240 extern void icmpClose(void);
241 extern void icmpPing(struct in_addr to
);
242 extern void icmpSourcePing(struct in_addr to
, const icp_common_t
*, const char *url
);
243 extern void icmpDomainPing(struct in_addr to
, const char *domain
);
245 extern void *icpCreateMessage(icp_opcode opcode
,
250 extern void icpUdpSend(int fd
,
251 const struct sockaddr_in
*,
255 extern PF icpHandleUdp
;
256 extern PF httpAccept
;
257 extern DEFER httpAcceptDefer
;
259 extern PF snmpAccept
;
260 #endif /* SQUID_SNMP */
261 extern void icpSendERROR(int fd
,
266 extern void AppendUdp(icpUdpData
*);
267 extern PF icpUdpReply
;
268 extern void icpHandleIcpV3(int, struct sockaddr_in
, char *, int);
269 extern int icpCheckUdpHit(StoreEntry
*, request_t
* request
);
271 extern int icpCheckUdpHitObj(StoreEntry
* e
, request_t
* r
, icp_common_t
* h
, int len
);
272 extern void *icpCreateHitObjMessage(icp_opcode
, int, const char *, int, int, StoreEntry
*);
275 extern void ipcache_nbgethostbyname(const char *name
,
278 extern EVH ipcache_purgelru
;
279 extern const ipcache_addrs
*ipcache_gethostbyname(const char *, int flags
);
280 extern void ipcacheInvalidate(const char *);
281 extern void ipcacheReleaseInvalid(const char *);
282 extern void ipcacheShutdownServers(void);
283 extern void ipcache_init(void);
284 extern void stat_ipcache_get(StoreEntry
*);
285 extern int ipcacheQueueDrain(void);
286 extern void ipcacheCycleAddr(const char *name
);
287 extern void ipcacheMarkBadAddr(const char *name
, struct in_addr
);
288 extern void ipcacheMarkGoodAddr(const char *name
, struct in_addr
);
289 extern void ipcacheFreeMemory(void);
290 extern ipcache_addrs
*ipcacheCheckNumeric(const char *name
);
291 extern void ipcache_restart(void);
292 extern int ipcacheUnregister(const char *name
, void *data
);
294 extern char *mime_get_header(const char *mime
, const char *header
);
295 extern char *mime_headers_end(const char *mime
);
296 extern int mk_mime_hdr(char *result
, const char *type
, int size
, time_t ttl
, time_t lmt
);
297 extern void mimeInit(char *filename
);
298 extern char *mimeGetContentEncoding(const char *fn
);
299 extern char *mimeGetContentType(const char *fn
);
300 extern char *mimeGetIcon(const char *fn
);
301 extern char mimeGetTransferMode(const char *fn
);
303 extern int mcastSetTtl(int, int);
304 extern IPH mcastJoinGroups
;
306 /* Labels for hierachical log file */
307 /* put them all here for easier reference when writing a logfile analyzer */
310 extern peer
*getFirstPeer(void);
311 extern peer
*getFirstUpParent(request_t
*);
312 extern peer
*getNextPeer(peer
*);
313 extern peer
*getSingleParent(request_t
*);
314 extern int neighborsCount(request_t
*);
315 extern int neighborsUdpPing(request_t
*,
320 extern void neighborAddAcl(const char *, const char *);
321 extern void neighborsUdpAck(const char *, icp_common_t
*, const struct sockaddr_in
*, StoreEntry
*);
322 extern void neighborAdd(const char *, const char *, int, int, int, int, int);
323 extern void neighbors_open(int);
324 extern peer
*peerFindByName(const char *);
325 extern peer
*getDefaultParent(request_t
* request
);
326 extern peer
*getRoundRobinParent(request_t
* request
);
327 extern int neighborUp(const peer
* e
);
328 extern void peerDestroy(peer
* e
);
329 extern char *neighborTypeStr(const peer
* e
);
330 extern void peerCheckConnectStart(peer
*);
332 extern void netdbHandlePingReply(const struct sockaddr_in
*from
, int hops
, int rtt
);
333 extern void netdbPingSite(const char *hostname
);
334 extern void netdbInit(void);
335 extern void netdbDump(StoreEntry
*);
336 extern int netdbHops(struct in_addr
);
337 extern void netdbFreeMemory(void);
338 extern int netdbHostHops(const char *host
);
339 extern int netdbHostRtt(const char *host
);
340 extern void netdbUpdatePeer(request_t
*, peer
* e
, int rtt
, int hops
);
342 extern void objcachePasswdAdd(cachemgr_passwd
**, char *, wordlist
*);
343 extern void objcachePasswdDestroy(cachemgr_passwd
** a
);
344 extern void objcacheStart(int fd
, StoreEntry
*);
345 extern void objcacheInit(void);
347 extern void peerSelect(request_t
*, StoreEntry
*, PSC
*, PSC
*, void *data
);
348 extern peer
*peerGetSomeParent(request_t
*, hier_code
*);
349 extern void peerSelectInit(void);
351 extern void protoDispatch(int, StoreEntry
*, request_t
*);
353 extern int protoUnregister(StoreEntry
*, request_t
*);
354 extern void protoStart(int, StoreEntry
*, peer
*, request_t
*);
355 extern int protoAbortFetch(StoreEntry
* entry
);
356 extern DEFER protoCheckDeferRead
;
358 extern void redirectStart(clientHttpRequest
*, RH
*, void *);
359 extern void redirectOpenServers(void);
360 extern void redirectShutdownServers(void);
361 extern void redirectStats(StoreEntry
*);
362 extern int redirectUnregister(const char *url
, void *);
363 extern void redirectFreeMemory(void);
365 extern void refreshAddToList(const char *, int, time_t, int, time_t);
366 extern int refreshCheck(const StoreEntry
*, const request_t
*, time_t delta
);
367 extern time_t getMaxAge(const char *url
);
371 extern void serverConnectionsClose(void);
372 extern void shut_down(int);
375 extern void start_announce(void *unused
);
376 extern void sslStart(int fd
, const char *, request_t
*, size_t * sz
);
377 extern void waisStart(request_t
*, StoreEntry
*);
378 extern void storeDirClean(void *unused
);
379 extern void passStart(int, const char *, request_t
*, size_t *);
380 extern void identStart(int, ConnStateData
*, IDCB
* callback
);
382 extern void *pop(Stack
*);
383 extern int empty_stack(const Stack
*);
384 extern int full_stack(const Stack
*);
385 extern void push(Stack
*, void *);
386 extern void init_stack(Stack
*, int);
387 extern void stackFreeMemory(Stack
*);
389 extern void stat_init(cacheinfo
**, const char *);
390 extern void pconnHistCount(int, int);
392 /* To reduce memory fragmentation, we now store the memory version of an
393 * object in fixed size blocks of size PAGE_SIZE and instead of calling
394 * malloc and free, we manage our own fixed block free list.
397 extern char *get_free_4k_page(void);
398 extern char *get_free_8k_page(void);
399 extern void *get_free_request_t(void);
400 extern void *get_free_mem_obj(void);
401 extern mem_hdr
*memInit(void);
402 extern void put_free_4k_page(void *);
403 extern void put_free_8k_page(void *);
404 extern void put_free_request_t(void *);
405 extern void put_free_mem_obj(void *);
406 extern void stmemInit(void);
407 extern void stmemFreeMemory(void);
409 extern int memFreeDataUpto(mem_hdr
*, int);
410 extern void memAppend(mem_hdr
*, const char *, int);
411 extern ssize_t
memCopy(const mem_hdr
*, off_t
, char *, size_t);
412 extern void memFree(mem_hdr
*);
413 extern void memFreeData(mem_hdr
*);
417 /* ----------------------------------------------------------------- */
419 extern StoreEntry
*storeGet(const cache_key
*);
420 extern StoreEntry
*storeCreateEntry(const char *, const char *, int, method_t
);
421 extern void storeSetPublicKey(StoreEntry
*);
422 extern StoreEntry
*storeGetFirst(void);
423 extern StoreEntry
*storeGetNext(void);
424 extern void storeComplete(StoreEntry
*);
425 extern void storeInit(void);
426 extern int storeClientWaiting(const StoreEntry
*);
427 extern void storeAbort(StoreEntry
*, int);
428 extern void storeAppend(StoreEntry
*, const char *, int);
429 extern void storeLockObject(StoreEntry
*);
430 extern void storeSwapInStart(StoreEntry
*, SIH
*, void *data
);
431 extern int storeRelease(StoreEntry
*);
432 extern int storeUnlockObject(StoreEntry
*);
433 extern int storeUnregister(StoreEntry
*, void *);
434 extern void storeClientCopy(StoreEntry
* e
,
441 extern int storePendingNClients(const StoreEntry
*);
442 extern int storeWriteCleanLogs(int reopen
);
443 extern HASHCMP urlcmp
;
444 extern EVH storeMaintainSwapSpace
;
445 extern void storeExpireNow(StoreEntry
*);
446 extern void storeReleaseRequest(StoreEntry
*);
447 extern void storeRotateLog(void);
448 extern off_t
storeLowestMemReaderOffset(const StoreEntry
*);
449 extern void storeCloseLog(void);
450 extern void storeConfigure(void);
451 extern void storeNegativeCache(StoreEntry
*);
452 extern void storeFreeMemory(void);
453 extern int expiresMoreThan(time_t, time_t);
454 extern void storeClientListAdd(StoreEntry
*, void *);
455 extern void InvokeHandlers(StoreEntry
*);
456 extern int storeEntryValidToSend(StoreEntry
*);
457 extern void storeTimestampsSet(StoreEntry
*);
458 extern time_t storeExpiredReferenceAge(void);
459 extern void storeRegisterAbort(StoreEntry
* e
, STABH
* cb
, void *);
460 extern void storeUnregisterAbort(StoreEntry
* e
);
461 extern void storeMemObjectDump(MemObject
* mem
);
462 extern const char *storeUrl(const StoreEntry
*);
463 extern void storeCreateMemObject(StoreEntry
*, const char *, const char *);
466 extern const cache_key
*storeKeyDup(const cache_key
*);
467 extern void storeKeyFree(const cache_key
*);
468 extern const cache_key
*storeKeyScan(const char *);
469 extern const char *storeKeyText(const cache_key
*);
470 extern const cache_key
*storeKeyPublic(const char *, method_t
);
471 extern const cache_key
*storeKeyPrivate(const char *, method_t
, int);
472 extern int storeKeyHashBuckets(int);
473 extern HASHHASH storeKeyHashHash
;
474 extern HASHCMP storeKeyHashCmp
;
477 extern void storeAppendPrintf(StoreEntry
*, const char *,...);
479 extern void storeAppendPrintf();
482 extern char *storeSwapFullPath(int, char *);
483 extern char *storeSwapSubSubDir(int, char *);
484 extern int storeVerifySwapDirs(void);
485 extern void storeCreateSwapSubDirs(int);
486 extern const char *storeSwapPath(int);
487 extern int storeDirMapBitTest(int fn
);
488 extern void storeDirMapBitSet(int fn
);
489 extern void storeDirMapBitReset(int fn
);
490 extern int storeDirMapAllocate(void);
491 extern char *storeSwapDir(int);
492 extern FILE *storeDirOpenTmpSwapLog(int dirn
, int *clean_flag
);
493 extern void storeDirCloseTmpSwapLog(int dirn
);
494 extern void storeDirOpenSwapLogs(void);
495 extern void storeDirCloseSwapLogs(void);
496 extern char *storeDirSwapLogFile(int, const char *);
497 extern void storeDirSwapLog(const StoreEntry
*);
498 extern int storeDirNumber(int fileno
);
499 extern void storeDirUpdateSwapSize(int fn
, size_t size
, int sign
);
500 extern int storeDirProperFileno(int dirn
, int fn
);
502 extern const char *getMyHostname(void);
503 extern void safeunlink(const char *path
, int quiet
);
504 extern void death(int sig
);
505 extern void fatal(const char *message
);
506 extern void fatal_dump(const char *message
);
507 extern void sigusr2_handle(int sig
);
508 extern void sig_child(int sig
);
509 extern void leave_suid(void);
510 extern void enter_suid(void);
511 extern void no_suid(void);
512 extern void writePidFile(void);
513 extern void setSocketShutdownLifetimes(int);
514 extern void setMaxFD(void);
515 extern time_t getCurrentTime(void);
516 extern void normal_shutdown(void);
517 extern int percent(int, int);
518 extern void squid_signal(int sig
, SIGHDLR
*, int flags
);
519 extern pid_t
readPidFile(void);
520 extern struct in_addr
inaddrFromHostent(const struct hostent
*hp
);
521 extern int intAverage(int, int, int, int);
522 extern double doubleAverage(double, double, int, int);
523 extern void debug_trap(const char *);
524 extern void logsFlush(void);
525 extern char *checkNullString(char *p
);
527 extern void unlinkdInit(void);
528 extern void unlinkdClose(void);
529 extern void unlinkdUnlink(const char *);
531 extern char *url_convert_hex(char *org_url
, int allocate
);
532 extern char *url_escape(const char *url
);
533 extern protocol_t
urlParseProtocol(const char *);
534 extern method_t
urlParseMethod(const char *);
535 extern void urlInitialize(void);
536 extern request_t
*urlParse(method_t
, char *);
537 extern char *urlCanonical(const request_t
*, char *);
538 extern request_t
*requestLink(request_t
*);
539 extern void requestUnlink(request_t
*);
540 extern int matchDomainName(const char *d
, const char *h
);
541 extern int urlCheckRequest(const request_t
*);
542 extern int urlDefaultPort(protocol_t p
);
543 extern char *urlClean(char *);
544 extern char *urlCanonicalClean(const request_t
*);
547 extern void useragentOpenLog(void);
548 extern void useragentRotateLog(void);
549 extern void logUserAgent(const char *, const char *);
550 extern peer_t
parseNeighborType(const char *s
);
552 extern void errorSend(int fd
, ErrorState
*);
553 extern void errorAppendEntry(StoreEntry
*, ErrorState
*);
554 extern void errorInitialize(void);
555 extern ErrorState
*errorCon(err_type
, http_status
);
557 extern OBJH stat_io_get
;
558 extern OBJH stat_objects_get
;
559 extern OBJH stat_vmobjects_get
;
560 extern OBJH stat_utilization_get
;
561 extern OBJH statFiledescriptors
;
562 extern OBJH log_enable
;
563 extern OBJH info_get
;
564 extern OBJH server_list
;
565 extern OBJH neighborDumpNonPeers
;
566 extern OBJH dump_config
;
567 extern OBJH storeDirStats
;
568 extern OBJH pconnHistDump
;
569 extern void dump_peers(StoreEntry
*, peer
*);
571 extern void pconnPush(int, const char *host
, u_short port
);
572 extern int pconnPop(const char *host
, u_short port
);
573 extern void pconnInit(void);