Imported Upstream version 2.23.05
[hcoop/zz_old/debian/webalizer.git] / hashtab.h
1 #ifndef _HASHTAB_H
2 #define _HASHTAB_H
3
4 typedef struct hnode *HNODEPTR; /* site node (host) pointer */
5 typedef struct unode *UNODEPTR; /* url node pointer */
6 typedef struct rnode *RNODEPTR; /* referrer node */
7 typedef struct anode *ANODEPTR; /* user agent node pointer */
8 typedef struct snode *SNODEPTR; /* Search string node pointer */
9 typedef struct inode *INODEPTR; /* user (ident) node pointer */
10 #ifdef USE_DNS
11 typedef 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
20 struct 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
27 struct 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
37 struct 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
46 struct rnode { char *string; /* referrer hash table struct */
47 int flag;
48 u_int64_t count;
49 struct rnode *next; };
50
51 struct anode { char *string;
52 int flag;
53 u_int64_t count;
54 struct anode *next; };
55
56 struct snode { char *string; /* search string struct */
57 u_int64_t count;
58 struct snode *next; };
59
60 struct 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
69 extern HNODEPTR sm_htab[MAXHASH]; /* hash tables */
70 extern HNODEPTR sd_htab[MAXHASH];
71 extern UNODEPTR um_htab[MAXHASH]; /* for hits, sites, */
72 extern RNODEPTR rm_htab[MAXHASH]; /* referrers and agents... */
73 extern ANODEPTR am_htab[MAXHASH];
74 extern SNODEPTR sr_htab[MAXHASH]; /* search string table */
75 extern INODEPTR im_htab[MAXHASH]; /* ident table (username) */
76 #ifdef USE_DNS
77 extern DNODEPTR host_table[MAXHASH]; /* DNS resolver table */
78 #endif
79
80 extern int put_hnode(char *, int, u_int64_t, u_int64_t, double,
81 u_int64_t *, u_int64_t, u_int64_t, char *, HNODEPTR *);
82 extern int put_unode(char *, int, u_int64_t, double, u_int64_t *,
83 u_int64_t, u_int64_t, UNODEPTR *);
84 extern int put_inode(char *, int, u_int64_t, u_int64_t, double,
85 u_int64_t *, u_int64_t, u_int64_t, INODEPTR *);
86 extern int put_rnode(char *, int, u_int64_t, u_int64_t *, RNODEPTR *);
87 extern int put_anode(char *, int, u_int64_t, u_int64_t *, ANODEPTR *);
88 extern int put_snode(char *, u_int64_t, SNODEPTR *);
89
90 #ifdef USE_DNS
91 extern int put_dnode(char *, void *, int, DNODEPTR *);
92 extern void del_dlist(DNODEPTR *);
93 #endif
94
95 extern void del_htabs(); /* delete hash tables */
96 extern void del_hlist(HNODEPTR *); /* delete host htab */
97 extern void del_ulist(UNODEPTR *); /* delete url htab */
98 extern void del_rlist(RNODEPTR *); /* delete referrer htab */
99 extern void del_alist(ANODEPTR *); /* delete host htab */
100 extern void del_slist(SNODEPTR *); /* delete host htab */
101 extern void del_ilist(INODEPTR *); /* delete host htab */
102
103 extern void month_update_exit(u_int64_t);
104 extern u_int64_t tot_visit(HNODEPTR *);
105 extern char *find_url(char *);
106
107 #endif /* _HASHTAB_H */