net-snmp
5.4.1
|
00001 /* Portions of this file are subject to the following copyright(s). See 00002 * the Net-SNMP's COPYING file for more details and other copyrights 00003 * that may apply: 00004 */ 00005 /* 00006 * Portions of this file are copyrighted by: 00007 * Copyright © 2003 Sun Microsystems, Inc. All rights reserved. 00008 * Use is subject to license terms specified in the COPYING file 00009 * distributed with the Net-SNMP package. 00010 */ 00011 /* 00012 * @file netsnmp_data_list.h 00013 * 00014 * @addtogroup agent 00015 * @addtogroup library * 00016 * 00017 * $Id: data_list.h 9583 2004-02-16 20:46:24Z hardaker $ 00018 * 00019 * External definitions for functions and variables in netsnmp_data_list.c. 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); /* single */ 00070 void netsnmp_free_all_list_data(netsnmp_data_list *head); /* multiple */ 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