00001 #include <net-snmp/net-snmp-config.h>
00002
00003 #if HAVE_STRING_H
00004 #include <string.h>
00005 #else
00006 #include <strings.h>
00007 #endif
00008
00009 #include <net-snmp/net-snmp-includes.h>
00010 #include <net-snmp/agent/net-snmp-agent-includes.h>
00011
00012 #include <net-snmp/agent/serialize.h>
00013
00030 netsnmp_mib_handler *
00031 netsnmp_get_serialize_handler(void)
00032 {
00033 return netsnmp_create_handler("serialize",
00034 netsnmp_serialize_helper_handler);
00035 }
00036
00039 int
00040 netsnmp_register_serialize(netsnmp_handler_registration *reginfo)
00041 {
00042 netsnmp_inject_handler(reginfo, netsnmp_get_serialize_handler());
00043 return netsnmp_register_handler(reginfo);
00044 }
00045
00047 int
00048 netsnmp_serialize_helper_handler(netsnmp_mib_handler *handler,
00049 netsnmp_handler_registration *reginfo,
00050 netsnmp_agent_request_info *reqinfo,
00051 netsnmp_request_info *requests)
00052 {
00053
00054 netsnmp_request_info *request, *requesttmp;
00055
00056 DEBUGMSGTL(("helper:serialize", "Got request\n"));
00057
00058
00059
00060 for (request = requests; request; request = request->next) {
00061 int ret;
00062
00063
00064
00065
00066 requesttmp = request->next;
00067 request->next = NULL;
00068
00069
00070
00071
00072 ret =
00073 netsnmp_call_next_handler(handler, reginfo, reqinfo, request);
00074
00075
00076
00077
00078 request->next = requesttmp;
00079
00080 if (ret != SNMP_ERR_NOERROR)
00081 return ret;
00082 }
00083
00084 return SNMP_ERR_NOERROR;
00085 }
00086
00092 void
00093 netsnmp_init_serialize(void)
00094 {
00095 netsnmp_register_handler_by_name("serialize",
00096 netsnmp_get_serialize_handler());
00097 }