00001 #include <net-snmp/net-snmp-config.h>
00002
00003 #include <net-snmp/net-snmp-includes.h>
00004 #include <net-snmp/agent/net-snmp-agent-includes.h>
00005
00006 #include <net-snmp/agent/serialize.h>
00007
00024 netsnmp_mib_handler *
00025 netsnmp_get_serialize_handler(void)
00026 {
00027 return netsnmp_create_handler("serialize",
00028 netsnmp_serialize_helper_handler);
00029 }
00030
00033 int
00034 netsnmp_register_serialize(netsnmp_handler_registration *reginfo)
00035 {
00036 netsnmp_inject_handler(reginfo, netsnmp_get_serialize_handler());
00037 return netsnmp_register_handler(reginfo);
00038 }
00039
00041 int
00042 netsnmp_serialize_helper_handler(netsnmp_mib_handler *handler,
00043 netsnmp_handler_registration *reginfo,
00044 netsnmp_agent_request_info *reqinfo,
00045 netsnmp_request_info *requests)
00046 {
00047
00048 netsnmp_request_info *request, *requesttmp;
00049
00050 DEBUGMSGTL(("helper:serialize", "Got request\n"));
00051
00052
00053
00054 for (request = requests; request; request = request->next) {
00055 int ret;
00056
00057
00058
00059
00060 requesttmp = request->next;
00061 request->next = NULL;
00062
00063
00064
00065
00066 ret =
00067 netsnmp_call_next_handler(handler, reginfo, reqinfo, request);
00068
00069
00070
00071
00072 request->next = requesttmp;
00073
00074 if (ret != SNMP_ERR_NOERROR)
00075 return ret;
00076 }
00077
00078 return SNMP_ERR_NOERROR;
00079 }
00080
00086 void
00087 netsnmp_init_serialize(void)
00088 {
00089 netsnmp_register_handler_by_name("serialize",
00090 netsnmp_get_serialize_handler());
00091 }