00001 #ifndef AGENT_REGISTRY_H 00002 #define AGENT_REGISTRY_H 00003 00004 /***********************************************************************/ 00005 /* 00006 * new version2 agent handler API structures 00007 */ 00008 /***********************************************************************/ 00009 00010 #include <net-snmp/agent/snmp_agent.h> 00011 #include <net-snmp/library/fd_event_manager.h> 00012 00013 #ifdef __cplusplus 00014 extern "C" { 00015 #endif 00016 00017 /***********************************************************************/ 00018 /* 00019 * requests api definitions 00020 */ 00021 /***********************************************************************/ 00022 00023 /* 00024 * the structure of parameters passed to registered ACM modules 00025 */ 00026 struct view_parameters { 00027 netsnmp_pdu *pdu; 00028 oid *name; 00029 size_t namelen; 00030 int test; 00031 int errorcode; /* Do not change unless you're 00032 specifying an error, as it starts 00033 in a success state. */ 00034 int check_subtree; 00035 }; 00036 00037 struct register_parameters { 00038 oid *name; 00039 size_t namelen; 00040 int priority; 00041 int range_subid; 00042 oid range_ubound; 00043 int timeout; 00044 u_char flags; 00045 const char *contextName; 00046 netsnmp_session *session; 00047 netsnmp_handler_registration *reginfo; 00048 }; 00049 00050 typedef struct subtree_context_cache_s { 00051 char *context_name; 00052 struct netsnmp_subtree_s *first_subtree; 00053 struct subtree_context_cache_s *next; 00054 } subtree_context_cache; 00055 00056 00057 00058 void setup_tree (void); 00059 void shutdown_tree (void); 00060 00061 00062 netsnmp_subtree *netsnmp_subtree_find (oid *, size_t, netsnmp_subtree *, 00063 const char *context_name); 00064 00065 netsnmp_subtree *netsnmp_subtree_find_next(oid *, size_t, netsnmp_subtree *, 00066 const char *context_name); 00067 00068 netsnmp_subtree *netsnmp_subtree_find_prev(oid *, size_t,netsnmp_subtree *, 00069 const char *context_name); 00070 00071 netsnmp_subtree *netsnmp_subtree_find_first(const char *context_name); 00072 00073 netsnmp_session *get_session_for_oid (oid *, size_t, 00074 const char *context_name); 00075 00076 subtree_context_cache *get_top_context_cache(void); 00077 00078 void netsnmp_set_lookup_cache_size(int newsize); 00079 int netsnmp_get_lookup_cache_size(void); 00080 00081 #define MIB_REGISTERED_OK 0 00082 #define MIB_DUPLICATE_REGISTRATION -1 00083 #define MIB_REGISTRATION_FAILED -2 00084 #define MIB_UNREGISTERED_OK 0 00085 #define MIB_NO_SUCH_REGISTRATION -1 00086 #define MIB_UNREGISTRATION_FAILED -2 00087 #define DEFAULT_MIB_PRIORITY 127 00088 00089 int register_mib (const char *, struct variable *, 00090 size_t, size_t, oid *, size_t); 00091 00092 int register_mib_priority (const char *, struct variable *, 00093 size_t, size_t, oid *, size_t, 00094 int); 00095 00096 int register_mib_range (const char *, struct variable *, 00097 size_t, size_t, oid *, size_t, 00098 int, int, oid, netsnmp_session *); 00099 00100 int register_mib_context (const char *, struct variable *, 00101 size_t, size_t, oid *, size_t, 00102 int, int, oid, netsnmp_session *, 00103 const char *, int, int); 00104 00105 int netsnmp_register_mib_table_row (const char *, struct variable *, 00106 size_t, size_t, oid *, size_t, 00107 int, int, netsnmp_session *, 00108 const char *, int, int); 00109 00110 int unregister_mib (oid *, size_t); 00111 00112 int unregister_mib_priority (oid *, size_t, int); 00113 int unregister_mib_range (oid *, size_t, int, int, oid); 00114 int unregister_mib_context (oid *, size_t, int, int, oid, 00115 const char *); 00116 void clear_context (void); 00117 void unregister_mibs_by_session (netsnmp_session *); 00118 int netsnmp_unregister_mib_table_row (oid *mibloc, size_t mibloclen, 00119 int priority, int var_subid, 00120 oid range_ubound, 00121 const char *context); 00122 00123 int compare_tree (const oid *, size_t, 00124 const oid *, size_t); 00125 int in_a_view (oid *, size_t *, 00126 netsnmp_pdu *, int); 00127 int check_access (netsnmp_pdu *pdu); 00128 int netsnmp_acm_check_subtree (netsnmp_pdu *, oid *, size_t); 00129 void register_mib_reattach (void); 00130 void register_mib_detach (void); 00131 00132 /* 00133 * REGISTER_MIB(): This macro simply loads register_mib with less pain: 00134 * 00135 * descr: A short description of the mib group being loaded. 00136 * var: The variable structure to load. 00137 * vartype: The variable structure used to define it (variable[2, 4, ...]) 00138 * theoid: An *initialized* *exact length* oid pointer. 00139 * (sizeof(theoid) *must* return the number of elements!) 00140 */ 00141 00142 #define REGISTER_MIB(descr, var, vartype, theoid) \ 00143 if (register_mib(descr, (struct variable *) var, sizeof(struct vartype), \ 00144 sizeof(var)/sizeof(struct vartype), \ 00145 theoid, sizeof(theoid)/sizeof(oid)) != MIB_REGISTERED_OK ) \ 00146 DEBUGMSGTL(("register_mib", "%s registration failed\n", descr)); 00147 00148 00149 #define NUM_EXTERNAL_SIGS 32 00150 #define SIG_REGISTERED_OK 0 00151 #define SIG_REGISTRATION_FAILED -2 00152 #define SIG_UNREGISTERED_OK 0 00153 00154 extern int external_signal_scheduled[NUM_EXTERNAL_SIGS]; 00155 extern void (*external_signal_handler[NUM_EXTERNAL_SIGS])(int); 00156 00157 int register_signal(int, void (*func)(int)); 00158 int unregister_signal(int); 00159 00160 00161 00162 /* 00163 * internal API. Don't use this. Use netsnmp_register_handler instead 00164 */ 00165 00166 struct netsnmp_handler_registration_s; 00167 00168 int netsnmp_register_mib(const char *, struct variable *, 00169 size_t, size_t, oid *, size_t, 00170 int, int, oid, netsnmp_session *, 00171 const char *, int, int, 00172 struct netsnmp_handler_registration_s *, 00173 int); 00174 00175 #ifdef __cplusplus 00176 } 00177 #endif 00178 00179 #endif /* AGENT_REGISTRY_H */
Last modified: Wednesday, 01-Aug-2018 04:41:28 UTC
For questions regarding web content and site functionality, please write to the net-snmp-users mail list.