diff options
Diffstat (limited to 'agent/mibgroup/header_complex.h')
-rw-r--r-- | agent/mibgroup/header_complex.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/agent/mibgroup/header_complex.h b/agent/mibgroup/header_complex.h new file mode 100644 index 0000000..2a1728a --- /dev/null +++ b/agent/mibgroup/header_complex.h @@ -0,0 +1,81 @@ +/* + * 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 */ |