/* * 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); struct header_complex_index *header_complex_maybe_add_data(struct header_complex_index **thedata, netsnmp_variable_list * var, void *data, int dont_allow_duplicates); /* * 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); struct header_complex_index *header_complex_maybe_add_data_by_oid(struct header_complex_index **thedata, oid * newoid, size_t newoid_len, void *data, int dont_allow_duplicates); #endif /* _MIBGROUP_HEADER_COMPLEX_H */