1 #ifndef __HASH__
2 #define __HASH__
3 
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 #include "qsheff_parser.h"
8 
9 #define NUM_HASH 5381
10 #define CDB_HASHSTART 5381
11 #define RECVFROM 16
12 #define MAIL 256
13 #define SUBJECT 256
14 
15 typedef struct IP_bucket IP_bucket;
16 struct IP_bucket {
17 	char src;
18         char IP[RECVFROM];
19         IP_bucket *next;
20 };
21 extern IP_bucket* IP_bucket_arr[NUM_HASH];
22 
23 
24 typedef struct bucket bucket;
25 struct bucket {
26 	char mail[MAIL];
27 	char subject[SUBJECT];
28 	char recvfrom[RECVFROM];
29 	int count;
30 	int is_spammer;
31 	bucket *next;
32 };
33 extern bucket* bucket_arr[NUM_HASH];
34 
35 extern unsigned int
36 cdbhash(char *buf, unsigned int len);
37 
38 extern void
39 hash_add(const char *subject, const char *recvfrom, const char *mail, unsigned int h);
40 
41 extern void
42 hash_IP(const char *IP, char src, unsigned int h);
43 
44 extern bucket*
45 hash_lookup(const char *target, unsigned int h);
46 
47 extern int
48 hash_lookup_IP(const char *target, unsigned int h);
49 
50 extern void
51 free_hash_tables(void);
52 
53 
54 #endif
55