00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef DATA_LIST_H
00025 #define DATA_LIST_H
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 #include <net-snmp/library/snmp_impl.h>
00032 #include <net-snmp/library/tools.h>
00033
00034 typedef void (Netsnmp_Free_List_Data) (void *);
00035 typedef int (Netsnmp_Save_List_Data) (char *buf, size_t buf_len, void *);
00036 typedef void * (Netsnmp_Read_List_Data) (char *buf, size_t buf_len);
00037
00041 typedef struct netsnmp_data_list_s {
00042 struct netsnmp_data_list_s *next;
00043 char *name;
00045 void *data;
00047 Netsnmp_Free_List_Data *free_func;
00048 } netsnmp_data_list;
00049
00050 typedef struct netsnmp_data_list_saveinfo_s {
00051 netsnmp_data_list **datalist;
00052 const char *type;
00053 const char *token;
00054 Netsnmp_Save_List_Data *data_list_save_ptr;
00055 Netsnmp_Read_List_Data *data_list_read_ptr;
00056 Netsnmp_Free_List_Data *data_list_free_ptr;
00057 } netsnmp_data_list_saveinfo;
00058
00059 NETSNMP_INLINE netsnmp_data_list *
00060 netsnmp_create_data_list(const char *, void *, Netsnmp_Free_List_Data* );
00061 void netsnmp_data_list_add_node(netsnmp_data_list **head,
00062 netsnmp_data_list *node);
00063 netsnmp_data_list *
00064 netsnmp_data_list_add_data(netsnmp_data_list **head,
00065 const char *name, void *data,
00066 Netsnmp_Free_List_Data * beer);
00067 void *netsnmp_get_list_data(netsnmp_data_list *head,
00068 const char *node);
00069 void netsnmp_free_list_data(netsnmp_data_list *head);
00070 void netsnmp_free_all_list_data(netsnmp_data_list *head);
00071 int netsnmp_remove_list_node(netsnmp_data_list **realhead,
00072 const char *name);
00073 NETSNMP_INLINE netsnmp_data_list *
00074 netsnmp_get_list_node(netsnmp_data_list *head,
00075 const char *name);
00076
00078 void netsnmp_add_list_data(netsnmp_data_list **head,
00079 netsnmp_data_list *node);
00080
00081
00082 void
00083 netsnmp_register_save_list(netsnmp_data_list **datalist,
00084 const char *type, const char *token,
00085 Netsnmp_Save_List_Data *data_list_save_ptr,
00086 Netsnmp_Read_List_Data *data_list_read_ptr,
00087 Netsnmp_Free_List_Data *data_list_free_ptr);
00088 int
00089 netsnmp_save_all_data(netsnmp_data_list *head,
00090 const char *type, const char *token,
00091 Netsnmp_Save_List_Data * data_list_save_ptr);
00092 SNMPCallback netsnmp_save_all_data_callback;
00093 void netsnmp_read_data_callback(const char *token, char *line);
00094 #ifdef __cplusplus
00095 }
00096 #endif
00097 #endif
00098