and added files
[bcm963xx.git] / userapps / opensource / net-snmp / agent / mibgroup / header_complex.h
diff --git a/userapps/opensource/net-snmp/agent/mibgroup/header_complex.h b/userapps/opensource/net-snmp/agent/mibgroup/header_complex.h
new file mode 100644 (file)
index 0000000..2028cee
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ *  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 */