--- /dev/null
+/*
+ * header_complex.h: More complex storage and data sorting for mib modules
+ */
+#ifndef _MIBGROUP_HEADER_COMPLEX_H
+#define _MIBGROUP_HEADER_COMPLEX_H
+
+struct header_complex_index {
+ oid *name;
+ size_t namelen;
+ void *data;
+ struct header_complex_index *next;
+ struct header_complex_index *prev;
+};
+
+/*
+ * Function pointer called by the header_comlpex functions when a client pointer (void * to us) needs to be cleaned.
+ */
+
+typedef void (HeaderComplexCleaner) (void *);
+void *header_complex(struct header_complex_index *datalist,
+ struct variable *vp, oid * name,
+ size_t * length, int exact,
+ size_t * var_len,
+ WriteMethod ** write_method);
+
+int header_complex_generate_varoid(netsnmp_variable_list *
+ var);
+int header_complex_parse_oid(oid * oidIndex, size_t oidLen,
+ netsnmp_variable_list * data);
+void header_complex_generate_oid(oid * name, size_t * length,
+ oid * prefix,
+ size_t prefix_len,
+ netsnmp_variable_list * data);
+void header_complex_free_all(struct header_complex_index
+ *thestuff,
+ HeaderComplexCleaner * cleaner);
+void header_complex_free_entry(struct header_complex_index
+ *theentry,
+ HeaderComplexCleaner * cleaner);
+void *header_complex_extract_entry(struct header_complex_index
+ **thetop,
+ struct header_complex_index
+ *thespot);
+struct header_complex_index *header_complex_find_entry(struct
+ header_complex_index
+ *thestuff,
+ void *entry);
+
+void *header_complex_get(struct header_complex_index *datalist,
+ netsnmp_variable_list * index);
+void *header_complex_get_from_oid(struct header_complex_index
+ *datalist, oid * searchfor,
+ size_t searchfdor_len);
+
+struct header_complex_index *header_complex_add_data(struct
+ header_complex_index
+ **thedata,
+ netsnmp_variable_list
+ * var, void *data);
+
+/*
+ * Note: newoid is copied/cloned for you
+ */
+struct header_complex_index *header_complex_add_data_by_oid(struct
+ header_complex_index
+ **thedata,
+ oid * newoid,
+ size_t
+ newoid_len,
+ void *data);
+
+#endif /* _MIBGROUP_HEADER_COMPLEX_H */