nfs-ganesha 1.4
|
00001 00007 #ifdef HAVE_CONFIG_H 00008 #include "config.h" 00009 #endif 00010 00011 #include "snmp_adm.h" 00012 00013 #include "instance_handler.h" 00014 00023 int register_ro_string(oid * myoid, int oid_len, char *string, 00024 netsnmp_handler_registration ** phandler) 00025 { 00026 netsnmp_handler_registration *myreg; 00027 00028 myreg = 00029 netsnmp_create_handler_registration("libdemon", 00030 instance_string_handler, 00031 myoid, oid_len, HANDLER_CAN_RONLY); 00032 myreg->handler->myvoid = (void *)string; 00033 00034 *phandler = myreg; 00035 return netsnmp_register_handler(myreg); 00036 00037 } 00038 00050 int reg_scal(oid * myoid, size_t oid_len, void *value, unsigned char type, int access, 00051 netsnmp_handler_registration * phandler_tab[2]) 00052 { 00053 netsnmp_handler_registration *myreg_type, *myreg_val; 00057 oid_len++; 00058 myoid[oid_len - 1] = TYPE_OID; 00059 00060 /* register type */ 00061 myreg_type = netsnmp_create_handler_registration("libdemon", 00062 instance_string_handler, 00063 myoid, oid_len, HANDLER_CAN_RONLY); 00064 /* register value and set type */ 00065 switch (type) 00066 { 00067 case SNMP_ADM_STRING: 00068 myoid[oid_len - 1] = VAL_OID; 00069 myreg_val = netsnmp_create_handler_registration("libdemon", instance_string_handler, 00070 myoid, oid_len, access); 00071 myreg_type->handler->myvoid = (void *)"STRING"; 00072 00073 break; 00074 00075 case SNMP_ADM_INTEGER: 00076 myoid[oid_len - 1] = VAL_OID; 00077 myreg_val = netsnmp_create_handler_registration("libdemon", instance_int_handler, 00078 myoid, oid_len, access); 00079 myreg_type->handler->myvoid = (void *)"INTEGER"; 00080 00081 break; 00082 case SNMP_ADM_REAL: 00083 myoid[oid_len - 1] = VAL_OID; 00084 myreg_val = netsnmp_create_handler_registration("libdemon", instance_real_handler, 00085 myoid, oid_len, access); 00086 myreg_type->handler->myvoid = (void *)"REAL"; 00087 00088 break; 00089 case SNMP_ADM_BIGINT: 00090 myoid[oid_len - 1] = VAL_OID; 00091 myreg_val = netsnmp_create_handler_registration("libdemon", instance_bigint_handler, 00092 myoid, oid_len, access); 00093 myreg_type->handler->myvoid = (void *)"BIGINT"; 00094 break; 00095 case SNMP_ADM_TIMETICKS: 00096 myoid[oid_len - 1] = VAL_OID; 00097 myreg_val = netsnmp_create_handler_registration("libdemon", instance_time_handler, 00098 myoid, oid_len, access); 00099 myreg_type->handler->myvoid = (void *)"TIMETICKS"; 00100 break; 00101 case SNMP_ADM_IP: 00102 myoid[oid_len - 1] = VAL_OID; 00103 myreg_val = netsnmp_create_handler_registration("libdemon", instance_ip_handler, 00104 myoid, oid_len, access); 00105 myreg_type->handler->myvoid = (void *)"IP"; 00106 break; 00107 00108 default: 00109 /* unknow type */ 00110 return 1; 00111 00112 } 00113 netsnmp_register_handler(myreg_type); 00114 00115 /* set value */ 00116 myreg_val->handler->myvoid = value; 00117 /* give netsnmp handlers to the calling function */ 00118 phandler_tab[0] = myreg_val; 00119 phandler_tab[1] = myreg_type; 00120 00121 return netsnmp_register_handler(myreg_val); 00122 } 00123 00134 int reg_get_set(oid * myoid, size_t oid_len, unsigned char type, int access, 00135 netsnmp_handler_registration * phandler_tab[2]) 00136 { 00137 netsnmp_handler_registration *myreg_val, *myreg_type; 00138 00139 oid_len++; 00140 00141 myoid[oid_len - 1] = TYPE_OID; 00142 00143 /* register type */ 00144 myreg_type = netsnmp_create_handler_registration("libdemon", 00145 instance_string_handler, 00146 myoid, oid_len, HANDLER_CAN_RONLY); 00147 switch (type) 00148 { 00149 case SNMP_ADM_STRING: 00150 myreg_type->handler->myvoid = (void *)"STRING"; 00151 break; 00152 case SNMP_ADM_INTEGER: 00153 myreg_type->handler->myvoid = (void *)"INTEGER"; 00154 break; 00155 case SNMP_ADM_REAL: 00156 myreg_type->handler->myvoid = (void *)"REAL"; 00157 break; 00158 case SNMP_ADM_BIGINT: 00159 myreg_type->handler->myvoid = (void *)"BIGINT"; 00160 break; 00161 case SNMP_ADM_TIMETICKS: 00162 myreg_type->handler->myvoid = (void *)"TIMETICKS"; 00163 break; 00164 case SNMP_ADM_IP: 00165 myreg_type->handler->myvoid = (void *)"IP"; 00166 break; 00167 default: 00168 /* unknow type */ 00169 return 1; 00170 00171 } 00172 netsnmp_register_handler(myreg_type); 00173 00174 /* register get/set, we do not use "myvoid", we will find the get/set in 00175 instance_get_set_handler */ 00176 myoid[oid_len - 1] = VAL_OID; 00177 myreg_val = netsnmp_create_handler_registration("libdemon", 00178 instance_get_set_handler, 00179 myoid, oid_len, access); 00180 00181 /* give netsnmp handlers to the calling function */ 00182 phandler_tab[0] = myreg_type; 00183 phandler_tab[1] = myreg_val; 00184 00185 return netsnmp_register_handler(myreg_val); 00186 } 00187 00195 int reg_proc(oid * myoid, size_t oid_len, netsnmp_handler_registration ** phandler) 00196 { 00197 netsnmp_handler_registration *myreg; 00198 00199 myreg = netsnmp_create_handler_registration("libdemon", instance_proc_handler, 00200 myoid, oid_len, SNMP_ADM_ACCESS_RW); 00201 *phandler = myreg; 00202 return netsnmp_register_handler(myreg); 00203 } 00204 00205 int unreg_instance(netsnmp_handler_registration * myreg) 00206 { 00211 return netsnmp_unregister_handler(myreg); 00212 }