| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #ifndef OID_STASH_H
- #define OID_STASH_H
- /*
- * designed to store/retrieve information associated with a given oid.
- * Storage is done in an efficient tree manner for fast lookups.
- */
- #define OID_STASH_CHILDREN_SIZE 31
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct netsnmp_oid_stash_node_s;
- /* args: buffer, sizeof(buffer), yourdata, stashnode */
- typedef int (NetSNMPStashDump) (char *, size_t,
- void *,
- struct netsnmp_oid_stash_node_s *);
- typedef void (NetSNMPStashFreeNode) (void *);
-
- typedef struct netsnmp_oid_stash_node_s {
- oid value;
- struct netsnmp_oid_stash_node_s **children; /* array of children */
- size_t children_size;
- struct netsnmp_oid_stash_node_s *next_sibling; /* cache too small links */
- struct netsnmp_oid_stash_node_s *prev_sibling;
- struct netsnmp_oid_stash_node_s *parent;
- void *thedata;
- } netsnmp_oid_stash_node;
- typedef struct netsnmp_oid_stash_save_info_s {
- const char *token;
- netsnmp_oid_stash_node **root;
- NetSNMPStashDump *dumpfn;
- } netsnmp_oid_stash_save_info;
- NETSNMP_IMPORT
- int netsnmp_oid_stash_add_data(netsnmp_oid_stash_node **root,
- const oid * lookup,
- size_t lookup_len,
- void *mydata);
- SNMPCallback netsnmp_oid_stash_store_all;
- netsnmp_oid_stash_node
- *netsnmp_oid_stash_get_node(netsnmp_oid_stash_node *root,
- const oid * lookup, size_t lookup_len);
- NETSNMP_IMPORT
- void *netsnmp_oid_stash_get_data(netsnmp_oid_stash_node *root,
- const oid * lookup,
- size_t lookup_len);
- NETSNMP_IMPORT
- netsnmp_oid_stash_node *
- netsnmp_oid_stash_getnext_node(netsnmp_oid_stash_node *root,
- oid * lookup, size_t lookup_len);
- netsnmp_oid_stash_node *netsnmp_oid_stash_create_sized_node(size_t
- mysize);
- netsnmp_oid_stash_node *netsnmp_oid_stash_create_node(void); /* returns a malloced node */
- void netsnmp_oid_stash_store(netsnmp_oid_stash_node *root,
- const char *tokenname,
- NetSNMPStashDump *dumpfn,
- oid *curoid, size_t curoid_len);
- /* frees all data in the stash and cleans it out. Sets root = NULL */
- NETSNMP_IMPORT
- void netsnmp_oid_stash_free(netsnmp_oid_stash_node **root,
- NetSNMPStashFreeNode *freefn);
-
- /* a noop function that can be passed to netsnmp_oid_stash_node to
- NOT free the data */
- NetSNMPStashFreeNode netsnmp_oid_stash_no_free;
- #ifdef __cplusplus
- }
- #endif
- #endif /* OID_STASH_H */
|