[CLEANUP] renamed include/haproxy to include/common
diff --git a/include/common/chtbl.h b/include/common/chtbl.h
new file mode 100644
index 0000000..38b495f
--- /dev/null
+++ b/include/common/chtbl.h
@@ -0,0 +1,63 @@
+/*
+ This File is copied from
+
+ http://www.oreilly.com/catalog/masteralgoc/index.html
+ Mastering Algorithms with C
+ By Kyle Loudon
+ ISBN: 1-56592-453-3
+ Publishd by O'Reilly
+
+ */
+
+/*****************************************************************************
+* *
+* ------------------------------- chtbl.h -------------------------------- *
+* *
+*****************************************************************************/
+
+#ifndef _COMMON_CHTBL_H
+#define _COMMON_CHTBL_H
+
+#include <stdlib.h>
+
+#include "list.h"
+
+/*****************************************************************************
+* *
+* Define a structure for chained hash tables. *
+* *
+*****************************************************************************/
+
+typedef struct CHTbl_ {
+
+ int buckets;
+
+ int (*h)(const void *key);
+ int (*match)(const void *key1, const void *key2);
+ void (*destroy)(void *data);
+
+ int size;
+ List *table;
+} CHTbl;
+
+/*****************************************************************************
+ * *
+ * --------------------------- Public Interface --------------------------- *
+ * *
+ *****************************************************************************/
+
+int chtbl_init(CHTbl *htbl, int buckets, int (*h)(const void *key), int
+ (*match)(const void *key1, const void *key2), void (*destroy)(void *data));
+
+void chtbl_destroy(CHTbl *htbl);
+
+int chtbl_insert(CHTbl *htbl, const void *data);
+
+int chtbl_remove(CHTbl *htbl, void **data);
+
+int chtbl_lookup(const CHTbl *htbl, void **data);
+
+#define chtbl_size(htbl) ((htbl)->size)
+
+#endif /* _COMMON_CHTBL_H */
+