net-snmp
5.4.1
|
00001 /* 00002 * callback.c: A generic callback mechanism 00003 */ 00004 00005 #ifndef CALLBACK_H 00006 #define CALLBACK_H 00007 00008 #ifdef __cplusplus 00009 extern "C" { 00010 #endif 00011 00012 #define MAX_CALLBACK_IDS 2 00013 #define MAX_CALLBACK_SUBIDS 16 00014 00015 /* 00016 * Callback Major Types 00017 */ 00018 #define SNMP_CALLBACK_LIBRARY 0 00019 #define SNMP_CALLBACK_APPLICATION 1 00020 00021 /* 00022 * SNMP_CALLBACK_LIBRARY minor types 00023 */ 00024 #define SNMP_CALLBACK_POST_READ_CONFIG 0 00025 #define SNMP_CALLBACK_STORE_DATA 1 00026 #define SNMP_CALLBACK_SHUTDOWN 2 00027 #define SNMP_CALLBACK_POST_PREMIB_READ_CONFIG 3 00028 #define SNMP_CALLBACK_LOGGING 4 00029 #define SNMP_CALLBACK_SESSION_INIT 5 00030 00031 00032 /* 00033 * Callback priority (lower priority numbers called first( 00034 */ 00035 #define NETSNMP_CALLBACK_HIGHEST_PRIORITY -1024 00036 #define NETSNMP_CALLBACK_DEFAULT_PRIORITY 0 00037 #define NETSNMP_CALLBACK_LOWEST_PRIORITY 1024 00038 00039 typedef int (SNMPCallback) (int majorID, int minorID, 00040 void *serverarg, void *clientarg); 00041 00042 struct snmp_gen_callback { 00043 SNMPCallback *sc_callback; 00044 void *sc_client_arg; 00045 int priority; 00046 struct snmp_gen_callback *next; 00047 }; 00048 00049 /* 00050 * function prototypes 00051 */ 00052 void init_callbacks(void); 00053 00054 int netsnmp_register_callback(int major, int minor, 00055 SNMPCallback * new_callback, 00056 void *arg, int priority); 00057 int snmp_register_callback(int major, int minor, 00058 SNMPCallback * new_callback, 00059 void *arg); 00060 int snmp_call_callbacks(int major, int minor, 00061 void *caller_arg); 00062 int snmp_callback_available(int major, int minor); /* is >1 available */ 00063 int snmp_count_callbacks(int major, int minor); /* ret the number registered */ 00064 int snmp_unregister_callback(int major, int minor, 00065 SNMPCallback * new_callback, 00066 void *arg, int matchargs); 00067 void clear_callback (void); 00068 int netsnmp_callback_clear_client_arg(void *, int i, int j); 00069 00070 struct snmp_gen_callback *snmp_callback_list(int major, int minor); 00071 00072 #ifdef __cplusplus 00073 } 00074 #endif 00075 #endif /* CALLBACK_H */