net-snmp
5.4.1
|
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 * loop through requests 00059 */ 00060 for (request = requests; request; request = request->next) { 00061 int ret; 00062 00063 /* 00064 * store next pointer and delete it 00065 */ 00066 requesttmp = request->next; 00067 request->next = NULL; 00068 00069 /* 00070 * call the next handler 00071 */ 00072 ret = 00073 netsnmp_call_next_handler(handler, reginfo, reqinfo, request); 00074 00075 /* 00076 * restore original next pointer 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 }