+#define MASK_LEN (2*CLIENT_HOST_LEN)
+
+struct list_elem {
+ struct list_elem *next; /** pointer to next list element */
+ char mask[MASK_LEN]; /** IRC mask */
+ char *reason; /** Optional "reason" text */
+ time_t valid_until; /** 0: unlimited; 1: once; t(>1): until t */
+};
+
+/**
+ * Get IRC mask stored in list element.
+ *
+ * @param list_elem List element.
+ * @return Pointer to IRC mask
+ */
+GLOBAL const char *
+Lists_GetMask(const struct list_elem *e)
+{
+ assert(e != NULL);
+ return e->mask;
+}
+
+/**
+ * Get optional "reason" text stored in list element.
+ *
+ * @param list_elem List element.
+ * @return Pointer to "reason" text or empty string ("").
+ */
+GLOBAL const char *
+Lists_GetReason(const struct list_elem *e)
+{
+ assert(e != NULL);
+ return e->reason ? e->reason : "";
+}
+
+/**
+ * Get "validity" value stored in list element.
+ *
+ * @param list_elem List element.
+ * @return Validity: 0=unlimited, 1=once, >1 until this time stamp.
+ */
+GLOBAL time_t
+Lists_GetValidity(const struct list_elem *e)
+{
+ assert(e != NULL);
+ return e->valid_until;
+}
+
+/**
+ * Get first list element of a list.
+ *
+ * @param h List head.
+ * @return Pointer to first list element.
+ */
+GLOBAL struct list_elem*
+Lists_GetFirst(const struct list_head *h)
+{
+ assert(h != NULL);
+ return h->first;
+}
+
+/**
+ * Get next list element of a list.
+ *
+ * @param e Current list element.
+ * @return Pointer to next list element.
+ */
+GLOBAL struct list_elem*
+Lists_GetNext(const struct list_elem *e)
+{
+ assert(e != NULL);
+ return e->next;
+}