#define HASHSIZE 2048 struct list_head { struct list_head *next; struct list_head *prev; void *data; }; struct list_t { struct list_head *begin; struct list_head *end; //struct list_head *current; unsigned long count; }; struct hash_bucket { void *data; unique_t unique; /* Basically For IPs */ struct hash_bucket *next; }; struct hash_table { struct hash_bucket *table[HASHSIZE]; }; /* List Functions */ extern struct list_head *list_add(struct list_t *list, void *data, size_t size); extern void list_del(struct list_t *list, struct list_head *item); /* nf - No Free, doesn't free data */ extern void *list_del_nf(struct list_t *list, struct list_head *item); extern void list_init(struct list_t *list); extern void list_do(struct list_t *list, void (*function)(void *data)); /* Hash Functions */ extern hash_t hash(void *in, size_t length); extern void hash_table_init(struct hash_table *t); extern void *hash_find(struct hash_table *tab, hash_t ha, unique_t uni); extern void *hash_findu(struct hash_table *tab, unique_t uni); extern void *hash_add(struct hash_table *tab, unique_t uni, void *data, size_t datasize); extern void *hash_add_lose(struct hash_table *tab, unique_t uni, void *data, size_t datasize); extern void *hash_add_ncp(struct hash_table *tab, unique_t uni, void *data); extern void hash_del(struct hash_table *tab, hash_t ha, unique_t uni);