[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 */
+