net-snmp
5.4.1
|
00001 /* 00002 * container_null.c 00003 * $Id: container_null.c 14169 2006-01-25 16:28:12Z dts12 $ 00004 * 00005 * see comments in header file. 00006 * 00007 */ 00008 00009 #include <net-snmp/net-snmp-config.h> 00010 00011 #if HAVE_IO_H 00012 #include <io.h> 00013 #endif 00014 #include <stdio.h> 00015 #if HAVE_STDLIB_H 00016 #include <stdlib.h> 00017 #endif 00018 #if HAVE_MALLOC_H 00019 #include <malloc.h> 00020 #endif 00021 #include <sys/types.h> 00022 #if HAVE_STRING_H 00023 #include <string.h> 00024 #else 00025 #include <strings.h> 00026 #endif 00027 00028 #include <net-snmp/net-snmp-includes.h> 00029 #include <net-snmp/types.h> 00030 #include <net-snmp/library/snmp_api.h> 00031 #include <net-snmp/library/container.h> 00032 #include <net-snmp/library/container_null.h> 00033 #include <net-snmp/library/tools.h> 00034 #include <net-snmp/library/snmp_assert.h> 00035 00053 /********************************************************************** 00054 * 00055 * container 00056 * 00057 */ 00058 static void * 00059 _null_find(netsnmp_container *container, const void *data) 00060 { 00061 DEBUGMSGTL(("container:null:find","in\n")); 00062 return NULL; 00063 } 00064 00065 static void * 00066 _null_find_next(netsnmp_container *container, const void *data) 00067 { 00068 DEBUGMSGTL(("container:null:find_next","in\n")); 00069 return NULL; 00070 } 00071 00072 static int 00073 _null_insert(netsnmp_container *container, const void *data) 00074 { 00075 DEBUGMSGTL(("container:null:insert","in\n")); 00076 return 0; 00077 } 00078 00079 static int 00080 _null_remove(netsnmp_container *container, const void *data) 00081 { 00082 DEBUGMSGTL(("container:null:remove","in\n")); 00083 return 0; 00084 } 00085 00086 static int 00087 _null_free(netsnmp_container *container) 00088 { 00089 DEBUGMSGTL(("container:null:free","in\n")); 00090 free(container); 00091 return 0; 00092 } 00093 00094 static int 00095 _null_init(netsnmp_container *container) 00096 { 00097 DEBUGMSGTL(("container:null:","in\n")); 00098 return 0; 00099 } 00100 00101 static size_t 00102 _null_size(netsnmp_container *container) 00103 { 00104 DEBUGMSGTL(("container:null:size","in\n")); 00105 return 0; 00106 } 00107 00108 static void 00109 _null_for_each(netsnmp_container *container, netsnmp_container_obj_func *f, 00110 void *context) 00111 { 00112 DEBUGMSGTL(("container:null:for_each","in\n")); 00113 } 00114 00115 static netsnmp_void_array * 00116 _null_get_subset(netsnmp_container *container, void *data) 00117 { 00118 DEBUGMSGTL(("container:null:get_subset","in\n")); 00119 return NULL; 00120 } 00121 00122 static void 00123 _null_clear(netsnmp_container *container, netsnmp_container_obj_func *f, 00124 void *context) 00125 { 00126 DEBUGMSGTL(("container:null:clear","in\n")); 00127 } 00128 00129 /********************************************************************** 00130 * 00131 * factory 00132 * 00133 */ 00134 00135 netsnmp_container * 00136 netsnmp_container_get_null(void) 00137 { 00138 /* 00139 * allocate memory 00140 */ 00141 netsnmp_container *c; 00142 DEBUGMSGTL(("container:null:get_null","in\n")); 00143 c = SNMP_MALLOC_TYPEDEF(netsnmp_container); 00144 if (NULL==c) { 00145 snmp_log(LOG_ERR, "couldn't allocate memory\n"); 00146 return NULL; 00147 } 00148 00149 c->container_data = NULL; 00150 00151 c->get_size = _null_size; 00152 c->init = _null_init; 00153 c->cfree = _null_free; 00154 c->insert = _null_insert; 00155 c->remove = _null_remove; 00156 c->find = _null_find; 00157 c->find_next = _null_find_next; 00158 c->get_subset = _null_get_subset; 00159 c->get_iterator = 0; /* _null_iterator; */ 00160 c->for_each = _null_for_each; 00161 c->clear = _null_clear; 00162 00163 return c; 00164 } 00165 00166 netsnmp_factory * 00167 netsnmp_container_get_null_factory(void) 00168 { 00169 static netsnmp_factory f = { "null", 00170 (netsnmp_factory_produce_f*) 00171 netsnmp_container_get_null}; 00172 00173 DEBUGMSGTL(("container:null:get_null_factory","in\n")); 00174 return &f; 00175 } 00176 00177 void 00178 netsnmp_container_null_init(void) 00179 { 00180 netsnmp_container_register("null", 00181 netsnmp_container_get_null_factory()); 00182 }