Imported Upstream version 2.23.05
[hcoop/zz_old/debian/webalizer.git] / hashtab.h
CommitLineData
e015f748
CE
1#ifndef _HASHTAB_H
2#define _HASHTAB_H
3
4typedef struct hnode *HNODEPTR; /* site node (host) pointer */
5typedef struct unode *UNODEPTR; /* url node pointer */
6typedef struct rnode *RNODEPTR; /* referrer node */
7typedef struct anode *ANODEPTR; /* user agent node pointer */
8typedef struct snode *SNODEPTR; /* Search string node pointer */
9typedef struct inode *INODEPTR; /* user (ident) node pointer */
10#ifdef USE_DNS
11typedef struct dnode *DNODEPTR; /* DNS hash table node struct */
12#endif
13
14/* Object flags */
15#define OBJ_REG 0 /* Regular object */
16#define OBJ_HIDE 1 /* Hidden object */
17#define OBJ_GRP 2 /* Grouped object */
18
19#ifdef USE_DNS
20struct dnode { char *string; /* DNS node hash table struct */
21 struct sockaddr_storage addr;
22 int addrlen;
23 struct dnode *llist;
24 struct dnode *next; };
25#endif
26
27struct hnode { char *string; /* host hash table structure */
28 int flag;
29 u_int64_t count;
30 u_int64_t files;
31 u_int64_t visit; /* visit information */
32 u_int64_t tstamp;
33 char *lasturl;
34 double xfer;
35 struct hnode *next; };
36
37struct unode { char *string; /* url hash table structure */
38 int flag; /* Object type (REG, HIDE, GRP) */
39 u_int64_t count; /* requests counter */
40 u_int64_t files; /* files counter */
41 u_int64_t entry; /* entry page counter */
42 u_int64_t exit; /* exit page counter */
43 double xfer; /* xfer size in bytes */
44 struct unode *next; }; /* pointer to next node */
45
46struct rnode { char *string; /* referrer hash table struct */
47 int flag;
48 u_int64_t count;
49 struct rnode *next; };
50
51struct anode { char *string;
52 int flag;
53 u_int64_t count;
54 struct anode *next; };
55
56struct snode { char *string; /* search string struct */
57 u_int64_t count;
58 struct snode *next; };
59
60struct inode { char *string; /* host hash table struct */
61 int flag;
62 u_int64_t count;
63 u_int64_t files;
64 u_int64_t visit;
65 u_int64_t tstamp;
66 double xfer;
67 struct inode *next; };
68
69extern HNODEPTR sm_htab[MAXHASH]; /* hash tables */
70extern HNODEPTR sd_htab[MAXHASH];
71extern UNODEPTR um_htab[MAXHASH]; /* for hits, sites, */
72extern RNODEPTR rm_htab[MAXHASH]; /* referrers and agents... */
73extern ANODEPTR am_htab[MAXHASH];
74extern SNODEPTR sr_htab[MAXHASH]; /* search string table */
75extern INODEPTR im_htab[MAXHASH]; /* ident table (username) */
76#ifdef USE_DNS
77extern DNODEPTR host_table[MAXHASH]; /* DNS resolver table */
78#endif
79
80extern int put_hnode(char *, int, u_int64_t, u_int64_t, double,
81 u_int64_t *, u_int64_t, u_int64_t, char *, HNODEPTR *);
82extern int put_unode(char *, int, u_int64_t, double, u_int64_t *,
83 u_int64_t, u_int64_t, UNODEPTR *);
84extern int put_inode(char *, int, u_int64_t, u_int64_t, double,
85 u_int64_t *, u_int64_t, u_int64_t, INODEPTR *);
86extern int put_rnode(char *, int, u_int64_t, u_int64_t *, RNODEPTR *);
87extern int put_anode(char *, int, u_int64_t, u_int64_t *, ANODEPTR *);
88extern int put_snode(char *, u_int64_t, SNODEPTR *);
89
90#ifdef USE_DNS
91extern int put_dnode(char *, void *, int, DNODEPTR *);
92extern void del_dlist(DNODEPTR *);
93#endif
94
95extern void del_htabs(); /* delete hash tables */
96extern void del_hlist(HNODEPTR *); /* delete host htab */
97extern void del_ulist(UNODEPTR *); /* delete url htab */
98extern void del_rlist(RNODEPTR *); /* delete referrer htab */
99extern void del_alist(ANODEPTR *); /* delete host htab */
100extern void del_slist(SNODEPTR *); /* delete host htab */
101extern void del_ilist(INODEPTR *); /* delete host htab */
102
103extern void month_update_exit(u_int64_t);
104extern u_int64_t tot_visit(HNODEPTR *);
105extern char *find_url(char *);
106
107#endif /* _HASHTAB_H */