X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=userapps%2Fopensource%2Fnet-snmp%2Fagent%2Fmibgroup%2Fucd-snmp%2FlmSensors.c;fp=userapps%2Fopensource%2Fnet-snmp%2Fagent%2Fmibgroup%2Fucd-snmp%2FlmSensors.c;h=0000000000000000000000000000000000000000;hb=cf3b25a5003e531e4599b2a56fa007f272198570;hp=b396e9ac4964e5a437f563163d9a158e7bec4c14;hpb=59e02c1be2c9b373846b0789fbd5b7ef46f0927f;p=bcm963xx.git diff --git a/userapps/opensource/net-snmp/agent/mibgroup/ucd-snmp/lmSensors.c b/userapps/opensource/net-snmp/agent/mibgroup/ucd-snmp/lmSensors.c deleted file mode 100755 index b396e9ac..00000000 --- a/userapps/opensource/net-snmp/agent/mibgroup/ucd-snmp/lmSensors.c +++ /dev/null @@ -1,303 +0,0 @@ -/* - * This file was generated by mib2c and is intended for use as a mib module - * for the ucd-snmp snmpd agent. - */ - - -/* - * This should always be included first before anything else - */ -#include - -#include -#include - -/* - * minimal include directives - */ -#include "util_funcs.h" - - -#include -#include - -#include "lmSensors.h" - -#define N_TYPES (4) -#define MAX_NAME (64) -#define MAX_SENSORS (32) - -/* - * lmSensors_variables_oid: - * this is the top level oid that we want to register under. This - * is essentially a prefix, with the suffix appearing in the - * variable below. - */ - - -oid lmSensors_variables_oid[] = - { 1, 3, 6, 1, 4, 1, 2021, 13, 16 }; - -/* - * variable4 lmSensors_variables: - * this variable defines function callbacks and type return information - * for the lmSensors mib section - */ - -struct variable4 lmSensors_variables[] = { - /* - * magic number , variable type , ro/rw , callback fn , L, oidsuffix - */ -#define LMTEMPSENSORSINDEX 3 - {LMTEMPSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3, - {2, 1, 1}}, -#define LMTEMPSENSORSDEVICE 4 - {LMTEMPSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3, - {2, 1, 2}}, -#define LMTEMPSENSORSVALUE 5 - {LMTEMPSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3, - {2, 1, 3}}, -#define LMFANSENSORSINDEX 8 - {LMFANSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3, - {3, 1, 1}}, -#define LMFANSENSORSDEVICE 9 - {LMFANSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3, - {3, 1, 2}}, -#define LMFANSENSORSVALUE 10 - {LMFANSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3, - {3, 1, 3}}, -#define LMVOLTSENSORSINDEX 13 - {LMVOLTSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3, - {4, 1, 1}}, -#define LMVOLTSENSORSDEVICE 14 - {LMVOLTSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3, - {4, 1, 2}}, -#define LMVOLTSENSORSVALUE 15 - {LMVOLTSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3, - {4, 1, 3}}, -#define LMMISCSENSORSINDEX 18 - {LMMISCSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3, - {5, 1, 1}}, -#define LMMISCSENSORSDEVICE 19 - {LMMISCSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3, - {5, 1, 2}}, -#define LMMISCSENSORSVALUE 20 - {LMMISCSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3, - {5, 1, 3}}, -}; - -typedef struct { - char name[MAX_NAME]; - int value; -} _sensor; - -typedef struct { - int n; - _sensor sensor[MAX_SENSORS]; -} _sensor_array; - -static _sensor_array sensor_array[N_TYPES]; -static clock_t timestamp; - - -static int sensor_init(void); -static void sensor_load(void); -static void _sensor_load(clock_t t); - -#define CONFIG_FILE_NAME "/etc/sensors.conf" - -/* - * init_lmSensors(): - * Initialization routine. This is called when the agent starts up. - * At a minimum, registration of your variables should take place here. - */ -void -init_lmSensors(void) -{ - sensor_init(); - - /* - * register ourselves with the agent to handle our mib tree - */ - REGISTER_MIB("lmSensors", lmSensors_variables, variable4, - lmSensors_variables_oid); -} - -/* - * var_lmSensorsTable(): - * Handle this table separately from the scalar value case. - * The workings of this are basically the same as for var_lmSensors above. - */ -unsigned char * -var_lmSensorsTable(struct variable *vp, - oid * name, - size_t * length, - int exact, - size_t * var_len, WriteMethod ** write_method) -{ - static long long_ret; - static unsigned char string[SPRINT_MAX_LEN]; - int i; - - int s_index = name[*length - 1] - 1; - int s_type = -1; - int n_sensors; - - _sensor s; - - sensor_load(); - - switch (vp->magic) { - case LMTEMPSENSORSINDEX: - case LMTEMPSENSORSDEVICE: - case LMTEMPSENSORSVALUE: - s_type = 0; - n_sensors = sensor_array[0].n; - break; - - case LMFANSENSORSINDEX: - case LMFANSENSORSDEVICE: - case LMFANSENSORSVALUE: - s_type = 1; - n_sensors = sensor_array[1].n; - break; - - case LMVOLTSENSORSINDEX: - case LMVOLTSENSORSDEVICE: - case LMVOLTSENSORSVALUE: - s_type = 2; - n_sensors = sensor_array[2].n; - break; - - case LMMISCSENSORSINDEX: - case LMMISCSENSORSDEVICE: - case LMMISCSENSORSVALUE: - s_type = 3; - n_sensors = sensor_array[3].n; - break; - - default: - s_type = -1; - n_sensors = 0; - } - - if (header_simple_table(vp, name, length, exact, - var_len, write_method, - n_sensors) == MATCH_FAILED) - return NULL; - - if (s_type < 0) - return NULL; - - s = sensor_array[s_type].sensor[s_index]; - - switch (vp->magic) { - case LMTEMPSENSORSINDEX: - case LMFANSENSORSINDEX: - case LMVOLTSENSORSINDEX: - case LMMISCSENSORSINDEX: - long_ret = s_index; - return (unsigned char *) &long_ret; - - case LMTEMPSENSORSDEVICE: - case LMFANSENSORSDEVICE: - case LMVOLTSENSORSDEVICE: - case LMMISCSENSORSDEVICE: - strncpy(string, s.name, SPRINT_MAX_LEN - 1); - *var_len = strlen(string); - return (unsigned char *) string; - - case LMTEMPSENSORSVALUE: - case LMFANSENSORSVALUE: - case LMVOLTSENSORSVALUE: - case LMMISCSENSORSVALUE: - long_ret = s.value; - return (unsigned char *) &long_ret; - - default: - ERROR_MSG("Unable to handle table request"); - } - - return NULL; -} - -static int -sensor_init(void) -{ - int res; - char filename[] = CONFIG_FILE_NAME; - clock_t t = clock(); - - FILE *fp = fopen(filename, "r"); - if (!fp) - return 1; - - if (res = sensors_init(fp)) - return 2; - - _sensor_load(t); - return 0; -} - -static void -sensor_load(void) -{ - clock_t t = clock(); - - if (t > timestamp + 60) - _sensor_load(t); - - return; -} - -static void -_sensor_load(clock_t t) -{ - const sensors_chip_name *chip; - const sensors_feature_data *data; - int chip_nr = 0; - int a = 0; - int b = 0; - - int i; - for (i = 0; i < N_TYPES; i++) - sensor_array[i].n = 0; - - while (chip = sensors_get_detected_chips(&chip_nr)) { - while (data = sensors_get_all_features(*chip, &a, &b)) { - char *label; - double val; - - if ((data->mode & SENSORS_MODE_R) && - (data->mapping == SENSORS_NO_MAPPING) && - !sensors_get_label(*chip, data->number, &label) && - !sensors_get_feature(*chip, data->number, &val)) { - int type; - float mul; - _sensor_array *array; - - if (strstr(label, "temp")) { - type = 0; - mul = 1000.0; - } else if (strstr(label, "fan")) { - type = 1; - mul = 1.0; - } else if (strstr(label, "V")) { - type = 2; - mul = 1000.0; - } else { - type = 3; - mul = 1000.0; - } - - array = &sensor_array[type]; - - strncpy(array->sensor[array->n].name, label, MAX_NAME); - array->sensor[array->n].value = (int) (val * mul); - array->n++; - } - } - } - - timestamp = t; -}