added files
[bcm963xx.git] / userapps / opensource / net-snmp / agent / mibgroup / header_complex.h
1 /*
2  *  header_complex.h:  More complex storage and data sorting for mib modules
3  */
4 #ifndef _MIBGROUP_HEADER_COMPLEX_H
5 #define _MIBGROUP_HEADER_COMPLEX_H
6
7 struct header_complex_index {
8     oid            *name;
9     size_t          namelen;
10     void           *data;
11     struct header_complex_index *next;
12     struct header_complex_index *prev;
13 };
14
15 /*
16  * Function pointer called by the header_comlpex functions when a client pointer (void * to us) needs to be cleaned. 
17  */
18
19 typedef void    (HeaderComplexCleaner) (void *);
20 void           *header_complex(struct header_complex_index *datalist,
21                                struct variable *vp, oid * name,
22                                size_t * length, int exact,
23                                size_t * var_len,
24                                WriteMethod ** write_method);
25
26 int             header_complex_generate_varoid(netsnmp_variable_list *
27                                                var);
28 int             header_complex_parse_oid(oid * oidIndex, size_t oidLen,
29                                          netsnmp_variable_list * data);
30 void            header_complex_generate_oid(oid * name, size_t * length,
31                                             oid * prefix,
32                                             size_t prefix_len,
33                                             netsnmp_variable_list * data);
34 void            header_complex_free_all(struct header_complex_index
35                                         *thestuff,
36                                         HeaderComplexCleaner * cleaner);
37 void            header_complex_free_entry(struct header_complex_index
38                                           *theentry,
39                                           HeaderComplexCleaner * cleaner);
40 void           *header_complex_extract_entry(struct header_complex_index
41                                              **thetop,
42                                              struct header_complex_index
43                                              *thespot);
44 struct header_complex_index *header_complex_find_entry(struct
45                                                        header_complex_index
46                                                        *thestuff,
47                                                        void *entry);
48
49 void           *header_complex_get(struct header_complex_index *datalist,
50                                    netsnmp_variable_list * index);
51 void           *header_complex_get_from_oid(struct header_complex_index
52                                             *datalist, oid * searchfor,
53                                             size_t searchfdor_len);
54
55 struct header_complex_index *header_complex_add_data(struct
56                                                      header_complex_index
57                                                      **thedata,
58                                                      netsnmp_variable_list
59                                                      * var, void *data);
60
61 /*
62  * Note: newoid is copied/cloned for you 
63  */
64 struct header_complex_index *header_complex_add_data_by_oid(struct
65                                                             header_complex_index
66                                                             **thedata,
67                                                             oid * newoid,
68                                                             size_t
69                                                             newoid_len,
70                                                             void *data);
71
72 #endif                          /* _MIBGROUP_HEADER_COMPLEX_H */