00001
00002
00003
00004
00005
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
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
00132
00133
00134
00135 netsnmp_container *
00136 netsnmp_container_get_null(void)
00137 {
00138
00139
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;
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 }