📄 structs.h
字号:
peer *hit; peer_t hit_type;#if ALLOW_SOURCE_PING peer *secho;#endif ping_data ping; aclCheck_t *acl_checklist;};struct _pingerEchoData { struct in_addr to; unsigned char opcode; int psize; char payload[PINGER_PAYLOAD_SZ];};struct _pingerReplyData { struct in_addr from; unsigned char opcode; int rtt; int hops; int psize; char payload[PINGER_PAYLOAD_SZ];};struct _icp_common_t { unsigned char opcode; /* opcode */ unsigned char version; /* version number */ unsigned short length; /* total length (bytes) */ u_num32 reqnum; /* req number (req'd for UDP) */ u_num32 flags; u_num32 pad; u_num32 shostid; /* sender host id */};struct _iostats { struct { int reads; int reads_deferred; int read_hist[16]; int writes; int write_hist[16]; } Http, Ftp, Gopher, Wais;};struct _mem_node { char *data; int len; mem_node *next;};struct _mem_hdr { mem_node *head; mem_node *tail; int origin_offset;};/* keep track each client receiving data from that particular StoreEntry */struct _store_client { int type; off_t copy_offset; off_t seen_offset; size_t copy_size; char *copy_buf; STCB *callback; void *callback_data; StoreEntry *entry; /* ptr to the parent StoreEntry, argh! */ int swapin_fd; struct { unsigned int disk_io_pending:1; unsigned int store_copying:1; unsigned int copy_event_pending:1; } flags; store_client *next;#if DELAY_POOLS delay_id delay_id;#endif};/* This structure can be freed while object is purged out from memory */struct _MemObject { method_t method; char *url; mem_hdr data_hdr; off_t inmem_hi; off_t inmem_lo; store_client *clients; int nclients; struct { off_t queue_offset; /* relative to in-mem data */ off_t done_offset; /* relative to swap file with meta headers! */ int fd; void *ctrl; } swapout; HttpReply *reply; request_t *request; struct timeval start_ping; IRCB *ping_reply_callback; void *ircb_data; int fd; /* FD of client creating this entry */ struct { STABH *callback; void *data; } abort; char *log_url; dlink_node lru; int id; ssize_t object_sz; size_t swap_hdr_sz;};struct _StoreEntry { /* first two items must be same as hash_link */ const cache_key *key; StoreEntry *next; MemObject *mem_obj; time_t timestamp; time_t lastref; time_t expires; time_t lastmod; size_t swap_file_sz; u_short refcount; u_short flags; int swap_file_number; dlink_node lru; u_short lock_count; /* Assume < 65536! */ mem_status_t mem_status:3; ping_status_t ping_status:3; store_status_t store_status:3; swap_status_t swap_status:3;};struct _SwapDir { char *path; int l1; int l2; int cur_size; int max_size; int suggest; fileMap *map; int swaplog_fd; struct { unsigned int selected:1; unsigned int read_only:1; } flags;};struct _request_flags { unsigned int range:1; unsigned int nocache:1; unsigned int ims:1; unsigned int auth:1; unsigned int cachable:1; unsigned int hierarchical:1; unsigned int loopdetect:1; unsigned int proxy_keepalive:1; unsigned int proxying:1; unsigned int refresh:1; unsigned int used_proxy_auth:1; unsigned int redirected:1; unsigned int need_validation:1;#if HTTP_VIOLATIONS unsigned int nocache_hack:1; /* for changing/ignoring no-cache requests */#endif unsigned int accelerated:1; unsigned int internal:1;};struct _request_t { method_t method; protocol_t protocol; char login[MAX_LOGIN_SZ]; char host[SQUIDHOSTNAMELEN + 1]; char user_ident[USER_IDENT_SZ]; /* from proxy auth or ident server */ u_short port; String urlpath; char *canonical; int link_count; /* free when zero */ request_flags flags; HttpHdrCc *cache_control; HttpHdrRange *range; float http_ver; time_t ims; int imslen; int max_forwards; struct in_addr client_addr; struct in_addr my_addr; HttpHeader header; char *body; size_t body_sz; HierarchyLogEntry hier; err_type err_type; char *peer_login; /* Configured peer login:password */};struct _cachemgr_passwd { char *passwd; wordlist *actions; cachemgr_passwd *next;};struct _refresh_t { char *pattern; regex_t compiled_pattern; time_t min; double pct; time_t max; refresh_t *next; struct { unsigned int icase:1;#if HTTP_VIOLATIONS unsigned int override_expire:1; unsigned int override_lastmod:1; unsigned int reload_into_ims:1; unsigned int ignore_reload:1;#endif } flags;};struct _CommWriteStateData { char *buf; size_t size; off_t offset; CWCB *handler; void *handler_data; FREE *free_func;};struct _ErrorState { err_type type; int page_id; http_status http_status; request_t *request; char *url; int xerrno; char *host; u_short port; char *dnsserver_msg; time_t ttl; struct in_addr src_addr; char *redirect_url; ERCB *callback; void *callback_data; struct { unsigned int flag_cbdata:1; } flags; struct { char *request; char *reply; } ftp; char *request_hdrs; wordlist *ftp_server_msg;};/* * "very generic" histogram; * see important comments on hbase_f restrictions in StatHist.c */struct _StatHist { int *bins; int capacity; double min; double max; double scale; hbase_f *val_in; /* e.g., log() for log-based histogram */ hbase_f *val_out; /* e.g., exp() for log based histogram */};/* * if you add a field to StatCounters, * you MUST sync statCountersInitSpecial, statCountersClean, and statCountersCopy */struct _StatCounters { struct { int clients; int requests; int hits; int errors; kb_t kbytes_in; kb_t kbytes_out; kb_t hit_kbytes_out; StatHist miss_svc_time; StatHist nm_svc_time; StatHist nh_svc_time; StatHist hit_svc_time; StatHist all_svc_time; } client_http; struct { struct { int requests; int errors; kb_t kbytes_in; kb_t kbytes_out; } all , http, ftp, other; } server; struct { int pkts_sent; int queries_sent; int replies_sent; int pkts_recv; int queries_recv; int replies_recv; int hits_sent; int hits_recv; int replies_queued; int replies_dropped; kb_t kbytes_sent; kb_t q_kbytes_sent; kb_t r_kbytes_sent; kb_t kbytes_recv; kb_t q_kbytes_recv; kb_t r_kbytes_recv; StatHist query_svc_time; StatHist reply_svc_time; int query_timeouts; int times_used; } icp; struct { int requests; } unlink; struct { StatHist svc_time; } dns; struct { int times_used; kb_t kbytes_sent; kb_t kbytes_recv; kb_t memory; int msgs_sent; int msgs_recv;#if USE_CACHE_DIGESTS cd_guess_stats guess;#endif StatHist on_xition_count; } cd; struct { int times_used; } netdb; int page_faults; int select_loops; int select_fds; double select_time; double cputime; struct timeval timestamp; StatHist comm_icp_incoming; StatHist comm_http_incoming; StatHist select_fds_hist; struct { struct { int opens; int closes; int reads; int writes; int seeks; int unlinks; } disk; struct { int accepts; int sockets; int connects; int binds; int closes; int reads; int writes; int recvfroms; int sendtos; } sock;#if HAVE_POLL int polls;#else int selects;#endif } syscalls; int swap_files_cleaned; int aborted_requests;};/* per header statistics */struct _HttpHeaderStat { const char *label; HttpHeaderMask *owner_mask; StatHist hdrUCountDistr; StatHist fieldTypeDistr; StatHist ccTypeDistr; int parsedCount; int ccParsedCount; int destroyedCount; int busyDestroyedCount;};struct _tlv { char type; int length; void *value; tlv *next;};struct _storeSwapLogData { char op; int swap_file_number; time_t timestamp; time_t lastref; time_t expires; time_t lastmod; size_t swap_file_sz; u_short refcount; u_short flags; unsigned char key[MD5_DIGEST_CHARS];};/* object to track per-action memory usage (e.g. #idle objects) */struct _MemMeter { size_t level; /* current level (count or volume) */ size_t hwater_level; /* high water mark */ time_t hwater_stamp; /* timestamp of last high water mark change */};/* object to track per-pool memory usage (alloc = inuse+idle) */struct _MemPoolMeter { MemMeter alloc; MemMeter inuse; MemMeter idle; gb_t saved; gb_t total;};/* a pool is a [growing] space for objects of the same size */struct _MemPool { const char *label; size_t obj_size; Stack pstack; /* stack for free pointers */ MemPoolMeter meter;};struct _ClientInfo { /* first two items must be equivalent to hash_link */ char *key; ClientInfo *next; struct in_addr addr; struct { int result_hist[LOG_TYPE_MAX]; int n_requests; kb_t kbytes_in; kb_t kbytes_out; kb_t hit_kbytes_out; } Http, Icp; struct { time_t time; int n_req; int n_denied; } cutoff;};struct _CacheDigest { /* public, read-only */ char *mask; /* bit mask */ size_t mask_size; /* mask size in bytes */ int capacity; /* expected maximum for .count, not a hard limit */ int bits_per_entry; /* number of bits allocated for each entry from capacity */ int count; /* number of digested entries */ int del_count; /* number of deletions performed so far */};struct _FwdServer { peer *peer; /* NULL --> origin server */ hier_code code; FwdServer *next;};struct _FwdState { int client_fd; StoreEntry *entry; request_t *request; FwdServer *servers; int server_fd; ErrorState *err; time_t start; int n_tries; struct { unsigned int dont_retry:1; } flags;};#if USE_HTCPstruct _htcpReplyData { int hit; HttpHeader hdr; u_num32 msg_id; double version; struct { /* cache-to-origin */ double rtt; int samp; int hops; } cto;};#endifstruct _helper_request { char *buf; HLPCB *callback; void *data;};struct _helper { wordlist *cmdline; dlink_list servers; dlink_list queue; const char *id_name; int n_to_start; int n_running; int ipc_type; time_t last_queue_warn; struct { int requests; int replies; int queue_size; int avg_svc_time; } stats;};struct _helper_server { int index; int rfd; int wfd; char *buf; size_t buf_sz; off_t offset; struct timeval dispatch_time; struct timeval answer_time; dlink_node link; helper *parent; helper_request *request; struct _helper_flags { unsigned int alive:1; unsigned int busy:1; unsigned int closing:1; unsigned int shutdown:1; } flags; struct { int uses; } stats;};/* * use this when you need to pass callback data to a blocking * operation, but you don't want to add that pointer to cbdata */struct _generic_cbdata { void *data;};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -