Initial revision
diff --git a/ospf6d/ospf6_linklist.h b/ospf6d/ospf6_linklist.h
new file mode 100644
index 0000000..6d97899
--- /dev/null
+++ b/ospf6d/ospf6_linklist.h
@@ -0,0 +1,35 @@
+
+#ifndef _LINKLIST_H_
+#define _LINKLIST_H_
+
+struct linklist_node
+{
+  struct linklist_node *prev;
+  struct linklist_node *next;
+
+  void *data;
+};
+
+struct linklist
+{
+  int count;
+  struct linklist_node *head;
+  struct linklist_node *tail;
+
+  int    (*cmp) (void *, void *);
+};
+
+void *linklist_lookup (void *data, struct linklist *linklist);
+int   linklist_add (void *data, struct linklist *linklist);
+int   linklist_remove (void *data, struct linklist *linklist);
+void  linklist_remove_all (struct linklist *linklist);
+
+void linklist_head (struct linklist *linklist, struct linklist_node *node);
+int  linklist_end (struct linklist_node *node);
+void linklist_next (struct linklist_node *node);
+
+struct linklist *linklist_create ();
+void linklist_delete (struct linklist *);
+
+#endif /*_LINKLIST_H_*/
+