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