1 /* 2 * callback.c: A generic callback mechanism 3 */ 4 5 #ifndef CALLBACK_H 6 #define CALLBACK_H 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 #define MAX_CALLBACK_IDS 2 13 #define MAX_CALLBACK_SUBIDS 17 14 15 /* 16 * Callback Major Types 17 */ 18 #define SNMP_CALLBACK_LIBRARY 0 19 #define SNMP_CALLBACK_APPLICATION 1 20 21 /* 22 * SNMP_CALLBACK_LIBRARY minor types 23 */ 24 #define SNMP_CALLBACK_POST_READ_CONFIG 0 25 #define SNMP_CALLBACK_STORE_DATA 1 26 #define SNMP_CALLBACK_SHUTDOWN 2 27 #define SNMP_CALLBACK_POST_PREMIB_READ_CONFIG 3 28 #define SNMP_CALLBACK_LOGGING 4 29 #define SNMP_CALLBACK_SESSION_INIT 5 30 #define SNMP_CALLBACK_PRE_READ_CONFIG 7 31 #define SNMP_CALLBACK_PRE_PREMIB_READ_CONFIG 8 32 33 34 /* 35 * Callback priority (lower priority numbers called first( 36 */ 37 #define NETSNMP_CALLBACK_HIGHEST_PRIORITY -1024 38 #define NETSNMP_CALLBACK_DEFAULT_PRIORITY 0 39 #define NETSNMP_CALLBACK_LOWEST_PRIORITY 1024 40 41 typedef int (SNMPCallback) (int majorID, int minorID, 42 void *serverarg, void *clientarg); 43 44 struct snmp_gen_callback { 45 SNMPCallback *sc_callback; 46 void *sc_client_arg; 47 int priority; 48 struct snmp_gen_callback *next; 49 }; 50 51 /* 52 * function prototypes 53 */ 54 NETSNMP_IMPORT 55 void init_callbacks(void); 56 57 NETSNMP_IMPORT 58 int netsnmp_register_callback(int major, int minor, 59 SNMPCallback * new_callback, 60 void *arg, int priority); 61 NETSNMP_IMPORT 62 int snmp_register_callback(int major, int minor, 63 SNMPCallback * new_callback, 64 void *arg); 65 NETSNMP_IMPORT 66 int snmp_call_callbacks(int major, int minor, 67 void *caller_arg); 68 NETSNMP_IMPORT 69 int snmp_callback_available(int major, int minor); /* is >1 available */ 70 NETSNMP_IMPORT 71 int snmp_count_callbacks(int major, int minor); /* ret the number registered */ 72 NETSNMP_IMPORT 73 int snmp_unregister_callback(int major, int minor, 74 SNMPCallback * new_callback, 75 void *arg, int matchargs); 76 NETSNMP_IMPORT 77 void clear_callback (void); 78 int netsnmp_callback_clear_client_arg(void *, int i, int j); 79 80 struct snmp_gen_callback *snmp_callback_list(int major, int minor); 81 82 #ifdef __cplusplus 83 } 84 #endif 85 #endif /* CALLBACK_H */ 86